diff --git a/llvm/include/llvm/Analysis/MemUseDefAnalysis.h b/llvm/include/llvm/Analysis/MemUseDefAnalysis.h new file mode 100644 index 0000000000000..0aaec9bc7fbf9 --- /dev/null +++ b/llvm/include/llvm/Analysis/MemUseDefAnalysis.h @@ -0,0 +1,412 @@ +//===- MemUseDefAnalysis.h - Mem Use-Def Analysis based on MemorySSA-------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// OpenMp target data mapping Analysis, +// A Diagnostics Pass to help understand usage of data mapping clauses. +// Looks at all the omp target RTL calls, and interprets their semantics, +// to conclude which variable is residing on Device or Host memory, +// outside and inside target regions. +// RTL is an acronym for "Run Time Library" +//===----------------------------------------------------------------------===// + +#ifndef LLVM_ANALYSIS_OmpDiagnosticsANALYSIS_H +#define LLVM_ANALYSIS_OmpDiagnosticsANALYSIS_H + +#include "llvm/IR/CallSite.h" +#include "llvm/Analysis/MemorySSA.h" +#include "llvm/Analysis/ScalarEvolutionExpressions.h" +#include "llvm/IR/DebugInfoMetadata.h" +#include "llvm/IR/InstIterator.h" +#include "llvm/IR/IntrinsicInst.h" +#include "llvm/IR/PassManager.h" +#include "llvm/Pass.h" +#include +#include + +namespace llvm { + +/// Represents the string type of Omp RTL call names +using ConstCallNameType = const std::string; +using ConstInstrPtr = const Instruction *; +using ConstValuePtr = const Value *; +using SetOfInstructions = std::set; +using SetOfValues = std::set; + +#define EXISTSinMap(MAP, ELEM) (MAP.find(ELEM) != MAP.end()) + +using LocationSequenceNumType = unsigned; +using LineNumberType = unsigned; +using LocationStringType = std::string; +using FileNameType = std::string; + + +class DebugLocation { +private: + // std::map DebugLoc2SeqNumMap; + std::map + DebugLoc2SeqNumMap; + std::map> FileLinesMap; + std::map LineNum2VarName; + std::map IrToSrcLocMap; + +public: + void printDebugLocation(); + void recordDebugLoc(const LocationStringType &LocStrBegin, + const LocationStringType &LocStrEnd, + LocationSequenceNumType &BeginSeq, + LocationSequenceNumType &EndSeq); + + LocationSequenceNumType recordDebugLoc(LocationStringType &locStr); + void recordDebugLoc(const Instruction &inst); + void getFile_Line_fromStr(const LocationStringType &location, + FileNameType &fileName, LineNumberType &lineNum, + const unsigned seperatorPosition); + void getFile_Line_fromStr(const LocationStringType &location, + FileNameType &fileName, LineNumberType &lineNum); + bool hasDebugLoc(const Instruction *instr); + LocationSequenceNumType getDebugLocSeq(const Instruction *inst); + const std::string getDebugLocStr(const Instruction &inst); + const std::string getDebugLocStr(const DebugLoc *loc, + unsigned &seperatorPosition); + const std::string getDebugLocStr(const unsigned seq); + const std::string getVarNameLocStr(const Instruction *inst); + bool isPosX_greater_PosY(const unsigned seqX, const unsigned seqY); + const std::string getOrigVarName(const Value *irVal); + void handleLLVMir2Srcdebug(const BitCastInst *&dbgI); + void handleLLVMir2Srcdebug(const DbgValueInst *&dbgI); + void handleLLVMir2Srcdebug(const GetElementPtrInst *&Gep); + void handleLLVMir2Srcdebug(const DbgDeclareInst *&dbgI); + void initFunc(Function &F); + /// Get the source level name for this Value. + std::string getSymbolName(const Value *Val); + + /// Get the source level name for the variable this instruction updates. + std::string getSymbolName(const Instruction *LdSt); + + void setSymbolName(const Instruction *Instr, const Value *Val); +}; + + +class MemoryLdStMapClass { + /// Map of instruction, to the memory value, that it accesses. + using InstrPointsToMapType = std::map; + using MemUseToReachingDefsMapType = + std::map; + //std::map; + using BBtoReachingDefsMapType = + std::map; + using CallInstToUsersMapType = std::map; + using FuncGenDefsType = std::map; + + + class FuncParamInfoClass { + std::map ValueToIdMap; + unsigned UniqueIdCounter; + public: + void setValuesAlias(ConstValuePtr Arg, ConstValuePtr Param); + FuncParamInfoClass(): UniqueIdCounter(0){} + void handleFuncCall(const CallInst &CI, const MemoryLdStMapClass &MemInfo); + bool doValuesAlias(ConstValuePtr Arg, ConstValuePtr Param) const ; + void print(); + }; + InstrPointsToMapType LdStPointsToMap; + MemUseToReachingDefsMapType MemUseToReachingDefsMap; + BBtoReachingDefsMapType BBtoReachingDefsMap; + FuncGenDefsType FuncGeneratingDefs; + CallInstToUsersMapType CallInstToUsersMap; + SetOfInstructions LiveInUses; + static std::map MemdefToCall; + + + /// Record that the Instruction \p LdSt accesses the Memory \p Mem. + void insertEntry(ConstInstrPtr LdSt, ConstValuePtr Mem); + + /// Keep going up from \p Instr till we find the memory operand, that Instr + /// accesses, then set \p Mem. Only the limited set of instructions are + /// currently handled. + bool backtrackFindMemoryInstr(ConstValuePtr Instr, ConstValuePtr &Mem) const; + bool filterLoadOfAddress(ConstInstrPtr Ld) const ; + Type * getType(ConstInstrPtr LdSt); + + public: + + static FuncParamInfoClass FuncParamInfo; + void handleCallArguments(const CallInst &CI); + /// Check if \p Val is a memory operand. + bool isMemory(ConstValuePtr Val) const; + void addReachingCall(Instruction &Call, Instruction &User); + + void addLiveOnEntryUse(ConstInstrPtr I); + + SetOfInstructions &getUsersOfCall(const Instruction &Call); + /// \p CallInstructions is a set of call instructions that reach the user. This function iterates over the set of call instruciton to add the user to each of the call instruciotns. + void addReachingCall(Instruction &User, SetOfInstructions &CallInstructions); + SetOfInstructions& getFuncGeneratingDefs(const Function *F); + void addFuncGeneratingDefs(SetOfInstructions &ReachingDefs, const Function *F=nullptr); + /// Propagate all the defs in the set \p ReachingDefs, to all the BasicBlocks (within the function). + bool propagateReachingDefsIntoFunc(SetOfInstructions &ReachingDefs, const int argNum=-1); + + /// Check if the map has the memory use to reaching defs entry. + bool existsReachingDefForUser(Instruction &AtInstr); + + /// Get the reaching defs at user \p AtInstr. + SetOfInstructions &getReachingDefsAt(Instruction &AtInstr); + + /// Get the reaching defs at entry of basic block \p BB. + SetOfInstructions &getReachingDefsAt(BasicBlock &BB); + + /// Check if this insturction belongs to a malloc call in the user code. + bool isMalloc(ConstInstrPtr LdSt) const; + + /// Return the Memory that this instruction \p LdSt accesses. + ConstValuePtr getMemoryForLdSt(ConstInstrPtr LdSt) const; + /// Return the Memory that this instruction \p LdSt accesses. + ConstValuePtr getMemoryForLdSt(ConstValuePtr LdSt) const; + + /// Get the source level name for the variable this instruction updates. + void setSymbolName(const Instruction *LdSt); + + /// Find the memory that this instruction accesses, then record it in the map + /// and also return the memory. + ConstValuePtr insertLoadStore(ConstInstrPtr LdSt); + + bool areValuesSame(ConstInstrPtr MemDef, ConstValuePtr V); + + /// Add an empty entry for MemUse, that is no memdef inserted yet. + void insertReachingDef(ConstInstrPtr MemUse); + + /// Add \p MemDef to the set of reaching defs for the instruction \p MemUse, + /// if SingleReachingDef is true, then update the set to be a single element. + bool insertReachingDef(ConstInstrPtr MemUse, ConstInstrPtr MemDef, + bool SingleReachingDef = false); + + /// Add each def from the set \p MemDefSet to the set of reaching defs for the instruction \p MemUse, + /// If the CheckAlias is true, then update the reaching def only if the Memory accessed by user and def are the same. CheckAlias will be false for some instructions which donot have a single memory accessed, like call instructions and return instructions. + bool insertReachingDef(ConstInstrPtr MemUse, SetOfInstructions MemDefSet, bool CheckAlias= true); + + /// Insert the MemDef to the set of reaching defs at the entry of the basicblock. + bool insertReachingDef(const BasicBlock *, ConstInstrPtr MemDef); + + /// Does the instruction load the address of a pointer. + bool isDoublePointer(ConstInstrPtr Instr); + + void print(raw_ostream &O); + void print(); +}; + +class MemorySSAUseDefWalker { +public: + using DefiningMemoryAccessType = const MemoryDef *; + using MemoryWrittenToType = const Value *; + using SetOfMemoryDefsType = std::set; + using DefAccessToMemoryType = + std::map; + using MemoryToDefAccessMapType = + std::map; + using BBtoMemoryGenMapType = + std::map; + /// Map of memory that is written, to the set of MemDefs that update this + /// memory. + using MemToSetofDefsMapType = + std::map; + /// Map of BasicBlock to the Memory that it writes to and the correspodning + /// MemDefs. + using BBReachingDefsType = + std::map; + using MemUseToReachingDefsMapType = + std::map; + using BBReachingCallInstrMapType = + std::map; + +private: + const MemorySSA *MSSA; + /// This is the Gen set, its a temporary information required for the + /// analysis. Note, that unlike scalar defs, there can be multiple defs for a + /// memory inside a basic block, and a later write need not kill a previous + /// write. But for the purpose of our analysis, we only consider the last + /// write to a memory, so just like scalars, every basic block can generate a + /// single def for a memory. + BBtoMemoryGenMapType BBGeneratingDefs; + /// This is the set of reaching defs at the entry of every basic block, final + /// result of our analysis. + BBReachingDefsType BBReachingDefs; + MemoryLdStMapClass &LdStToMem; + + /// Record the call instructions that reach this basic block. It is updated whenever a memdef is generated in a basic block that is a call instruction. And whenever a memdef is added at a phi operator at the join point. + BBReachingCallInstrMapType BBReachingCalls; + /// Map of a MemoryUse to a set of reaching MemDefs, that clobber the same + /// memory that the MemoryUse reads. This is the final output of our dataflow + /// analysis. + // MemUseToReachingDefsMapType MemUseToReachingDefsMap; + + bool HasConvergedFlagged; + + void getReachingDefs(const BasicBlock *BB, SetOfInstructions &ReachingDefs); + void insertDefs(MemoryToDefAccessMapType &S, + const MemoryToDefAccessMapType::iterator &begin, + const MemoryToDefAccessMapType::iterator &end); + void insertDefs(SetOfMemoryDefsType &S, + const SetOfMemoryDefsType::iterator &begin, + const SetOfMemoryDefsType::iterator &end); + + void addToGeneratingDefs(DefiningMemoryAccessType memDef); + void print(); + + /// IncomingBB is the predecessor block of BB, this function updates the + /// reaching defs of the BB, based on the following equation, + /// ReachingDef[BB] = (ReachingDef[IncomingBB] - Kill[IncomingBB]) + Gen[BB] + /// We can kill defs even though unlike scalars, defs are not killed in + /// memory, since the Killing def postdominates the reaching def that gets + /// killed. And here we are only concerned about the edge from a def to a use, + /// that edge may carry multiple defs. As long as we respect the edge, from + /// the killing def to the use, it automatically respects the other reaching + /// def, that got killed. And hence we need not consider all possible defs + /// through killing defs. This is like an elimination, we are constantly + /// eliminating mem defs, that donot affect a memuse, we keep going up the mem + /// ssa. But as soon as we reach a memdef that clobbers the same memory, we + /// can stop there, and need not consider other clobbering defs reaching this + /// memdef. + void updateReachingDefsOfBB(const BasicBlock *IncomingBB, + const BasicBlock *BB); + + /// The join operator for the reaching defs at BB. Udpates the reaching defs + /// of BB, based on its predecessors. + void reachingDefJoinOp(const BasicBlock *BB); + + /// Keep traversing the reaching definition to this \p MemAccss, until we + /// reach a Phi Node. This is a recursive function, traversing up reaching + /// defs, till we find a MemPhi, or the LiveOnEntry Node. + const MemoryPhi *getParentPhi(const MemoryAccess *MemAccss); + + // Return true if the memory use is live on entry. + //bool isLiveOnEntry(const MemoryAccess *MemAccss) + + /// Update the reaching definitions for this \p MemUse. Update the record in + /// "MemUseToReachingDefsMap", which maps every mem use to a set of mem defs. + void updateClobberingAccess(const MemoryUse *MemUse); + + /// Traverse all the memory accesses within the basic block, then add the defs + /// to the Gen set of the block, and record the corresponding the reaching + /// defs for every Mem Use. + void updateBasicBlock(const BasicBlock *BB); + +public: + MemorySSAUseDefWalker(MemorySSA &M, MemoryLdStMapClass &L) + : MSSA(&M), LdStToMem(L) {} + // Entry Point for Reaching definitions data flow analysis. After this + // function, we have a record of all the reaching definitions for every memory + // use. Do BFS traversal of the Basic Blocks starting from the LiveOnEntry + // Access basic block. At the entry of every basic block, perform the + // following update, ReachingDef[BB] = \Union_{P \in Pred(BB)} + // ((ReachingDef[P] - Kill[P])+Gen[P]) Then iterate over all the memory uses + // in the BB, and find all the reaching defs that may clobber the memory being + // read by the memory use. Following 3 cases can occuer, + // 1. There is a single MemDef for the memory, that occurs in the same basic + // block as the use. + // 2. Among all the reaching defs at the MemPhi, that dominates this MemUse, + // add all MemDefs that clobber the coresponding memory. + // 3. Cannot find any reaching defs, analysis failed. + void reachingDefAnalysis(); +}; + +/// OmpDiagnosticsInfo wrapper for the new pass manager. +class MemUseDefLocalAnalysis + : public AnalysisInfoMixin { + friend AnalysisInfoMixin; + static AnalysisKey Key; + +public: + using Result = MemoryLdStMapClass; + Result run(Function &F, FunctionAnalysisManager &AM); +}; + +/// Printer pass for the \c MemUseDefLocalAnalysis results. +class MemUseDefLocalAnalysisPrinterPass + : public PassInfoMixin { + raw_ostream &OS; + +public: + explicit MemUseDefLocalAnalysisPrinterPass(raw_ostream &OS) : OS(OS) {} + PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); +}; + + using FuncToMemInfoType = std::map; +class InterproceduralMemDFA { + /// Map of function to the intraprocedural reaching defs analysis information. + FuncToMemInfoType &FuncToMemInfo; + + /// For all call instructions within the function, propagate the reaching defs at the function call into the body, and return back the defs generated within the function body, to be propagated to the blocks following the call instruction. + void updateReachingDefsOfBB(BasicBlock &BB, bool &HasConvergedFlagged, std::queue &FuncQueue); + /// Propagate all the reaching defs at the call instruction into the function body. Return true if any new def was added. + bool propagateReachingDefsIntoFunc(SetOfInstructions &ReachingDefs, Function &CalledF, const int argNum=-1); + SetOfInstructions& getFuncGeneratingDefs(Function &CalledF); + +void getParamNumber(const CallInst &CI, SetOfInstructions &ReachingDefs, MemoryLdStMapClass &LdStToMemFunc); + void handleCallSite(CallInst &CI); + public: + InterproceduralMemDFA(FuncToMemInfoType &M):FuncToMemInfo(M){} + + /// Start the interprocedural dataflow analysis from the function \p F. + void run(Function &F); +}; +/// This pass performs the global (interprocedural) Omp Data Mapping Analysis. +/// (New pass manager). +class MemUseDefGlobalAnalysis + : public AnalysisInfoMixin { + friend AnalysisInfoMixin; + static AnalysisKey Key; + public: + using Result = MemoryLdStMapClass; + private: + Module *ThisModule; + ModuleAnalysisManager *AnalysisManager; + FunctionAnalysisManager *FunctionAM; + + void analyzeModule(Result &MemUseDefInfo); + void analyzeFunction(Function &F, Result &MemUseDefInfo); + void analyzeBasicBlock(const BasicBlock &BB, Result &MemUseDefInfo); + std::map FuncNameMap; + + void setIndirectCallMap(Function &Func); +public: + static std::map > IndirectCallsMap; + Result run(Module &M, ModuleAnalysisManager &AM); +}; + +/// Printer pass for the \c MemUseDefGlobalAnalysis results. +class MemUseDefGlobalAnalysisPrinterPass + : public PassInfoMixin { + raw_ostream &OS; + +public: + using Result = MemoryLdStMapClass; + explicit MemUseDefGlobalAnalysisPrinterPass(raw_ostream &OS) : OS(OS) {} + PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM); +}; + +/// This pass performs the global (interprocedural) Omp Data Mapping Analysis. +/// (legacy pass manager). +// class OmpDiagnosticsGlobalInfoWrapperPass : public ModulePass { +// OmpDiagnosticsGlobalInfo SSI; +// +// public: +// static char ID; +// +// OmpDiagnosticsGlobalInfoWrapperPass(); +// +// const OmpDiagnosticsGlobalInfo &getResult() const { return SSI; } +// +// void print(raw_ostream &O, const Module *M) const override; +// void getAnalysisUsage(AnalysisUsage &AU) const override; +// +// bool runOnModule(Module &M) override; +//}; + +} // end namespace llvm + +#endif // LLVM_ANALYSIS_OmpDiagnosticsANALYSIS_H diff --git a/llvm/include/llvm/InitializePasses.h b/llvm/include/llvm/InitializePasses.h index f60a99c62051b..d3d14b3d1cbf1 100644 --- a/llvm/include/llvm/InitializePasses.h +++ b/llvm/include/llvm/InitializePasses.h @@ -293,6 +293,8 @@ void initializeObjCARCAPElimPass(PassRegistry&); void initializeObjCARCContractPass(PassRegistry&); void initializeObjCARCExpandPass(PassRegistry&); void initializeObjCARCOptPass(PassRegistry&); +void initializeOmpDiagnosticsGlobalInfoWrapperPassPass(PassRegistry &); +void initializeOmpDiagnosticsInfoWrapperPassPass(PassRegistry &); void initializeOptimizationRemarkEmitterWrapperPassPass(PassRegistry&); void initializeOptimizePHIsPass(PassRegistry&); void initializePAEvalPass(PassRegistry&); diff --git a/llvm/lib/Analysis/CMakeLists.txt b/llvm/lib/Analysis/CMakeLists.txt index 3cc9fe3c17155..3b9c5fe13711e 100644 --- a/llvm/lib/Analysis/CMakeLists.txt +++ b/llvm/lib/Analysis/CMakeLists.txt @@ -74,6 +74,7 @@ add_llvm_library(LLVMAnalysis PhiValues.cpp PostDominators.cpp ProfileSummaryInfo.cpp + MemUseDefAnalysis.cpp PtrUseVisitor.cpp RegionInfo.cpp RegionPass.cpp @@ -98,6 +99,7 @@ add_llvm_library(LLVMAnalysis ADDITIONAL_HEADER_DIRS ${LLVM_MAIN_INCLUDE_DIR}/llvm/Analysis + ${LLVM_MAIN_INCLUDE_DIR}/openmp/libomptarget/include/ DEPENDS intrinsics_gen diff --git a/llvm/lib/Analysis/MemUseDefAnalysis.cpp b/llvm/lib/Analysis/MemUseDefAnalysis.cpp new file mode 100644 index 0000000000000..e0d4886b9c369 --- /dev/null +++ b/llvm/lib/Analysis/MemUseDefAnalysis.cpp @@ -0,0 +1,1543 @@ +//===- MemUseDefAnalysis.cpp - Mem Use-Def Analysis based on MemorySSA---===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +//===----------------------------------------------------------------------===// + +#include "llvm/Analysis/MemUseDefAnalysis.h" + +using namespace llvm; + +#define DEBUG_TYPE "mem-usedef-analysis" + + +Function *getCalledFunction(const CallInst &CI){ + auto CalledF = CI.getCalledFunction(); + if (EXISTSinMap(MemUseDefGlobalAnalysis::IndirectCallsMap, &CI)){ + // If this call is an indirect call, then get the actual function called. + auto Iter = MemUseDefGlobalAnalysis::IndirectCallsMap[&CI].begin(); + CalledF = Iter->second->getParent(); + } + return CalledF; +} +void DebugLocation::printDebugLocation() { + for (auto Iter : FileLinesMap) { + LLVM_DEBUG(dbgs() << "\n file:" << Iter.first); + // errs()<<"\n file:"<second; + auto IterGreaterEqual = SetLines.upper_bound(LineBegin); + if (IterGreaterEqual != SetLines.end()) { + BaseLineNumBegin = *IterGreaterEqual; + } + LLVM_DEBUG(dbgs() << "\n searching for :" << LineBegin + << " and Found:" << BaseLineNumBegin); + LocationStringType baseStrBegin = + FileNameBegin + ":" + std::to_string(BaseLineNumBegin); + BeginSeq = DebugLoc2SeqNumMap[baseStrBegin]; + while (IterGreaterEqual != SetLines.end()) { + if (*IterGreaterEqual >= LineEnd) + break; + LLVM_DEBUG(dbgs() << "," << *IterGreaterEqual); + IterGreaterEqual++; + } + if (IterGreaterEqual-- != SetLines.end()) { + BaseLineNumEnd = *IterGreaterEqual; + } + LLVM_DEBUG(dbgs() << "\n searching for :" << LineEnd + << " and Found:" << BaseLineNumEnd); + LocationStringType baseStrEnd = + FileNameEnd + ":" + std::to_string(BaseLineNumEnd); + EndSeq = DebugLoc2SeqNumMap[baseStrEnd] + 1; + // return +} + +LocationSequenceNumType +DebugLocation::recordDebugLoc(LocationStringType &locStr) { + FileNameType fileName; + LineNumberType line = 0; + LineNumberType baseLineNum = -1; + getFile_Line_fromStr(locStr, fileName, line); + auto iter = FileLinesMap.find(fileName); + if (iter == FileLinesMap.end()) { + errs() << "\n ERROR OMP file :" << fileName + << "\n Not compiled with non omp"; + } + auto setLines = iter->second; + auto iterGreaterEqual = setLines.upper_bound(line); + if (iterGreaterEqual != setLines.end()) { + baseLineNum = *iterGreaterEqual; + } + LLVM_DEBUG(dbgs() << "\n searching for :" << line + << " and Found:" << baseLineNum); + LocationStringType baseStr = fileName + ":" + std::to_string(baseLineNum); + return DebugLoc2SeqNumMap[baseStr]; +} +void DebugLocation::recordDebugLoc(const Instruction &inst) { + if (!inst.getDebugLoc()) + return; + static LocationStringType lastLocationStr = ""; + unsigned seperatorPosition; + LocationStringType locStr = + getDebugLocStr(&inst.getDebugLoc(), seperatorPosition); + if (DebugLoc2SeqNumMap.find(locStr) != DebugLoc2SeqNumMap.end()) + return; // already added this location to map + LLVM_DEBUG(dbgs() << "\n position:" << locStr + << "\n seq:" << DebugLoc2SeqNumMap.size()); + FileNameType fileName; + LineNumberType line = 0; + getFile_Line_fromStr(locStr, fileName, line, seperatorPosition); + DebugLoc2SeqNumMap[locStr] = DebugLoc2SeqNumMap.size(); + FileLinesMap[fileName].insert(line); + lastLocationStr = locStr; + printDebugLocation(); +} +void DebugLocation::getFile_Line_fromStr(const LocationStringType &location, + FileNameType &fileName, + LineNumberType &lineNum, + const unsigned seperatorPosition) { + auto sepAt = seperatorPosition; + fileName = location.substr(0, sepAt); + // errs()<<"\n 1. filename:"<getDebugLoc()) + return true; + return false; +} +LocationSequenceNumType DebugLocation::getDebugLocSeq(const Instruction *inst) { + LocationSequenceNumType invalidRet = (LocationSequenceNumType)(-1); + if (!inst->getDebugLoc()) + return invalidRet; + // const DebugLoc *locStr = &inst->getDebugLoc(); + unsigned dummySep; + auto locStr = getDebugLocStr(&inst->getDebugLoc(), dummySep); + auto iter = DebugLoc2SeqNumMap.find(locStr); + if (iter == DebugLoc2SeqNumMap.end()) { + // if doesnot exist, then new instruction, insert in map + recordDebugLoc(*inst); + iter = DebugLoc2SeqNumMap.find(locStr); + // return invalidRet ; + } + return iter->second; +} +const std::string DebugLocation::getDebugLocStr(const Instruction &inst) { + const std::string invalidRet = ""; //(unsigned)(-1); + if (!inst.getDebugLoc()) + return invalidRet; + const DebugLoc &loc = inst.getDebugLoc(); + unsigned dummySep; + return getDebugLocStr(&loc, dummySep); +} +const std::string DebugLocation::getDebugLocStr(const DebugLoc *loc, + unsigned &seperatorPosition) { + const std::string invalidRet = ""; //(unsigned)(-1); + if (loc != nullptr) + if (auto *scope = dyn_cast(loc->getScope())) { + auto filename = scope->getFilename(); + seperatorPosition = filename.size(); + return filename.str() + ":" + std::to_string(loc->getLine()); + } + return invalidRet; +} +const std::string DebugLocation::getDebugLocStr(const unsigned seq) { + const std::string invalidRet = ""; //(unsigned)(-1); + for (auto iter : DebugLoc2SeqNumMap) { + if (iter.second == seq) + return (iter.first); + } + return invalidRet; +} +bool DebugLocation::isPosX_greater_PosY(const unsigned seqX, + const unsigned seqY) { + if (seqX > seqY) + return true; + auto locX = getDebugLocStr(seqX); + auto locY = getDebugLocStr(seqY); + LineNumberType lineX, lineY; + FileNameType fileX, fileY; + getFile_Line_fromStr(locX, fileX, lineX); + getFile_Line_fromStr(locY, fileY, lineY); + LLVM_DEBUG(dbgs() << "\n is :" << lineX << " > " << lineY); + if (lineX > lineY) + return true; + return false; +} + +const std::string DebugLocation::getOrigVarName(const Value *irVal) { + // DIFlagArtificial need to be ignored + // TODO if global variable !0 = !DIGlobalVariableExpression(var: !1, expr: + // !DIExpression()) distinct !DIGlobalVariable(name: "p", linkageName: "_ZL1p", + // scope: + if (auto Ld = dyn_cast(irVal)) { + return getOrigVarName(Ld->getPointerOperand()); + } + if (auto St = dyn_cast(irVal)) { + return getOrigVarName(St->getPointerOperand()); + } + if (IrToSrcLocMap.find(irVal) != IrToSrcLocMap.end()) { + return IrToSrcLocMap[irVal]; + } + if (irVal->hasName()) { + auto strName = irVal->getName(); + if (strName.find(".casted") != std::string::npos) { + strName = strName.substr(0, strName.find(".casted")); + } + return strName; + } + if (const Instruction *vI = dyn_cast(irVal)) { + if (hasDebugLoc(vI) && + (LineNum2VarName.find(getDebugLocSeq(vI)) != LineNum2VarName.end())) { + LLVM_DEBUG(dbgs() << "\n location name found:" + << LineNum2VarName[getDebugLocSeq(vI)]); + return LineNum2VarName[getDebugLocSeq(vI)]; + } + } + const Instruction *storedI = dyn_cast(irVal); + if (storedI == NULL) { + return ""; + } + for (unsigned i = 0; i < storedI->getNumOperands(); i++) { + Value *op = storedI->getOperand(i); + LLVM_DEBUG(dbgs() << "\n get name for :" << *op); + auto Vname = getOrigVarName(op); + if (Vname != "") { + LLVM_DEBUG(dbgs() << "\n name is :" << Vname); + return Vname; + } + } + if (storedI->getNumOperands() != 1) + return ""; + return storedI->getOperand(0)->getName(); +} +void DebugLocation::handleLLVMir2Srcdebug(const BitCastInst *&dbgI) { + // call void @llvm.dbg.declare(metadata i32* %vla, metadata !16, metadata + // !DIExpression()), !dbg !25 errs()<<"\n mapping :"<<*dbgI->getValue(); + // errs()<<"\n with exp:"<<*dbgI->getExpression(); + const Value *v = dbgI->getOperand(0); + if (!v->hasName()) + return; + IrToSrcLocMap[dbgI] = v->getName(); + if (hasDebugLoc(dbgI) && + (LineNum2VarName.find(getDebugLocSeq(dbgI)) == LineNum2VarName.end())) { + LLVM_DEBUG(dbgs() << "\n LIne:" << dbgI->getDebugLoc().getLine() + << "has name :" << v->getName()); + LineNum2VarName[getDebugLocSeq(dbgI)] = v->getName(); + } +} +void DebugLocation::handleLLVMir2Srcdebug(const DbgValueInst *&dbgI) { + // call void @llvm.dbg.declare(metadata i32* %vla, metadata !16, metadata + // !DIExpression()), !dbg !25 errs()<<"\n mapping :"<<*dbgI->getValue(); + // errs()<<"\n with exp:"<<*dbgI->getExpression(); + LLVM_DEBUG(dbgs() << "\n LIne:" + << (*dbgI) + // dbgI->getDebugLoc().getLine() + << "has name :" << dbgI->getVariable()->getName()); + if (dbgI->getValue() != nullptr) { + IrToSrcLocMap[dbgI->getValue()] = dbgI->getVariable()->getName(); + } + IrToSrcLocMap[dbgI->getVariableLocation()] = dbgI->getVariable()->getName(); + LineNum2VarName[getDebugLocSeq(dbgI)] = dbgI->getVariable()->getName(); +} +void DebugLocation::handleLLVMir2Srcdebug(const GetElementPtrInst *&Gep) { + auto Ptr = Gep->getPointerOperand(); + if (IrToSrcLocMap.find(Ptr) != IrToSrcLocMap.end()) + IrToSrcLocMap[Gep] = IrToSrcLocMap[Ptr]; +} +void DebugLocation::handleLLVMir2Srcdebug(const DbgDeclareInst *&dbgI) { + // call void @llvm.dbg.declare(metadata i32* %vla, metadata !16, metadata + // !DIExpression()), !dbg !25 + LLVM_DEBUG(dbgs() << "\n Location:" << *dbgI + << " \n Name:" << dbgI->getVariable()->getName()); + IrToSrcLocMap[dbgI->getVariableLocation()] = dbgI->getVariable()->getName(); +} +void DebugLocation::initFunc(Function &F) { + for (inst_iterator I = inst_begin(&F), E = inst_end(&F); I != E; ++I) { + const Instruction &Inst = *I; + recordDebugLoc(Inst); + if (const BitCastInst *BitI = dyn_cast(&Inst)) { + handleLLVMir2Srcdebug( + BitI); // hack to record name of orignial source variable + } else if (const DbgDeclareInst *dbgI = dyn_cast(&Inst)) { + handleLLVMir2Srcdebug(dbgI); + } else if (const DbgValueInst *dbgI = dyn_cast(&Inst)) { + handleLLVMir2Srcdebug(dbgI); + } else if (const GetElementPtrInst *Gep = + dyn_cast(&Inst)) { + handleLLVMir2Srcdebug(Gep); + } + } +} + +DebugLocation OmpDiagnosticsLocationInfo; +const std::string DebugLocation::getVarNameLocStr(const Instruction *Inst) { + const unsigned seq = getDebugLocSeq(Inst); + std::string NameLocationStr; + NameLocationStr = getSymbolName(Inst); + // getOrigVarName(Inst);// + NameLocationStr += " At location:" + getDebugLocStr(seq); + return NameLocationStr; +} + +void MemoryLdStMapClass::FuncParamInfoClass::print(){ + for (auto Iter : ValueToIdMap ){ + LLVM_DEBUG(dbgs()<<"\n "<< *Iter.first << "= "<getName() <<" CI:"<second){ + auto Arg = Iter.first; + auto Param = Iter.second; + setValuesAlias(Arg, Param); + } + } else { + SmallVector FParams; + for (auto &A : F->args()){ + FParams.push_back(&A); + } + for (unsigned ArgNum = 0 ; ArgNum < CI.getNumArgOperands() ; ArgNum++){ + ConstValuePtr Arg = CI.getArgOperand(ArgNum); + if (Arg == nullptr) continue; + if (!MemInfo.isMemory(Arg)) + Arg = MemInfo.getMemoryForLdSt((Arg)); + LLVM_DEBUG(dbgs()<<"\n Arg :"<<*Arg); + if (Arg == nullptr ) continue; + auto Param = FParams[ArgNum]; + if (Param == nullptr) continue; + setValuesAlias(Arg, Param); + } + } +} + void MemoryLdStMapClass::FuncParamInfoClass::setValuesAlias(ConstValuePtr Arg, ConstValuePtr Param){ + if (!EXISTSinMap(ValueToIdMap, Arg) && !EXISTSinMap(ValueToIdMap, Param)) + ValueToIdMap[Arg] = ++UniqueIdCounter; + + if (EXISTSinMap(ValueToIdMap, Arg) && EXISTSinMap(ValueToIdMap, Param)){ + LLVM_DEBUG(dbgs()<<"\n ALready Exists Alias::"<<*Arg <<"=" + < MemoryLdStMapClass::MemdefToCall; + MemoryLdStMapClass::FuncParamInfoClass MemoryLdStMapClass::FuncParamInfo; +void MemoryLdStMapClass::insertEntry(ConstInstrPtr LdSt, ConstValuePtr Mem) { + if (LdSt == nullptr || Mem == nullptr) + return; + LdStPointsToMap[LdSt] = Mem; +} + +bool MemoryLdStMapClass::isMemory(ConstValuePtr Val) const { + if (isa(Val)) { + return true; + } + if (isa(Val)) { + return true; + } + if (isa(Val)) + return true; + return false; +} + + void MemoryLdStMapClass::handleCallArguments(const CallInst &CI){ + FuncParamInfo.handleFuncCall(CI, *this); + } + +bool MemoryLdStMapClass::backtrackFindMemoryInstr(ConstValuePtr Instr, + ConstValuePtr &Mem) const { + LLVM_DEBUG(dbgs() << "\n get memory for :" << *Instr); + if (isMemory(Instr)) { + Mem = Instr; + return true; + } + if (const GetElementPtrInst *Gep = dyn_cast(Instr)) { + auto Ptr = Gep->getPointerOperand(); + return backtrackFindMemoryInstr(Ptr, Mem); + } + if (auto Gop = dyn_cast(Instr)){ + return backtrackFindMemoryInstr(Gop->getPointerOperand(), Mem); + } + if (const LoadInst *Ld = dyn_cast(Instr)) { + auto Ptr = Ld->getPointerOperand(); + return backtrackFindMemoryInstr(Ptr, Mem); + } + if (const StoreInst *St = dyn_cast(Instr)) { + auto Ptr = St->getPointerOperand(); + return backtrackFindMemoryInstr(Ptr, Mem); + } + // if (auto indirectPtr = dyn_cast(instr)){ + // return backtrackFindMemoryInstr(indirectPtr->getOperand(0) , mem); + //} + LLVM_DEBUG(dbgs() << "\n Warning: Memory op for instruction not found" + << *Instr); + // errs()<<"\n Warning: Memory op for instruction not found"<<*Instr; + Mem = nullptr; + return false; +} + +bool MemoryLdStMapClass::isMalloc(ConstInstrPtr LdSt) const { + static std::set MallocLines; + if (auto C = dyn_cast(LdSt)) { + auto CalledF = C->getCalledFunction(); + if (CalledF != nullptr && + CalledF->getName().find("malloc") != std::string::npos) { + auto Loc = OmpDiagnosticsLocationInfo.getDebugLocSeq(LdSt); + LLVM_DEBUG(dbgs() << "\n malloc:" << *LdSt << "at:" << Loc); + MallocLines.insert(Loc); + return true; + } + } else if (MallocLines.find(OmpDiagnosticsLocationInfo.getDebugLocSeq( + LdSt)) != MallocLines.end()) { + auto Loc = OmpDiagnosticsLocationInfo.getDebugLocSeq(LdSt); + LLVM_DEBUG(dbgs() << "\n malloc:" << *LdSt << "at:" << Loc); + return true; + } + return false; +} + + bool MemoryLdStMapClass::filterLoadOfAddress(ConstInstrPtr Ld)const { + if (auto L = dyn_cast (Ld)){ + if (L->getType()->isPointerTy()) { + auto LoadLineNum = OmpDiagnosticsLocationInfo.getDebugLocSeq(L); + std::queue UsersQ; + UsersQ.push(L); + // Keep scaning the users of this load of pointer, to find if this is used in a function call. We keep scanning till the line numbers are same, that is the load and the call are at the same line. + while(!UsersQ.empty()){ + auto Def = UsersQ.front(); UsersQ.pop(); + for (auto U : Def->users()){ + if (auto I = dyn_cast(U)){ + // If the address load is used in the call, then preserve the load as memuse. + if (isa(I)) + return false; + // If the user instruction is still on the same line, then add to Queue. + if (OmpDiagnosticsLocationInfo.getDebugLocSeq(I) == LoadLineNum ){ + UsersQ.push(I); + } + } + } + } + // If we could not find a call instr that uses the loaded address, then ignore the mem use. TODO: Other than a store, which other instruction can use the address? + return true; + } + } + return false; + } + +ConstValuePtr +MemoryLdStMapClass::getMemoryForLdSt(ConstValuePtr LdSt) const { + if (LdSt == nullptr ) + return nullptr; + ConstValuePtr Mem = nullptr; + if (const auto Gop = dyn_cast(LdSt)) + backtrackFindMemoryInstr(Gop->getPointerOperand(), Mem); + if (auto I = dyn_cast(LdSt)) + Mem = getMemoryForLdSt(I); + return Mem; +} + +ConstValuePtr +MemoryLdStMapClass::getMemoryForLdSt(ConstInstrPtr LdSt) const { + if (LdSt == nullptr || filterLoadOfAddress(LdSt)) + return nullptr; + LLVM_DEBUG(dbgs() << "\n Looking for memory for instr:" << *LdSt); + isMalloc(LdSt); + auto EntryIter = LdStPointsToMap.find(LdSt); + if (EntryIter == LdStPointsToMap.end()) { + LLVM_DEBUG(dbgs() << "\n Returning nullptr:"); + return nullptr; + } + if (auto Arg = dyn_cast(EntryIter->second)){ + LLVM_DEBUG(dbgs() << "\n Is an argument number :"<getArgNo()); + } + LLVM_DEBUG(dbgs() << "\n Returning Mem::"<<*EntryIter->second); + return EntryIter->second; +} + +void DebugLocation::setSymbolName(const Instruction *Instr, const Value *Val) { + LLVM_DEBUG(dbgs() << "\n set name : " << *Instr + << " \n from ::" << getSymbolName(Val)); + IrToSrcLocMap[Instr] = getSymbolName(Val); + // LineNum2VarName[getDebugLocSeq(Instr)] = getSymbolName(Val); + return; +} +/// Get the source level name for this Value. +std::string DebugLocation::getSymbolName(const Value *Val) { + if (OmpDiagnosticsLocationInfo.IrToSrcLocMap.find(Val) != IrToSrcLocMap.end()) + return IrToSrcLocMap[Val]; + if (Val->hasName()) { + return Val->getName(); + } + // if (auto I = dyn_cast(Val)){ + // //auto Seq = OmpDiagnosticsLocationInfo.getDebugLocSeq(I); + // //if (LineNum2VarName.find(Seq) != LineNum2VarName.end()) { + // // LLVM_DEBUG(dbgs()<<"\n line num var name:" << LineNum2VarName[Seq]); + // // return LineNum2VarName[Seq]; + // //} + //} + return ""; +} + +std::string DebugLocation::getSymbolName(const Instruction *LdSt) { + if (OmpDiagnosticsLocationInfo.IrToSrcLocMap.find(LdSt) != + IrToSrcLocMap.end()) + return IrToSrcLocMap[LdSt]; + if (auto StoreI = dyn_cast(LdSt)) { + auto Ptr = StoreI->getPointerOperand(); + if (IrToSrcLocMap.find(Ptr) != IrToSrcLocMap.end()) + return IrToSrcLocMap[Ptr]; + } + if (auto LoadI = dyn_cast(LdSt)) { + auto Ptr = LoadI->getPointerOperand(); + if (IrToSrcLocMap.find(Ptr) != IrToSrcLocMap.end()) + return IrToSrcLocMap[Ptr]; + } + // auto seq = OmpDiagnosticsLocationInfo.getDebugLocSeq(ldst); + // if (LineNum2VarName.find(seq) != LineNum2VarName.end()){ + // errs()<<"\n Line:"<(LdSt)){ + for (auto &A : C->args()){ + insertLoadStore(dyn_cast(&A)); + } + } + ConstValuePtr Mem = getMemoryForLdSt(LdSt); + if (Mem == nullptr) { + if (backtrackFindMemoryInstr(LdSt, Mem)) { + insertEntry(LdSt, Mem); + setSymbolName(LdSt); + } + } + return getMemoryForLdSt(LdSt); +} + +void MemoryLdStMapClass::addReachingCall(Instruction &Call, Instruction &User){ + CallInstToUsersMap[&Call].insert(&User); +} + +void MemoryLdStMapClass::addLiveOnEntryUse(ConstInstrPtr I){ + LiveInUses.insert(I); +} + +void MemoryLdStMapClass::addReachingCall(Instruction &User, SetOfInstructions &CallInstructions){ + for (auto Call : CallInstructions) { + LLVM_DEBUG(dbgs()<<"\n User::"<<*Call); + CallInstToUsersMap[Call].insert(&User); + } +} +SetOfInstructions &MemoryLdStMapClass::getUsersOfCall(const Instruction &Call){ + return CallInstToUsersMap[&Call]; +} + +bool MemoryLdStMapClass::propagateReachingDefsIntoFunc(SetOfInstructions &ReachingDefs, const int ArgNum){ + bool NewDefsAdded = false; + LLVM_DEBUG(dbgs()<<"\n Propagating reaching defs into function::"); + for (auto Def: ReachingDefs){ + LLVM_DEBUG(dbgs()<<"\n def :"<(UsedMem)){ + // int ParamNum = Param->getArgNo(); + // LLVM_DEBUG(dbgs() << "\n Is an argument number :"<(MemUse)){ + MemdefToCall[MemDef] = CI; + } + if (SingleReachingDef) + MemUseToReachingDefsMap[MemUse] = {MemDef}; + else + MemUseToReachingDefsMap[MemUse].insert(MemDef); + + LLVM_DEBUG(dbgs()<<"\n User::"<(V)){ +// auto ParamNum = Param->getArgNo(); +// auto CI = MemdefToCall[MemDef]; +// LLVM_DEBUG(dbgs()<<"\n param number:"<args()){ +// const Value *ArgMem = Arg; +// if (auto ArgI = dyn_cast(Arg)) +// ArgMem = getMemoryForLdSt(ArgI); +// LLVM_DEBUG(dbgs()<<"\n arg number:"<(MemUse)) { + auto F = getCalledFunction(*C);//C->getCalledFunction(); + if (F->isIntrinsic() || F->isDeclaration() ) return NewElemInserted; + CheckAlias = false; + } + //auto UserLocation = OmpDiagnosticsLocationInfo.getDebugLocSeq(MemUse); + if ( !CheckAlias) { + for (auto DefInstr : MemDefSet){ + // If use and def same instruction ignore it. + //if (UserLocation == OmpDiagnosticsLocationInfo.getDebugLocSeq(DefInstr)) + //if (DefInstr == MemUse) + // continue; + NewElemInserted = insertReachingDef(MemUse, DefInstr); + } + }else { + auto UsedMem = getMemoryForLdSt(MemUse); + for (auto DefInstr : MemDefSet){ + // If use and def same instruction ignore it. + if (DefInstr == MemUse) continue; + //if (UserLocation == OmpDiagnosticsLocationInfo.getDebugLocSeq(DefInstr)) + // continue; + auto WrittenMem = getMemoryForLdSt(DefInstr); + //if (UsedMem == WrittenMem ) + //if (areValuesSame(DefInstr, UsedMem)) + if (FuncParamInfo.doValuesAlias(UsedMem, WrittenMem)) + NewElemInserted = insertReachingDef(MemUse, DefInstr); + } + } + return NewElemInserted; +} + +bool MemoryLdStMapClass::insertReachingDef(const BasicBlock *BB, + ConstInstrPtr MemDef) { + auto PrevSize = BBtoReachingDefsMap.size(); + BBtoReachingDefsMap[BB].insert(MemDef); + if (PrevSize != BBtoReachingDefsMap.size()) + return true; + return false; +} + +bool MemoryLdStMapClass::isDoublePointer(ConstInstrPtr Instr) { + if (!isa(Instr)) + assert(1); + auto *Ld = dyn_cast(Instr); + auto LoadedVal = Ld->getPointerOperand(); + auto PtrType = LoadedVal->getType(); + if (PtrType->isPointerTy()) { + if (dyn_cast(PtrType)->getElementType()->isPointerTy()) + return true; + } + return false; +} + +void MemoryLdStMapClass::print(raw_ostream &O) { + for (auto Iter : MemUseToReachingDefsMap) { + auto MemUseInstr = Iter.first; + if (Iter.second.empty()) continue; + if (!EXISTSinMap(LdStPointsToMap, MemUseInstr)) continue; + auto PointsToMem = LdStPointsToMap[MemUseInstr]; + O << "\n Use::" << OmpDiagnosticsLocationInfo.getOrigVarName(PointsToMem) + << " At:: " << OmpDiagnosticsLocationInfo.getDebugLocStr(*MemUseInstr) + << " Defined at: "; + for (auto MemDefInstr : Iter.second) { + if ( MemUseInstr == MemDefInstr ) continue; + if (isa(MemDefInstr)) continue; + O << OmpDiagnosticsLocationInfo.getDebugLocStr(*MemDefInstr) << ", "; + //<<"At :"<getFunction(); + FuncGeneratingDefs[F].insert(ReachingDefs.begin(), ReachingDefs.end()); + } + Type * MemoryLdStMapClass::getType(ConstInstrPtr LdSt){ + if (auto St = dyn_cast(LdSt)){ + return St->getValueOperand()->getType(); + } + return LdSt->getType(); + } +void MemoryLdStMapClass::print() { + errs()<<"\n Printing usedef::\n"; + FuncParamInfo.print(); + for (auto Iter : MemUseToReachingDefsMap) { + auto MemUseInstr = Iter.first; + if (Iter.second.empty()) continue; + if (!EXISTSinMap(LdStPointsToMap, MemUseInstr)) continue; + auto PointsToMem = LdStPointsToMap[MemUseInstr]; + auto UseType = getType(MemUseInstr); + errs() << "\n Use::"<< *MemUseInstr <<" AT::" + << OmpDiagnosticsLocationInfo.getOrigVarName(PointsToMem) + << " Type:: "<<*UseType ; + + errs() << " At:: " << OmpDiagnosticsLocationInfo.getDebugLocStr(*MemUseInstr) + << " Defined at: "; + for (auto MemDefInstr : Iter.second) { + //if ( MemUseInstr == MemDefInstr ) continue; + if (isa(MemDefInstr) || UseType != getType(MemDefInstr)) continue; + //errs() << OmpDiagnosticsLocationInfo.getDebugLocStr(*MemDefInstr) << ", "; + errs() << " "<< *MemDefInstr << " At" <getName(); + for (auto D : Iter.second) + errs()<<"\n "<getMemoryInst(); + assert(Instr != nullptr); + const BasicBlock *parentBB = Instr->getParent(); + + if (CallInst * Call = dyn_cast(MemDef->getMemoryInst())){ + LLVM_DEBUG(dbgs()<<"\n Call instruction::"<<*Call); + BBReachingCalls[parentBB].insert(Call); + } + auto memVal = LdStToMem.insertLoadStore(Instr); + if (memVal == nullptr) + return; + if (auto St = dyn_cast(Instr)){ + auto StoredVal = St->getValueOperand(); + if (isa(StoredVal )){ + LdStToMem.FuncParamInfo.setValuesAlias(StoredVal, memVal); + } + } + assert(memVal != nullptr); + assert(parentBB != nullptr); + // bb_defAccess_memory_map[parentBB][memDef] = memVal;//TODO remove this ? + BBGeneratingDefs[parentBB][memVal] = + MemDef; // only one entry for every memval, later accesses clobber/kill + // previous defs + LLVM_DEBUG(dbgs() << "\n BasicBlock:" << parentBB << "\n Writes to:" + << *memVal << "\n by memdef:" << *MemDef); +} + +void MemorySSAUseDefWalker::print() { + LLVM_DEBUG(dbgs() << "\n==============================="); + for (auto iter1 : BBGeneratingDefs) { + auto bb = iter1.first; + LLVM_DEBUG(dbgs() << "\n BB:" << bb); + auto mem2access = iter1.second; + for (auto iter2 : mem2access) { + LLVM_DEBUG(dbgs() << "\n Memdef:" << *iter2.second + << "\n Writes to :" << *iter2.first); + } + } + for (auto iter1 : BBReachingDefs) { + auto memPhi = iter1.first; // MSSA->getMemoryAccess(bb); + if (memPhi == nullptr) + continue; + LLVM_DEBUG(dbgs() << "\n Mem Phi:" << *memPhi); + auto reachingDefs = BBReachingDefs[memPhi]; + for (auto iter3 : reachingDefs) { + auto writtenToVal = iter3.first; + LLVM_DEBUG(dbgs() << "\n Write to :" << *writtenToVal); + auto setOfDefs = iter3.second; + for (auto memDef : setOfDefs) { + LLVM_DEBUG(dbgs() << "\n Memdef:" << *memDef); + } + } + } + LLVM_DEBUG(dbgs() << "\n===============================\n"); +} + +/// PredBB is the predecessor block of BB, this function updates the reaching +/// defs of the BB, based on the following equation, +// ReachingDef[BB] = (ReachingDef[PredBB] - Kill[PredBB]) + Gen[BB] +void MemorySSAUseDefWalker::updateReachingDefsOfBB(const BasicBlock *PredBB, + const BasicBlock *BB) { + assert(PredBB != nullptr && BB != nullptr); + std::set KilledDefs; + LLVM_DEBUG(dbgs() << " \n phi :" + << "\n incoming bb:" << *PredBB); + // Add all the reaching call instructions from the pred to this block also. + BBReachingCalls[BB].insert(BBReachingCalls[PredBB].begin(),BBReachingCalls[PredBB].end()); + // If this PredBB generates any defs, then + // then add all the genrated defs from predecessor to the reaching defs of the + // BB. Also, record all the defs killed by the predecessor. + if (BBGeneratingDefs.find(PredBB) != BBGeneratingDefs.end()) + for (auto MapIter : BBGeneratingDefs[PredBB]) { + // Forall the defs generated in this PredBB. + auto MemWritten = MapIter.first; + auto DefAccss = MapIter.second; + auto NewElemInserted = BBReachingDefs[BB][MemWritten].insert(DefAccss); + LdStToMem.insertReachingDef(BB, DefAccss->getMemoryInst()); + // If new element inserted, then the analysis has not converged. + if (NewElemInserted.second) + HasConvergedFlagged = false; + // Keep track of all the defs killed in this BB. + KilledDefs.insert(MemWritten); + LLVM_DEBUG(dbgs() << "\n phi BB:" + << " \n REaching def:" << *MemWritten + << "\n def acces:" << *DefAccss); + } + + // All the reaching defs of the predecessor, also reach the BB, unless they + // are killed. This implements the union operator at a phi node + if (BBReachingDefs.find(PredBB) != BBReachingDefs.end()) + for (auto PredPhiIter : BBReachingDefs[PredBB]) { + // forall defs transitively passed by the phis of the incoming block + auto MemWritten = PredPhiIter.first; + if (KilledDefs.find(MemWritten) != KilledDefs.end()) + continue; // if this bb kills the mem, then ignore + auto MemDefSet = PredPhiIter.second; + insertDefs(BBReachingDefs[BB][MemWritten], MemDefSet.begin(), + MemDefSet.end()); + for (auto MDef : MemDefSet) { + LdStToMem.insertReachingDef(BB, MDef->getMemoryInst()); + } + } +} +/// The join operator for the reaching defs at BB. Udpates the reaching defs of +/// BB, based on its predecessors. +void MemorySSAUseDefWalker::reachingDefJoinOp(const BasicBlock *BB) { + if (BB == nullptr) + return; + MemoryPhi *BBPhi = MSSA->getMemoryAccess(BB); + if (BBPhi == nullptr) { + // BBPhi is null means basic block has a single predecessor. Since there is + // no phi here, we need to make sure to propagate all the reaching defs from + // its predecessor. + auto Pred = BB->getSinglePredecessor(); + if (Pred == nullptr) + return; + updateReachingDefsOfBB(Pred, BB); + return; + } + // Forall predecessor blocks for the Phi Node, perform the join operator for + // the reaching defs data flow analysis. + for (unsigned IncomingIndex = 0; + IncomingIndex < BBPhi->getNumIncomingValues(); IncomingIndex++) { + auto IncomingValue = BBPhi->getIncomingValue(IncomingIndex); + auto IncomingBB = IncomingValue->getBlock(); + updateReachingDefsOfBB(IncomingBB, BB); + } + // auto afterUpdateSize = sizeof(BBReachingDefs); + // LLVM_DEBUG(dbgs()<<"\n Size of :"<(MemAccss)) + return MemPhi; + if (MSSA->isLiveOnEntryDef(MemAccss)) + return nullptr; + return ( + getParentPhi(dyn_cast(MemAccss)->getDefiningAccess())); +} + + +/// Keep traversing the reaching definition to this \p MemAccss, until we reach +/// a Phi Node. This is a recursive function, traversing up reaching defs, till +/// we find a MemPhi, or the LiveOnEntry Node. +//bool +//MemorySSAUseDefWalker::isLiveOnEntry(const MemoryAccess *MemAccss) { +// if (auto MemPhi = dyn_cast(MemAccss)) +// return MemPhi; +// if (MSSA->isLiveOnEntryDef(MemAccss)) +// return nullptr; +// return ( +// getParentPhi(dyn_cast(MemAccss)->getDefiningAccess())); +//} +/// Update the reaching definitions for this \p MemUse. Update the record in +/// "MemUseToReachingDefsMap", which maps every mem use to a set of mem defs. +void MemorySSAUseDefWalker::updateClobberingAccess(const MemoryUse *MemUse) { + if (MemUse == nullptr) + return; + auto DefAccss = MemUse->getDefiningAccess(); + auto BB = DefAccss->getBlock(); + assert(BB != nullptr); + auto MemDefsInBB = BBGeneratingDefs[BB]; + auto Instr = MemUse->getMemoryInst(); + // Returns the Memory Written to by this instruction. + auto WrittenMem = LdStToMem.insertLoadStore(Instr); + // If this memory was defined in BB, then get the last instruction in the BB, + // that defines this memory, by looking up the Defs generated in the BB. + // Otherwise, it could be a reaching def, from some previous block, use the + // phi node to track that. Last case, we give up since we could not find any + // reaching def for this "WrittenMem". + if (MemDefsInBB.find(WrittenMem) != MemDefsInBB.end()) { + // found a write + auto MemDef = MemDefsInBB[WrittenMem]; + auto DefinedInstr = MemDef->getMemoryInst(); + LdStToMem.insertReachingDef(Instr, DefinedInstr, true); + // OmpInfo.insertReachingDef(Instr, DefinedInstr, WrittenMem, true); + // MemUseToReachingDefsMap[MemUse]={MemDef};//single reaching def + LLVM_DEBUG(dbgs() << "\n Same BB Def Instr :" << *DefinedInstr + << "\n Use Instr:" << *Instr); + } else if (auto MemPhi = getParentPhi(DefAccss)) { + // Get all the reaching defs at the Phi node, then find out all the + // instructions that write to the memory "WrittenMem". These are all the + // definitions that reach this MemUse. + auto ReachingDefsAtPhi = BBReachingDefs[MemPhi->getBlock()]; + if (ReachingDefsAtPhi.find(WrittenMem) != ReachingDefsAtPhi.end()) { + auto MemDefSet = ReachingDefsAtPhi[WrittenMem]; + for (auto MemDef : MemDefSet) { + auto DefinedInstr = MemDef->getMemoryInst(); + LdStToMem.insertReachingDef(Instr, DefinedInstr); + // MemUseToReachingDefsMap[MemUse].insert(MemDef); + LLVM_DEBUG(dbgs() << "\n Through PHI Def Instr :" << *DefinedInstr + << "\n Use Instr:" << *Instr); + } + } else { + // Our analysis failed to find any reaching def for this Instr. + LLVM_DEBUG(dbgs() << "\n NO DEF FOUND for :" << *Instr); + // Just create an empty entry for the memuse, so that during interprocedural analysis, we can add reaching defs if they are found. Without this, we loose track of the Memory uses. + LdStToMem.addLiveOnEntryUse(Instr); + LdStToMem.insertReachingDef(Instr); + // errs()<<"\n WARNING: No reaching defs found for this use::"<< *Instr; + } + } +} + +void MemorySSAUseDefWalker::getReachingDefs(const BasicBlock *BB, SetOfInstructions &ReachingDefs){ + for (auto Iter: BBReachingDefs[BB]){ + for (auto Def : Iter.second){ + ReachingDefs.insert(Def->getMemoryInst()); + } + } + for (auto Def : BBGeneratingDefs[BB]){ + ReachingDefs.insert(Def.second->getMemoryInst()); + } +} + +void MemorySSAUseDefWalker::updateBasicBlock(const BasicBlock *BB) { + // For interprocedural analysis, the reaching defs at the return instruction need to be tracked. Since it will be propagated back to the calling function. So, find out if there is a return instruction in this basic block, and compute the reaching defs for the return instruction. + auto MAList = MSSA->getBlockAccesses(BB); + bool ReturnBlock = false; + if (isa(BB->getTerminator())) + ReturnBlock = true; + if (MAList == nullptr && !ReturnBlock) + return; // no Memory access in this BB; + if (MAList != nullptr) + for (auto &MA : *MAList) { + Instruction *MemInstr = nullptr; + if (auto MemDef = dyn_cast(&MA)) { + MemInstr = MemDef->getMemoryInst(); + LLVM_DEBUG(dbgs() << "\n Memdef:" << *MemDef); + // TODO: Confirm if this needs to be done on every iteration till + // convergence, or only once is enough. + addToGeneratingDefs(MemDef); + } else if (auto MemUse = dyn_cast(&MA)) { + MemInstr = MemUse->getMemoryInst(); + LLVM_DEBUG(dbgs() << "\n Memuse:" << *MemUse); + auto UserInstr = MemUse->getMemoryInst(); + if (isa(UserInstr)){ + SetOfInstructions ReachingDefsATCall; + getReachingDefs(BB, ReachingDefsATCall); + LdStToMem.insertReachingDef(UserInstr, ReachingDefsATCall,/*Donot check for aliasing, since the memory written is not known for call inst.*/ false); + } + // TODO: optimize by not updating the clobber every iteration, but only + // after the defs have converged. + updateClobberingAccess(MemUse); + } + if (MemInstr != nullptr) LdStToMem.insertLoadStore(MemInstr); + if (MemInstr != nullptr && EXISTSinMap(BBReachingCalls,BB)) { + LLVM_DEBUG(dbgs()<<"\n user::"<<*MemInstr); + // If there are call instructions that reach the BB, then record it. + LdStToMem.addReachingCall(*MemInstr, BBReachingCalls[BB]); + } + } + if (ReturnBlock) { + SetOfInstructions ReachingDefsATReturnBlock; + getReachingDefs(BB, ReachingDefsATReturnBlock); + // For the basic block containing the return instruction, the reaching defs plus the generated defrs, are the defs genereated by the entire function. + LdStToMem.addFuncGeneratingDefs(ReachingDefsATReturnBlock); + } +} +// Entry Point for Reaching definitions data flow analysis. After this function, +// we have a record of all the reaching definitions for every memory use. Do BFS +// traversal of the Basic Blocks starting from the LiveOnEntry Access basic +// block. At the entry of every basic block, perform the following update, +// ReachingDef[BB] = \Union_{P \in Pred(BB)} ((ReachingDef[P] - Kill[P])+Gen[P]) +// Then iterate over all the memory uses in the BB, and find all the reaching +// defs that may clobber the memory being read by the memory use. Following 3 +// cases can occuer, +// 1. There is a single MemDef for the memory, that occurs in the same basic +// block as the use. +// 2. Among all the reaching defs at the MemPhi, that dominates this MemUse, add +// all MemDefs that clobber the coresponding memory. +// 3. Cannot find any reaching defs, analysis failed. +void MemorySSAUseDefWalker::reachingDefAnalysis() { + // Get the first memory def of the function + MemoryAccess *LiveOnEntry = MSSA->getLiveOnEntryDef(); + assert(LiveOnEntry != nullptr && + "Memory SSA does Must have LiveOnEntry Definition "); + const BasicBlock *EntryBlock = LiveOnEntry->getBlock(); + assert(EntryBlock != nullptr && "The entry block cannot be Null "); + unsigned IterationCount = 0; + // This do while loop, runs until the analysis converges, that is no new + // reaching defs are added. + do { + LLVM_DEBUG(dbgs() << "\n Analysis Iteration " << ++IterationCount); + HasConvergedFlagged = true; + std::set VisitedBBSet; + std::queue BBQueue; + // Analysis starts from the EntryBlock. + BBQueue.push(EntryBlock); + // BFS traversal. + while (!BBQueue.empty()) { + auto BB = BBQueue.front(); + BBQueue.pop(); + // Ignore if already visited. + if (VisitedBBSet.find(BB) != VisitedBBSet.end()) + continue; + VisitedBBSet.insert(BB); + LLVM_DEBUG(dbgs() << "\n Basic Block:" << BB); + // Perform the join operator at the entry of this basicblock. + reachingDefJoinOp(BB); + // Now update all the reaching definitions for every memory use in this + // basic block. + updateBasicBlock(BB); + // print(); + for (auto Succ = succ_begin(BB), End = succ_end(BB); Succ != End; + Succ++) { + // LLVM_DEBUG(dbgs()<<"\n Enqueue block:"<<*succ); + BBQueue.push(*Succ); + } + } + LLVM_DEBUG(dbgs() << "\n Printing Def Use Chains after 1 round:\n"); + // for (auto Iter : MemUseToReachingDefsMap){ + // auto MemUse = Iter.first; + // auto MemUseInstr = MemUse->getMemoryInst(); + // LLVM_DEBUG(dbgs()<<"\n Use :"<<*MemUseInstr + // <<"At :"<getMemoryInst(); + // LLVM_DEBUG(dbgs()<<"\n Def :"<<*MemDefInstr + // <<"At + // :"<getMemoryInst(); + // auto LoadedValue = LdStToMem.getMemoryForLdSt(UseInstr); + // if (LdStToMem.isDoublePointer(UseInstr)) + // continue; + // LLVM_DEBUG(dbgs()<<"\n Use :"<<*UseInstr + // <<"At :"<getMemoryInst(); + // LLVM_DEBUG(dbgs()<<"\n Def :"<<*instr + // <<"At :"<(F).getMSSA(); + LLVM_DEBUG(MSSA.dump()); + OmpDiagnosticsLocationInfo.initFunc(F); + MemoryLdStMapClass LdStToMem; + MemorySSAUseDefWalker useDefWalker(MSSA, LdStToMem); + useDefWalker.reachingDefAnalysis(); + return LdStToMem; +} + +PreservedAnalyses +MemUseDefLocalAnalysisPrinterPass::run(Function &F, + FunctionAnalysisManager &AM) { + OS << "\n 'omp diagnostics Local Analysis' for function '" << F.getName() + << "'\n"; + AM.getResult(F).print(OS); + return PreservedAnalyses::all(); +} + +void MemUseDefGlobalAnalysis::setIndirectCallMap(Function &Func){ + for (Use &U : Func.uses()) { + User *UR = U.getUser(); + for (auto &UseofUser : UR->uses()){ + if (auto IndirectCall = dyn_cast(UseofUser.getUser())){ + LLVM_DEBUG(dbgs()<<"u of u ::"<<*IndirectCall + <<"\n op number: "< FParams; + for (auto &A : Func.args()){ + FParams.push_back(&A); + } + for (unsigned ArgNum = IndirectCall->getNumArgOperands()-1, ParamNum=FParams.size()-1 ; ArgNum >UseofUser.getOperandNo() ; ArgNum--, ParamNum--){ + auto Arg = IndirectCall->getArgOperand(ArgNum); + auto Param = FParams[ParamNum]; + LLVM_DEBUG(dbgs()<<"\n Arg::"<<*Arg + <<"\n Param:: "<<*Param); + IndirectCallsMap[IndirectCall][Arg] = Param; + if (ParamNum == 0 ) break; + } + } + } + LLVM_DEBUG(dbgs()<<"\n user:"<<*UR<<"\n use::"<<*U.get()); + // Ignore blockaddress uses. + //if (isa(UR)) continue; + // If no abstract call site was created we did not understand the use, bail. + AbstractCallSite ACS(&U); + if (!ACS) continue; + LLVM_DEBUG(dbgs()<<"\n ACS is indirect:: "<< ACS.isIndirectCall() <<" is callback: "<< ACS.isCallbackCall() + <<" num ops: " << ACS.getNumArgOperands() << "\n ACS: "); + } +} +AnalysisKey MemUseDefGlobalAnalysis::Key; + +std::map > MemUseDefGlobalAnalysis::IndirectCallsMap; +void MemUseDefGlobalAnalysis::analyzeModule(Result &MemUseDefInfo) { + LLVM_DEBUG(dbgs() << "\n Analysis module:"); + // FunctionAnalysisManager &FAM = + // AM.getResult(M).getManager(); + + FuncToMemInfoType FuncToMemInfo; + for (Function &Func : *ThisModule) { + LLVM_DEBUG(dbgs()<<"\n Func:"<getResult(Func); + FuncToMemInfo[&Func]->print(); + } + LLVM_DEBUG(dbgs() << "\n Printing done:" ); + InterproceduralMemDFA IPA(FuncToMemInfo); + const std::string MainFuncName = "main"; + if (EXISTSinMap(FuncNameMap, MainFuncName)) { + IPA.run(*FuncNameMap[MainFuncName]); + } + // for (auto Iter : FuncToMemInfo){ + // LLVM_DEBUG(dbgs() <<"\n Usedef for "<getName() + // <<" \n "); + // Iter.second->print(); + // } +} + +void InterproceduralMemDFA::getParamNumber(const CallInst &CI, SetOfInstructions &ReachingDefs, MemoryLdStMapClass &LdStToMemFunc){ + for (auto I : ReachingDefs) { + auto WrittenMem = LdStToMemFunc.getMemoryForLdSt(I); + LLVM_DEBUG(dbgs()<<"\n Writtenmem::"<<*WrittenMem); + for (unsigned ArgNum = 0 ; ArgNum < CI.getNumArgOperands(); ArgNum++){ + auto ArgV = CI.getArgOperand(ArgNum); + auto PassedArgMem = LdStToMemFunc.getMemoryForLdSt(ArgV); + + LLVM_DEBUG(dbgs()<<"\n arg:"<propagateReachingDefsIntoFunc(ReachingDefs, argNum); +} + +void InterproceduralMemDFA::updateReachingDefsOfBB(BasicBlock &BB, bool &NewDefsAdded, std::queue &FuncQueue){ + + // Iterate over all the call instructions, then propagate the reaching defs of the call instruction into the function body. Also, the called function will generate some reaching defs, add the generated reaching defs to the following instructions after the call instruction. + auto ThisFunc = BB.getParent(); + auto LdStToMemFunc = FuncToMemInfo[ThisFunc]; + //LdStToMemFunc->print(); + for (Instruction &I : BB){ + // IF there are new defs generated by the called function, then add it to the instruction. + if (const CallInst *CallInstr = dyn_cast(&I) ) { + Function *CalledF = getCalledFunction(*CallInstr);// nullptr ; + //if (EXISTSinMap(MemUseDefGlobalAnalysis::IndirectCallsMap, CallInstr)){ + // // If this call is an indirect call, then get the actual function called. + // auto Iter = MemUseDefGlobalAnalysis::IndirectCallsMap[CallInstr].begin(); + // CalledF = Iter->second->getParent(); + //} else + // CalledF = CallInstr->getCalledFunction(); + assert(CalledF != nullptr && "Cannot get the called function "); + if (!EXISTSinMap(FuncToMemInfo, CalledF)) continue; + LLVM_DEBUG(dbgs()<<"\n Called F ::"<getName()); + FuncQueue.push(CalledF); + LdStToMemFunc->handleCallArguments(*CallInstr); + // Now propagate the reaching defs into the body of the called function. The function returns true if a new reaching def is added, that means analysis has not converged. + if (LdStToMemFunc->existsReachingDefForUser(I)) { + SetOfInstructions &ReachingDefs = LdStToMemFunc->getReachingDefsAt(I); + //getParamNumber(*CallInstr, ReachingDefs, *LdStToMemFunc); + NewDefsAdded |= propagateReachingDefsIntoFunc(ReachingDefs, *CalledF); + LLVM_DEBUG(dbgs()<<"\n NewDefsAdded after propageting reaching defs into the function::"<args()){ + if (auto CArgI = dyn_cast(CArg)){ + if (LdStToMemFunc->existsReachingDefForUser(*CArgI)){ + SetOfInstructions &ReachingDefs = LdStToMemFunc->getReachingDefsAt(*CArgI); + NewDefsAdded |= propagateReachingDefsIntoFunc(ReachingDefs, *CalledF, CArgNum); + LLVM_DEBUG(dbgs()<<"\n NewDefsAdded after propageting reaching defs into the function::"<addFuncGeneratingDefs(FuncGen, ThisFunc); + // Now add the defs generated by the func, to its users. + for (auto User : LdStToMemFunc->getUsersOfCall(*CallInstr)){ + // This adds reaching defs to instructions outside this current basic block also. + // TODO: need to set NewDefsAdded + LLVM_DEBUG(dbgs()<<"\n User of call :"<insertReachingDef(User, FuncGen); + LLVM_DEBUG(dbgs()<<"\n NewDefsAdded from the funcgen to the user of call inst::"<getFuncGeneratingDefs(&CalledF); + //return MemInfo->getFuncGeneratingDefs(); +} + +void InterproceduralMemDFA::run(Function &F){ +// 0. Create a Queue of functions to analyze. +// 1. Do a BFS traversal over all the basicblocks of the function, \p F, +// 2. At every call instruction, +// 2.0. Add the called func into the queue. +// 2.1. Get the reaching defs at the call instruction, +// 2.2. Propagate those reaching defs over the called function body. +// 2.2.1. Check every mem use inside the function, and iterate over the reaching defs, if the memory is the same then add to the reaching defs of the user. +// 2.2.2. Get the definitions generated by the function,i.e. all the functions reaching the return instructions inside the function. +// 3. Get the defs generated by the function. +// 4. Look for all the users where the call instr reaches, and add the defs generated by the call. + + FuncToMemInfo[&F]->print(); + bool NewDefsAdded = false; + unsigned CountIteration = 0 ; + do { + // This is the Queue of functions, to handle the interprocedurally called funcs. Every call instruction adds the function to this queue. We iterate till the queue is empty. + std::queue FuncQueue; FuncQueue.push(&F); + while (!FuncQueue.empty()){ + auto AnalyzeFunc = FuncQueue.front(); FuncQueue.pop(); + LLVM_DEBUG(dbgs()<<"\n Analyzing functions:"<getName()); + std::set VisitedBBSet; + std::queue< BasicBlock *> BBQueue; + BBQueue.push(&AnalyzeFunc->getEntryBlock()); + // BFS traversal of the function body. + while (!BBQueue.empty()) { + auto BB = BBQueue.front(); + BBQueue.pop(); + // Ignore if already visited. + if (VisitedBBSet.find(BB) != VisitedBBSet.end()) + continue; + VisitedBBSet.insert(BB); + //LLVM_DEBUG(dbgs() << "\n Basic Block:" << *BB); + updateReachingDefsOfBB(*BB, NewDefsAdded, FuncQueue); + // print(); + for (auto Succ = succ_begin(BB), End = succ_end(BB); Succ != End; + Succ++) { + // LLVM_DEBUG(dbgs()<<"\n Enqueue block:"<<*succ); + BBQueue.push(*Succ); + } + } + } + LLVM_DEBUG(dbgs()<<"\n NewDefs added ?"< 20) + break; + }while(NewDefsAdded); + FuncToMemInfo[&F]->print(); +} + +void MemUseDefGlobalAnalysis::analyzeBasicBlock(const BasicBlock &BB, Result &MemUseDefInfo) { + // for (auto &I : BB) { + // if (const CallInst *Call = dyn_cast(&I)) { + // auto CalledFunc = Call->getCalledFunction(); + // if (!CalledFunc->hasName()) + // continue; + // // Ignore recursive calls + // if (CalledFunc == BB.getParent()) + // continue; + // if (EXISTSinMap(FuncNameMap, CalledFunc->getName())) + // analyzeFunction(*CalledFunc, OmpEnvInfo); + // OmpEnvInfo.processOmpRTLCall(*Call); + // } + //} +} + +void MemUseDefGlobalAnalysis::analyzeFunction(Function &F, Result &MemUseDefInfo) { + MemorySSA &MSSA = FunctionAM->getResult(F).getMSSA(); + LLVM_DEBUG(MSSA.dump()); + OmpDiagnosticsLocationInfo.initFunc(F); + MemorySSAUseDefWalker useDefWalker(MSSA, MemUseDefInfo); + useDefWalker.reachingDefAnalysis(); +} + +MemUseDefGlobalAnalysis::Result +MemUseDefGlobalAnalysis::run(Module &M, ModuleAnalysisManager &AM) { + // OmpDiagnosticsGlobalInfo result; + ThisModule = &M; + // FunctionAM = + // &AnalysisManager->getResult(M).getManager(); + AnalysisManager = &AM; + FunctionAM = &AnalysisManager->getResult(M).getManager(); + LLVM_DEBUG(dbgs() << "\n Analysis module:"); + Result MemUseDefInfo; + analyzeModule(MemUseDefInfo); + + return MemUseDefInfo; +} + +PreservedAnalyses +MemUseDefGlobalAnalysisPrinterPass::run(Module &M, ModuleAnalysisManager &AM) { + OS << "'omp diagnostics Analysis' for module '" << M.getName() << "'\n"; + auto Res = AM.getResult(M); + //Res.print(OS); + return PreservedAnalyses::all(); +} + +// bool OmpDiagnosticsGlobalInfoWrapperPass::runOnModule(Module &M) { +// //OmpDiagnosticsDataFlowAnalysis SSDFA( +// // M, [this](Function &F) -> const OmpDiagnosticsInfo & { +// // return getAnalysis(F).getResult(); +// // }); +// //SSI = SSDFA.run(); +////bool OmpDiagnosticsInfoWrapperPass::runOnFunction(Function &F) { +//// MemUseDefLocalAnalysis +/// OMPD(F);//.getResult(F)); / OmpEnvInfo = +///&OMPD.run(); +// std::map FuncNameMap; +// for (Function &Func : M) { +// if (!Func.hasName() || +// Func.isIntrinsic() || +// Func.isDeclaration()) continue; +// FuncNameMap[Func.getName()] = &Func; +// } +// if (EXISTSinMap(FuncNameMap, "main")){ +// } +// return false; +//} + +static const char LocalPassArg[] = "omp-diagnostics-local"; +static const char LocalPassName[] = "omp diagnostics Local Analysis"; +static const char GlobalPassName[] = "omp diagnostics Analysis"; diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp index 3fb963fddf3e4..f0ccdb42996f8 100644 --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -39,6 +39,7 @@ #include "llvm/Analysis/MemoryDependenceAnalysis.h" #include "llvm/Analysis/MemorySSA.h" #include "llvm/Analysis/ModuleSummaryAnalysis.h" +#include "llvm/Analysis/MemUseDefAnalysis.h" #include "llvm/Analysis/OptimizationRemarkEmitter.h" #include "llvm/Analysis/PhiValues.h" #include "llvm/Analysis/PostDominators.h" diff --git a/llvm/lib/Passes/PassRegistry.def b/llvm/lib/Passes/PassRegistry.def index 0d614d1d69b62..15def3f32fb38 100644 --- a/llvm/lib/Passes/PassRegistry.def +++ b/llvm/lib/Passes/PassRegistry.def @@ -22,6 +22,7 @@ MODULE_ANALYSIS("callgraph", CallGraphAnalysis()) MODULE_ANALYSIS("lcg", LazyCallGraphAnalysis()) MODULE_ANALYSIS("module-summary", ModuleSummaryIndexAnalysis()) MODULE_ANALYSIS("no-op-module", NoOpModuleAnalysis()) +MODULE_ANALYSIS("mem-usedef-analysis", MemUseDefGlobalAnalysis()) MODULE_ANALYSIS("profile-summary", ProfileSummaryAnalysis()) MODULE_ANALYSIS("stack-safety", StackSafetyGlobalAnalysis()) MODULE_ANALYSIS("targetlibinfo", TargetLibraryAnalysis()) @@ -75,6 +76,7 @@ MODULE_PASS("print", PrintModulePass(dbgs())) MODULE_PASS("print-lcg", LazyCallGraphPrinterPass(dbgs())) MODULE_PASS("print-lcg-dot", LazyCallGraphDOTPrinterPass(dbgs())) MODULE_PASS("print-stack-safety", StackSafetyGlobalPrinterPass(dbgs())) +MODULE_PASS("print-mem-usedef-analysis", MemUseDefGlobalAnalysisPrinterPass(dbgs())) MODULE_PASS("rewrite-statepoints-for-gc", RewriteStatepointsForGC()) MODULE_PASS("rewrite-symbols", RewriteSymbolPass()) MODULE_PASS("rpo-functionattrs", ReversePostOrderFunctionAttrsPass()) @@ -124,6 +126,7 @@ FUNCTION_ANALYSIS("memoryssa", MemorySSAAnalysis()) FUNCTION_ANALYSIS("phi-values", PhiValuesAnalysis()) FUNCTION_ANALYSIS("regions", RegionInfoAnalysis()) FUNCTION_ANALYSIS("no-op-function", NoOpFunctionAnalysis()) +FUNCTION_ANALYSIS("mem-usedef-analysis-local", MemUseDefLocalAnalysis()) FUNCTION_ANALYSIS("opt-remark-emit", OptimizationRemarkEmitterAnalysis()) FUNCTION_ANALYSIS("scalar-evolution", ScalarEvolutionAnalysis()) FUNCTION_ANALYSIS("stack-safety-local", StackSafetyAnalysis()) @@ -212,6 +215,7 @@ FUNCTION_PASS("print", DemandedBitsPrinterPass(dbgs())) FUNCTION_PASS("print", DominanceFrontierPrinterPass(dbgs())) FUNCTION_PASS("print", LoopPrinterPass(dbgs())) FUNCTION_PASS("print", MemorySSAPrinterPass(dbgs())) +FUNCTION_PASS("print", MemUseDefLocalAnalysisPrinterPass(dbgs())) FUNCTION_PASS("print", PhiValuesPrinterPass(dbgs())) FUNCTION_PASS("print", RegionInfoPrinterPass(dbgs())) FUNCTION_PASS("print", ScalarEvolutionPrinterPass(dbgs())) diff --git a/llvm/test/Analysis/MemUseDefAnalysis/DRACC_OMP_022_MxV_Missing_Data_yes.ll b/llvm/test/Analysis/MemUseDefAnalysis/DRACC_OMP_022_MxV_Missing_Data_yes.ll new file mode 100644 index 0000000000000..047176fc414cb --- /dev/null +++ b/llvm/test/Analysis/MemUseDefAnalysis/DRACC_OMP_022_MxV_Missing_Data_yes.ll @@ -0,0 +1,834 @@ +; ModuleID = 'omp-host.ll' +source_filename = "DRACC_OMP_022_MxV_Missing_Data_yes.c" +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +%struct.ident_t = type { i32, i32, i32, i32, i8* } +%struct.__tgt_offload_entry = type { i8*, i8*, i64, i32, i32 } +%struct.__tgt_device_image = type { i8*, i8*, %struct.__tgt_offload_entry*, %struct.__tgt_offload_entry* } +%struct.__tgt_bin_desc = type { i32, %struct.__tgt_device_image*, %struct.__tgt_offload_entry*, %struct.__tgt_offload_entry* } + +$.omp_offloading.descriptor_reg.nvptx64-nvidia-cuda = comdat any + +@b = common dso_local global i32* null, align 8, !dbg !0 +@a = common dso_local global i32* null, align 8, !dbg !6 +@c = common dso_local global i32* null, align 8, !dbg !10 +@.str = private unnamed_addr constant [23 x i8] c";unknown;unknown;0;0;;\00", align 1 +@0 = private unnamed_addr constant %struct.ident_t { i32 0, i32 2050, i32 0, i32 0, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i32 0, i32 0) }, align 8 +@1 = private unnamed_addr constant [51 x i8] c";DRACC_OMP_022_MxV_Missing_Data_yes.c;Mult;31;17;;\00" +@2 = private unnamed_addr constant %struct.ident_t { i32 0, i32 514, i32 0, i32 0, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i32 0, i32 0) }, align 8 +@3 = private unnamed_addr constant [51 x i8] c";DRACC_OMP_022_MxV_Missing_Data_yes.c;Mult;31;50;;\00" +@4 = private unnamed_addr constant %struct.ident_t { i32 0, i32 2, i32 0, i32 0, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i32 0, i32 0) }, align 8 +@.__omp_offloading_801_20a8bc_Mult_l29.region_id = weak constant i8 0 +@.offload_sizes = private unnamed_addr constant [3 x i64] [i64 20000, i64 100000000, i64 20000] +@.offload_maptypes = private unnamed_addr constant [3 x i64] [i64 35, i64 32, i64 33] +@.str.3 = private unnamed_addr constant [23 x i8] c"Data Race occured: %s\0A\00", align 1 +@.str.4 = private unnamed_addr constant [5 x i8] c"true\00", align 1 +@.str.5 = private unnamed_addr constant [6 x i8] c"false\00", align 1 +@.omp_offloading.entry_name = internal unnamed_addr constant [37 x i8] c"__omp_offloading_801_20a8bc_Mult_l29\00" +@.omp_offloading.entry.__omp_offloading_801_20a8bc_Mult_l29 = weak constant %struct.__tgt_offload_entry { i8* @.__omp_offloading_801_20a8bc_Mult_l29.region_id, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.omp_offloading.entry_name, i32 0, i32 0), i64 0, i32 0, i32 0 }, section ".omp_offloading.entries", align 1 +@.omp_offloading.entries_begin = external constant %struct.__tgt_offload_entry +@.omp_offloading.entries_end = external constant %struct.__tgt_offload_entry +@.omp_offloading.img_start.nvptx64-nvidia-cuda = extern_weak constant i8 +@.omp_offloading.img_end.nvptx64-nvidia-cuda = extern_weak constant i8 +@.omp_offloading.device_images = internal unnamed_addr constant [1 x %struct.__tgt_device_image] [%struct.__tgt_device_image { i8* @.omp_offloading.img_start.nvptx64-nvidia-cuda, i8* @.omp_offloading.img_end.nvptx64-nvidia-cuda, %struct.__tgt_offload_entry* @.omp_offloading.entries_begin, %struct.__tgt_offload_entry* @.omp_offloading.entries_end }], comdat($.omp_offloading.descriptor_reg.nvptx64-nvidia-cuda), align 8 +@.omp_offloading.descriptor = internal constant %struct.__tgt_bin_desc { i32 1, %struct.__tgt_device_image* getelementptr inbounds ([1 x %struct.__tgt_device_image], [1 x %struct.__tgt_device_image]* @.omp_offloading.device_images, i32 0, i32 0), %struct.__tgt_offload_entry* @.omp_offloading.entries_begin, %struct.__tgt_offload_entry* @.omp_offloading.entries_end }, comdat($.omp_offloading.descriptor_reg.nvptx64-nvidia-cuda), align 8 +@__dso_handle = external hidden global i8 +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @.omp_offloading.descriptor_reg.nvptx64-nvidia-cuda, i8* bitcast (void ()* @.omp_offloading.descriptor_reg.nvptx64-nvidia-cuda to i8*) }] + +; Function Attrs: nounwind uwtable +define dso_local i32 @init() #0 !dbg !17 { +entry: + call void @llvm.dbg.value(metadata i32 0, metadata !21, metadata !DIExpression()), !dbg !27 + br label %for.cond, !dbg !28 + +for.cond: ; preds = %for.inc9, %entry + %i.0 = phi i32 [ 0, %entry ], [ %inc10, %for.inc9 ], !dbg !29 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !21, metadata !DIExpression()), !dbg !27 + %cmp = icmp slt i32 %i.0, 5000, !dbg !30 + br i1 %cmp, label %for.body, label %for.cond.cleanup, !dbg !31 + +for.cond.cleanup: ; preds = %for.cond + br label %for.end11 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 0, metadata !23, metadata !DIExpression()), !dbg !32 + br label %for.cond1, !dbg !33 + +for.cond1: ; preds = %for.inc, %for.body + %j.0 = phi i32 [ 0, %for.body ], [ %inc, %for.inc ], !dbg !34 + call void @llvm.dbg.value(metadata i32 %j.0, metadata !23, metadata !DIExpression()), !dbg !32 + %cmp2 = icmp slt i32 %j.0, 5000, !dbg !35 + br i1 %cmp2, label %for.body4, label %for.cond.cleanup3, !dbg !37 + +for.cond.cleanup3: ; preds = %for.cond1 + br label %for.end + +for.body4: ; preds = %for.cond1 + %0 = load i32*, i32** @b, align 8, !dbg !38, !tbaa !40 + %mul = mul nsw i32 %i.0, 5000, !dbg !44 + %add = add nsw i32 %j.0, %mul, !dbg !45 + %idxprom = sext i32 %add to i64, !dbg !38 + %arrayidx = getelementptr inbounds i32, i32* %0, i64 %idxprom, !dbg !38 + store i32 1, i32* %arrayidx, align 4, !dbg !46, !tbaa !47 + br label %for.inc, !dbg !49 + +for.inc: ; preds = %for.body4 + %inc = add nsw i32 %j.0, 1, !dbg !50 + call void @llvm.dbg.value(metadata i32 %inc, metadata !23, metadata !DIExpression()), !dbg !32 + br label %for.cond1, !dbg !51, !llvm.loop !52 + +for.end: ; preds = %for.cond.cleanup3 + %1 = load i32*, i32** @a, align 8, !dbg !54, !tbaa !40 + %idxprom5 = sext i32 %i.0 to i64, !dbg !54 + %arrayidx6 = getelementptr inbounds i32, i32* %1, i64 %idxprom5, !dbg !54 + store i32 1, i32* %arrayidx6, align 4, !dbg !55, !tbaa !47 + %2 = load i32*, i32** @c, align 8, !dbg !56, !tbaa !40 + %idxprom7 = sext i32 %i.0 to i64, !dbg !56 + %arrayidx8 = getelementptr inbounds i32, i32* %2, i64 %idxprom7, !dbg !56 + store i32 0, i32* %arrayidx8, align 4, !dbg !57, !tbaa !47 + br label %for.inc9, !dbg !58 + +for.inc9: ; preds = %for.end + %inc10 = add nsw i32 %i.0, 1, !dbg !59 + call void @llvm.dbg.value(metadata i32 %inc10, metadata !21, metadata !DIExpression()), !dbg !27 + br label %for.cond, !dbg !60, !llvm.loop !61 + +for.end11: ; preds = %for.cond.cleanup + ret i32 0, !dbg !63 +} + +; Function Attrs: argmemonly nounwind +declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 + +; Function Attrs: nounwind readnone speculatable +declare void @llvm.dbg.declare(metadata, metadata, metadata) #2 + +; Function Attrs: argmemonly nounwind +declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1 + +; Function Attrs: nounwind uwtable +define dso_local i32 @Mult() #0 !dbg !64 { +entry: + %.offload_baseptrs = alloca [3 x i8*], align 8 + %.offload_ptrs = alloca [3 x i8*], align 8 + %0 = load i32*, i32** @c, align 8, !dbg !65, !tbaa !40 + %1 = load i32*, i32** @b, align 8, !dbg !65, !tbaa !40 + %2 = load i32*, i32** @a, align 8, !dbg !65, !tbaa !40 + %3 = load i32*, i32** @c, align 8, !dbg !65 + %4 = load i32*, i32** @c, align 8, !dbg !66, !tbaa !40 + %arrayidx = getelementptr inbounds i32, i32* %4, i64 0, !dbg !66 + %5 = load i32*, i32** @b, align 8, !dbg !65 + %6 = load i32*, i32** @b, align 8, !dbg !68, !tbaa !40 + %arrayidx1 = getelementptr inbounds i32, i32* %6, i64 0, !dbg !68 + %7 = load i32*, i32** @a, align 8, !dbg !65 + %8 = load i32*, i32** @a, align 8, !dbg !69, !tbaa !40 + %arrayidx2 = getelementptr inbounds i32, i32* %8, i64 0, !dbg !69 + %9 = getelementptr inbounds [3 x i8*], [3 x i8*]* %.offload_baseptrs, i32 0, i32 0, !dbg !65 + %10 = bitcast i8** %9 to i32**, !dbg !65 + store i32* %3, i32** %10, align 8, !dbg !65 + %11 = getelementptr inbounds [3 x i8*], [3 x i8*]* %.offload_ptrs, i32 0, i32 0, !dbg !65 + %12 = bitcast i8** %11 to i32**, !dbg !65 + store i32* %arrayidx, i32** %12, align 8, !dbg !65 + %13 = getelementptr inbounds [3 x i8*], [3 x i8*]* %.offload_baseptrs, i32 0, i32 1, !dbg !65 + %14 = bitcast i8** %13 to i32**, !dbg !65 + store i32* %5, i32** %14, align 8, !dbg !65 + %15 = getelementptr inbounds [3 x i8*], [3 x i8*]* %.offload_ptrs, i32 0, i32 1, !dbg !65 + %16 = bitcast i8** %15 to i32**, !dbg !65 + store i32* %arrayidx1, i32** %16, align 8, !dbg !65 + %17 = getelementptr inbounds [3 x i8*], [3 x i8*]* %.offload_baseptrs, i32 0, i32 2, !dbg !65 + %18 = bitcast i8** %17 to i32**, !dbg !65 + store i32* %7, i32** %18, align 8, !dbg !65 + %19 = getelementptr inbounds [3 x i8*], [3 x i8*]* %.offload_ptrs, i32 0, i32 2, !dbg !65 + %20 = bitcast i8** %19 to i32**, !dbg !65 + store i32* %arrayidx2, i32** %20, align 8, !dbg !65 + %21 = getelementptr inbounds [3 x i8*], [3 x i8*]* %.offload_baseptrs, i32 0, i32 0, !dbg !65 + %22 = getelementptr inbounds [3 x i8*], [3 x i8*]* %.offload_ptrs, i32 0, i32 0, !dbg !65 + %23 = call i32 @__tgt_target_teams(i64 0, i8* @.__omp_offloading_801_20a8bc_Mult_l29.region_id, i32 3, i8** %21, i8** %22, i64* getelementptr inbounds ([3 x i64], [3 x i64]* @.offload_sizes, i32 0, i32 0), i64* getelementptr inbounds ([3 x i64], [3 x i64]* @.offload_maptypes, i32 0, i32 0), i32 0, i32 0), !dbg !65 + %24 = icmp ne i32 %23, 0, !dbg !65 + br i1 %24, label %omp_offload.failed, label %omp_offload.cont, !dbg !65 + +omp_offload.failed: ; preds = %entry + call void @__omp_offloading_801_20a8bc_Mult_l29(i32* %0, i32* %1, i32* %2) #6, !dbg !70 + br label %omp_offload.cont, !dbg !65 + +omp_offload.cont: ; preds = %omp_offload.failed, %entry + ret i32 0, !dbg !71 +} + +; Function Attrs: norecurse nounwind uwtable +define internal void @__omp_offloading_801_20a8bc_Mult_l29_debug__(i32* %c, i32* %b, i32* %a) #3 !dbg !72 { +entry: + %c.addr = alloca i32*, align 8 + %b.addr = alloca i32*, align 8 + %a.addr = alloca i32*, align 8 + %.kmpc_loc.addr = alloca %struct.ident_t, align 8 + %0 = bitcast %struct.ident_t* %.kmpc_loc.addr to i8* + %1 = bitcast %struct.ident_t* @4 to i8* + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 24, i1 false) + store i32* %c, i32** %c.addr, align 8, !tbaa !40 + call void @llvm.dbg.declare(metadata i32** %c.addr, metadata !76, metadata !DIExpression()), !dbg !79 + store i32* %b, i32** %b.addr, align 8, !tbaa !40 + call void @llvm.dbg.declare(metadata i32** %b.addr, metadata !77, metadata !DIExpression()), !dbg !80 + store i32* %a, i32** %a.addr, align 8, !tbaa !40 + call void @llvm.dbg.declare(metadata i32** %a.addr, metadata !78, metadata !DIExpression()), !dbg !81 + %2 = getelementptr inbounds %struct.ident_t, %struct.ident_t* %.kmpc_loc.addr, i32 0, i32 4, !dbg !82 + store i8* getelementptr inbounds ([51 x i8], [51 x i8]* @1, i32 0, i32 0), i8** %2, align 8, !dbg !82, !tbaa !84 + call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* %.kmpc_loc.addr, i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32**, i32**, i32**)* @.omp_outlined..2 to void (i32*, i32*, ...)*), i32** %c.addr, i32** %b.addr, i32** %a.addr), !dbg !82 + ret void, !dbg !86 +} + +; Function Attrs: norecurse nounwind uwtable +define internal void @.omp_outlined._debug__(i32* noalias %.global_tid., i32* noalias %.bound_tid., i32** dereferenceable(8) %c, i32** dereferenceable(8) %b, i32** dereferenceable(8) %a) #3 !dbg !87 { +entry: + %.omp.comb.lb = alloca i32, align 4 + %.omp.comb.ub = alloca i32, align 4 + %.omp.stride = alloca i32, align 4 + %.omp.is_last = alloca i32, align 4 + %.kmpc_loc.addr = alloca %struct.ident_t, align 8 + %0 = bitcast %struct.ident_t* %.kmpc_loc.addr to i8* + %1 = bitcast %struct.ident_t* @0 to i8* + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 24, i1 false) + call void @llvm.dbg.value(metadata i32* %.global_tid., metadata !96, metadata !DIExpression()), !dbg !107 + call void @llvm.dbg.value(metadata i32* %.bound_tid., metadata !97, metadata !DIExpression()), !dbg !107 + call void @llvm.dbg.value(metadata i32** %c, metadata !98, metadata !DIExpression()), !dbg !108 + call void @llvm.dbg.value(metadata i32** %b, metadata !99, metadata !DIExpression()), !dbg !109 + call void @llvm.dbg.value(metadata i32** %a, metadata !100, metadata !DIExpression()), !dbg !110 + %2 = bitcast i32* %.omp.comb.lb to i8*, !dbg !111 + call void @llvm.lifetime.start.p0i8(i64 4, i8* %2) #6, !dbg !111 + call void @llvm.dbg.declare(metadata i32* %.omp.comb.lb, metadata !102, metadata !DIExpression()), !dbg !107 + store i32 0, i32* %.omp.comb.lb, align 4, !dbg !112, !tbaa !47 + %3 = bitcast i32* %.omp.comb.ub to i8*, !dbg !111 + call void @llvm.lifetime.start.p0i8(i64 4, i8* %3) #6, !dbg !111 + call void @llvm.dbg.declare(metadata i32* %.omp.comb.ub, metadata !103, metadata !DIExpression()), !dbg !107 + store i32 4999, i32* %.omp.comb.ub, align 4, !dbg !112, !tbaa !47 + %4 = bitcast i32* %.omp.stride to i8*, !dbg !111 + call void @llvm.lifetime.start.p0i8(i64 4, i8* %4) #6, !dbg !111 + call void @llvm.dbg.declare(metadata i32* %.omp.stride, metadata !104, metadata !DIExpression()), !dbg !107 + store i32 1, i32* %.omp.stride, align 4, !dbg !112, !tbaa !47 + %5 = bitcast i32* %.omp.is_last to i8*, !dbg !111 + call void @llvm.lifetime.start.p0i8(i64 4, i8* %5) #6, !dbg !111 + call void @llvm.dbg.declare(metadata i32* %.omp.is_last, metadata !105, metadata !DIExpression()), !dbg !107 + store i32 0, i32* %.omp.is_last, align 4, !dbg !112, !tbaa !47 + call void @llvm.dbg.declare(metadata !4, metadata !106, metadata !DIExpression()), !dbg !107 + %6 = getelementptr inbounds %struct.ident_t, %struct.ident_t* %.kmpc_loc.addr, i32 0, i32 4, !dbg !111 + store i8* getelementptr inbounds ([51 x i8], [51 x i8]* @1, i32 0, i32 0), i8** %6, align 8, !dbg !111, !tbaa !84 + %7 = load i32, i32* %.global_tid., align 4, !dbg !111, !tbaa !47 + call void @__kmpc_for_static_init_4(%struct.ident_t* %.kmpc_loc.addr, i32 %7, i32 92, i32* %.omp.is_last, i32* %.omp.comb.lb, i32* %.omp.comb.ub, i32* %.omp.stride, i32 1, i32 1), !dbg !111 + %8 = load i32, i32* %.omp.comb.ub, align 4, !dbg !112, !tbaa !47 + %cmp = icmp sgt i32 %8, 4999, !dbg !112 + br i1 %cmp, label %cond.true, label %cond.false, !dbg !112 + +cond.true: ; preds = %entry + br label %cond.end, !dbg !112 + +cond.false: ; preds = %entry + %9 = load i32, i32* %.omp.comb.ub, align 4, !dbg !112, !tbaa !47 + br label %cond.end, !dbg !112 + +cond.end: ; preds = %cond.false, %cond.true + %cond = phi i32 [ 4999, %cond.true ], [ %9, %cond.false ], !dbg !112 + store i32 %cond, i32* %.omp.comb.ub, align 4, !dbg !112, !tbaa !47 + %10 = load i32, i32* %.omp.comb.lb, align 4, !dbg !112, !tbaa !47 + call void @llvm.dbg.value(metadata i32 %10, metadata !101, metadata !DIExpression()), !dbg !107 + br label %omp.inner.for.cond, !dbg !111 + +omp.inner.for.cond: ; preds = %omp.inner.for.inc, %cond.end + %.omp.iv.0 = phi i32 [ %10, %cond.end ], [ %add, %omp.inner.for.inc ], !dbg !107 + call void @llvm.dbg.value(metadata i32 %.omp.iv.0, metadata !101, metadata !DIExpression()), !dbg !107 + %11 = load i32, i32* %.omp.comb.ub, align 4, !dbg !112, !tbaa !47 + %cmp1 = icmp sle i32 %.omp.iv.0, %11, !dbg !111 + br i1 %cmp1, label %omp.inner.for.body, label %omp.inner.for.cond.cleanup, !dbg !111 + +omp.inner.for.cond.cleanup: ; preds = %omp.inner.for.cond + br label %omp.inner.for.end, !dbg !111 + +omp.inner.for.body: ; preds = %omp.inner.for.cond + %12 = load i32, i32* %.omp.comb.lb, align 4, !dbg !113 + %13 = zext i32 %12 to i64, !dbg !113 + %14 = load i32, i32* %.omp.comb.ub, align 4, !dbg !113 + %15 = zext i32 %14 to i64, !dbg !113 + %16 = getelementptr inbounds %struct.ident_t, %struct.ident_t* %.kmpc_loc.addr, i32 0, i32 4, !dbg !113 + store i8* getelementptr inbounds ([51 x i8], [51 x i8]* @1, i32 0, i32 0), i8** %16, align 8, !dbg !113, !tbaa !84 + call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* %.kmpc_loc.addr, i32 5, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i64, i64, i32**, i32**, i32**)* @.omp_outlined. to void (i32*, i32*, ...)*), i64 %13, i64 %15, i32** %c, i32** %b, i32** %a), !dbg !113 + br label %omp.inner.for.inc, !dbg !114 + +omp.inner.for.inc: ; preds = %omp.inner.for.body + %17 = load i32, i32* %.omp.stride, align 4, !dbg !112, !tbaa !47 + %add = add nsw i32 %.omp.iv.0, %17, !dbg !111 + call void @llvm.dbg.value(metadata i32 %add, metadata !101, metadata !DIExpression()), !dbg !107 + br label %omp.inner.for.cond, !dbg !114, !llvm.loop !116 + +omp.inner.for.end: ; preds = %omp.inner.for.cond.cleanup + br label %omp.loop.exit, !dbg !114 + +omp.loop.exit: ; preds = %omp.inner.for.end + %18 = getelementptr inbounds %struct.ident_t, %struct.ident_t* %.kmpc_loc.addr, i32 0, i32 4, !dbg !114 + store i8* getelementptr inbounds ([51 x i8], [51 x i8]* @1, i32 0, i32 0), i8** %18, align 8, !dbg !114, !tbaa !84 + call void @__kmpc_for_static_fini(%struct.ident_t* %.kmpc_loc.addr, i32 %7), !dbg !114 + %19 = bitcast i32* %.omp.is_last to i8*, !dbg !114 + call void @llvm.lifetime.end.p0i8(i64 4, i8* %19) #6, !dbg !114 + %20 = bitcast i32* %.omp.stride to i8*, !dbg !114 + call void @llvm.lifetime.end.p0i8(i64 4, i8* %20) #6, !dbg !114 + %21 = bitcast i32* %.omp.comb.ub to i8*, !dbg !114 + call void @llvm.lifetime.end.p0i8(i64 4, i8* %21) #6, !dbg !114 + %22 = bitcast i32* %.omp.comb.lb to i8*, !dbg !114 + call void @llvm.lifetime.end.p0i8(i64 4, i8* %22) #6, !dbg !114 + ret void, !dbg !118 +} + +; Function Attrs: argmemonly nounwind +declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1) #1 + +declare dso_local void @__kmpc_for_static_init_4(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32, i32) + +; Function Attrs: norecurse nounwind uwtable +define internal void @.omp_outlined._debug__.1(i32* noalias %.global_tid., i32* noalias %.bound_tid., i64 %.previous.lb., i64 %.previous.ub., i32** dereferenceable(8) %c, i32** dereferenceable(8) %b, i32** dereferenceable(8) %a) #3 !dbg !119 { +entry: + %.omp.lb = alloca i32, align 4 + %.omp.ub = alloca i32, align 4 + %.omp.stride = alloca i32, align 4 + %.omp.is_last = alloca i32, align 4 + %.kmpc_loc.addr = alloca %struct.ident_t, align 8 + %0 = bitcast %struct.ident_t* %.kmpc_loc.addr to i8* + %1 = bitcast %struct.ident_t* @2 to i8* + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 24, i1 false) + call void @llvm.dbg.value(metadata i32* %.global_tid., metadata !125, metadata !DIExpression()), !dbg !141 + call void @llvm.dbg.value(metadata i32* %.bound_tid., metadata !126, metadata !DIExpression()), !dbg !141 + call void @llvm.dbg.value(metadata i64 %.previous.lb., metadata !127, metadata !DIExpression()), !dbg !141 + call void @llvm.dbg.value(metadata i64 %.previous.ub., metadata !128, metadata !DIExpression()), !dbg !141 + call void @llvm.dbg.value(metadata i32** %c, metadata !129, metadata !DIExpression()), !dbg !142 + call void @llvm.dbg.value(metadata i32** %b, metadata !130, metadata !DIExpression()), !dbg !143 + call void @llvm.dbg.value(metadata i32** %a, metadata !131, metadata !DIExpression()), !dbg !144 + %2 = bitcast i32* %.omp.lb to i8*, !dbg !145 + call void @llvm.lifetime.start.p0i8(i64 4, i8* %2) #6, !dbg !145 + call void @llvm.dbg.declare(metadata i32* %.omp.lb, metadata !133, metadata !DIExpression()), !dbg !141 + store i32 0, i32* %.omp.lb, align 4, !dbg !146, !tbaa !47 + %3 = bitcast i32* %.omp.ub to i8*, !dbg !145 + call void @llvm.lifetime.start.p0i8(i64 4, i8* %3) #6, !dbg !145 + call void @llvm.dbg.declare(metadata i32* %.omp.ub, metadata !134, metadata !DIExpression()), !dbg !141 + store i32 4999, i32* %.omp.ub, align 4, !dbg !146, !tbaa !47 + %conv = trunc i64 %.previous.lb. to i32, !dbg !145 + %conv1 = trunc i64 %.previous.ub. to i32, !dbg !145 + store i32 %conv, i32* %.omp.lb, align 4, !dbg !145, !tbaa !47 + store i32 %conv1, i32* %.omp.ub, align 4, !dbg !145, !tbaa !47 + %4 = bitcast i32* %.omp.stride to i8*, !dbg !145 + call void @llvm.lifetime.start.p0i8(i64 4, i8* %4) #6, !dbg !145 + call void @llvm.dbg.declare(metadata i32* %.omp.stride, metadata !135, metadata !DIExpression()), !dbg !141 + store i32 1, i32* %.omp.stride, align 4, !dbg !146, !tbaa !47 + %5 = bitcast i32* %.omp.is_last to i8*, !dbg !145 + call void @llvm.lifetime.start.p0i8(i64 4, i8* %5) #6, !dbg !145 + call void @llvm.dbg.declare(metadata i32* %.omp.is_last, metadata !136, metadata !DIExpression()), !dbg !141 + store i32 0, i32* %.omp.is_last, align 4, !dbg !146, !tbaa !47 + %6 = getelementptr inbounds %struct.ident_t, %struct.ident_t* %.kmpc_loc.addr, i32 0, i32 4, !dbg !145 + store i8* getelementptr inbounds ([51 x i8], [51 x i8]* @1, i32 0, i32 0), i8** %6, align 8, !dbg !145, !tbaa !84 + %7 = load i32, i32* %.global_tid., align 4, !dbg !145, !tbaa !47 + call void @__kmpc_for_static_init_4(%struct.ident_t* %.kmpc_loc.addr, i32 %7, i32 34, i32* %.omp.is_last, i32* %.omp.lb, i32* %.omp.ub, i32* %.omp.stride, i32 1, i32 1), !dbg !145 + %8 = load i32, i32* %.omp.ub, align 4, !dbg !146, !tbaa !47 + %cmp = icmp sgt i32 %8, 4999, !dbg !146 + br i1 %cmp, label %cond.true, label %cond.false, !dbg !146 + +cond.true: ; preds = %entry + br label %cond.end, !dbg !146 + +cond.false: ; preds = %entry + %9 = load i32, i32* %.omp.ub, align 4, !dbg !146, !tbaa !47 + br label %cond.end, !dbg !146 + +cond.end: ; preds = %cond.false, %cond.true + %cond = phi i32 [ 4999, %cond.true ], [ %9, %cond.false ], !dbg !146 + store i32 %cond, i32* %.omp.ub, align 4, !dbg !146, !tbaa !47 + %10 = load i32, i32* %.omp.lb, align 4, !dbg !146, !tbaa !47 + call void @llvm.dbg.value(metadata i32 %10, metadata !132, metadata !DIExpression()), !dbg !141 + br label %omp.inner.for.cond, !dbg !145 + +omp.inner.for.cond: ; preds = %omp.inner.for.inc, %cond.end + %.omp.iv.0 = phi i32 [ %10, %cond.end ], [ %add15, %omp.inner.for.inc ], !dbg !141 + call void @llvm.dbg.value(metadata i32 %.omp.iv.0, metadata !132, metadata !DIExpression()), !dbg !141 + %11 = load i32, i32* %.omp.ub, align 4, !dbg !146, !tbaa !47 + %cmp3 = icmp sle i32 %.omp.iv.0, %11, !dbg !145 + br i1 %cmp3, label %omp.inner.for.body, label %omp.inner.for.cond.cleanup, !dbg !145 + +omp.inner.for.cond.cleanup: ; preds = %omp.inner.for.cond + br label %omp.inner.for.end, !dbg !145 + +omp.inner.for.body: ; preds = %omp.inner.for.cond + %mul = mul nsw i32 %.omp.iv.0, 1, !dbg !147 + %add = add nsw i32 0, %mul, !dbg !147 + call void @llvm.dbg.value(metadata i32 %add, metadata !137, metadata !DIExpression()), !dbg !141 + call void @llvm.dbg.value(metadata i32 0, metadata !138, metadata !DIExpression()), !dbg !148 + br label %for.cond, !dbg !149 + +for.cond: ; preds = %for.inc, %omp.inner.for.body + %j.0 = phi i32 [ 0, %omp.inner.for.body ], [ %inc, %for.inc ], !dbg !150 + call void @llvm.dbg.value(metadata i32 %j.0, metadata !138, metadata !DIExpression()), !dbg !148 + %cmp5 = icmp slt i32 %j.0, 5000, !dbg !151 + br i1 %cmp5, label %for.body, label %for.cond.cleanup, !dbg !153 + +for.cond.cleanup: ; preds = %for.cond + br label %for.end + +for.body: ; preds = %for.cond + %12 = load i32*, i32** %b, align 8, !dbg !154, !tbaa !40 + %mul7 = mul nsw i32 %add, 5000, !dbg !156 + %add8 = add nsw i32 %j.0, %mul7, !dbg !157 + %idxprom = sext i32 %add8 to i64, !dbg !154 + %arrayidx = getelementptr inbounds i32, i32* %12, i64 %idxprom, !dbg !154 + %13 = load i32, i32* %arrayidx, align 4, !dbg !154, !tbaa !47 + %14 = load i32*, i32** %a, align 8, !dbg !158, !tbaa !40 + %idxprom9 = sext i32 %j.0 to i64, !dbg !158 + %arrayidx10 = getelementptr inbounds i32, i32* %14, i64 %idxprom9, !dbg !158 + %15 = load i32, i32* %arrayidx10, align 4, !dbg !158, !tbaa !47 + %mul11 = mul nsw i32 %13, %15, !dbg !159 + %16 = load i32*, i32** %c, align 8, !dbg !160, !tbaa !40 + %idxprom12 = sext i32 %add to i64, !dbg !160 + %arrayidx13 = getelementptr inbounds i32, i32* %16, i64 %idxprom12, !dbg !160 + %17 = load i32, i32* %arrayidx13, align 4, !dbg !161, !tbaa !47 + %add14 = add nsw i32 %17, %mul11, !dbg !161 + store i32 %add14, i32* %arrayidx13, align 4, !dbg !161, !tbaa !47 + br label %for.inc, !dbg !162 + +for.inc: ; preds = %for.body + %inc = add nsw i32 %j.0, 1, !dbg !163 + call void @llvm.dbg.value(metadata i32 %inc, metadata !138, metadata !DIExpression()), !dbg !148 + br label %for.cond, !dbg !164, !llvm.loop !165 + +for.end: ; preds = %for.cond.cleanup + br label %omp.body.continue, !dbg !167 + +omp.body.continue: ; preds = %for.end + br label %omp.inner.for.inc, !dbg !168 + +omp.inner.for.inc: ; preds = %omp.body.continue + %add15 = add nsw i32 %.omp.iv.0, 1, !dbg !145 + call void @llvm.dbg.value(metadata i32 %add15, metadata !132, metadata !DIExpression()), !dbg !141 + br label %omp.inner.for.cond, !dbg !168, !llvm.loop !169 + +omp.inner.for.end: ; preds = %omp.inner.for.cond.cleanup + br label %omp.loop.exit, !dbg !168 + +omp.loop.exit: ; preds = %omp.inner.for.end + %18 = getelementptr inbounds %struct.ident_t, %struct.ident_t* %.kmpc_loc.addr, i32 0, i32 4, !dbg !168 + store i8* getelementptr inbounds ([51 x i8], [51 x i8]* @3, i32 0, i32 0), i8** %18, align 8, !dbg !168, !tbaa !84 + call void @__kmpc_for_static_fini(%struct.ident_t* %.kmpc_loc.addr, i32 %7), !dbg !168 + %19 = bitcast i32* %.omp.is_last to i8*, !dbg !168 + call void @llvm.lifetime.end.p0i8(i64 4, i8* %19) #6, !dbg !168 + %20 = bitcast i32* %.omp.stride to i8*, !dbg !168 + call void @llvm.lifetime.end.p0i8(i64 4, i8* %20) #6, !dbg !168 + %21 = bitcast i32* %.omp.ub to i8*, !dbg !168 + call void @llvm.lifetime.end.p0i8(i64 4, i8* %21) #6, !dbg !168 + %22 = bitcast i32* %.omp.lb to i8*, !dbg !168 + call void @llvm.lifetime.end.p0i8(i64 4, i8* %22) #6, !dbg !168 + ret void, !dbg !171 +} + +declare dso_local void @__kmpc_for_static_fini(%struct.ident_t*, i32) + +; Function Attrs: norecurse nounwind uwtable +define internal void @.omp_outlined.(i32* noalias %.global_tid., i32* noalias %.bound_tid., i64 %.previous.lb., i64 %.previous.ub., i32** dereferenceable(8) %c, i32** dereferenceable(8) %b, i32** dereferenceable(8) %a) #3 !dbg !172 { +entry: + call void @llvm.dbg.value(metadata i32* %.global_tid., metadata !174, metadata !DIExpression()), !dbg !181 + call void @llvm.dbg.value(metadata i32* %.bound_tid., metadata !175, metadata !DIExpression()), !dbg !181 + call void @llvm.dbg.value(metadata i64 %.previous.lb., metadata !176, metadata !DIExpression()), !dbg !181 + call void @llvm.dbg.value(metadata i64 %.previous.ub., metadata !177, metadata !DIExpression()), !dbg !181 + call void @llvm.dbg.value(metadata i32** %c, metadata !178, metadata !DIExpression()), !dbg !181 + call void @llvm.dbg.value(metadata i32** %b, metadata !179, metadata !DIExpression()), !dbg !181 + call void @llvm.dbg.value(metadata i32** %a, metadata !180, metadata !DIExpression()), !dbg !181 + call void @.omp_outlined._debug__.1(i32* %.global_tid., i32* %.bound_tid., i64 %.previous.lb., i64 %.previous.ub., i32** %c, i32** %b, i32** %a) #6, !dbg !182 + ret void, !dbg !182 +} + +declare dso_local void @__kmpc_fork_call(%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) + +; Function Attrs: norecurse nounwind uwtable +define internal void @.omp_outlined..2(i32* noalias %.global_tid., i32* noalias %.bound_tid., i32** dereferenceable(8) %c, i32** dereferenceable(8) %b, i32** dereferenceable(8) %a) #3 !dbg !183 { +entry: + call void @llvm.dbg.value(metadata i32* %.global_tid., metadata !185, metadata !DIExpression()), !dbg !190 + call void @llvm.dbg.value(metadata i32* %.bound_tid., metadata !186, metadata !DIExpression()), !dbg !190 + call void @llvm.dbg.value(metadata i32** %c, metadata !187, metadata !DIExpression()), !dbg !190 + call void @llvm.dbg.value(metadata i32** %b, metadata !188, metadata !DIExpression()), !dbg !190 + call void @llvm.dbg.value(metadata i32** %a, metadata !189, metadata !DIExpression()), !dbg !190 + call void @.omp_outlined._debug__(i32* %.global_tid., i32* %.bound_tid., i32** %c, i32** %b, i32** %a) #6, !dbg !191 + ret void, !dbg !191 +} + +declare dso_local void @__kmpc_fork_teams(%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) + +; Function Attrs: norecurse nounwind uwtable +define internal void @__omp_offloading_801_20a8bc_Mult_l29(i32* %c, i32* %b, i32* %a) #3 !dbg !192 { +entry: + call void @llvm.dbg.value(metadata i32* %c, metadata !194, metadata !DIExpression()), !dbg !197 + call void @llvm.dbg.value(metadata i32* %b, metadata !195, metadata !DIExpression()), !dbg !197 + call void @llvm.dbg.value(metadata i32* %a, metadata !196, metadata !DIExpression()), !dbg !197 + call void @__omp_offloading_801_20a8bc_Mult_l29_debug__(i32* %c, i32* %b, i32* %a) #6, !dbg !198 + ret void, !dbg !198 +} + +declare dso_local i32 @__tgt_target_teams(i64, i8*, i32, i8**, i8**, i64*, i64*, i32, i32) + +; Function Attrs: nounwind uwtable +define dso_local i32 @check() #0 !dbg !199 { +entry: + call void @llvm.dbg.value(metadata i8 0, metadata !201, metadata !DIExpression()), !dbg !205 + call void @llvm.dbg.value(metadata i32 0, metadata !203, metadata !DIExpression()), !dbg !206 + br label %for.cond, !dbg !207 + +for.cond: ; preds = %for.inc, %entry + %test.0 = phi i8 [ 0, %entry ], [ %test.1, %for.inc ], !dbg !208 + %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.inc ], !dbg !209 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !203, metadata !DIExpression()), !dbg !206 + call void @llvm.dbg.value(metadata i8 %test.0, metadata !201, metadata !DIExpression()), !dbg !205 + %cmp = icmp slt i32 %i.0, 5000, !dbg !210 + br i1 %cmp, label %for.body, label %for.cond.cleanup, !dbg !212 + +for.cond.cleanup: ; preds = %for.cond + br label %for.end + +for.body: ; preds = %for.cond + %0 = load i32*, i32** @c, align 8, !dbg !213, !tbaa !40 + %idxprom = sext i32 %i.0 to i64, !dbg !213 + %arrayidx = getelementptr inbounds i32, i32* %0, i64 %idxprom, !dbg !213 + %1 = load i32, i32* %arrayidx, align 4, !dbg !213, !tbaa !47 + %cmp1 = icmp ne i32 %1, 5000, !dbg !216 + br i1 %cmp1, label %if.then, label %if.end, !dbg !217 + +if.then: ; preds = %for.body + call void @llvm.dbg.value(metadata i8 1, metadata !201, metadata !DIExpression()), !dbg !205 + br label %if.end, !dbg !218 + +if.end: ; preds = %if.then, %for.body + %test.1 = phi i8 [ 1, %if.then ], [ %test.0, %for.body ], !dbg !208 + call void @llvm.dbg.value(metadata i8 %test.1, metadata !201, metadata !DIExpression()), !dbg !205 + br label %for.inc, !dbg !220 + +for.inc: ; preds = %if.end + %inc = add nsw i32 %i.0, 1, !dbg !221 + call void @llvm.dbg.value(metadata i32 %inc, metadata !203, metadata !DIExpression()), !dbg !206 + br label %for.cond, !dbg !222, !llvm.loop !223 + +for.end: ; preds = %for.cond.cleanup + %tobool = trunc i8 %test.0 to i1, !dbg !225 + %2 = zext i1 %tobool to i64, !dbg !225 + %cond = select i1 %tobool, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i32 0, i32 0), !dbg !225 + %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.3, i32 0, i32 0), i8* %cond), !dbg !226 + ret i32 0, !dbg !227 +} + +declare dso_local i32 @printf(i8*, ...) #4 + +; Function Attrs: nounwind uwtable +define dso_local i32 @main() #0 !dbg !228 { +entry: + %call = call noalias i8* @malloc(i64 20000) #6, !dbg !229 + %0 = bitcast i8* %call to i32*, !dbg !229 + store i32* %0, i32** @a, align 8, !dbg !230, !tbaa !40 + %call1 = call noalias i8* @malloc(i64 100000000) #6, !dbg !231 + %1 = bitcast i8* %call1 to i32*, !dbg !231 + store i32* %1, i32** @b, align 8, !dbg !232, !tbaa !40 + %call2 = call noalias i8* @malloc(i64 20000) #6, !dbg !233 + %2 = bitcast i8* %call2 to i32*, !dbg !233 + store i32* %2, i32** @c, align 8, !dbg !234, !tbaa !40 + %call3 = call i32 @init(), !dbg !235 + %call4 = call i32 @Mult(), !dbg !236 + %call5 = call i32 @check(), !dbg !237 + %3 = load i32*, i32** @a, align 8, !dbg !238, !tbaa !40 + %4 = bitcast i32* %3 to i8*, !dbg !238 + call void @free(i8* %4) #6, !dbg !239 + %5 = load i32*, i32** @b, align 8, !dbg !240, !tbaa !40 + %6 = bitcast i32* %5 to i8*, !dbg !240 + call void @free(i8* %6) #6, !dbg !241 + %7 = load i32*, i32** @c, align 8, !dbg !242, !tbaa !40 + %8 = bitcast i32* %7 to i8*, !dbg !242 + call void @free(i8* %8) #6, !dbg !243 + ret i32 0, !dbg !244 +} + +; Function Attrs: nounwind +declare dso_local noalias i8* @malloc(i64) #5 + +; Function Attrs: nounwind +declare dso_local void @free(i8*) #5 + +; Function Attrs: nounwind uwtable +define internal void @.omp_offloading.descriptor_unreg(i8*) #0 section ".text.startup" comdat($.omp_offloading.descriptor_reg.nvptx64-nvidia-cuda) { +entry: + %1 = call i32 @__tgt_unregister_lib(%struct.__tgt_bin_desc* @.omp_offloading.descriptor) + ret void +} + +declare dso_local i32 @__tgt_unregister_lib(%struct.__tgt_bin_desc*) + +; Function Attrs: nounwind uwtable +define linkonce hidden void @.omp_offloading.descriptor_reg.nvptx64-nvidia-cuda() #0 section ".text.startup" comdat { +entry: + %0 = call i32 @__tgt_register_lib(%struct.__tgt_bin_desc* @.omp_offloading.descriptor) + %1 = call i32 @__cxa_atexit(void (i8*)* @.omp_offloading.descriptor_unreg, i8* bitcast (%struct.__tgt_bin_desc* @.omp_offloading.descriptor to i8*), i8* @__dso_handle) #6 + ret void +} + +declare dso_local i32 @__tgt_register_lib(%struct.__tgt_bin_desc*) + +; Function Attrs: nounwind +declare dso_local i32 @__cxa_atexit(void (i8*)*, i8*, i8*) #6 + +; Function Attrs: nounwind readnone speculatable +declare void @llvm.dbg.value(metadata, metadata, metadata) #2 + +attributes #0 = { nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #1 = { argmemonly nounwind } +attributes #2 = { nounwind readnone speculatable } +attributes #3 = { norecurse nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #4 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #5 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #6 = { nounwind } + +!llvm.dbg.cu = !{!2} +!omp_offload.info = !{!12} +!llvm.module.flags = !{!13, !14, !15} +!llvm.ident = !{!16} + +!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) +!1 = distinct !DIGlobalVariable(name: "b", scope: !2, file: !3, line: 11, type: !8, isLocal: false, isDefinition: true) +!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 8.0.0 ", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !5, nameTableKind: None) +!3 = !DIFile(filename: "DRACC_OMP_022_MxV_Missing_Data_yes.c", directory: "/home/prithayan/openmp/llvm-mainline/llvm-project/llvm/test/Analysis/OmpDiagnosticsAnalysis") +!4 = !{} +!5 = !{!6, !0, !10} +!6 = !DIGlobalVariableExpression(var: !7, expr: !DIExpression()) +!7 = distinct !DIGlobalVariable(name: "a", scope: !2, file: !3, line: 10, type: !8, isLocal: false, isDefinition: true) +!8 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !9, size: 64) +!9 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!10 = !DIGlobalVariableExpression(var: !11, expr: !DIExpression()) +!11 = distinct !DIGlobalVariable(name: "c", scope: !2, file: !3, line: 12, type: !8, isLocal: false, isDefinition: true) +!12 = !{i32 0, i32 2049, i32 2140348, !"Mult", i32 29, i32 0} +!13 = !{i32 2, !"Dwarf Version", i32 4} +!14 = !{i32 2, !"Debug Info Version", i32 3} +!15 = !{i32 1, !"wchar_size", i32 4} +!16 = !{!"clang version 8.0.0 "} +!17 = distinct !DISubprogram(name: "init", scope: !3, file: !3, line: 15, type: !18, isLocal: false, isDefinition: true, scopeLine: 15, isOptimized: true, unit: !2, retainedNodes: !20) +!18 = !DISubroutineType(types: !19) +!19 = !{!9} +!20 = !{!21, !23} +!21 = !DILocalVariable(name: "i", scope: !22, file: !3, line: 16, type: !9) +!22 = distinct !DILexicalBlock(scope: !17, file: !3, line: 16, column: 5) +!23 = !DILocalVariable(name: "j", scope: !24, file: !3, line: 17, type: !9) +!24 = distinct !DILexicalBlock(scope: !25, file: !3, line: 17, column: 9) +!25 = distinct !DILexicalBlock(scope: !26, file: !3, line: 16, column: 27) +!26 = distinct !DILexicalBlock(scope: !22, file: !3, line: 16, column: 5) +!27 = !DILocation(line: 16, column: 13, scope: !22) +!28 = !DILocation(line: 16, column: 9, scope: !22) +!29 = !DILocation(line: 0, scope: !22) +!30 = !DILocation(line: 16, column: 19, scope: !26) +!31 = !DILocation(line: 16, column: 5, scope: !22) +!32 = !DILocation(line: 17, column: 17, scope: !24) +!33 = !DILocation(line: 17, column: 13, scope: !24) +!34 = !DILocation(line: 0, scope: !24) +!35 = !DILocation(line: 17, column: 23, scope: !36) +!36 = distinct !DILexicalBlock(scope: !24, file: !3, line: 17, column: 9) +!37 = !DILocation(line: 17, column: 9, scope: !24) +!38 = !DILocation(line: 18, column: 13, scope: !39) +!39 = distinct !DILexicalBlock(scope: !36, file: !3, line: 17, column: 31) +!40 = !{!41, !41, i64 0} +!41 = !{!"any pointer", !42, i64 0} +!42 = !{!"omnipotent char", !43, i64 0} +!43 = !{!"Simple C/C++ TBAA"} +!44 = !DILocation(line: 18, column: 18, scope: !39) +!45 = !DILocation(line: 18, column: 16, scope: !39) +!46 = !DILocation(line: 18, column: 21, scope: !39) +!47 = !{!48, !48, i64 0} +!48 = !{!"int", !42, i64 0} +!49 = !DILocation(line: 19, column: 9, scope: !39) +!50 = !DILocation(line: 17, column: 28, scope: !36) +!51 = !DILocation(line: 17, column: 9, scope: !36) +!52 = distinct !{!52, !37, !53} +!53 = !DILocation(line: 19, column: 9, scope: !24) +!54 = !DILocation(line: 20, column: 9, scope: !25) +!55 = !DILocation(line: 20, column: 13, scope: !25) +!56 = !DILocation(line: 21, column: 9, scope: !25) +!57 = !DILocation(line: 21, column: 13, scope: !25) +!58 = !DILocation(line: 22, column: 5, scope: !25) +!59 = !DILocation(line: 16, column: 24, scope: !26) +!60 = !DILocation(line: 16, column: 5, scope: !26) +!61 = distinct !{!61, !31, !62} +!62 = !DILocation(line: 22, column: 5, scope: !22) +!63 = !DILocation(line: 23, column: 9, scope: !17) +!64 = distinct !DISubprogram(name: "Mult", scope: !3, file: !3, line: 27, type: !18, isLocal: false, isDefinition: true, scopeLine: 27, isOptimized: true, unit: !2, retainedNodes: !4) +!65 = !DILocation(line: 29, column: 13, scope: !64) +!66 = !DILocation(line: 29, column: 50, scope: !67) +!67 = distinct !DILexicalBlock(scope: !64, file: !3, line: 29, column: 13) +!68 = !DILocation(line: 29, column: 68, scope: !67) +!69 = !DILocation(line: 29, column: 31, scope: !67) +!70 = !DILocation(line: 29, column: 13, scope: !67) +!71 = !DILocation(line: 39, column: 5, scope: !64) +!72 = distinct !DISubprogram(name: "__omp_offloading_801_20a8bc_Mult_l29_debug__", scope: !3, file: !3, line: 30, type: !73, isLocal: true, isDefinition: true, scopeLine: 30, flags: DIFlagPrototyped, isOptimized: true, unit: !2, retainedNodes: !75) +!73 = !DISubroutineType(types: !74) +!74 = !{null, !8, !8, !8} +!75 = !{!76, !77, !78} +!76 = !DILocalVariable(name: "c", arg: 1, scope: !72, file: !3, line: 12, type: !8) +!77 = !DILocalVariable(name: "b", arg: 2, scope: !72, file: !3, line: 11, type: !8) +!78 = !DILocalVariable(name: "a", arg: 3, scope: !72, file: !3, line: 10, type: !8) +!79 = !DILocation(line: 12, column: 6, scope: !72) +!80 = !DILocation(line: 11, column: 6, scope: !72) +!81 = !DILocation(line: 10, column: 6, scope: !72) +!82 = !DILocation(line: 31, column: 17, scope: !83) +!83 = distinct !DILexicalBlock(scope: !72, file: !3, line: 30, column: 5) +!84 = !{!85, !41, i64 16} +!85 = !{!"ident_t", !48, i64 0, !48, i64 4, !48, i64 8, !48, i64 12, !41, i64 16} +!86 = !DILocation(line: 37, column: 5, scope: !72) +!87 = distinct !DISubprogram(name: ".omp_outlined._debug__", scope: !3, file: !3, line: 32, type: !88, isLocal: true, isDefinition: true, scopeLine: 32, flags: DIFlagPrototyped, isOptimized: true, unit: !2, retainedNodes: !95) +!88 = !DISubroutineType(types: !89) +!89 = !{null, !90, !90, !94, !94, !94} +!90 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !91) +!91 = !DIDerivedType(tag: DW_TAG_restrict_type, baseType: !92) +!92 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !93, size: 64) +!93 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !9) +!94 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !8, size: 64) +!95 = !{!96, !97, !98, !99, !100, !101, !102, !103, !104, !105, !106} +!96 = !DILocalVariable(name: ".global_tid.", arg: 1, scope: !87, type: !90, flags: DIFlagArtificial) +!97 = !DILocalVariable(name: ".bound_tid.", arg: 2, scope: !87, type: !90, flags: DIFlagArtificial) +!98 = !DILocalVariable(name: "c", arg: 3, scope: !87, file: !3, line: 12, type: !94) +!99 = !DILocalVariable(name: "b", arg: 4, scope: !87, file: !3, line: 11, type: !94) +!100 = !DILocalVariable(name: "a", arg: 5, scope: !87, file: !3, line: 10, type: !94) +!101 = !DILocalVariable(name: ".omp.iv", scope: !87, type: !9, flags: DIFlagArtificial) +!102 = !DILocalVariable(name: ".omp.comb.lb", scope: !87, type: !9, flags: DIFlagArtificial) +!103 = !DILocalVariable(name: ".omp.comb.ub", scope: !87, type: !9, flags: DIFlagArtificial) +!104 = !DILocalVariable(name: ".omp.stride", scope: !87, type: !9, flags: DIFlagArtificial) +!105 = !DILocalVariable(name: ".omp.is_last", scope: !87, type: !9, flags: DIFlagArtificial) +!106 = !DILocalVariable(name: "i", scope: !87, type: !9, flags: DIFlagArtificial) +!107 = !DILocation(line: 0, scope: !87) +!108 = !DILocation(line: 12, column: 6, scope: !87) +!109 = !DILocation(line: 11, column: 6, scope: !87) +!110 = !DILocation(line: 10, column: 6, scope: !87) +!111 = !DILocation(line: 32, column: 9, scope: !87) +!112 = !DILocation(line: 32, column: 13, scope: !87) +!113 = !DILocation(line: 31, column: 17, scope: !87) +!114 = !DILocation(line: 31, column: 50, scope: !115) +!115 = distinct !DILexicalBlock(scope: !87, file: !3, line: 31, column: 17) +!116 = distinct !{!116, !113, !117} +!117 = !DILocation(line: 31, column: 50, scope: !87) +!118 = !DILocation(line: 36, column: 9, scope: !87) +!119 = distinct !DISubprogram(name: ".omp_outlined._debug__.1", scope: !3, file: !3, line: 32, type: !120, isLocal: true, isDefinition: true, scopeLine: 32, flags: DIFlagPrototyped, isOptimized: true, unit: !2, retainedNodes: !124) +!120 = !DISubroutineType(types: !121) +!121 = !{null, !90, !90, !122, !122, !94, !94, !94} +!122 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !123) +!123 = !DIBasicType(name: "long unsigned int", size: 64, encoding: DW_ATE_unsigned) +!124 = !{!125, !126, !127, !128, !129, !130, !131, !132, !133, !134, !135, !136, !137, !138} +!125 = !DILocalVariable(name: ".global_tid.", arg: 1, scope: !119, type: !90, flags: DIFlagArtificial) +!126 = !DILocalVariable(name: ".bound_tid.", arg: 2, scope: !119, type: !90, flags: DIFlagArtificial) +!127 = !DILocalVariable(name: ".previous.lb.", arg: 3, scope: !119, type: !122, flags: DIFlagArtificial) +!128 = !DILocalVariable(name: ".previous.ub.", arg: 4, scope: !119, type: !122, flags: DIFlagArtificial) +!129 = !DILocalVariable(name: "c", arg: 5, scope: !119, file: !3, line: 12, type: !94) +!130 = !DILocalVariable(name: "b", arg: 6, scope: !119, file: !3, line: 11, type: !94) +!131 = !DILocalVariable(name: "a", arg: 7, scope: !119, file: !3, line: 10, type: !94) +!132 = !DILocalVariable(name: ".omp.iv", scope: !119, type: !9, flags: DIFlagArtificial) +!133 = !DILocalVariable(name: ".omp.lb", scope: !119, type: !9, flags: DIFlagArtificial) +!134 = !DILocalVariable(name: ".omp.ub", scope: !119, type: !9, flags: DIFlagArtificial) +!135 = !DILocalVariable(name: ".omp.stride", scope: !119, type: !9, flags: DIFlagArtificial) +!136 = !DILocalVariable(name: ".omp.is_last", scope: !119, type: !9, flags: DIFlagArtificial) +!137 = !DILocalVariable(name: "i", scope: !119, type: !9, flags: DIFlagArtificial) +!138 = !DILocalVariable(name: "j", scope: !139, file: !3, line: 33, type: !9) +!139 = distinct !DILexicalBlock(scope: !140, file: !3, line: 33, column: 13) +!140 = distinct !DILexicalBlock(scope: !119, file: !3, line: 32, column: 31) +!141 = !DILocation(line: 0, scope: !119) +!142 = !DILocation(line: 12, column: 6, scope: !119) +!143 = !DILocation(line: 11, column: 6, scope: !119) +!144 = !DILocation(line: 10, column: 6, scope: !119) +!145 = !DILocation(line: 32, column: 9, scope: !119) +!146 = !DILocation(line: 32, column: 13, scope: !119) +!147 = !DILocation(line: 32, column: 27, scope: !119) +!148 = !DILocation(line: 33, column: 21, scope: !139) +!149 = !DILocation(line: 33, column: 17, scope: !139) +!150 = !DILocation(line: 0, scope: !139) +!151 = !DILocation(line: 33, column: 27, scope: !152) +!152 = distinct !DILexicalBlock(scope: !139, file: !3, line: 33, column: 13) +!153 = !DILocation(line: 33, column: 13, scope: !139) +!154 = !DILocation(line: 34, column: 23, scope: !155) +!155 = distinct !DILexicalBlock(scope: !152, file: !3, line: 33, column: 35) +!156 = !DILocation(line: 34, column: 28, scope: !155) +!157 = !DILocation(line: 34, column: 26, scope: !155) +!158 = !DILocation(line: 34, column: 32, scope: !155) +!159 = !DILocation(line: 34, column: 31, scope: !155) +!160 = !DILocation(line: 34, column: 17, scope: !155) +!161 = !DILocation(line: 34, column: 21, scope: !155) +!162 = !DILocation(line: 35, column: 13, scope: !155) +!163 = !DILocation(line: 33, column: 32, scope: !152) +!164 = !DILocation(line: 33, column: 13, scope: !152) +!165 = distinct !{!165, !153, !166} +!166 = !DILocation(line: 35, column: 13, scope: !139) +!167 = !DILocation(line: 36, column: 9, scope: !140) +!168 = !DILocation(line: 31, column: 17, scope: !119) +!169 = distinct !{!169, !168, !170} +!170 = !DILocation(line: 31, column: 50, scope: !119) +!171 = !DILocation(line: 36, column: 9, scope: !119) +!172 = distinct !DISubprogram(name: ".omp_outlined.", scope: !3, file: !3, line: 32, type: !120, isLocal: true, isDefinition: true, scopeLine: 32, flags: DIFlagPrototyped, isOptimized: true, unit: !2, retainedNodes: !173) +!173 = !{!174, !175, !176, !177, !178, !179, !180} +!174 = !DILocalVariable(name: ".global_tid.", arg: 1, scope: !172, type: !90, flags: DIFlagArtificial) +!175 = !DILocalVariable(name: ".bound_tid.", arg: 2, scope: !172, type: !90, flags: DIFlagArtificial) +!176 = !DILocalVariable(name: ".previous.lb.", arg: 3, scope: !172, type: !122, flags: DIFlagArtificial) +!177 = !DILocalVariable(name: ".previous.ub.", arg: 4, scope: !172, type: !122, flags: DIFlagArtificial) +!178 = !DILocalVariable(name: "c", arg: 5, scope: !172, type: !94, flags: DIFlagArtificial) +!179 = !DILocalVariable(name: "b", arg: 6, scope: !172, type: !94, flags: DIFlagArtificial) +!180 = !DILocalVariable(name: "a", arg: 7, scope: !172, type: !94, flags: DIFlagArtificial) +!181 = !DILocation(line: 0, scope: !172) +!182 = !DILocation(line: 32, column: 9, scope: !172) +!183 = distinct !DISubprogram(name: ".omp_outlined..2", scope: !3, file: !3, line: 32, type: !88, isLocal: true, isDefinition: true, scopeLine: 32, flags: DIFlagPrototyped, isOptimized: true, unit: !2, retainedNodes: !184) +!184 = !{!185, !186, !187, !188, !189} +!185 = !DILocalVariable(name: ".global_tid.", arg: 1, scope: !183, type: !90, flags: DIFlagArtificial) +!186 = !DILocalVariable(name: ".bound_tid.", arg: 2, scope: !183, type: !90, flags: DIFlagArtificial) +!187 = !DILocalVariable(name: "c", arg: 3, scope: !183, type: !94, flags: DIFlagArtificial) +!188 = !DILocalVariable(name: "b", arg: 4, scope: !183, type: !94, flags: DIFlagArtificial) +!189 = !DILocalVariable(name: "a", arg: 5, scope: !183, type: !94, flags: DIFlagArtificial) +!190 = !DILocation(line: 0, scope: !183) +!191 = !DILocation(line: 32, column: 9, scope: !183) +!192 = distinct !DISubprogram(name: "__omp_offloading_801_20a8bc_Mult_l29", scope: !3, file: !3, line: 30, type: !73, isLocal: true, isDefinition: true, scopeLine: 30, flags: DIFlagPrototyped, isOptimized: true, unit: !2, retainedNodes: !193) +!193 = !{!194, !195, !196} +!194 = !DILocalVariable(name: "c", arg: 1, scope: !192, type: !8, flags: DIFlagArtificial) +!195 = !DILocalVariable(name: "b", arg: 2, scope: !192, type: !8, flags: DIFlagArtificial) +!196 = !DILocalVariable(name: "a", arg: 3, scope: !192, type: !8, flags: DIFlagArtificial) +!197 = !DILocation(line: 0, scope: !192) +!198 = !DILocation(line: 30, column: 5, scope: !192) +!199 = distinct !DISubprogram(name: "check", scope: !3, file: !3, line: 42, type: !18, isLocal: false, isDefinition: true, scopeLine: 42, isOptimized: true, unit: !2, retainedNodes: !200) +!200 = !{!201, !203} +!201 = !DILocalVariable(name: "test", scope: !199, file: !3, line: 43, type: !202) +!202 = !DIBasicType(name: "_Bool", size: 8, encoding: DW_ATE_boolean) +!203 = !DILocalVariable(name: "i", scope: !204, file: !3, line: 44, type: !9) +!204 = distinct !DILexicalBlock(scope: !199, file: !3, line: 44, column: 5) +!205 = !DILocation(line: 43, column: 10, scope: !199) +!206 = !DILocation(line: 44, column: 13, scope: !204) +!207 = !DILocation(line: 44, column: 9, scope: !204) +!208 = !DILocation(line: 0, scope: !199) +!209 = !DILocation(line: 0, scope: !204) +!210 = !DILocation(line: 44, column: 19, scope: !211) +!211 = distinct !DILexicalBlock(scope: !204, file: !3, line: 44, column: 5) +!212 = !DILocation(line: 44, column: 5, scope: !204) +!213 = !DILocation(line: 45, column: 12, scope: !214) +!214 = distinct !DILexicalBlock(scope: !215, file: !3, line: 45, column: 12) +!215 = distinct !DILexicalBlock(scope: !211, file: !3, line: 44, column: 27) +!216 = !DILocation(line: 45, column: 16, scope: !214) +!217 = !DILocation(line: 45, column: 12, scope: !215) +!218 = !DILocation(line: 47, column: 9, scope: !219) +!219 = distinct !DILexicalBlock(scope: !214, file: !3, line: 45, column: 20) +!220 = !DILocation(line: 48, column: 5, scope: !215) +!221 = !DILocation(line: 44, column: 24, scope: !211) +!222 = !DILocation(line: 44, column: 5, scope: !211) +!223 = distinct !{!223, !212, !224} +!224 = !DILocation(line: 48, column: 5, scope: !204) +!225 = !DILocation(line: 49, column: 38, scope: !199) +!226 = !DILocation(line: 49, column: 5, scope: !199) +!227 = !DILocation(line: 50, column: 5, scope: !199) +!228 = distinct !DISubprogram(name: "main", scope: !3, file: !3, line: 56, type: !18, isLocal: false, isDefinition: true, scopeLine: 56, isOptimized: true, unit: !2, retainedNodes: !4) +!229 = !DILocation(line: 57, column: 9, scope: !228) +!230 = !DILocation(line: 57, column: 7, scope: !228) +!231 = !DILocation(line: 58, column: 9, scope: !228) +!232 = !DILocation(line: 58, column: 7, scope: !228) +!233 = !DILocation(line: 59, column: 9, scope: !228) +!234 = !DILocation(line: 59, column: 7, scope: !228) +!235 = !DILocation(line: 60, column: 5, scope: !228) +!236 = !DILocation(line: 61, column: 5, scope: !228) +!237 = !DILocation(line: 62, column: 5, scope: !228) +!238 = !DILocation(line: 63, column: 10, scope: !228) +!239 = !DILocation(line: 63, column: 5, scope: !228) +!240 = !DILocation(line: 64, column: 10, scope: !228) +!241 = !DILocation(line: 64, column: 5, scope: !228) +!242 = !DILocation(line: 65, column: 10, scope: !228) +!243 = !DILocation(line: 65, column: 5, scope: !228) +!244 = !DILocation(line: 66, column: 5, scope: !228) diff --git a/llvm/test/Analysis/MemUseDefAnalysis/FT.ll b/llvm/test/Analysis/MemUseDefAnalysis/FT.ll new file mode 100644 index 0000000000000..b067eabb4b67b --- /dev/null +++ b/llvm/test/Analysis/MemUseDefAnalysis/FT.ll @@ -0,0 +1,8521 @@ +; RUN: opt < %s -passes="print" -disable-output 2>&1 | FileCheck %s + +; CHECK-DAG: Use::start At:: ft.c:353 Defined at: ft.c:345, +; CHECK-DAG: Use::start At:: ft.c:356 Defined at: ft.c:345, +; CHECK-DAG: Use::starts At:: ft.c:367 Defined at: ft.c:353, ft.c:356, +; CHECK-DAG: Use::u0_real At:: ft.c:324 Defined at: ft.c:319, +; CHECK-DAG: Use::u0_imag At:: ft.c:325 Defined at: ft.c:321, + + +; CHECK-DAG: Use::csum_ref At:: ft.c:1641 Defined at: ft.c:1497, ft.c:1509, ft.c:1521, ft.c:1547, ft.c:1573, ft.c:1604, ft.c:1635, +; CHECK-DAG: Use::csum_ref At:: ft.c:1641 Defined at: ft.c:1497, ft.c:1509, ft.c:1521, ft.c:1547, ft.c:1573, ft.c:1604, ft.c:1635, +; CHECK-DAG: Use::csum_ref At:: ft.c:1641 Defined at: ft.c:1497, ft.c:1509, ft.c:1521, ft.c:1547, ft.c:1573, ft.c:1604, ft.c:1635, +; CHECK-DAG: Use::csum_ref At:: ft.c:1641 Defined at: ft.c:1497, ft.c:1509, ft.c:1521, ft.c:1547, ft.c:1573, ft.c:1604, ft.c:1635, +; CHECK-DAG: Use::csum_ref At:: ft.c:1641 Defined at: ft.c:1497, ft.c:1509, ft.c:1521, ft.c:1547, ft.c:1573, ft.c:1604, ft.c:1635, +; CHECK-DAG: Use::csum_ref At:: ft.c:1641 Defined at: ft.c:1497, ft.c:1509, ft.c:1521, ft.c:1547, ft.c:1573, ft.c:1604, ft.c:1635, +; CHECK-DAG: Use::csum_ref At:: ft.c:1641 Defined at: ft.c:1497, ft.c:1509, ft.c:1521, ft.c:1547, ft.c:1573, ft.c:1604, ft.c:1635, +; CHECK-DAG: Use::csum_ref At:: ft.c:1641 Defined at: ft.c:1497, ft.c:1509, ft.c:1521, ft.c:1547, ft.c:1573, ft.c:1604, ft.c:1635, + +; CHECK-DAG: Use::q At:: ft.c:429 Defined at: ft.c:422, +; CHECK-DAG: Use::r At:: ft.c:437 Defined at: ft.c:423, +; CHECK-DAG: Use::q At:: ft.c:436 Defined at: ft.c:422, +; CHECK-DAG: Use::q At:: ft.c:432 Defined at: ft.c:422, + +; CHECK-DAG: Use::niter At:: ft.c:458 Defined at: ft.c:454, + + + +; CHECK-DAG: Use::gty1_imag At:: ft.c:754 Defined at: ft.c:674, ft.c:713, ft.c:745, +; CHECK-DAG: Use::u1_real At:: ft.c:673 Defined at: ft.c:753, +; CHECK-DAG: Use::u1_imag At:: ft.c:674 Defined at: ft.c:754, +; CHECK-DAG: Use::gty1_real At:: ft.c:694 Defined at: ft.c:673, ft.c:712, ft.c:744, +; CHECK-DAG: Use::gty1_imag At:: ft.c:695 Defined at: ft.c:674, ft.c:713, ft.c:745, +; CHECK-DAG: Use::gty1_real At:: ft.c:697 Defined at: ft.c:673, ft.c:712, ft.c:744, +; CHECK-DAG: Use::gty1_imag At:: ft.c:698 Defined at: ft.c:674, ft.c:713, ft.c:745, +; CHECK-DAG: Use::gty2_real At:: ft.c:712 Defined at: ft.c:705, +; CHECK-DAG: Use::gty2_imag At:: ft.c:713 Defined at: ft.c:706, +; CHECK-DAG: Use::gty2_real At:: ft.c:733 Defined at: ft.c:705, +; CHECK-DAG: Use::gty2_imag At:: ft.c:734 Defined at: ft.c:706, +; CHECK-DAG: Use::gty2_real At:: ft.c:736 Defined at: ft.c:705, +; CHECK-DAG: Use::gty2_imag At:: ft.c:737 Defined at: ft.c:706, +; CHECK-DAG: Use::gty1_real At:: ft.c:753 Defined at: ft.c:673, ft.c:712, ft.c:744, + +; CHECK-DAG: Use::gty2_real At:: ft.c:971 Defined at: ft.c:962, +; CHECK-DAG: Use::gty2_imag At:: ft.c:972 Defined at: ft.c:963, +; CHECK-DAG: Use::u1_real At:: ft.c:930 Defined at: ft.c:1012, +; CHECK-DAG: Use::u1_imag At:: ft.c:931 Defined at: ft.c:1013, +; CHECK-DAG: Use::gty1_real At:: ft.c:951 Defined at: ft.c:971, ft.c:930, ft.c:1003, +; CHECK-DAG: Use::gty1_imag At:: ft.c:952 Defined at: ft.c:972, ft.c:931, ft.c:1004, +; CHECK-DAG: Use::gty1_real At:: ft.c:954 Defined at: ft.c:971, ft.c:930, ft.c:1003, +; CHECK-DAG: Use::gty1_imag At:: ft.c:955 Defined at: ft.c:972, ft.c:931, ft.c:1004, +; CHECK-DAG: Use::gty2_real At:: ft.c:992 Defined at: ft.c:962, +; CHECK-DAG: Use::gty2_imag At:: ft.c:993 Defined at: ft.c:963, +; CHECK-DAG: Use::gty2_real At:: ft.c:995 Defined at: ft.c:962, +; CHECK-DAG: Use::gty2_imag At:: ft.c:996 Defined at: ft.c:963, +; CHECK-DAG: Use::gty1_real At:: ft.c:1012 Defined at: ft.c:971, ft.c:930, ft.c:1003, +; CHECK-DAG: Use::gty1_imag At:: ft.c:1013 Defined at: ft.c:972, ft.c:931, ft.c:1004, + +; CHECK-DAG: Use::gty1_real At:: ft.c:1208 Defined at: ft.c:1187, ft.c:1227, ft.c:1259, +; CHECK-DAG: Use::gty1_imag At:: ft.c:1209 Defined at: ft.c:1188, ft.c:1228, ft.c:1260, +; CHECK-DAG: Use::gty1_real At:: ft.c:1211 Defined at: ft.c:1187, ft.c:1227, ft.c:1259, +; CHECK-DAG: Use::gty1_imag At:: ft.c:1212 Defined at: ft.c:1188, ft.c:1228, ft.c:1260, +; CHECK-DAG: Use::gty2_real At:: ft.c:1227 Defined at: ft.c:1219, +; CHECK-DAG: Use::gty2_imag At:: ft.c:1228 Defined at: ft.c:1220, +; CHECK-DAG: Use::gty2_real At:: ft.c:1248 Defined at: ft.c:1219, +; CHECK-DAG: Use::gty2_imag At:: ft.c:1249 Defined at: ft.c:1220, +; CHECK-DAG: Use::gty2_real At:: ft.c:1251 Defined at: ft.c:1219, +; CHECK-DAG: Use::gty2_imag At:: ft.c:1252 Defined at: ft.c:1220, +; CHECK-DAG: Use::gty1_real At:: ft.c:1268 Defined at: ft.c:1187, ft.c:1227, ft.c:1259, +; CHECK-DAG: Use::gty1_imag At:: ft.c:1269 Defined at: ft.c:1188, ft.c:1228, ft.c:1260, + +; CHECK-DAG: Use::u1_real At:: ft.c:1319 Defined at: ft.c:1401, +; CHECK-DAG: Use::u1_imag At:: ft.c:1320 Defined at: ft.c:1402, +; CHECK-DAG: Use::gty1_real At:: ft.c:1341 Defined at: ft.c:1319, ft.c:1360, ft.c:1392, +; CHECK-DAG: Use::gty1_imag At:: ft.c:1342 Defined at: ft.c:1320, ft.c:1361, ft.c:1393, +; CHECK-DAG: Use::gty1_real At:: ft.c:1344 Defined at: ft.c:1319, ft.c:1360, ft.c:1392, +; CHECK-DAG: Use::gty1_imag At:: ft.c:1345 Defined at: ft.c:1320, ft.c:1361, ft.c:1393, +; CHECK-DAG: Use::gty2_real At:: ft.c:1360 Defined at: ft.c:1352, +; CHECK-DAG: Use::gty2_imag At:: ft.c:1361 Defined at: ft.c:1353, +; CHECK-DAG: Use::gty2_real At:: ft.c:1381 Defined at: ft.c:1352, +; CHECK-DAG: Use::gty2_imag At:: ft.c:1382 Defined at: ft.c:1353, +; CHECK-DAG: Use::gty2_real At:: ft.c:1384 Defined at: ft.c:1352, +; CHECK-DAG: Use::gty2_imag At:: ft.c:1385 Defined at: ft.c:1353, +; CHECK-DAG: Use::gty1_real At:: ft.c:1401 Defined at: ft.c:1319, ft.c:1360, ft.c:1392, +; CHECK-DAG: Use::gty1_imag At:: ft.c:1402 Defined at: ft.c:1320, ft.c:1361, ft.c:1393, + +; CHECK-DAG: Use::u1_real At:: ft.c:1061 Defined at: ft.c:1141, +; CHECK-DAG: Use::u1_imag At:: ft.c:1062 Defined at: ft.c:1142, +; CHECK-DAG: Use::gty1_real At:: ft.c:1082 Defined at: ft.c:1061, ft.c:1101, ft.c:1133, +; CHECK-DAG: Use::gty1_imag At:: ft.c:1083 Defined at: ft.c:1134, ft.c:1062, ft.c:1102, +; CHECK-DAG: Use::gty1_real At:: ft.c:1085 Defined at: ft.c:1061, ft.c:1101, ft.c:1133, +; CHECK-DAG: Use::gty1_imag At:: ft.c:1086 Defined at: ft.c:1134, ft.c:1062, ft.c:1102, +; CHECK-DAG: Use::gty2_real At:: ft.c:1101 Defined at: ft.c:1093, +; CHECK-DAG: Use::gty2_imag At:: ft.c:1102 Defined at: ft.c:1094, +; CHECK-DAG: Use::gty2_real At:: ft.c:1122 Defined at: ft.c:1093, +; CHECK-DAG: Use::gty2_imag At:: ft.c:1123 Defined at: ft.c:1094, +; CHECK-DAG: Use::gty2_real At:: ft.c:1125 Defined at: ft.c:1093, +; CHECK-DAG: Use::gty2_imag At:: ft.c:1126 Defined at: ft.c:1094, +; CHECK-DAG: Use::gty1_real At:: ft.c:1141 Defined at: ft.c:1061, ft.c:1101, ft.c:1133, +; CHECK-DAG: Use::gty1_imag At:: ft.c:1142 Defined at: ft.c:1134, ft.c:1062, ft.c:1102, + +; CHECK-DAG: Use::gty2_imag At:: ft.c:841 Defined at: ft.c:833, +; CHECK-DAG: Use::gty1_real At:: ft.c:821 Defined at: ft.c:840, ft.c:800, ft.c:872, +; CHECK-DAG: Use::u1_real At:: ft.c:800 Defined at: ft.c:881, +; CHECK-DAG: Use::u1_imag At:: ft.c:801 Defined at: ft.c:882, +; CHECK-DAG: Use::gty1_imag At:: ft.c:822 Defined at: ft.c:801, ft.c:841, ft.c:873, +; CHECK-DAG: Use::gty1_real At:: ft.c:824 Defined at: ft.c:840, ft.c:800, ft.c:872, +; CHECK-DAG: Use::gty1_imag At:: ft.c:825 Defined at: ft.c:801, ft.c:841, ft.c:873, +; CHECK-DAG: Use::gty2_real At:: ft.c:840 Defined at: ft.c:832, +; CHECK-DAG: Use::gty2_real At:: ft.c:861 Defined at: ft.c:832, +; CHECK-DAG: Use::gty2_imag At:: ft.c:862 Defined at: ft.c:833, +; CHECK-DAG: Use::gty2_real At:: ft.c:864 Defined at: ft.c:832, +; CHECK-DAG: Use::gty2_imag At:: ft.c:865 Defined at: ft.c:833, +; CHECK-DAG: Use::gty1_real At:: ft.c:881 Defined at: ft.c:840, ft.c:800, ft.c:872, +; CHECK-DAG: Use::gty1_imag At:: ft.c:882 Defined at: ft.c:801, ft.c:841, ft.c:873, + +; ModuleID = 'omp-host.ll' +source_filename = "ft.c" +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +%struct.dcomplex = type { double, double } +%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] } +%struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 } + +@dims = internal global [3 x i32] zeroinitializer, align 4, !dbg !0 +@timers_enabled = internal global i32 0, align 4, !dbg !15 +@niter = internal global i32 0, align 4, !dbg !18 +@.str = private unnamed_addr constant [3 x i8] c"FT\00", align 1 +@.str.1 = private unnamed_addr constant [25 x i8] c" floating point\00", align 1 +@.str.2 = private unnamed_addr constant [6 x i8] c"3.3.1\00", align 1 +@.str.3 = private unnamed_addr constant [12 x i8] c"15 Jan 2019\00", align 1 +@.str.4 = private unnamed_addr constant [7 x i8] c"(none)\00", align 1 +@.str.5 = private unnamed_addr constant [4 x i8] c"-lm\00", align 1 +@.str.6 = private unnamed_addr constant [12 x i8] c"-I../common\00", align 1 +@.str.7 = private unnamed_addr constant [7 x i8] c"randdp\00", align 1 +@u0_real = common dso_local global [8421376 x double] zeroinitializer, align 16, !dbg !20 +@u0_imag = common dso_local global [8421376 x double] zeroinitializer, align 16, !dbg !25 +@u1_real = common dso_local global [8421376 x double] zeroinitializer, align 16, !dbg !27 +@u1_imag = common dso_local global [8421376 x double] zeroinitializer, align 16, !dbg !29 +@twiddle = common dso_local global [8421376 x double] zeroinitializer, align 16, !dbg !31 +@debug = internal global i32 0, align 4, !dbg !33 +@.str.8 = private unnamed_addr constant [11 x i8] c"timer.flag\00", align 1 +@.str.9 = private unnamed_addr constant [2 x i8] c"r\00", align 1 +@.str.10 = private unnamed_addr constant [59 x i8] c"\0A\0A NAS Parallel Benchmarks (NPB3.3-ACC-C) - FT Benchmark\0A\0A\00", align 1 +@.str.11 = private unnamed_addr constant [36 x i8] c" Size : %4dx%4dx%4d\0A\00", align 1 +@.str.12 = private unnamed_addr constant [35 x i8] c" Iterations :%7d\0A\00", align 1 +@.str.13 = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 +@.str.14 = private unnamed_addr constant [17 x i8] c" total \00", align 1 +@.str.15 = private unnamed_addr constant [17 x i8] c" setup \00", align 1 +@.str.16 = private unnamed_addr constant [17 x i8] c" fft \00", align 1 +@.str.17 = private unnamed_addr constant [17 x i8] c" evolve \00", align 1 +@.str.18 = private unnamed_addr constant [17 x i8] c" checksum \00", align 1 +@.str.19 = private unnamed_addr constant [17 x i8] c" fftx \00", align 1 +@.str.20 = private unnamed_addr constant [17 x i8] c" ffty \00", align 1 +@.str.21 = private unnamed_addr constant [17 x i8] c" fftz \00", align 1 +@.str.22 = private unnamed_addr constant [35 x i8] c" timer %2d(%16s) :%9.4f (%6.2f%%)\0A\00", align 1 +@u_real = internal global [257 x double] zeroinitializer, align 16, !dbg !35 +@u_imag = internal global [257 x double] zeroinitializer, align 16, !dbg !40 +@gty1_real = internal global [256 x [256 x [256 x double]]] zeroinitializer, align 16, !dbg !42 +@gty1_imag = internal global [256 x [256 x [256 x double]]] zeroinitializer, align 16, !dbg !47 +@gty2_real = internal global [256 x [256 x [256 x double]]] zeroinitializer, align 16, !dbg !49 +@gty2_imag = internal global [256 x [256 x [256 x double]]] zeroinitializer, align 16, !dbg !51 +@.str.23 = private unnamed_addr constant [38 x i8] c" T =%5d Checksum =%22.12E%22.12E\0A\00", align 1 +@sums = internal global [7 x %struct.dcomplex] zeroinitializer, align 16, !dbg !53 +@.str.24 = private unnamed_addr constant [33 x i8] c" Result verification successful\0A\00", align 1 +@.str.25 = private unnamed_addr constant [29 x i8] c" Result verification failed\0A\00", align 1 +@.str.26 = private unnamed_addr constant [13 x i8] c" class = %c\0A\00", align 1 + +; Function Attrs: nounwind uwtable +define dso_local i32 @main(i32 %argc, i8** %argv) #0 !dbg !70 { +entry: + %verified = alloca i32, align 4 + %Class = alloca i8, align 1 + call void @llvm.dbg.value(metadata i32 %argc, metadata !77, metadata !DIExpression()), !dbg !85 + call void @llvm.dbg.value(metadata i8** %argv, metadata !78, metadata !DIExpression()), !dbg !85 + %0 = bitcast i32* %verified to i8*, !dbg !86 + call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #6, !dbg !86 + call void @llvm.dbg.declare(metadata i32* %verified, metadata !83, metadata !DIExpression()), !dbg !87 + call void @llvm.lifetime.start.p0i8(i64 1, i8* %Class) #6, !dbg !88 + call void @llvm.dbg.declare(metadata i8* %Class, metadata !84, metadata !DIExpression()), !dbg !89 + call void @llvm.dbg.value(metadata i32 1, metadata !79, metadata !DIExpression()), !dbg !85 + br label %for.cond, !dbg !90 + +for.cond: ; preds = %for.inc, %entry + %i.0 = phi i32 [ 1, %entry ], [ %inc, %for.inc ], !dbg !92 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !79, metadata !DIExpression()), !dbg !85 + %cmp = icmp sle i32 %i.0, 8, !dbg !93 + br i1 %cmp, label %for.body, label %for.end, !dbg !95 + +for.body: ; preds = %for.cond + call void @timer_clear(i32 %i.0), !dbg !96 + br label %for.inc, !dbg !98 + +for.inc: ; preds = %for.body + %inc = add nsw i32 %i.0, 1, !dbg !99 + call void @llvm.dbg.value(metadata i32 %inc, metadata !79, metadata !DIExpression()), !dbg !85 + br label %for.cond, !dbg !100, !llvm.loop !101 + +for.end: ; preds = %for.cond + call void @setup(), !dbg !103 + %1 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 0), align 4, !dbg !104, !tbaa !106 + %2 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 1), align 4, !dbg !110, !tbaa !106 + %3 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 2), align 4, !dbg !111, !tbaa !106 + call void @init_ui(i32 %1, i32 %2, i32 %3), !dbg !112 + %4 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 0), align 4, !dbg !113, !tbaa !106 + %5 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 1), align 4, !dbg !114, !tbaa !106 + %6 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 2), align 4, !dbg !115, !tbaa !106 + call void @compute_indexmap(i32 %4, i32 %5, i32 %6), !dbg !116 + %7 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 0), align 4, !dbg !117, !tbaa !106 + %8 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 1), align 4, !dbg !118, !tbaa !106 + %9 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 2), align 4, !dbg !119, !tbaa !106 + call void @compute_initial_conditions(i32 %7, i32 %8, i32 %9), !dbg !120 + %10 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 0), align 4, !dbg !121, !tbaa !106 + call void @fft_init(i32 %10), !dbg !122 + call void @fft(i32 1), !dbg !123 + call void @llvm.dbg.value(metadata i32 1, metadata !79, metadata !DIExpression()), !dbg !85 + br label %for.cond1, !dbg !124 + +for.cond1: ; preds = %for.inc4, %for.end + %i.1 = phi i32 [ 1, %for.end ], [ %inc5, %for.inc4 ], !dbg !126 + call void @llvm.dbg.value(metadata i32 %i.1, metadata !79, metadata !DIExpression()), !dbg !85 + %cmp2 = icmp sle i32 %i.1, 8, !dbg !127 + br i1 %cmp2, label %for.body3, label %for.end6, !dbg !129 + +for.body3: ; preds = %for.cond1 + call void @timer_clear(i32 %i.1), !dbg !130 + br label %for.inc4, !dbg !132 + +for.inc4: ; preds = %for.body3 + %inc5 = add nsw i32 %i.1, 1, !dbg !133 + call void @llvm.dbg.value(metadata i32 %inc5, metadata !79, metadata !DIExpression()), !dbg !85 + br label %for.cond1, !dbg !134, !llvm.loop !135 + +for.end6: ; preds = %for.cond1 + call void @timer_start(i32 1), !dbg !137 + %11 = load i32, i32* @timers_enabled, align 4, !dbg !138, !tbaa !140 + %tobool = icmp ne i32 %11, 0, !dbg !138 + br i1 %tobool, label %if.then, label %if.end, !dbg !141 + +if.then: ; preds = %for.end6 + call void @timer_start(i32 2), !dbg !142 + br label %if.end, !dbg !142 + +if.end: ; preds = %if.then, %for.end6 + %12 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 0), align 4, !dbg !143, !tbaa !106 + %13 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 1), align 4, !dbg !144, !tbaa !106 + %14 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 2), align 4, !dbg !145, !tbaa !106 + call void @compute_indexmap(i32 %12, i32 %13, i32 %14), !dbg !146 + %15 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 0), align 4, !dbg !147, !tbaa !106 + %16 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 1), align 4, !dbg !148, !tbaa !106 + %17 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 2), align 4, !dbg !149, !tbaa !106 + call void @compute_initial_conditions(i32 %15, i32 %16, i32 %17), !dbg !150 + %18 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 0), align 4, !dbg !151, !tbaa !106 + call void @fft_init(i32 %18), !dbg !152 + call void @fft(i32 1), !dbg !153 + call void @llvm.dbg.value(metadata i32 1, metadata !80, metadata !DIExpression()), !dbg !85 + br label %for.cond7, !dbg !154 + +for.cond7: ; preds = %for.inc10, %if.end + %iter.0 = phi i32 [ 1, %if.end ], [ %inc11, %for.inc10 ], !dbg !156 + call void @llvm.dbg.value(metadata i32 %iter.0, metadata !80, metadata !DIExpression()), !dbg !85 + %19 = load i32, i32* @niter, align 4, !dbg !157, !tbaa !106 + %cmp8 = icmp sle i32 %iter.0, %19, !dbg !159 + br i1 %cmp8, label %for.body9, label %for.end12, !dbg !160 + +for.body9: ; preds = %for.cond7 + %20 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 0), align 4, !dbg !161, !tbaa !106 + %21 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 1), align 4, !dbg !163, !tbaa !106 + %22 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 2), align 4, !dbg !164, !tbaa !106 + call void @evolve(i32 %20, i32 %21, i32 %22), !dbg !165 + call void @fft(i32 -1), !dbg !166 + %23 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 0), align 4, !dbg !167, !tbaa !106 + %24 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 1), align 4, !dbg !168, !tbaa !106 + %25 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 2), align 4, !dbg !169, !tbaa !106 + call void @checksum(i32 %iter.0, i32 %23, i32 %24, i32 %25), !dbg !170 + br label %for.inc10, !dbg !171 + +for.inc10: ; preds = %for.body9 + %inc11 = add nsw i32 %iter.0, 1, !dbg !172 + call void @llvm.dbg.value(metadata i32 %inc11, metadata !80, metadata !DIExpression()), !dbg !85 + br label %for.cond7, !dbg !173, !llvm.loop !174 + +for.end12: ; preds = %for.cond7 + %26 = load i32, i32* @niter, align 4, !dbg !176, !tbaa !106 + call void @verify(i32 256, i32 256, i32 128, i32 %26, i32* %verified, i8* %Class), !dbg !177 + call void @timer_stop(i32 1), !dbg !178 + %call = call double @timer_read(i32 1), !dbg !179 + call void @llvm.dbg.value(metadata double %call, metadata !81, metadata !DIExpression()), !dbg !85 + %cmp13 = fcmp une double %call, 0.000000e+00, !dbg !180 + br i1 %cmp13, label %if.then14, label %if.else, !dbg !182 + +if.then14: ; preds = %for.end12 + %call15 = call double @log(double 0x4160000000000000) #6, !dbg !183 + %mul = fmul double 7.196410e+00, %call15, !dbg !185 + %add = fadd double 1.481570e+01, %mul, !dbg !186 + %call16 = call double @log(double 0x4160000000000000) #6, !dbg !187 + %mul17 = fmul double 7.211130e+00, %call16, !dbg !188 + %add18 = fadd double 5.235180e+00, %mul17, !dbg !189 + %27 = load i32, i32* @niter, align 4, !dbg !190, !tbaa !106 + %conv = sitofp i32 %27 to double, !dbg !190 + %mul19 = fmul double %add18, %conv, !dbg !191 + %add20 = fadd double %add, %mul19, !dbg !192 + %mul21 = fmul double 0x4020C6F7A0B5ED8D, %add20, !dbg !193 + %div = fdiv double %mul21, %call, !dbg !194 + call void @llvm.dbg.value(metadata double %div, metadata !82, metadata !DIExpression()), !dbg !85 + br label %if.end22, !dbg !195 + +if.else: ; preds = %for.end12 + call void @llvm.dbg.value(metadata double 0.000000e+00, metadata !82, metadata !DIExpression()), !dbg !85 + br label %if.end22 + +if.end22: ; preds = %if.else, %if.then14 + %mflops.0 = phi double [ %div, %if.then14 ], [ 0.000000e+00, %if.else ], !dbg !196 + call void @llvm.dbg.value(metadata double %mflops.0, metadata !82, metadata !DIExpression()), !dbg !85 + %28 = load i8, i8* %Class, align 1, !dbg !197, !tbaa !140 + %29 = load i32, i32* @niter, align 4, !dbg !198, !tbaa !106 + %30 = load i32, i32* %verified, align 4, !dbg !199, !tbaa !140 + call void @print_results(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8 signext %28, i32 256, i32 256, i32 128, i32 %29, double %call, double %mflops.0, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.1, i64 0, i64 0), i32 %30, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.7, i64 0, i64 0)), !dbg !200 + %31 = load i32, i32* @timers_enabled, align 4, !dbg !201, !tbaa !140 + %tobool23 = icmp ne i32 %31, 0, !dbg !201 + br i1 %tobool23, label %if.then24, label %if.end25, !dbg !203 + +if.then24: ; preds = %if.end22 + call void @print_timers(), !dbg !204 + br label %if.end25, !dbg !204 + +if.end25: ; preds = %if.then24, %if.end22 + call void @llvm.lifetime.end.p0i8(i64 1, i8* %Class) #6, !dbg !205 + %32 = bitcast i32* %verified to i8*, !dbg !205 + call void @llvm.lifetime.end.p0i8(i64 4, i8* %32) #6, !dbg !205 + ret i32 0, !dbg !206 +} + +; Function Attrs: nounwind readnone speculatable +declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 + +; Function Attrs: argmemonly nounwind +declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #2 + +declare dso_local void @timer_clear(i32) #3 + +; Function Attrs: nounwind uwtable +define internal void @init_ui(i32 %d1, i32 %d2, i32 %d3) #0 !dbg !207 { +entry: + call void @llvm.dbg.value(metadata i32 %d1, metadata !211, metadata !DIExpression()), !dbg !217 + call void @llvm.dbg.value(metadata i32 %d2, metadata !212, metadata !DIExpression()), !dbg !217 + call void @llvm.dbg.value(metadata i32 %d3, metadata !213, metadata !DIExpression()), !dbg !217 + call void @llvm.dbg.value(metadata i32 0, metadata !216, metadata !DIExpression()), !dbg !217 + br label %for.cond, !dbg !218 + +for.cond: ; preds = %for.inc51, %entry + %k.0 = phi i32 [ 0, %entry ], [ %inc52, %for.inc51 ], !dbg !221 + call void @llvm.dbg.value(metadata i32 %k.0, metadata !216, metadata !DIExpression()), !dbg !217 + %cmp = icmp slt i32 %k.0, %d3, !dbg !222 + br i1 %cmp, label %for.body, label %for.end53, !dbg !224 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 0, metadata !215, metadata !DIExpression()), !dbg !217 + br label %for.cond1, !dbg !225 + +for.cond1: ; preds = %for.inc48, %for.body + %j.0 = phi i32 [ 0, %for.body ], [ %inc49, %for.inc48 ], !dbg !228 + call void @llvm.dbg.value(metadata i32 %j.0, metadata !215, metadata !DIExpression()), !dbg !217 + %cmp2 = icmp slt i32 %j.0, %d2, !dbg !229 + br i1 %cmp2, label %for.body3, label %for.end50, !dbg !231 + +for.body3: ; preds = %for.cond1 + call void @llvm.dbg.value(metadata i32 0, metadata !214, metadata !DIExpression()), !dbg !217 + br label %for.cond4, !dbg !232 + +for.cond4: ; preds = %for.inc, %for.body3 + %i.0 = phi i32 [ 0, %for.body3 ], [ %inc, %for.inc ], !dbg !235 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !214, metadata !DIExpression()), !dbg !217 + %cmp5 = icmp slt i32 %i.0, %d1, !dbg !236 + br i1 %cmp5, label %for.body6, label %for.end, !dbg !238 + +for.body6: ; preds = %for.cond4 + %mul = mul nsw i32 %k.0, %d2, !dbg !239 + %add = add nsw i32 %d1, 1, !dbg !241 + %mul7 = mul nsw i32 %mul, %add, !dbg !242 + %add8 = add nsw i32 %d1, 1, !dbg !243 + %mul9 = mul nsw i32 %j.0, %add8, !dbg !244 + %add10 = add nsw i32 %mul7, %mul9, !dbg !245 + %add11 = add nsw i32 %add10, %i.0, !dbg !246 + %idxprom = sext i32 %add11 to i64, !dbg !247 + %arrayidx = getelementptr inbounds [8421376 x double], [8421376 x double]* @u0_real, i64 0, i64 %idxprom, !dbg !247 + store double 0.000000e+00, double* %arrayidx, align 8, !dbg !248, !tbaa !249 + %mul12 = mul nsw i32 %k.0, %d2, !dbg !251 + %add13 = add nsw i32 %d1, 1, !dbg !252 + %mul14 = mul nsw i32 %mul12, %add13, !dbg !253 + %add15 = add nsw i32 %d1, 1, !dbg !254 + %mul16 = mul nsw i32 %j.0, %add15, !dbg !255 + %add17 = add nsw i32 %mul14, %mul16, !dbg !256 + %add18 = add nsw i32 %add17, %i.0, !dbg !257 + %idxprom19 = sext i32 %add18 to i64, !dbg !258 + %arrayidx20 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u0_imag, i64 0, i64 %idxprom19, !dbg !258 + store double 0.000000e+00, double* %arrayidx20, align 8, !dbg !259, !tbaa !249 + %mul21 = mul nsw i32 %k.0, %d2, !dbg !260 + %add22 = add nsw i32 %d1, 1, !dbg !261 + %mul23 = mul nsw i32 %mul21, %add22, !dbg !262 + %add24 = add nsw i32 %d1, 1, !dbg !263 + %mul25 = mul nsw i32 %j.0, %add24, !dbg !264 + %add26 = add nsw i32 %mul23, %mul25, !dbg !265 + %add27 = add nsw i32 %add26, %i.0, !dbg !266 + %idxprom28 = sext i32 %add27 to i64, !dbg !267 + %arrayidx29 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_real, i64 0, i64 %idxprom28, !dbg !267 + store double 0.000000e+00, double* %arrayidx29, align 8, !dbg !268, !tbaa !249 + %mul30 = mul nsw i32 %k.0, %d2, !dbg !269 + %add31 = add nsw i32 %d1, 1, !dbg !270 + %mul32 = mul nsw i32 %mul30, %add31, !dbg !271 + %add33 = add nsw i32 %d1, 1, !dbg !272 + %mul34 = mul nsw i32 %j.0, %add33, !dbg !273 + %add35 = add nsw i32 %mul32, %mul34, !dbg !274 + %add36 = add nsw i32 %add35, %i.0, !dbg !275 + %idxprom37 = sext i32 %add36 to i64, !dbg !276 + %arrayidx38 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_imag, i64 0, i64 %idxprom37, !dbg !276 + store double 0.000000e+00, double* %arrayidx38, align 8, !dbg !277, !tbaa !249 + %mul39 = mul nsw i32 %k.0, %d2, !dbg !278 + %add40 = add nsw i32 %d1, 1, !dbg !279 + %mul41 = mul nsw i32 %mul39, %add40, !dbg !280 + %add42 = add nsw i32 %d1, 1, !dbg !281 + %mul43 = mul nsw i32 %j.0, %add42, !dbg !282 + %add44 = add nsw i32 %mul41, %mul43, !dbg !283 + %add45 = add nsw i32 %add44, %i.0, !dbg !284 + %idxprom46 = sext i32 %add45 to i64, !dbg !285 + %arrayidx47 = getelementptr inbounds [8421376 x double], [8421376 x double]* @twiddle, i64 0, i64 %idxprom46, !dbg !285 + store double 0.000000e+00, double* %arrayidx47, align 8, !dbg !286, !tbaa !249 + br label %for.inc, !dbg !287 + +for.inc: ; preds = %for.body6 + %inc = add nsw i32 %i.0, 1, !dbg !288 + call void @llvm.dbg.value(metadata i32 %inc, metadata !214, metadata !DIExpression()), !dbg !217 + br label %for.cond4, !dbg !289, !llvm.loop !290 + +for.end: ; preds = %for.cond4 + br label %for.inc48, !dbg !292 + +for.inc48: ; preds = %for.end + %inc49 = add nsw i32 %j.0, 1, !dbg !293 + call void @llvm.dbg.value(metadata i32 %inc49, metadata !215, metadata !DIExpression()), !dbg !217 + br label %for.cond1, !dbg !294, !llvm.loop !295 + +for.end50: ; preds = %for.cond1 + br label %for.inc51, !dbg !297 + +for.inc51: ; preds = %for.end50 + %inc52 = add nsw i32 %k.0, 1, !dbg !298 + call void @llvm.dbg.value(metadata i32 %inc52, metadata !216, metadata !DIExpression()), !dbg !217 + br label %for.cond, !dbg !299, !llvm.loop !300 + +for.end53: ; preds = %for.cond + ret void, !dbg !302 +} + +; Function Attrs: nounwind uwtable +define internal void @compute_indexmap(i32 %d1, i32 %d2, i32 %d3) #0 !dbg !303 { +entry: + call void @llvm.dbg.value(metadata i32 %d1, metadata !305, metadata !DIExpression()), !dbg !317 + call void @llvm.dbg.value(metadata i32 %d2, metadata !306, metadata !DIExpression()), !dbg !317 + call void @llvm.dbg.value(metadata i32 %d3, metadata !307, metadata !DIExpression()), !dbg !317 + call void @llvm.dbg.value(metadata double 0xBF04B2B4199E149A, metadata !316, metadata !DIExpression()), !dbg !317 + call void @llvm.dbg.value(metadata i32 0, metadata !310, metadata !DIExpression()), !dbg !317 + br label %for.cond, !dbg !318 + +for.cond: ; preds = %for.inc28, %entry + %k.0 = phi i32 [ 0, %entry ], [ %inc29, %for.inc28 ], !dbg !321 + call void @llvm.dbg.value(metadata i32 %k.0, metadata !310, metadata !DIExpression()), !dbg !317 + %cmp = icmp slt i32 %k.0, %d3, !dbg !322 + br i1 %cmp, label %for.body, label %for.end30, !dbg !324 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 0, metadata !309, metadata !DIExpression()), !dbg !317 + br label %for.cond1, !dbg !325 + +for.cond1: ; preds = %for.inc25, %for.body + %j.0 = phi i32 [ 0, %for.body ], [ %inc26, %for.inc25 ], !dbg !328 + call void @llvm.dbg.value(metadata i32 %j.0, metadata !309, metadata !DIExpression()), !dbg !317 + %cmp2 = icmp slt i32 %j.0, %d2, !dbg !329 + br i1 %cmp2, label %for.body3, label %for.end27, !dbg !331 + +for.body3: ; preds = %for.cond1 + call void @llvm.dbg.value(metadata i32 0, metadata !308, metadata !DIExpression()), !dbg !317 + br label %for.cond4, !dbg !332 + +for.cond4: ; preds = %for.inc, %for.body3 + %i.0 = phi i32 [ 0, %for.body3 ], [ %inc, %for.inc ], !dbg !335 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !308, metadata !DIExpression()), !dbg !317 + %cmp5 = icmp slt i32 %i.0, %d1, !dbg !336 + br i1 %cmp5, label %for.body6, label %for.end, !dbg !338 + +for.body6: ; preds = %for.cond4 + %add = add nsw i32 %k.0, 64, !dbg !339 + %rem = srem i32 %add, 128, !dbg !341 + %sub = sub nsw i32 %rem, 64, !dbg !342 + call void @llvm.dbg.value(metadata i32 %sub, metadata !311, metadata !DIExpression()), !dbg !317 + %mul = mul nsw i32 %sub, %sub, !dbg !343 + call void @llvm.dbg.value(metadata i32 %mul, metadata !312, metadata !DIExpression()), !dbg !317 + %add7 = add nsw i32 %j.0, 128, !dbg !344 + %rem8 = srem i32 %add7, 256, !dbg !345 + %sub9 = sub nsw i32 %rem8, 128, !dbg !346 + call void @llvm.dbg.value(metadata i32 %sub9, metadata !313, metadata !DIExpression()), !dbg !317 + %mul10 = mul nsw i32 %sub9, %sub9, !dbg !347 + %add11 = add nsw i32 %mul10, %mul, !dbg !348 + call void @llvm.dbg.value(metadata i32 %add11, metadata !314, metadata !DIExpression()), !dbg !317 + %add12 = add nsw i32 %i.0, 128, !dbg !349 + %rem13 = srem i32 %add12, 256, !dbg !350 + %sub14 = sub nsw i32 %rem13, 128, !dbg !351 + call void @llvm.dbg.value(metadata i32 %sub14, metadata !315, metadata !DIExpression()), !dbg !317 + %mul15 = mul nsw i32 %sub14, %sub14, !dbg !352 + %add16 = add nsw i32 %mul15, %add11, !dbg !353 + %conv = sitofp i32 %add16 to double, !dbg !354 + %mul17 = fmul double 0xBF04B2B4199E149A, %conv, !dbg !355 + %call = call double @exp(double %mul17) #6, !dbg !356 + %mul18 = mul nsw i32 %k.0, %d2, !dbg !357 + %add19 = add nsw i32 %d1, 1, !dbg !358 + %mul20 = mul nsw i32 %mul18, %add19, !dbg !359 + %add21 = add nsw i32 %d1, 1, !dbg !360 + %mul22 = mul nsw i32 %j.0, %add21, !dbg !361 + %add23 = add nsw i32 %mul20, %mul22, !dbg !362 + %add24 = add nsw i32 %add23, %i.0, !dbg !363 + %idxprom = sext i32 %add24 to i64, !dbg !364 + %arrayidx = getelementptr inbounds [8421376 x double], [8421376 x double]* @twiddle, i64 0, i64 %idxprom, !dbg !364 + store double %call, double* %arrayidx, align 8, !dbg !365, !tbaa !249 + br label %for.inc, !dbg !366 + +for.inc: ; preds = %for.body6 + %inc = add nsw i32 %i.0, 1, !dbg !367 + call void @llvm.dbg.value(metadata i32 %inc, metadata !308, metadata !DIExpression()), !dbg !317 + br label %for.cond4, !dbg !368, !llvm.loop !369 + +for.end: ; preds = %for.cond4 + br label %for.inc25, !dbg !371 + +for.inc25: ; preds = %for.end + %inc26 = add nsw i32 %j.0, 1, !dbg !372 + call void @llvm.dbg.value(metadata i32 %inc26, metadata !309, metadata !DIExpression()), !dbg !317 + br label %for.cond1, !dbg !373, !llvm.loop !374 + +for.end27: ; preds = %for.cond1 + br label %for.inc28, !dbg !376 + +for.inc28: ; preds = %for.end27 + %inc29 = add nsw i32 %k.0, 1, !dbg !377 + call void @llvm.dbg.value(metadata i32 %inc29, metadata !310, metadata !DIExpression()), !dbg !317 + br label %for.cond, !dbg !378, !llvm.loop !379 + +for.end30: ; preds = %for.cond + ret void, !dbg !381 +} + +; Function Attrs: nounwind uwtable +define internal void @compute_initial_conditions(i32 %d1, i32 %d2, i32 %d3) #0 !dbg !382 { +entry: + %start = alloca double, align 8 + %starts = alloca [128 x double], align 16 + call void @llvm.dbg.value(metadata i32 %d1, metadata !384, metadata !DIExpression()), !dbg !420 + call void @llvm.dbg.value(metadata i32 %d2, metadata !385, metadata !DIExpression()), !dbg !420 + call void @llvm.dbg.value(metadata i32 %d3, metadata !386, metadata !DIExpression()), !dbg !420 + call void @llvm.dbg.value(metadata i32 128, metadata !389, metadata !DIExpression()), !dbg !420 + %0 = bitcast double* %start to i8*, !dbg !421 + call void @llvm.lifetime.start.p0i8(i64 8, i8* %0) #6, !dbg !421 + call void @llvm.dbg.declare(metadata double* %start, metadata !391, metadata !DIExpression()), !dbg !422 + %1 = bitcast [128 x double]* %starts to i8*, !dbg !421 + call void @llvm.lifetime.start.p0i8(i64 1024, i8* %1) #6, !dbg !421 + call void @llvm.dbg.declare(metadata [128 x double]* %starts, metadata !394, metadata !DIExpression()), !dbg !423 + store double 0x41B2B9B0A1000000, double* %start, align 8, !dbg !424, !tbaa !249 + %call = call double @ipow46(double 0x41D2309CE5400000, i32 0), !dbg !425 + call void @llvm.dbg.value(metadata double %call, metadata !392, metadata !DIExpression()), !dbg !420 + %call1 = call double @randlc(double* %start, double %call), !dbg !426 + call void @llvm.dbg.value(metadata double %call1, metadata !393, metadata !DIExpression()), !dbg !420 + %call2 = call double @ipow46(double 0x41D2309CE5400000, i32 131072), !dbg !427 + call void @llvm.dbg.value(metadata double %call2, metadata !392, metadata !DIExpression()), !dbg !420 + %2 = load double, double* %start, align 8, !dbg !428, !tbaa !249 + %arrayidx = getelementptr inbounds [128 x double], [128 x double]* %starts, i64 0, i64 0, !dbg !429 + store double %2, double* %arrayidx, align 16, !dbg !430, !tbaa !249 + call void @llvm.dbg.value(metadata i32 1, metadata !387, metadata !DIExpression()), !dbg !420 + br label %for.cond, !dbg !431 + +for.cond: ; preds = %for.inc, %entry + %k.0 = phi i32 [ 1, %entry ], [ %inc, %for.inc ], !dbg !433 + call void @llvm.dbg.value(metadata i32 %k.0, metadata !387, metadata !DIExpression()), !dbg !420 + %cmp = icmp slt i32 %k.0, %d3, !dbg !434 + br i1 %cmp, label %for.body, label %for.end, !dbg !436 + +for.body: ; preds = %for.cond + %call3 = call double @randlc(double* %start, double %call2), !dbg !437 + call void @llvm.dbg.value(metadata double %call3, metadata !393, metadata !DIExpression()), !dbg !420 + %3 = load double, double* %start, align 8, !dbg !439, !tbaa !249 + %idxprom = sext i32 %k.0 to i64, !dbg !440 + %arrayidx4 = getelementptr inbounds [128 x double], [128 x double]* %starts, i64 0, i64 %idxprom, !dbg !440 + store double %3, double* %arrayidx4, align 8, !dbg !441, !tbaa !249 + br label %for.inc, !dbg !442 + +for.inc: ; preds = %for.body + %inc = add nsw i32 %k.0, 1, !dbg !443 + call void @llvm.dbg.value(metadata i32 %inc, metadata !387, metadata !DIExpression()), !dbg !420 + br label %for.cond, !dbg !444, !llvm.loop !445 + +for.end: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 0, metadata !387, metadata !DIExpression()), !dbg !420 + br label %for.cond5, !dbg !447 + +for.cond5: ; preds = %for.inc67, %for.end + %k.1 = phi i32 [ 0, %for.end ], [ %inc68, %for.inc67 ], !dbg !448 + call void @llvm.dbg.value(metadata i32 %k.1, metadata !387, metadata !DIExpression()), !dbg !420 + %cmp6 = icmp slt i32 %k.1, %d3, !dbg !449 + br i1 %cmp6, label %for.body7, label %for.end69, !dbg !450 + +for.body7: ; preds = %for.cond5 + %idxprom8 = sext i32 %k.1 to i64, !dbg !451 + %arrayidx9 = getelementptr inbounds [128 x double], [128 x double]* %starts, i64 0, i64 %idxprom8, !dbg !451 + %4 = load double, double* %arrayidx9, align 8, !dbg !451, !tbaa !249 + call void @llvm.dbg.value(metadata double %4, metadata !390, metadata !DIExpression()), !dbg !420 + call void @llvm.dbg.value(metadata i32 0, metadata !388, metadata !DIExpression()), !dbg !420 + br label %for.cond10, !dbg !452 + +for.cond10: ; preds = %for.inc64, %for.body7 + %x0.0 = phi double [ %4, %for.body7 ], [ %x0.1, %for.inc64 ], !dbg !453 + %j.0 = phi i32 [ 0, %for.body7 ], [ %inc65, %for.inc64 ], !dbg !454 + call void @llvm.dbg.value(metadata i32 %j.0, metadata !388, metadata !DIExpression()), !dbg !420 + call void @llvm.dbg.value(metadata double %x0.0, metadata !390, metadata !DIExpression()), !dbg !420 + %cmp11 = icmp slt i32 %j.0, %d2, !dbg !455 + br i1 %cmp11, label %for.body12, label %for.end66, !dbg !456 + +for.body12: ; preds = %for.cond10 + call void @llvm.dbg.value(metadata double 0x3E80000000000000, metadata !398, metadata !DIExpression()), !dbg !457 + call void @llvm.dbg.value(metadata double 0x3D10000000000000, metadata !407, metadata !DIExpression()), !dbg !457 + call void @llvm.dbg.value(metadata double 0x4160000000000000, metadata !408, metadata !DIExpression()), !dbg !457 + call void @llvm.dbg.value(metadata double 0x42D0000000000000, metadata !409, metadata !DIExpression()), !dbg !457 + call void @llvm.dbg.value(metadata double 0x4062309CE5400000, metadata !410, metadata !DIExpression()), !dbg !457 + %conv = fptosi double 0x4062309CE5400000 to i32, !dbg !458 + %conv13 = sitofp i32 %conv to double, !dbg !458 + call void @llvm.dbg.value(metadata double %conv13, metadata !414, metadata !DIExpression()), !dbg !457 + %mul = fmul double 0x4160000000000000, %conv13, !dbg !459 + %sub = fsub double 0x41D2309CE5400000, %mul, !dbg !460 + call void @llvm.dbg.value(metadata double %sub, metadata !415, metadata !DIExpression()), !dbg !457 + call void @llvm.dbg.value(metadata i32 0, metadata !419, metadata !DIExpression()), !dbg !457 + br label %for.cond14, !dbg !461 + +for.cond14: ; preds = %for.inc61, %for.body12 + %x0.1 = phi double [ %x0.0, %for.body12 ], [ %sub37, %for.inc61 ], !dbg !463 + %i.0 = phi i32 [ 0, %for.body12 ], [ %inc62, %for.inc61 ], !dbg !464 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !419, metadata !DIExpression()), !dbg !457 + call void @llvm.dbg.value(metadata double %x0.1, metadata !390, metadata !DIExpression()), !dbg !420 + %cmp15 = icmp slt i32 %i.0, 512, !dbg !465 + br i1 %cmp15, label %for.body17, label %for.end63, !dbg !467 + +for.body17: ; preds = %for.cond14 + %mul18 = fmul double 0x3E80000000000000, %x0.1, !dbg !468 + call void @llvm.dbg.value(metadata double %mul18, metadata !410, metadata !DIExpression()), !dbg !457 + %conv19 = fptosi double %mul18 to i32, !dbg !470 + %conv20 = sitofp i32 %conv19 to double, !dbg !470 + call void @llvm.dbg.value(metadata double %conv20, metadata !416, metadata !DIExpression()), !dbg !457 + %mul21 = fmul double 0x4160000000000000, %conv20, !dbg !471 + %sub22 = fsub double %x0.1, %mul21, !dbg !472 + call void @llvm.dbg.value(metadata double %sub22, metadata !417, metadata !DIExpression()), !dbg !457 + %mul23 = fmul double %conv13, %sub22, !dbg !473 + %mul24 = fmul double %sub, %conv20, !dbg !474 + %add = fadd double %mul23, %mul24, !dbg !475 + call void @llvm.dbg.value(metadata double %add, metadata !410, metadata !DIExpression()), !dbg !457 + %mul25 = fmul double 0x3E80000000000000, %add, !dbg !476 + %conv26 = fptosi double %mul25 to i32, !dbg !477 + %conv27 = sitofp i32 %conv26 to double, !dbg !477 + call void @llvm.dbg.value(metadata double %conv27, metadata !411, metadata !DIExpression()), !dbg !457 + %mul28 = fmul double 0x4160000000000000, %conv27, !dbg !478 + %sub29 = fsub double %add, %mul28, !dbg !479 + call void @llvm.dbg.value(metadata double %sub29, metadata !418, metadata !DIExpression()), !dbg !457 + %mul30 = fmul double 0x4160000000000000, %sub29, !dbg !480 + %mul31 = fmul double %sub, %sub22, !dbg !481 + %add32 = fadd double %mul30, %mul31, !dbg !482 + call void @llvm.dbg.value(metadata double %add32, metadata !412, metadata !DIExpression()), !dbg !457 + %mul33 = fmul double 0x3D10000000000000, %add32, !dbg !483 + %conv34 = fptosi double %mul33 to i32, !dbg !484 + %conv35 = sitofp i32 %conv34 to double, !dbg !484 + call void @llvm.dbg.value(metadata double %conv35, metadata !413, metadata !DIExpression()), !dbg !457 + %mul36 = fmul double 0x42D0000000000000, %conv35, !dbg !485 + %sub37 = fsub double %add32, %mul36, !dbg !486 + call void @llvm.dbg.value(metadata double %sub37, metadata !390, metadata !DIExpression()), !dbg !420 + %rem = srem i32 %i.0, 2, !dbg !487 + %cmp38 = icmp eq i32 %rem, 0, !dbg !489 + br i1 %cmp38, label %if.then, label %if.else, !dbg !490 + +if.then: ; preds = %for.body17 + %mul40 = fmul double 0x3D10000000000000, %sub37, !dbg !491 + %mul41 = mul nsw i32 %k.1, %d2, !dbg !492 + %add42 = add nsw i32 %d1, 1, !dbg !493 + %mul43 = mul nsw i32 %mul41, %add42, !dbg !494 + %add44 = add nsw i32 %d1, 1, !dbg !495 + %mul45 = mul nsw i32 %j.0, %add44, !dbg !496 + %add46 = add nsw i32 %mul43, %mul45, !dbg !497 + %div = sdiv i32 %i.0, 2, !dbg !498 + %add47 = add nsw i32 %add46, %div, !dbg !499 + %idxprom48 = sext i32 %add47 to i64, !dbg !500 + %arrayidx49 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_real, i64 0, i64 %idxprom48, !dbg !500 + store double %mul40, double* %arrayidx49, align 8, !dbg !501, !tbaa !249 + br label %if.end, !dbg !500 + +if.else: ; preds = %for.body17 + %mul50 = fmul double 0x3D10000000000000, %sub37, !dbg !502 + %mul51 = mul nsw i32 %k.1, %d2, !dbg !503 + %add52 = add nsw i32 %d1, 1, !dbg !504 + %mul53 = mul nsw i32 %mul51, %add52, !dbg !505 + %add54 = add nsw i32 %d1, 1, !dbg !506 + %mul55 = mul nsw i32 %j.0, %add54, !dbg !507 + %add56 = add nsw i32 %mul53, %mul55, !dbg !508 + %div57 = sdiv i32 %i.0, 2, !dbg !509 + %add58 = add nsw i32 %add56, %div57, !dbg !510 + %idxprom59 = sext i32 %add58 to i64, !dbg !511 + %arrayidx60 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_imag, i64 0, i64 %idxprom59, !dbg !511 + store double %mul50, double* %arrayidx60, align 8, !dbg !512, !tbaa !249 + br label %if.end + +if.end: ; preds = %if.else, %if.then + br label %for.inc61, !dbg !513 + +for.inc61: ; preds = %if.end + %inc62 = add nsw i32 %i.0, 1, !dbg !514 + call void @llvm.dbg.value(metadata i32 %inc62, metadata !419, metadata !DIExpression()), !dbg !457 + br label %for.cond14, !dbg !515, !llvm.loop !516 + +for.end63: ; preds = %for.cond14 + br label %for.inc64, !dbg !518 + +for.inc64: ; preds = %for.end63 + %inc65 = add nsw i32 %j.0, 1, !dbg !519 + call void @llvm.dbg.value(metadata i32 %inc65, metadata !388, metadata !DIExpression()), !dbg !420 + br label %for.cond10, !dbg !520, !llvm.loop !521 + +for.end66: ; preds = %for.cond10 + br label %for.inc67, !dbg !523 + +for.inc67: ; preds = %for.end66 + %inc68 = add nsw i32 %k.1, 1, !dbg !524 + call void @llvm.dbg.value(metadata i32 %inc68, metadata !387, metadata !DIExpression()), !dbg !420 + br label %for.cond5, !dbg !525, !llvm.loop !526 + +for.end69: ; preds = %for.cond5 + %5 = bitcast [128 x double]* %starts to i8*, !dbg !528 + call void @llvm.lifetime.end.p0i8(i64 1024, i8* %5) #6, !dbg !528 + %6 = bitcast double* %start to i8*, !dbg !528 + call void @llvm.lifetime.end.p0i8(i64 8, i8* %6) #6, !dbg !528 + ret void, !dbg !528 +} + +; Function Attrs: nounwind uwtable +define internal void @fft_init(i32 %n) #0 !dbg !529 { +entry: + call void @llvm.dbg.value(metadata i32 %n, metadata !533, metadata !DIExpression()), !dbg !542 + call void @llvm.dbg.value(metadata i32 %n, metadata !535, metadata !DIExpression()), !dbg !542 + %call = call i32 @ilog2(i32 %n), !dbg !543 + call void @llvm.dbg.value(metadata i32 %call, metadata !534, metadata !DIExpression()), !dbg !542 + %conv = sitofp i32 %call to double, !dbg !544 + store double %conv, double* getelementptr inbounds ([257 x double], [257 x double]* @u_real, i64 0, i64 0), align 16, !dbg !547, !tbaa !249 + store double 0.000000e+00, double* getelementptr inbounds ([257 x double], [257 x double]* @u_imag, i64 0, i64 0), align 16, !dbg !548, !tbaa !249 + call void @llvm.dbg.value(metadata i32 2, metadata !536, metadata !DIExpression()), !dbg !542 + call void @llvm.dbg.value(metadata i32 1, metadata !539, metadata !DIExpression()), !dbg !542 + call void @llvm.dbg.value(metadata i32 1, metadata !538, metadata !DIExpression()), !dbg !542 + br label %for.cond, !dbg !549 + +for.cond: ; preds = %for.inc17, %entry + %j.0 = phi i32 [ 1, %entry ], [ %inc18, %for.inc17 ], !dbg !551 + %ln.0 = phi i32 [ 1, %entry ], [ %mul16, %for.inc17 ], !dbg !542 + %ku.0 = phi i32 [ 2, %entry ], [ %add15, %for.inc17 ], !dbg !542 + call void @llvm.dbg.value(metadata i32 %ku.0, metadata !536, metadata !DIExpression()), !dbg !542 + call void @llvm.dbg.value(metadata i32 %ln.0, metadata !539, metadata !DIExpression()), !dbg !542 + call void @llvm.dbg.value(metadata i32 %j.0, metadata !538, metadata !DIExpression()), !dbg !542 + %cmp = icmp sle i32 %j.0, %call, !dbg !552 + br i1 %cmp, label %for.body, label %for.end19, !dbg !554 + +for.body: ; preds = %for.cond + %conv2 = sitofp i32 %ln.0 to double, !dbg !555 + %div = fdiv double 0x400921FB54442D18, %conv2, !dbg !557 + call void @llvm.dbg.value(metadata double %div, metadata !540, metadata !DIExpression()), !dbg !542 + call void @llvm.dbg.value(metadata i32 0, metadata !537, metadata !DIExpression()), !dbg !542 + br label %for.cond3, !dbg !558 + +for.cond3: ; preds = %for.inc, %for.body + %i.0 = phi i32 [ 0, %for.body ], [ %inc, %for.inc ], !dbg !561 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !537, metadata !DIExpression()), !dbg !542 + %sub = sub nsw i32 %ln.0, 1, !dbg !562 + %cmp4 = icmp sle i32 %i.0, %sub, !dbg !564 + br i1 %cmp4, label %for.body6, label %for.end, !dbg !565 + +for.body6: ; preds = %for.cond3 + %conv7 = sitofp i32 %i.0 to double, !dbg !566 + %mul = fmul double %conv7, %div, !dbg !568 + call void @llvm.dbg.value(metadata double %mul, metadata !541, metadata !DIExpression()), !dbg !542 + %call8 = call double @cos(double %mul) #6, !dbg !569 + %add = add nsw i32 %i.0, %ku.0, !dbg !570 + %sub9 = sub nsw i32 %add, 1, !dbg !571 + %idxprom = sext i32 %sub9 to i64, !dbg !572 + %arrayidx = getelementptr inbounds [257 x double], [257 x double]* @u_real, i64 0, i64 %idxprom, !dbg !572 + store double %call8, double* %arrayidx, align 8, !dbg !573, !tbaa !249 + %call10 = call double @sin(double %mul) #6, !dbg !574 + %add11 = add nsw i32 %i.0, %ku.0, !dbg !575 + %sub12 = sub nsw i32 %add11, 1, !dbg !576 + %idxprom13 = sext i32 %sub12 to i64, !dbg !577 + %arrayidx14 = getelementptr inbounds [257 x double], [257 x double]* @u_imag, i64 0, i64 %idxprom13, !dbg !577 + store double %call10, double* %arrayidx14, align 8, !dbg !578, !tbaa !249 + br label %for.inc, !dbg !579 + +for.inc: ; preds = %for.body6 + %inc = add nsw i32 %i.0, 1, !dbg !580 + call void @llvm.dbg.value(metadata i32 %inc, metadata !537, metadata !DIExpression()), !dbg !542 + br label %for.cond3, !dbg !581, !llvm.loop !582 + +for.end: ; preds = %for.cond3 + %add15 = add nsw i32 %ku.0, %ln.0, !dbg !584 + call void @llvm.dbg.value(metadata i32 %add15, metadata !536, metadata !DIExpression()), !dbg !542 + %mul16 = mul nsw i32 2, %ln.0, !dbg !585 + call void @llvm.dbg.value(metadata i32 %mul16, metadata !539, metadata !DIExpression()), !dbg !542 + br label %for.inc17, !dbg !586 + +for.inc17: ; preds = %for.end + %inc18 = add nsw i32 %j.0, 1, !dbg !587 + call void @llvm.dbg.value(metadata i32 %inc18, metadata !538, metadata !DIExpression()), !dbg !542 + br label %for.cond, !dbg !588, !llvm.loop !589 + +for.end19: ; preds = %for.cond + ret void, !dbg !591 +} + +; Function Attrs: nounwind uwtable +define internal void @fft(i32 %dir) #0 !dbg !592 { +entry: + call void @llvm.dbg.value(metadata i32 %dir, metadata !594, metadata !DIExpression()), !dbg !595 + %cmp = icmp eq i32 %dir, 1, !dbg !596 + br i1 %cmp, label %if.then, label %if.else, !dbg !598 + +if.then: ; preds = %entry + %0 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 0), align 4, !dbg !599, !tbaa !106 + %1 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 1), align 4, !dbg !601, !tbaa !106 + %2 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 2), align 4, !dbg !602, !tbaa !106 + call void @cffts1_pos(i32 1, i32 %0, i32 %1, i32 %2), !dbg !603 + %3 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 0), align 4, !dbg !604, !tbaa !106 + %4 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 1), align 4, !dbg !605, !tbaa !106 + %5 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 2), align 4, !dbg !606, !tbaa !106 + call void @cffts2_pos(i32 1, i32 %3, i32 %4, i32 %5), !dbg !607 + %6 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 0), align 4, !dbg !608, !tbaa !106 + %7 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 1), align 4, !dbg !609, !tbaa !106 + %8 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 2), align 4, !dbg !610, !tbaa !106 + call void @cffts3_pos(i32 1, i32 %6, i32 %7, i32 %8), !dbg !611 + br label %if.end, !dbg !612 + +if.else: ; preds = %entry + %9 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 0), align 4, !dbg !613, !tbaa !106 + %10 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 1), align 4, !dbg !615, !tbaa !106 + %11 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 2), align 4, !dbg !616, !tbaa !106 + call void @cffts3_neg(i32 -1, i32 %9, i32 %10, i32 %11), !dbg !617 + %12 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 0), align 4, !dbg !618, !tbaa !106 + %13 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 1), align 4, !dbg !619, !tbaa !106 + %14 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 2), align 4, !dbg !620, !tbaa !106 + call void @cffts2_neg(i32 -1, i32 %12, i32 %13, i32 %14), !dbg !621 + %15 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 0), align 4, !dbg !622, !tbaa !106 + %16 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 1), align 4, !dbg !623, !tbaa !106 + %17 = load i32, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 2), align 4, !dbg !624, !tbaa !106 + call void @cffts1_neg(i32 -1, i32 %15, i32 %16, i32 %17), !dbg !625 + br label %if.end + +if.end: ; preds = %if.else, %if.then + ret void, !dbg !626 +} + +declare dso_local void @timer_start(i32) #3 + +; Function Attrs: nounwind uwtable +define internal void @evolve(i32 %d1, i32 %d2, i32 %d3) #0 !dbg !627 { +entry: + call void @llvm.dbg.value(metadata i32 %d1, metadata !629, metadata !DIExpression()), !dbg !635 + call void @llvm.dbg.value(metadata i32 %d2, metadata !630, metadata !DIExpression()), !dbg !635 + call void @llvm.dbg.value(metadata i32 %d3, metadata !631, metadata !DIExpression()), !dbg !635 + call void @llvm.dbg.value(metadata i32 0, metadata !634, metadata !DIExpression()), !dbg !635 + br label %for.cond, !dbg !636 + +for.cond: ; preds = %for.inc98, %entry + %k.0 = phi i32 [ 0, %entry ], [ %inc99, %for.inc98 ], !dbg !639 + call void @llvm.dbg.value(metadata i32 %k.0, metadata !634, metadata !DIExpression()), !dbg !635 + %cmp = icmp slt i32 %k.0, %d3, !dbg !640 + br i1 %cmp, label %for.body, label %for.end100, !dbg !642 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 0, metadata !633, metadata !DIExpression()), !dbg !635 + br label %for.cond1, !dbg !643 + +for.cond1: ; preds = %for.inc95, %for.body + %j.0 = phi i32 [ 0, %for.body ], [ %inc96, %for.inc95 ], !dbg !646 + call void @llvm.dbg.value(metadata i32 %j.0, metadata !633, metadata !DIExpression()), !dbg !635 + %cmp2 = icmp slt i32 %j.0, %d2, !dbg !647 + br i1 %cmp2, label %for.body3, label %for.end97, !dbg !649 + +for.body3: ; preds = %for.cond1 + call void @llvm.dbg.value(metadata i32 0, metadata !632, metadata !DIExpression()), !dbg !635 + br label %for.cond4, !dbg !650 + +for.cond4: ; preds = %for.inc, %for.body3 + %i.0 = phi i32 [ 0, %for.body3 ], [ %inc, %for.inc ], !dbg !653 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !632, metadata !DIExpression()), !dbg !635 + %cmp5 = icmp slt i32 %i.0, %d1, !dbg !654 + br i1 %cmp5, label %for.body6, label %for.end, !dbg !656 + +for.body6: ; preds = %for.cond4 + %mul = mul nsw i32 %k.0, %d2, !dbg !657 + %add = add nsw i32 %d1, 1, !dbg !659 + %mul7 = mul nsw i32 %mul, %add, !dbg !660 + %add8 = add nsw i32 %d1, 1, !dbg !661 + %mul9 = mul nsw i32 %j.0, %add8, !dbg !662 + %add10 = add nsw i32 %mul7, %mul9, !dbg !663 + %add11 = add nsw i32 %add10, %i.0, !dbg !664 + %idxprom = sext i32 %add11 to i64, !dbg !665 + %arrayidx = getelementptr inbounds [8421376 x double], [8421376 x double]* @u0_real, i64 0, i64 %idxprom, !dbg !665 + %0 = load double, double* %arrayidx, align 8, !dbg !665, !tbaa !249 + %mul12 = mul nsw i32 %k.0, %d2, !dbg !666 + %add13 = add nsw i32 %d1, 1, !dbg !667 + %mul14 = mul nsw i32 %mul12, %add13, !dbg !668 + %add15 = add nsw i32 %d1, 1, !dbg !669 + %mul16 = mul nsw i32 %j.0, %add15, !dbg !670 + %add17 = add nsw i32 %mul14, %mul16, !dbg !671 + %add18 = add nsw i32 %add17, %i.0, !dbg !672 + %idxprom19 = sext i32 %add18 to i64, !dbg !673 + %arrayidx20 = getelementptr inbounds [8421376 x double], [8421376 x double]* @twiddle, i64 0, i64 %idxprom19, !dbg !673 + %1 = load double, double* %arrayidx20, align 8, !dbg !673, !tbaa !249 + %mul21 = fmul double %0, %1, !dbg !674 + %mul22 = mul nsw i32 %k.0, %d2, !dbg !675 + %add23 = add nsw i32 %d1, 1, !dbg !676 + %mul24 = mul nsw i32 %mul22, %add23, !dbg !677 + %add25 = add nsw i32 %d1, 1, !dbg !678 + %mul26 = mul nsw i32 %j.0, %add25, !dbg !679 + %add27 = add nsw i32 %mul24, %mul26, !dbg !680 + %add28 = add nsw i32 %add27, %i.0, !dbg !681 + %idxprom29 = sext i32 %add28 to i64, !dbg !682 + %arrayidx30 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u0_real, i64 0, i64 %idxprom29, !dbg !682 + store double %mul21, double* %arrayidx30, align 8, !dbg !683, !tbaa !249 + %mul31 = mul nsw i32 %k.0, %d2, !dbg !684 + %add32 = add nsw i32 %d1, 1, !dbg !685 + %mul33 = mul nsw i32 %mul31, %add32, !dbg !686 + %add34 = add nsw i32 %d1, 1, !dbg !687 + %mul35 = mul nsw i32 %j.0, %add34, !dbg !688 + %add36 = add nsw i32 %mul33, %mul35, !dbg !689 + %add37 = add nsw i32 %add36, %i.0, !dbg !690 + %idxprom38 = sext i32 %add37 to i64, !dbg !691 + %arrayidx39 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u0_imag, i64 0, i64 %idxprom38, !dbg !691 + %2 = load double, double* %arrayidx39, align 8, !dbg !691, !tbaa !249 + %mul40 = mul nsw i32 %k.0, %d2, !dbg !692 + %add41 = add nsw i32 %d1, 1, !dbg !693 + %mul42 = mul nsw i32 %mul40, %add41, !dbg !694 + %add43 = add nsw i32 %d1, 1, !dbg !695 + %mul44 = mul nsw i32 %j.0, %add43, !dbg !696 + %add45 = add nsw i32 %mul42, %mul44, !dbg !697 + %add46 = add nsw i32 %add45, %i.0, !dbg !698 + %idxprom47 = sext i32 %add46 to i64, !dbg !699 + %arrayidx48 = getelementptr inbounds [8421376 x double], [8421376 x double]* @twiddle, i64 0, i64 %idxprom47, !dbg !699 + %3 = load double, double* %arrayidx48, align 8, !dbg !699, !tbaa !249 + %mul49 = fmul double %2, %3, !dbg !700 + %mul50 = mul nsw i32 %k.0, %d2, !dbg !701 + %add51 = add nsw i32 %d1, 1, !dbg !702 + %mul52 = mul nsw i32 %mul50, %add51, !dbg !703 + %add53 = add nsw i32 %d1, 1, !dbg !704 + %mul54 = mul nsw i32 %j.0, %add53, !dbg !705 + %add55 = add nsw i32 %mul52, %mul54, !dbg !706 + %add56 = add nsw i32 %add55, %i.0, !dbg !707 + %idxprom57 = sext i32 %add56 to i64, !dbg !708 + %arrayidx58 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u0_imag, i64 0, i64 %idxprom57, !dbg !708 + store double %mul49, double* %arrayidx58, align 8, !dbg !709, !tbaa !249 + %mul59 = mul nsw i32 %k.0, %d2, !dbg !710 + %add60 = add nsw i32 %d1, 1, !dbg !711 + %mul61 = mul nsw i32 %mul59, %add60, !dbg !712 + %add62 = add nsw i32 %d1, 1, !dbg !713 + %mul63 = mul nsw i32 %j.0, %add62, !dbg !714 + %add64 = add nsw i32 %mul61, %mul63, !dbg !715 + %add65 = add nsw i32 %add64, %i.0, !dbg !716 + %idxprom66 = sext i32 %add65 to i64, !dbg !717 + %arrayidx67 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u0_real, i64 0, i64 %idxprom66, !dbg !717 + %4 = load double, double* %arrayidx67, align 8, !dbg !717, !tbaa !249 + %mul68 = mul nsw i32 %k.0, %d2, !dbg !718 + %add69 = add nsw i32 %d1, 1, !dbg !719 + %mul70 = mul nsw i32 %mul68, %add69, !dbg !720 + %add71 = add nsw i32 %d1, 1, !dbg !721 + %mul72 = mul nsw i32 %j.0, %add71, !dbg !722 + %add73 = add nsw i32 %mul70, %mul72, !dbg !723 + %add74 = add nsw i32 %add73, %i.0, !dbg !724 + %idxprom75 = sext i32 %add74 to i64, !dbg !725 + %arrayidx76 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_real, i64 0, i64 %idxprom75, !dbg !725 + store double %4, double* %arrayidx76, align 8, !dbg !726, !tbaa !249 + %mul77 = mul nsw i32 %k.0, %d2, !dbg !727 + %add78 = add nsw i32 %d1, 1, !dbg !728 + %mul79 = mul nsw i32 %mul77, %add78, !dbg !729 + %add80 = add nsw i32 %d1, 1, !dbg !730 + %mul81 = mul nsw i32 %j.0, %add80, !dbg !731 + %add82 = add nsw i32 %mul79, %mul81, !dbg !732 + %add83 = add nsw i32 %add82, %i.0, !dbg !733 + %idxprom84 = sext i32 %add83 to i64, !dbg !734 + %arrayidx85 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u0_imag, i64 0, i64 %idxprom84, !dbg !734 + %5 = load double, double* %arrayidx85, align 8, !dbg !734, !tbaa !249 + %mul86 = mul nsw i32 %k.0, %d2, !dbg !735 + %add87 = add nsw i32 %d1, 1, !dbg !736 + %mul88 = mul nsw i32 %mul86, %add87, !dbg !737 + %add89 = add nsw i32 %d1, 1, !dbg !738 + %mul90 = mul nsw i32 %j.0, %add89, !dbg !739 + %add91 = add nsw i32 %mul88, %mul90, !dbg !740 + %add92 = add nsw i32 %add91, %i.0, !dbg !741 + %idxprom93 = sext i32 %add92 to i64, !dbg !742 + %arrayidx94 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_imag, i64 0, i64 %idxprom93, !dbg !742 + store double %5, double* %arrayidx94, align 8, !dbg !743, !tbaa !249 + br label %for.inc, !dbg !744 + +for.inc: ; preds = %for.body6 + %inc = add nsw i32 %i.0, 1, !dbg !745 + call void @llvm.dbg.value(metadata i32 %inc, metadata !632, metadata !DIExpression()), !dbg !635 + br label %for.cond4, !dbg !746, !llvm.loop !747 + +for.end: ; preds = %for.cond4 + br label %for.inc95, !dbg !749 + +for.inc95: ; preds = %for.end + %inc96 = add nsw i32 %j.0, 1, !dbg !750 + call void @llvm.dbg.value(metadata i32 %inc96, metadata !633, metadata !DIExpression()), !dbg !635 + br label %for.cond1, !dbg !751, !llvm.loop !752 + +for.end97: ; preds = %for.cond1 + br label %for.inc98, !dbg !754 + +for.inc98: ; preds = %for.end97 + %inc99 = add nsw i32 %k.0, 1, !dbg !755 + call void @llvm.dbg.value(metadata i32 %inc99, metadata !634, metadata !DIExpression()), !dbg !635 + br label %for.cond, !dbg !756, !llvm.loop !757 + +for.end100: ; preds = %for.cond + ret void, !dbg !759 +} + +; Function Attrs: nounwind uwtable +define internal void @checksum(i32 %i, i32 %d1, i32 %d2, i32 %d3) #0 !dbg !760 { +entry: + call void @llvm.dbg.value(metadata i32 %i, metadata !764, metadata !DIExpression()), !dbg !775 + call void @llvm.dbg.value(metadata i32 %d1, metadata !765, metadata !DIExpression()), !dbg !775 + call void @llvm.dbg.value(metadata i32 %d2, metadata !766, metadata !DIExpression()), !dbg !775 + call void @llvm.dbg.value(metadata i32 %d3, metadata !767, metadata !DIExpression()), !dbg !775 + call void @llvm.dbg.value(metadata double 0.000000e+00, metadata !774, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64)), !dbg !775 + call void @llvm.dbg.value(metadata double 0.000000e+00, metadata !774, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg !775 + call void @llvm.dbg.value(metadata double 0.000000e+00, metadata !772, metadata !DIExpression()), !dbg !775 + call void @llvm.dbg.value(metadata double 0.000000e+00, metadata !773, metadata !DIExpression()), !dbg !775 + call void @llvm.dbg.value(metadata i32 1, metadata !768, metadata !DIExpression()), !dbg !775 + br label %for.cond, !dbg !776 + +for.cond: ; preds = %for.inc, %entry + %temp2.0 = phi double [ 0.000000e+00, %entry ], [ %add20, %for.inc ], !dbg !775 + %temp1.0 = phi double [ 0.000000e+00, %entry ], [ %add10, %for.inc ], !dbg !775 + %j.0 = phi i32 [ 1, %entry ], [ %inc, %for.inc ], !dbg !779 + call void @llvm.dbg.value(metadata i32 %j.0, metadata !768, metadata !DIExpression()), !dbg !775 + call void @llvm.dbg.value(metadata double %temp1.0, metadata !772, metadata !DIExpression()), !dbg !775 + call void @llvm.dbg.value(metadata double %temp2.0, metadata !773, metadata !DIExpression()), !dbg !775 + %cmp = icmp sle i32 %j.0, 1024, !dbg !780 + br i1 %cmp, label %for.body, label %for.end, !dbg !782 + +for.body: ; preds = %for.cond + %rem = srem i32 %j.0, 256, !dbg !783 + call void @llvm.dbg.value(metadata i32 %rem, metadata !769, metadata !DIExpression()), !dbg !775 + %mul = mul nsw i32 3, %j.0, !dbg !785 + %rem1 = srem i32 %mul, 256, !dbg !786 + call void @llvm.dbg.value(metadata i32 %rem1, metadata !770, metadata !DIExpression()), !dbg !775 + %mul2 = mul nsw i32 5, %j.0, !dbg !787 + %rem3 = srem i32 %mul2, 128, !dbg !788 + call void @llvm.dbg.value(metadata i32 %rem3, metadata !771, metadata !DIExpression()), !dbg !775 + %mul4 = mul nsw i32 %rem3, %d2, !dbg !789 + %add = add nsw i32 %d1, 1, !dbg !790 + %mul5 = mul nsw i32 %mul4, %add, !dbg !791 + %add6 = add nsw i32 %d1, 1, !dbg !792 + %mul7 = mul nsw i32 %rem1, %add6, !dbg !793 + %add8 = add nsw i32 %mul5, %mul7, !dbg !794 + %add9 = add nsw i32 %add8, %rem, !dbg !795 + %idxprom = sext i32 %add9 to i64, !dbg !796 + %arrayidx = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_real, i64 0, i64 %idxprom, !dbg !796 + %0 = load double, double* %arrayidx, align 8, !dbg !796, !tbaa !249 + %add10 = fadd double %temp1.0, %0, !dbg !797 + call void @llvm.dbg.value(metadata double %add10, metadata !772, metadata !DIExpression()), !dbg !775 + %mul11 = mul nsw i32 %rem3, %d2, !dbg !798 + %add12 = add nsw i32 %d1, 1, !dbg !799 + %mul13 = mul nsw i32 %mul11, %add12, !dbg !800 + %add14 = add nsw i32 %d1, 1, !dbg !801 + %mul15 = mul nsw i32 %rem1, %add14, !dbg !802 + %add16 = add nsw i32 %mul13, %mul15, !dbg !803 + %add17 = add nsw i32 %add16, %rem, !dbg !804 + %idxprom18 = sext i32 %add17 to i64, !dbg !805 + %arrayidx19 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_imag, i64 0, i64 %idxprom18, !dbg !805 + %1 = load double, double* %arrayidx19, align 8, !dbg !805, !tbaa !249 + %add20 = fadd double %temp2.0, %1, !dbg !806 + call void @llvm.dbg.value(metadata double %add20, metadata !773, metadata !DIExpression()), !dbg !775 + br label %for.inc, !dbg !807 + +for.inc: ; preds = %for.body + %inc = add nsw i32 %j.0, 1, !dbg !808 + call void @llvm.dbg.value(metadata i32 %inc, metadata !768, metadata !DIExpression()), !dbg !775 + br label %for.cond, !dbg !809, !llvm.loop !810 + +for.end: ; preds = %for.cond + call void @llvm.dbg.value(metadata double %temp1.0, metadata !774, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64)), !dbg !775 + call void @llvm.dbg.value(metadata double %temp2.0, metadata !774, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg !775 + %div = fdiv double %temp1.0, 0x4160000000000000, !dbg !812 + %div27 = fdiv double %temp2.0, 0x4160000000000000, !dbg !812 + call void @llvm.dbg.value(metadata double %div, metadata !774, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64)), !dbg !775 + call void @llvm.dbg.value(metadata double %div27, metadata !774, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg !775 + %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.23, i64 0, i64 0), i32 %i, double %div, double %div27), !dbg !813 + %idxprom30 = sext i32 %i to i64, !dbg !814 + %arrayidx31 = getelementptr inbounds [7 x %struct.dcomplex], [7 x %struct.dcomplex]* @sums, i64 0, i64 %idxprom30, !dbg !814 + %chk.sroa.0.0..sroa_idx = getelementptr inbounds %struct.dcomplex, %struct.dcomplex* %arrayidx31, i64 0, i32 0, !dbg !815 + store double %div, double* %chk.sroa.0.0..sroa_idx, align 16, !dbg !815 + %chk.sroa.8.0..sroa_idx4 = getelementptr inbounds %struct.dcomplex, %struct.dcomplex* %arrayidx31, i64 0, i32 1, !dbg !815 + store double %div27, double* %chk.sroa.8.0..sroa_idx4, align 8, !dbg !815 + ret void, !dbg !816 +} + +; Function Attrs: nounwind uwtable +define internal void @verify(i32 %d1, i32 %d2, i32 %d3, i32 %nt, i32* %verified, i8* %Class) #0 !dbg !817 { +entry: + %csum_ref = alloca [26 x %struct.dcomplex], align 16 + call void @llvm.dbg.value(metadata i32 %d1, metadata !822, metadata !DIExpression()), !dbg !835 + call void @llvm.dbg.value(metadata i32 %d2, metadata !823, metadata !DIExpression()), !dbg !835 + call void @llvm.dbg.value(metadata i32 %d3, metadata !824, metadata !DIExpression()), !dbg !835 + call void @llvm.dbg.value(metadata i32 %nt, metadata !825, metadata !DIExpression()), !dbg !835 + call void @llvm.dbg.value(metadata i32* %verified, metadata !826, metadata !DIExpression()), !dbg !835 + call void @llvm.dbg.value(metadata i8* %Class, metadata !827, metadata !DIExpression()), !dbg !835 + %0 = bitcast [26 x %struct.dcomplex]* %csum_ref to i8*, !dbg !836 + call void @llvm.lifetime.start.p0i8(i64 416, i8* %0) #6, !dbg !836 + call void @llvm.dbg.declare(metadata [26 x %struct.dcomplex]* %csum_ref, metadata !831, metadata !DIExpression()), !dbg !837 + store i8 85, i8* %Class, align 1, !dbg !838, !tbaa !140 + call void @llvm.dbg.value(metadata double 0x3D719799812DEA11, metadata !830, metadata !DIExpression()), !dbg !835 + store i32 0, i32* %verified, align 4, !dbg !839, !tbaa !140 + %cmp = icmp eq i32 %d1, 64, !dbg !840 + br i1 %cmp, label %land.lhs.true, label %if.else, !dbg !842 + +land.lhs.true: ; preds = %entry + %cmp1 = icmp eq i32 %d2, 64, !dbg !843 + br i1 %cmp1, label %land.lhs.true2, label %if.else, !dbg !844 + +land.lhs.true2: ; preds = %land.lhs.true + %cmp3 = icmp eq i32 %d3, 64, !dbg !845 + br i1 %cmp3, label %land.lhs.true4, label %if.else, !dbg !846 + +land.lhs.true4: ; preds = %land.lhs.true2 + %cmp5 = icmp eq i32 %nt, 6, !dbg !847 + br i1 %cmp5, label %if.then, label %if.else, !dbg !848 + +if.then: ; preds = %land.lhs.true4 + store i8 83, i8* %Class, align 1, !dbg !849, !tbaa !140 + %.compoundliteral.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 1, i32 0, !dbg !851 + store double 0x408154DE9E5DA8C7, double* %.compoundliteral.sroa.0.0..sroa_idx, align 16, !dbg !851 + %.compoundliteral.sroa.2.0..sroa_idx108 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 1, i32 1, !dbg !851 + store double 0x407E4894D21E84F6, double* %.compoundliteral.sroa.2.0..sroa_idx108, align 8, !dbg !851 + %.compoundliteral7.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 2, i32 0, !dbg !852 + store double 0x4081551BBB575EAB, double* %.compoundliteral7.sroa.0.0..sroa_idx, align 16, !dbg !852 + %.compoundliteral7.sroa.2.0..sroa_idx107 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 2, i32 1, !dbg !852 + store double 0x407E687CA0F87E44, double* %.compoundliteral7.sroa.2.0..sroa_idx107, align 8, !dbg !852 + %.compoundliteral11.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 3, i32 0, !dbg !853 + store double 0x408154EB318EB593, double* %.compoundliteral11.sroa.0.0..sroa_idx, align 16, !dbg !853 + %.compoundliteral11.sroa.2.0..sroa_idx106 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 3, i32 1, !dbg !853 + store double 0x407E8641D4F55AF9, double* %.compoundliteral11.sroa.2.0..sroa_idx106, align 8, !dbg !853 + %.compoundliteral15.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 4, i32 0, !dbg !854 + store double 0x40815456C13A7B04, double* %.compoundliteral15.sroa.0.0..sroa_idx, align 16, !dbg !854 + %.compoundliteral15.sroa.2.0..sroa_idx105 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 4, i32 1, !dbg !854 + store double 0x407EA2097D7357C2, double* %.compoundliteral15.sroa.2.0..sroa_idx105, align 8, !dbg !854 + %.compoundliteral19.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 5, i32 0, !dbg !855 + store double 0x408153676E9F169C, double* %.compoundliteral19.sroa.0.0..sroa_idx, align 16, !dbg !855 + %.compoundliteral19.sroa.2.0..sroa_idx104 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 5, i32 1, !dbg !855 + store double 0x407EBBF61C86EF29, double* %.compoundliteral19.sroa.2.0..sroa_idx104, align 8, !dbg !855 + %.compoundliteral23.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 6, i32 0, !dbg !856 + store double 0x408152259010E0A1, double* %.compoundliteral23.sroa.0.0..sroa_idx, align 16, !dbg !856 + %.compoundliteral23.sroa.2.0..sroa_idx103 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 6, i32 1, !dbg !856 + store double 0x407ED427D4DF0213, double* %.compoundliteral23.sroa.2.0..sroa_idx103, align 8, !dbg !856 + br label %if.end492, !dbg !857 + +if.else: ; preds = %land.lhs.true4, %land.lhs.true2, %land.lhs.true, %entry + %cmp26 = icmp eq i32 %d1, 128, !dbg !858 + br i1 %cmp26, label %land.lhs.true27, label %if.else58, !dbg !860 + +land.lhs.true27: ; preds = %if.else + %cmp28 = icmp eq i32 %d2, 128, !dbg !861 + br i1 %cmp28, label %land.lhs.true29, label %if.else58, !dbg !862 + +land.lhs.true29: ; preds = %land.lhs.true27 + %cmp30 = icmp eq i32 %d3, 32, !dbg !863 + br i1 %cmp30, label %land.lhs.true31, label %if.else58, !dbg !864 + +land.lhs.true31: ; preds = %land.lhs.true29 + %cmp32 = icmp eq i32 %nt, 6, !dbg !865 + br i1 %cmp32, label %if.then33, label %if.else58, !dbg !866 + +if.then33: ; preds = %land.lhs.true31 + store i8 87, i8* %Class, align 1, !dbg !867, !tbaa !140 + %.compoundliteral35.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 1, i32 0, !dbg !869 + store double 0x4081BAE3C635196D, double* %.compoundliteral35.sroa.0.0..sroa_idx, align 16, !dbg !869 + %.compoundliteral35.sroa.2.0..sroa_idx102 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 1, i32 1, !dbg !869 + store double 0x40808A98F467F156, double* %.compoundliteral35.sroa.2.0..sroa_idx102, align 8, !dbg !869 + %.compoundliteral39.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 2, i32 0, !dbg !870 + store double 0x40819926462BA5A4, double* %.compoundliteral39.sroa.0.0..sroa_idx, align 16, !dbg !870 + %.compoundliteral39.sroa.2.0..sroa_idx101 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 2, i32 1, !dbg !870 + store double 0x408081B851380EB7, double* %.compoundliteral39.sroa.2.0..sroa_idx101, align 8, !dbg !870 + %.compoundliteral43.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 3, i32 0, !dbg !871 + store double 0x40817B3822354DD9, double* %.compoundliteral43.sroa.0.0..sroa_idx, align 16, !dbg !871 + %.compoundliteral43.sroa.2.0..sroa_idx100 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 3, i32 1, !dbg !871 + store double 0x408078CC18578DFC, double* %.compoundliteral43.sroa.2.0..sroa_idx100, align 8, !dbg !871 + %.compoundliteral47.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 4, i32 0, !dbg !872 + store double 0x4081608EF5C48194, double* %.compoundliteral47.sroa.0.0..sroa_idx, align 16, !dbg !872 + %.compoundliteral47.sroa.2.0..sroa_idx99 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 4, i32 1, !dbg !872 + store double 0x40807005B7059038, double* %.compoundliteral47.sroa.2.0..sroa_idx99, align 8, !dbg !872 + %.compoundliteral51.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 5, i32 0, !dbg !873 + store double 0x408148B81D084E83, double* %.compoundliteral51.sroa.0.0..sroa_idx, align 16, !dbg !873 + %.compoundliteral51.sroa.2.0..sroa_idx98 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 5, i32 1, !dbg !873 + store double 0x408067854B0E36C9, double* %.compoundliteral51.sroa.2.0..sroa_idx98, align 8, !dbg !873 + %.compoundliteral55.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 6, i32 0, !dbg !874 + store double 0x40813353E9E3E09A, double* %.compoundliteral55.sroa.0.0..sroa_idx, align 16, !dbg !874 + %.compoundliteral55.sroa.2.0..sroa_idx97 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 6, i32 1, !dbg !874 + store double 0x40805F5EAB0F5DA2, double* %.compoundliteral55.sroa.2.0..sroa_idx97, align 8, !dbg !874 + br label %if.end491, !dbg !875 + +if.else58: ; preds = %land.lhs.true31, %land.lhs.true29, %land.lhs.true27, %if.else + %cmp59 = icmp eq i32 %d1, 256, !dbg !876 + br i1 %cmp59, label %land.lhs.true60, label %if.else91, !dbg !878 + +land.lhs.true60: ; preds = %if.else58 + %cmp61 = icmp eq i32 %d2, 256, !dbg !879 + br i1 %cmp61, label %land.lhs.true62, label %if.else91, !dbg !880 + +land.lhs.true62: ; preds = %land.lhs.true60 + %cmp63 = icmp eq i32 %d3, 128, !dbg !881 + br i1 %cmp63, label %land.lhs.true64, label %if.else91, !dbg !882 + +land.lhs.true64: ; preds = %land.lhs.true62 + %cmp65 = icmp eq i32 %nt, 6, !dbg !883 + br i1 %cmp65, label %if.then66, label %if.else91, !dbg !884 + +if.then66: ; preds = %land.lhs.true64 + store i8 65, i8* %Class, align 1, !dbg !885, !tbaa !140 + %.compoundliteral68.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 1, i32 0, !dbg !887 + store double 0x407F8AC6A8CB8B90, double* %.compoundliteral68.sroa.0.0..sroa_idx, align 16, !dbg !887 + %.compoundliteral68.sroa.2.0..sroa_idx96 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 1, i32 1, !dbg !887 + store double 0x407FF67A05A82466, double* %.compoundliteral68.sroa.2.0..sroa_idx96, align 8, !dbg !887 + %.compoundliteral72.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 2, i32 0, !dbg !888 + store double 0x407F9F0F4941FB3E, double* %.compoundliteral72.sroa.0.0..sroa_idx, align 16, !dbg !888 + %.compoundliteral72.sroa.2.0..sroa_idx95 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 2, i32 1, !dbg !888 + store double 0x407FDE18707A9D72, double* %.compoundliteral72.sroa.2.0..sroa_idx95, align 8, !dbg !888 + %.compoundliteral76.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 3, i32 0, !dbg !889 + store double 0x407FAF00C6D7110A, double* %.compoundliteral76.sroa.0.0..sroa_idx, align 16, !dbg !889 + %.compoundliteral76.sroa.2.0..sroa_idx94 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 3, i32 1, !dbg !889 + store double 0x407FDD07CCB88353, double* %.compoundliteral76.sroa.2.0..sroa_idx94, align 8, !dbg !889 + %.compoundliteral80.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 4, i32 0, !dbg !890 + store double 0x407FBCA0EB3ECBEF, double* %.compoundliteral80.sroa.0.0..sroa_idx, align 16, !dbg !890 + %.compoundliteral80.sroa.2.0..sroa_idx93 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 4, i32 1, !dbg !890 + store double 0x407FE2234776F4EF, double* %.compoundliteral80.sroa.2.0..sroa_idx93, align 8, !dbg !890 + %.compoundliteral84.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 5, i32 0, !dbg !891 + store double 0x407FC85F79D2C1E9, double* %.compoundliteral84.sroa.0.0..sroa_idx, align 16, !dbg !891 + %.compoundliteral84.sroa.2.0..sroa_idx92 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 5, i32 1, !dbg !891 + store double 0x407FE7DD0AF2CEF4, double* %.compoundliteral84.sroa.2.0..sroa_idx92, align 8, !dbg !891 + %.compoundliteral88.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 6, i32 0, !dbg !892 + store double 0x407FD2611DBB8FA9, double* %.compoundliteral88.sroa.0.0..sroa_idx, align 16, !dbg !892 + %.compoundliteral88.sroa.2.0..sroa_idx91 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 6, i32 1, !dbg !892 + store double 0x407FECAB25FE5602, double* %.compoundliteral88.sroa.2.0..sroa_idx91, align 8, !dbg !892 + br label %if.end490, !dbg !893 + +if.else91: ; preds = %land.lhs.true64, %land.lhs.true62, %land.lhs.true60, %if.else58 + %cmp92 = icmp eq i32 %d1, 512, !dbg !894 + br i1 %cmp92, label %land.lhs.true93, label %if.else180, !dbg !896 + +land.lhs.true93: ; preds = %if.else91 + %cmp94 = icmp eq i32 %d2, 256, !dbg !897 + br i1 %cmp94, label %land.lhs.true95, label %if.else180, !dbg !898 + +land.lhs.true95: ; preds = %land.lhs.true93 + %cmp96 = icmp eq i32 %d3, 256, !dbg !899 + br i1 %cmp96, label %land.lhs.true97, label %if.else180, !dbg !900 + +land.lhs.true97: ; preds = %land.lhs.true95 + %cmp98 = icmp eq i32 %nt, 20, !dbg !901 + br i1 %cmp98, label %if.then99, label %if.else180, !dbg !902 + +if.then99: ; preds = %land.lhs.true97 + store i8 66, i8* %Class, align 1, !dbg !903, !tbaa !140 + %.compoundliteral101.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 1, i32 0, !dbg !905 + store double 0x40802E1D67491D27, double* %.compoundliteral101.sroa.0.0..sroa_idx, align 16, !dbg !905 + %.compoundliteral101.sroa.2.0..sroa_idx90 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 1, i32 1, !dbg !905 + store double 0x407FBC7C4BF0AFB0, double* %.compoundliteral101.sroa.2.0..sroa_idx90, align 8, !dbg !905 + %.compoundliteral105.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 2, i32 0, !dbg !906 + store double 0x40801B9DF5E01838, double* %.compoundliteral105.sroa.0.0..sroa_idx, align 16, !dbg !906 + %.compoundliteral105.sroa.2.0..sroa_idx89 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 2, i32 1, !dbg !906 + store double 0x407FCD32F7994D45, double* %.compoundliteral105.sroa.2.0..sroa_idx89, align 8, !dbg !906 + %.compoundliteral109.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 3, i32 0, !dbg !907 + store double 0x408015209C2AC008, double* %.compoundliteral109.sroa.0.0..sroa_idx, align 16, !dbg !907 + %.compoundliteral109.sroa.2.0..sroa_idx88 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 3, i32 1, !dbg !907 + store double 0x407FD9EF2BAE169A, double* %.compoundliteral109.sroa.2.0..sroa_idx88, align 8, !dbg !907 + %.compoundliteral113.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 4, i32 0, !dbg !908 + store double 0x408011E72B556FFE, double* %.compoundliteral113.sroa.0.0..sroa_idx, align 16, !dbg !908 + %.compoundliteral113.sroa.2.0..sroa_idx87 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 4, i32 1, !dbg !908 + store double 0x407FE1A32DF83794, double* %.compoundliteral113.sroa.2.0..sroa_idx87, align 8, !dbg !908 + %.compoundliteral117.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 5, i32 0, !dbg !909 + store double 0x40800FB38AA32FE6, double* %.compoundliteral117.sroa.0.0..sroa_idx, align 16, !dbg !909 + %.compoundliteral117.sroa.2.0..sroa_idx86 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 5, i32 1, !dbg !909 + store double 0x407FE65CD1D86E4E, double* %.compoundliteral117.sroa.2.0..sroa_idx86, align 8, !dbg !909 + %.compoundliteral121.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 6, i32 0, !dbg !910 + store double 0x40800DF0531A9C48, double* %.compoundliteral121.sroa.0.0..sroa_idx, align 16, !dbg !910 + %.compoundliteral121.sroa.2.0..sroa_idx85 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 6, i32 1, !dbg !910 + store double 0x407FE9844F14C8E1, double* %.compoundliteral121.sroa.2.0..sroa_idx85, align 8, !dbg !910 + %.compoundliteral125.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 7, i32 0, !dbg !911 + store double 0x40800C700989200D, double* %.compoundliteral125.sroa.0.0..sroa_idx, align 16, !dbg !911 + %.compoundliteral125.sroa.2.0..sroa_idx84 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 7, i32 1, !dbg !911 + store double 0x407FEBD8BF0DD370, double* %.compoundliteral125.sroa.2.0..sroa_idx84, align 8, !dbg !911 + %.compoundliteral129.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 8, i32 0, !dbg !912 + store double 0x40800B20F5210ADA, double* %.compoundliteral129.sroa.0.0..sroa_idx, align 16, !dbg !912 + %.compoundliteral129.sroa.2.0..sroa_idx83 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 8, i32 1, !dbg !912 + store double 0x407FEDB8F6EE292B, double* %.compoundliteral129.sroa.2.0..sroa_idx83, align 8, !dbg !912 + %.compoundliteral133.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 9, i32 0, !dbg !913 + store double 0x408009FA001E667B, double* %.compoundliteral133.sroa.0.0..sroa_idx, align 16, !dbg !913 + %.compoundliteral133.sroa.2.0..sroa_idx82 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 9, i32 1, !dbg !913 + store double 0x407FEF52DA70C18D, double* %.compoundliteral133.sroa.2.0..sroa_idx82, align 8, !dbg !913 + %.compoundliteral137.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 10, i32 0, !dbg !914 + store double 0x408008F54B8BB893, double* %.compoundliteral137.sroa.0.0..sroa_idx, align 16, !dbg !914 + %.compoundliteral137.sroa.2.0..sroa_idx81 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 10, i32 1, !dbg !914 + store double 0x407FF0BC8A6C6119, double* %.compoundliteral137.sroa.2.0..sroa_idx81, align 8, !dbg !914 + %.compoundliteral141.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 11, i32 0, !dbg !915 + store double 0x4080080E66C1709C, double* %.compoundliteral141.sroa.0.0..sroa_idx, align 16, !dbg !915 + %.compoundliteral141.sroa.2.0..sroa_idx80 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 11, i32 1, !dbg !915 + store double 0x407FF200FF33D23F, double* %.compoundliteral141.sroa.2.0..sroa_idx80, align 8, !dbg !915 + %.compoundliteral145.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 12, i32 0, !dbg !916 + store double 0x40800741A55F37AD, double* %.compoundliteral145.sroa.0.0..sroa_idx, align 16, !dbg !916 + %.compoundliteral145.sroa.2.0..sroa_idx79 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 12, i32 1, !dbg !916 + store double 0x407FF3261FE7F7AD, double* %.compoundliteral145.sroa.2.0..sroa_idx79, align 8, !dbg !916 + %.compoundliteral149.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 13, i32 0, !dbg !917 + store double 0x4080068BDAC33674, double* %.compoundliteral149.sroa.0.0..sroa_idx, align 16, !dbg !917 + %.compoundliteral149.sroa.2.0..sroa_idx78 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 13, i32 1, !dbg !917 + store double 0x407FF42F9BEB8DC0, double* %.compoundliteral149.sroa.2.0..sroa_idx78, align 8, !dbg !917 + %.compoundliteral153.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 14, i32 0, !dbg !918 + store double 0x408005EA3C919C43, double* %.compoundliteral153.sroa.0.0..sroa_idx, align 16, !dbg !918 + %.compoundliteral153.sroa.2.0..sroa_idx77 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 14, i32 1, !dbg !918 + store double 0x407FF5203263B154, double* %.compoundliteral153.sroa.2.0..sroa_idx77, align 8, !dbg !918 + %.compoundliteral157.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 15, i32 0, !dbg !919 + store double 0x4080055A545A3920, double* %.compoundliteral157.sroa.0.0..sroa_idx, align 16, !dbg !919 + %.compoundliteral157.sroa.2.0..sroa_idx76 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 15, i32 1, !dbg !919 + store double 0x407FF5FA3C741F6E, double* %.compoundliteral157.sroa.2.0..sroa_idx76, align 8, !dbg !919 + %.compoundliteral161.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 16, i32 0, !dbg !920 + store double 0x408004D9F6B6B8E1, double* %.compoundliteral161.sroa.0.0..sroa_idx, align 16, !dbg !920 + %.compoundliteral161.sroa.2.0..sroa_idx75 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 16, i32 1, !dbg !920 + store double 0x407FF6BFE1A61501, double* %.compoundliteral161.sroa.2.0..sroa_idx75, align 8, !dbg !920 + %.compoundliteral165.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 17, i32 0, !dbg !921 + store double 0x408004673C213244, double* %.compoundliteral165.sroa.0.0..sroa_idx, align 16, !dbg !921 + %.compoundliteral165.sroa.2.0..sroa_idx74 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 17, i32 1, !dbg !921 + store double 0x407FF77327A3F7B0, double* %.compoundliteral165.sroa.2.0..sroa_idx74, align 8, !dbg !921 + %.compoundliteral169.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 18, i32 0, !dbg !922 + store double 0x408004007A3FD0EA, double* %.compoundliteral169.sroa.0.0..sroa_idx, align 16, !dbg !922 + %.compoundliteral169.sroa.2.0..sroa_idx73 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 18, i32 1, !dbg !922 + store double 0x407FF815F3F1C1DE, double* %.compoundliteral169.sroa.2.0..sroa_idx73, align 8, !dbg !922 + %.compoundliteral173.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 19, i32 0, !dbg !923 + store double 0x408003A43D5F793B, double* %.compoundliteral173.sroa.0.0..sroa_idx, align 16, !dbg !923 + %.compoundliteral173.sroa.2.0..sroa_idx72 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 19, i32 1, !dbg !923 + store double 0x407FF8AA099402A0, double* %.compoundliteral173.sroa.2.0..sroa_idx72, align 8, !dbg !923 + %.compoundliteral177.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 20, i32 0, !dbg !924 + store double 0x40800351422D2EDF, double* %.compoundliteral177.sroa.0.0..sroa_idx, align 16, !dbg !924 + %.compoundliteral177.sroa.2.0..sroa_idx71 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 20, i32 1, !dbg !924 + store double 0x407FF93106A352EE, double* %.compoundliteral177.sroa.2.0..sroa_idx71, align 8, !dbg !924 + br label %if.end489, !dbg !925 + +if.else180: ; preds = %land.lhs.true97, %land.lhs.true95, %land.lhs.true93, %if.else91 + %cmp181 = icmp eq i32 %d1, 512, !dbg !926 + br i1 %cmp181, label %land.lhs.true182, label %if.else269, !dbg !928 + +land.lhs.true182: ; preds = %if.else180 + %cmp183 = icmp eq i32 %d2, 512, !dbg !929 + br i1 %cmp183, label %land.lhs.true184, label %if.else269, !dbg !930 + +land.lhs.true184: ; preds = %land.lhs.true182 + %cmp185 = icmp eq i32 %d3, 512, !dbg !931 + br i1 %cmp185, label %land.lhs.true186, label %if.else269, !dbg !932 + +land.lhs.true186: ; preds = %land.lhs.true184 + %cmp187 = icmp eq i32 %nt, 20, !dbg !933 + br i1 %cmp187, label %if.then188, label %if.else269, !dbg !934 + +if.then188: ; preds = %land.lhs.true186 + store i8 67, i8* %Class, align 1, !dbg !935, !tbaa !140 + %.compoundliteral190.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 1, i32 0, !dbg !937 + store double 0x40803C101E899B03, double* %.compoundliteral190.sroa.0.0..sroa_idx, align 16, !dbg !937 + %.compoundliteral190.sroa.2.0..sroa_idx70 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 1, i32 1, !dbg !937 + store double 0x408017373C01E593, double* %.compoundliteral190.sroa.2.0..sroa_idx70, align 8, !dbg !937 + %.compoundliteral194.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 2, i32 0, !dbg !938 + store double 0x40801C5675ED0B14, double* %.compoundliteral194.sroa.0.0..sroa_idx, align 16, !dbg !938 + %.compoundliteral194.sroa.2.0..sroa_idx69 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 2, i32 1, !dbg !938 + store double 0x4080061004096FAD, double* %.compoundliteral194.sroa.2.0..sroa_idx69, align 8, !dbg !938 + %.compoundliteral198.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 3, i32 0, !dbg !939 + store double 0x408013BE0F176AC3, double* %.compoundliteral198.sroa.0.0..sroa_idx, align 16, !dbg !939 + %.compoundliteral198.sroa.2.0..sroa_idx68 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 3, i32 1, !dbg !939 + store double 0x408001CD2DA9B691, double* %.compoundliteral198.sroa.2.0..sroa_idx68, align 8, !dbg !939 + %.compoundliteral202.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 4, i32 0, !dbg !940 + store double 0x4080101ED77ADAFA, double* %.compoundliteral202.sroa.0.0..sroa_idx, align 16, !dbg !940 + %.compoundliteral202.sroa.2.0..sroa_idx67 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 4, i32 1, !dbg !940 + store double 0x408000DF4A8B7C66, double* %.compoundliteral202.sroa.2.0..sroa_idx67, align 8, !dbg !940 + %.compoundliteral206.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 5, i32 0, !dbg !941 + store double 0x40800E0A53D12FD5, double* %.compoundliteral206.sroa.0.0..sroa_idx, align 16, !dbg !941 + %.compoundliteral206.sroa.2.0..sroa_idx66 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 5, i32 1, !dbg !941 + store double 0x408000EA3A1348C8, double* %.compoundliteral206.sroa.2.0..sroa_idx66, align 8, !dbg !941 + %.compoundliteral210.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 6, i32 0, !dbg !942 + store double 0x40800CA61ABB2192, double* %.compoundliteral210.sroa.0.0..sroa_idx, align 16, !dbg !942 + %.compoundliteral210.sroa.2.0..sroa_idx65 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 6, i32 1, !dbg !942 + store double 0x408001328991F77F, double* %.compoundliteral210.sroa.2.0..sroa_idx65, align 8, !dbg !942 + %.compoundliteral214.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 7, i32 0, !dbg !943 + store double 0x40800BA7CD2DCE4D, double* %.compoundliteral214.sroa.0.0..sroa_idx, align 16, !dbg !943 + %.compoundliteral214.sroa.2.0..sroa_idx64 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 7, i32 1, !dbg !943 + store double 0x4080017F2A30930B, double* %.compoundliteral214.sroa.2.0..sroa_idx64, align 8, !dbg !943 + %.compoundliteral218.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 8, i32 0, !dbg !944 + store double 0x40800AEBECB397D4, double* %.compoundliteral218.sroa.0.0..sroa_idx, align 16, !dbg !944 + %.compoundliteral218.sroa.2.0..sroa_idx63 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 8, i32 1, !dbg !944 + store double 0x408001C12D7B83F2, double* %.compoundliteral218.sroa.2.0..sroa_idx63, align 8, !dbg !944 + %.compoundliteral222.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 9, i32 0, !dbg !945 + store double 0x40800A5D393668AE, double* %.compoundliteral222.sroa.0.0..sroa_idx, align 16, !dbg !945 + %.compoundliteral222.sroa.2.0..sroa_idx62 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 9, i32 1, !dbg !945 + store double 0x408001F6BADA1C71, double* %.compoundliteral222.sroa.2.0..sroa_idx62, align 8, !dbg !945 + %.compoundliteral226.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 10, i32 0, !dbg !946 + store double 0x408009EDAA24021D, double* %.compoundliteral226.sroa.0.0..sroa_idx, align 16, !dbg !946 + %.compoundliteral226.sroa.2.0..sroa_idx61 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 10, i32 1, !dbg !946 + store double 0x4080022183F3CA50, double* %.compoundliteral226.sroa.2.0..sroa_idx61, align 8, !dbg !946 + %.compoundliteral230.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 11, i32 0, !dbg !947 + store double 0x40800993B097C5AC, double* %.compoundliteral230.sroa.0.0..sroa_idx, align 16, !dbg !947 + %.compoundliteral230.sroa.2.0..sroa_idx60 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 11, i32 1, !dbg !947 + store double 0x40800243C3A1DCB2, double* %.compoundliteral230.sroa.2.0..sroa_idx60, align 8, !dbg !947 + %.compoundliteral234.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 12, i32 0, !dbg !948 + store double 0x40800948BF026ADC, double* %.compoundliteral234.sroa.0.0..sroa_idx, align 16, !dbg !948 + %.compoundliteral234.sroa.2.0..sroa_idx59 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 12, i32 1, !dbg !948 + store double 0x4080025F68FD8268, double* %.compoundliteral234.sroa.2.0..sroa_idx59, align 8, !dbg !948 + %.compoundliteral238.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 13, i32 0, !dbg !949 + store double 0x4080090857A518D9, double* %.compoundliteral238.sroa.0.0..sroa_idx, align 16, !dbg !949 + %.compoundliteral238.sroa.2.0..sroa_idx58 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 13, i32 1, !dbg !949 + store double 0x40800275F32F50EA, double* %.compoundliteral238.sroa.2.0..sroa_idx58, align 8, !dbg !949 + %.compoundliteral242.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 14, i32 0, !dbg !950 + store double 0x408008CF67B5F6E6, double* %.compoundliteral242.sroa.0.0..sroa_idx, align 16, !dbg !950 + %.compoundliteral242.sroa.2.0..sroa_idx57 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 14, i32 1, !dbg !950 + store double 0x408002887F1716B0, double* %.compoundliteral242.sroa.2.0..sroa_idx57, align 8, !dbg !950 + %.compoundliteral246.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 15, i32 0, !dbg !951 + store double 0x4080089BD580EA3A, double* %.compoundliteral246.sroa.0.0..sroa_idx, align 16, !dbg !951 + %.compoundliteral246.sroa.2.0..sroa_idx56 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 15, i32 1, !dbg !951 + store double 0x40800297DE24048E, double* %.compoundliteral246.sroa.2.0..sroa_idx56, align 8, !dbg !951 + %.compoundliteral250.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 16, i32 0, !dbg !952 + store double 0x4080086C31EBD984, double* %.compoundliteral250.sroa.0.0..sroa_idx, align 16, !dbg !952 + %.compoundliteral250.sroa.2.0..sroa_idx55 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 16, i32 1, !dbg !952 + store double 0x408002A4AAB9F9F8, double* %.compoundliteral250.sroa.2.0..sroa_idx55, align 8, !dbg !952 + %.compoundliteral254.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 17, i32 0, !dbg !953 + store double 0x4080083F8294129E, double* %.compoundliteral254.sroa.0.0..sroa_idx, align 16, !dbg !953 + %.compoundliteral254.sroa.2.0..sroa_idx54 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 17, i32 1, !dbg !953 + store double 0x408002AF57DC0D71, double* %.compoundliteral254.sroa.2.0..sroa_idx54, align 8, !dbg !953 + %.compoundliteral258.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 18, i32 0, !dbg !954 + store double 0x408008151CE457D2, double* %.compoundliteral258.sroa.0.0..sroa_idx, align 16, !dbg !954 + %.compoundliteral258.sroa.2.0..sroa_idx53 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 18, i32 1, !dbg !954 + store double 0x408002B83C8A44C9, double* %.compoundliteral258.sroa.2.0..sroa_idx53, align 8, !dbg !954 + %.compoundliteral262.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 19, i32 0, !dbg !955 + store double 0x408007EC8CCD48ED, double* %.compoundliteral262.sroa.0.0..sroa_idx, align 16, !dbg !955 + %.compoundliteral262.sroa.2.0..sroa_idx52 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 19, i32 1, !dbg !955 + store double 0x408002BF9BCECA75, double* %.compoundliteral262.sroa.2.0..sroa_idx52, align 8, !dbg !955 + %.compoundliteral266.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 20, i32 0, !dbg !956 + store double 0x408007C58371022F, double* %.compoundliteral266.sroa.0.0..sroa_idx, align 16, !dbg !956 + %.compoundliteral266.sroa.2.0..sroa_idx51 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 20, i32 1, !dbg !956 + store double 0x408002C5AA6407B6, double* %.compoundliteral266.sroa.2.0..sroa_idx51, align 8, !dbg !956 + br label %if.end488, !dbg !957 + +if.else269: ; preds = %land.lhs.true186, %land.lhs.true184, %land.lhs.true182, %if.else180 + %cmp270 = icmp eq i32 %d1, 2048, !dbg !958 + br i1 %cmp270, label %land.lhs.true271, label %if.else378, !dbg !960 + +land.lhs.true271: ; preds = %if.else269 + %cmp272 = icmp eq i32 %d2, 1024, !dbg !961 + br i1 %cmp272, label %land.lhs.true273, label %if.else378, !dbg !962 + +land.lhs.true273: ; preds = %land.lhs.true271 + %cmp274 = icmp eq i32 %d3, 1024, !dbg !963 + br i1 %cmp274, label %land.lhs.true275, label %if.else378, !dbg !964 + +land.lhs.true275: ; preds = %land.lhs.true273 + %cmp276 = icmp eq i32 %nt, 25, !dbg !965 + br i1 %cmp276, label %if.then277, label %if.else378, !dbg !966 + +if.then277: ; preds = %land.lhs.true275 + store i8 68, i8* %Class, align 1, !dbg !967, !tbaa !140 + %.compoundliteral279.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 1, i32 0, !dbg !969 + store double 0x408001C8B7A5243B, double* %.compoundliteral279.sroa.0.0..sroa_idx, align 16, !dbg !969 + %.compoundliteral279.sroa.2.0..sroa_idx50 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 1, i32 1, !dbg !969 + store double 0x407FFDA78AA6499C, double* %.compoundliteral279.sroa.2.0..sroa_idx50, align 8, !dbg !969 + %.compoundliteral283.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 2, i32 0, !dbg !970 + store double 0x4080005F05B14D73, double* %.compoundliteral283.sroa.0.0..sroa_idx, align 16, !dbg !970 + %.compoundliteral283.sroa.2.0..sroa_idx49 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 2, i32 1, !dbg !970 + store double 0x407FFB4C42805D51, double* %.compoundliteral283.sroa.2.0..sroa_idx49, align 8, !dbg !970 + %.compoundliteral287.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 3, i32 0, !dbg !971 + store double 0x407FFFC9049FE6AA, double* %.compoundliteral287.sroa.0.0..sroa_idx, align 16, !dbg !971 + %.compoundliteral287.sroa.2.0..sroa_idx48 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 3, i32 1, !dbg !971 + store double 0x407FFB5AABC2C2DC, double* %.compoundliteral287.sroa.2.0..sroa_idx48, align 8, !dbg !971 + %.compoundliteral291.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 4, i32 0, !dbg !972 + store double 0x407FFF3AE6781D07, double* %.compoundliteral291.sroa.0.0..sroa_idx, align 16, !dbg !972 + %.compoundliteral291.sroa.2.0..sroa_idx47 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 4, i32 1, !dbg !972 + store double 0x407FFBCC55AD30A5, double* %.compoundliteral291.sroa.2.0..sroa_idx47, align 8, !dbg !972 + %.compoundliteral295.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 5, i32 0, !dbg !973 + store double 0x407FFED49E586270, double* %.compoundliteral295.sroa.0.0..sroa_idx, align 16, !dbg !973 + %.compoundliteral295.sroa.2.0..sroa_idx46 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 5, i32 1, !dbg !973 + store double 0x407FFC49DED1E229, double* %.compoundliteral295.sroa.2.0..sroa_idx46, align 8, !dbg !973 + %.compoundliteral299.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 6, i32 0, !dbg !974 + store double 0x407FFE88286F1600, double* %.compoundliteral299.sroa.0.0..sroa_idx, align 16, !dbg !974 + %.compoundliteral299.sroa.2.0..sroa_idx45 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 6, i32 1, !dbg !974 + store double 0x407FFCBFA44E2DA9, double* %.compoundliteral299.sroa.2.0..sroa_idx45, align 8, !dbg !974 + %.compoundliteral303.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 7, i32 0, !dbg !975 + store double 0x407FFE4F62F012B7, double* %.compoundliteral303.sroa.0.0..sroa_idx, align 16, !dbg !975 + %.compoundliteral303.sroa.2.0..sroa_idx44 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 7, i32 1, !dbg !975 + store double 0x407FFD2913502BF7, double* %.compoundliteral303.sroa.2.0..sroa_idx44, align 8, !dbg !975 + %.compoundliteral307.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 8, i32 0, !dbg !976 + store double 0x407FFE25D7467D87, double* %.compoundliteral307.sroa.0.0..sroa_idx, align 16, !dbg !976 + %.compoundliteral307.sroa.2.0..sroa_idx43 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 8, i32 1, !dbg !976 + store double 0x407FFD85C991CC1E, double* %.compoundliteral307.sroa.2.0..sroa_idx43, align 8, !dbg !976 + %.compoundliteral311.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 9, i32 0, !dbg !977 + store double 0x407FFE07F5F9461B, double* %.compoundliteral311.sroa.0.0..sroa_idx, align 16, !dbg !977 + %.compoundliteral311.sroa.2.0..sroa_idx42 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 9, i32 1, !dbg !977 + store double 0x407FFDD6ADE6AA2F, double* %.compoundliteral311.sroa.2.0..sroa_idx42, align 8, !dbg !977 + %.compoundliteral315.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 10, i32 0, !dbg !978 + store double 0x407FFDF2F9E3CE75, double* %.compoundliteral315.sroa.0.0..sroa_idx, align 16, !dbg !978 + %.compoundliteral315.sroa.2.0..sroa_idx41 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 10, i32 1, !dbg !978 + store double 0x407FFE1D0052370F, double* %.compoundliteral315.sroa.2.0..sroa_idx41, align 8, !dbg !978 + %.compoundliteral319.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 11, i32 0, !dbg !979 + store double 0x407FFDE4CA360F49, double* %.compoundliteral319.sroa.0.0..sroa_idx, align 16, !dbg !979 + %.compoundliteral319.sroa.2.0..sroa_idx40 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 11, i32 1, !dbg !979 + store double 0x407FFE5A05B5973E, double* %.compoundliteral319.sroa.2.0..sroa_idx40, align 8, !dbg !979 + %.compoundliteral323.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 12, i32 0, !dbg !980 + store double 0x407FFDDBD5F99711, double* %.compoundliteral323.sroa.0.0..sroa_idx, align 16, !dbg !980 + %.compoundliteral323.sroa.2.0..sroa_idx39 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 12, i32 1, !dbg !980 + store double 0x407FFE8EEACAA874, double* %.compoundliteral323.sroa.2.0..sroa_idx39, align 8, !dbg !980 + %.compoundliteral327.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 13, i32 0, !dbg !981 + store double 0x407FFDD6F2033D21, double* %.compoundliteral327.sroa.0.0..sroa_idx, align 16, !dbg !981 + %.compoundliteral327.sroa.2.0..sroa_idx38 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 13, i32 1, !dbg !981 + store double 0x407FFEBCBBFA2EBF, double* %.compoundliteral327.sroa.2.0..sroa_idx38, align 8, !dbg !981 + %.compoundliteral331.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 14, i32 0, !dbg !982 + store double 0x407FFDD53D74DC74, double* %.compoundliteral331.sroa.0.0..sroa_idx, align 16, !dbg !982 + %.compoundliteral331.sroa.2.0..sroa_idx37 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 14, i32 1, !dbg !982 + store double 0x407FFEE46511649D, double* %.compoundliteral331.sroa.2.0..sroa_idx37, align 8, !dbg !982 + %.compoundliteral335.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 15, i32 0, !dbg !983 + store double 0x407FFDD60D2DB5D2, double* %.compoundliteral335.sroa.0.0..sroa_idx, align 16, !dbg !983 + %.compoundliteral335.sroa.2.0..sroa_idx36 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 15, i32 1, !dbg !983 + store double 0x407FFF06B3C01AEA, double* %.compoundliteral335.sroa.2.0..sroa_idx36, align 8, !dbg !983 + %.compoundliteral339.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 16, i32 0, !dbg !984 + store double 0x407FFDD8DD056A7D, double* %.compoundliteral339.sroa.0.0..sroa_idx, align 16, !dbg !984 + %.compoundliteral339.sroa.2.0..sroa_idx35 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 16, i32 1, !dbg !984 + store double 0x407FFF245ADF0BCE, double* %.compoundliteral339.sroa.2.0..sroa_idx35, align 8, !dbg !984 + %.compoundliteral343.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 17, i32 0, !dbg !985 + store double 0x407FFDDD45618FE6, double* %.compoundliteral343.sroa.0.0..sroa_idx, align 16, !dbg !985 + %.compoundliteral343.sroa.2.0..sroa_idx34 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 17, i32 1, !dbg !985 + store double 0x407FFF3DF5BAB029, double* %.compoundliteral343.sroa.2.0..sroa_idx34, align 8, !dbg !985 + %.compoundliteral347.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 18, i32 0, !dbg !986 + store double 0x407FFDE2F3E650B3, double* %.compoundliteral347.sroa.0.0..sroa_idx, align 16, !dbg !986 + %.compoundliteral347.sroa.2.0..sroa_idx33 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 18, i32 1, !dbg !986 + store double 0x407FFF540B1CF5A1, double* %.compoundliteral347.sroa.2.0..sroa_idx33, align 8, !dbg !986 + %.compoundliteral351.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 19, i32 0, !dbg !987 + store double 0x407FFDE9A64E1245, double* %.compoundliteral351.sroa.0.0..sroa_idx, align 16, !dbg !987 + %.compoundliteral351.sroa.2.0..sroa_idx32 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 19, i32 1, !dbg !987 + store double 0x407FFF671002DAE5, double* %.compoundliteral351.sroa.2.0..sroa_idx32, align 8, !dbg !987 + %.compoundliteral355.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 20, i32 0, !dbg !988 + store double 0x407FFDF126BADF21, double* %.compoundliteral355.sroa.0.0..sroa_idx, align 16, !dbg !988 + %.compoundliteral355.sroa.2.0..sroa_idx31 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 20, i32 1, !dbg !988 + store double 0x407FFF7769FD4D32, double* %.compoundliteral355.sroa.2.0..sroa_idx31, align 8, !dbg !988 + %.compoundliteral359.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 21, i32 0, !dbg !989 + store double 0x407FFDF94909BB13, double* %.compoundliteral359.sroa.0.0..sroa_idx, align 16, !dbg !989 + %.compoundliteral359.sroa.2.0..sroa_idx30 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 21, i32 1, !dbg !989 + store double 0x407FFF85714411B2, double* %.compoundliteral359.sroa.2.0..sroa_idx30, align 8, !dbg !989 + %.compoundliteral363.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 22, i32 0, !dbg !990 + store double 0x407FFE01E8D7E962, double* %.compoundliteral363.sroa.0.0..sroa_idx, align 16, !dbg !990 + %.compoundliteral363.sroa.2.0..sroa_idx29 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 22, i32 1, !dbg !990 + store double 0x407FFF9172826820, double* %.compoundliteral363.sroa.2.0..sroa_idx29, align 8, !dbg !990 + %.compoundliteral367.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 23, i32 0, !dbg !991 + store double 0x407FFE0AE8040E41, double* %.compoundliteral367.sroa.0.0..sroa_idx, align 16, !dbg !991 + %.compoundliteral367.sroa.2.0..sroa_idx28 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 23, i32 1, !dbg !991 + store double 0x407FFF9BB06626E0, double* %.compoundliteral367.sroa.2.0..sroa_idx28, align 8, !dbg !991 + %.compoundliteral371.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 24, i32 0, !dbg !992 + store double 0x407FFE142D872C17, double* %.compoundliteral371.sroa.0.0..sroa_idx, align 16, !dbg !992 + %.compoundliteral371.sroa.2.0..sroa_idx27 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 24, i32 1, !dbg !992 + store double 0x407FFFA464F89DCE, double* %.compoundliteral371.sroa.2.0..sroa_idx27, align 8, !dbg !992 + %.compoundliteral375.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 25, i32 0, !dbg !993 + store double 0x407FFE1DA48D386E, double* %.compoundliteral375.sroa.0.0..sroa_idx, align 16, !dbg !993 + %.compoundliteral375.sroa.2.0..sroa_idx26 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 25, i32 1, !dbg !993 + store double 0x407FFFABC2C855DE, double* %.compoundliteral375.sroa.2.0..sroa_idx26, align 8, !dbg !993 + br label %if.end487, !dbg !994 + +if.else378: ; preds = %land.lhs.true275, %land.lhs.true273, %land.lhs.true271, %if.else269 + %cmp379 = icmp eq i32 %d1, 4096, !dbg !995 + br i1 %cmp379, label %land.lhs.true380, label %if.end, !dbg !997 + +land.lhs.true380: ; preds = %if.else378 + %cmp381 = icmp eq i32 %d2, 2048, !dbg !998 + br i1 %cmp381, label %land.lhs.true382, label %if.end, !dbg !999 + +land.lhs.true382: ; preds = %land.lhs.true380 + %cmp383 = icmp eq i32 %d3, 2048, !dbg !1000 + br i1 %cmp383, label %land.lhs.true384, label %if.end, !dbg !1001 + +land.lhs.true384: ; preds = %land.lhs.true382 + %cmp385 = icmp eq i32 %nt, 25, !dbg !1002 + br i1 %cmp385, label %if.then386, label %if.end, !dbg !1003 + +if.then386: ; preds = %land.lhs.true384 + store i8 69, i8* %Class, align 1, !dbg !1004, !tbaa !140 + %.compoundliteral388.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 1, i32 0, !dbg !1006 + store double 0x40800147E4E2E063, double* %.compoundliteral388.sroa.0.0..sroa_idx, align 16, !dbg !1006 + %.compoundliteral388.sroa.2.0..sroa_idx25 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 1, i32 1, !dbg !1006 + store double 0x407FFBD566A0B5FD, double* %.compoundliteral388.sroa.2.0..sroa_idx25, align 8, !dbg !1006 + %.compoundliteral392.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 2, i32 0, !dbg !1007 + store double 0x408000B96D3A755A, double* %.compoundliteral392.sroa.0.0..sroa_idx, align 16, !dbg !1007 + %.compoundliteral392.sroa.2.0..sroa_idx24 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 2, i32 1, !dbg !1007 + store double 0x407FFDC89676A99F, double* %.compoundliteral392.sroa.2.0..sroa_idx24, align 8, !dbg !1007 + %.compoundliteral396.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 3, i32 0, !dbg !1008 + store double 0x4080007FA32A25BE, double* %.compoundliteral396.sroa.0.0..sroa_idx, align 16, !dbg !1008 + %.compoundliteral396.sroa.2.0..sroa_idx23 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 3, i32 1, !dbg !1008 + store double 0x407FFE84CB3A10F8, double* %.compoundliteral396.sroa.2.0..sroa_idx23, align 8, !dbg !1008 + %.compoundliteral400.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 4, i32 0, !dbg !1009 + store double 0x40800059C9C82B40, double* %.compoundliteral400.sroa.0.0..sroa_idx, align 16, !dbg !1009 + %.compoundliteral400.sroa.2.0..sroa_idx22 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 4, i32 1, !dbg !1009 + store double 0x407FFEF414B87FD6, double* %.compoundliteral400.sroa.2.0..sroa_idx22, align 8, !dbg !1009 + %.compoundliteral404.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 5, i32 0, !dbg !1010 + store double 0x4080003FCCB7C9C8, double* %.compoundliteral404.sroa.0.0..sroa_idx, align 16, !dbg !1010 + %.compoundliteral404.sroa.2.0..sroa_idx21 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 5, i32 1, !dbg !1010 + store double 0x407FFF483912F11E, double* %.compoundliteral404.sroa.2.0..sroa_idx21, align 8, !dbg !1010 + %.compoundliteral408.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 6, i32 0, !dbg !1011 + store double 0x4080002E4D90A084, double* %.compoundliteral408.sroa.0.0..sroa_idx, align 16, !dbg !1011 + %.compoundliteral408.sroa.2.0..sroa_idx20 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 6, i32 1, !dbg !1011 + store double 0x407FFF8D62BCE558, double* %.compoundliteral408.sroa.2.0..sroa_idx20, align 8, !dbg !1011 + %.compoundliteral412.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 7, i32 0, !dbg !1012 + store double 0x40800022AC039D7C, double* %.compoundliteral412.sroa.0.0..sroa_idx, align 16, !dbg !1012 + %.compoundliteral412.sroa.2.0..sroa_idx19 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 7, i32 1, !dbg !1012 + store double 0x407FFFC737C3F7CD, double* %.compoundliteral412.sroa.2.0..sroa_idx19, align 8, !dbg !1012 + %.compoundliteral416.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 8, i32 0, !dbg !1013 + store double 0x4080001ADFFA71B9, double* %.compoundliteral416.sroa.0.0..sroa_idx, align 16, !dbg !1013 + %.compoundliteral416.sroa.2.0..sroa_idx18 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 8, i32 1, !dbg !1013 + store double 0x407FFFF78C336255, double* %.compoundliteral416.sroa.2.0..sroa_idx18, align 8, !dbg !1013 + %.compoundliteral420.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 9, i32 0, !dbg !1014 + store double 0x4080001574D0520C, double* %.compoundliteral420.sroa.0.0..sroa_idx, align 16, !dbg !1014 + %.compoundliteral420.sroa.2.0..sroa_idx17 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 9, i32 1, !dbg !1014 + store double 0x4080000FE85C03E9, double* %.compoundliteral420.sroa.2.0..sroa_idx17, align 8, !dbg !1014 + %.compoundliteral424.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 10, i32 0, !dbg !1015 + store double 0x408000116F284244, double* %.compoundliteral424.sroa.0.0..sroa_idx, align 16, !dbg !1015 + %.compoundliteral424.sroa.2.0..sroa_idx16 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 10, i32 1, !dbg !1015 + store double 0x40800020A7695837, double* %.compoundliteral424.sroa.2.0..sroa_idx16, align 8, !dbg !1015 + %.compoundliteral428.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 11, i32 0, !dbg !1016 + store double 0x4080000E2D56813F, double* %.compoundliteral428.sroa.0.0..sroa_idx, align 16, !dbg !1016 + %.compoundliteral428.sroa.2.0..sroa_idx15 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 11, i32 1, !dbg !1016 + store double 0x4080002E951F7B34, double* %.compoundliteral428.sroa.2.0..sroa_idx15, align 8, !dbg !1016 + %.compoundliteral432.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 12, i32 0, !dbg !1017 + store double 0x4080000B4BE05864, double* %.compoundliteral432.sroa.0.0..sroa_idx, align 16, !dbg !1017 + %.compoundliteral432.sroa.2.0..sroa_idx14 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 12, i32 1, !dbg !1017 + store double 0x4080003A2ED08404, double* %.compoundliteral432.sroa.2.0..sroa_idx14, align 8, !dbg !1017 + %.compoundliteral436.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 13, i32 0, !dbg !1018 + store double 0x408000089094AC2D, double* %.compoundliteral436.sroa.0.0..sroa_idx, align 16, !dbg !1018 + %.compoundliteral436.sroa.2.0..sroa_idx13 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 13, i32 1, !dbg !1018 + store double 0x40800043DD87C2F3, double* %.compoundliteral436.sroa.2.0..sroa_idx13, align 8, !dbg !1018 + %.compoundliteral440.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 14, i32 0, !dbg !1019 + store double 0x40800005DBBF34DD, double* %.compoundliteral440.sroa.0.0..sroa_idx, align 16, !dbg !1019 + %.compoundliteral440.sroa.2.0..sroa_idx12 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 14, i32 1, !dbg !1019 + store double 0x4080004BF7DEAC1A, double* %.compoundliteral440.sroa.2.0..sroa_idx12, align 8, !dbg !1019 + %.compoundliteral444.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 15, i32 0, !dbg !1020 + store double 0x408000031E1FCB83, double* %.compoundliteral444.sroa.0.0..sroa_idx, align 16, !dbg !1020 + %.compoundliteral444.sroa.2.0..sroa_idx11 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 15, i32 1, !dbg !1020 + store double 0x40800052C48391C0, double* %.compoundliteral444.sroa.2.0..sroa_idx11, align 8, !dbg !1020 + %.compoundliteral448.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 16, i32 0, !dbg !1021 + store double 0x4080000052507A84, double* %.compoundliteral448.sroa.0.0..sroa_idx, align 16, !dbg !1021 + %.compoundliteral448.sroa.2.0..sroa_idx10 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 16, i32 1, !dbg !1021 + store double 0x408000587CD9C3A1, double* %.compoundliteral448.sroa.2.0..sroa_idx10, align 8, !dbg !1021 + %.compoundliteral452.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 17, i32 0, !dbg !1022 + store double 0x407FFFFAF1111C29, double* %.compoundliteral452.sroa.0.0..sroa_idx, align 16, !dbg !1022 + %.compoundliteral452.sroa.2.0..sroa_idx9 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 17, i32 1, !dbg !1022 + store double 0x4080005D4F648E97, double* %.compoundliteral452.sroa.2.0..sroa_idx9, align 8, !dbg !1022 + %.compoundliteral456.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 18, i32 0, !dbg !1023 + store double 0x407FFFF527E792B0, double* %.compoundliteral456.sroa.0.0..sroa_idx, align 16, !dbg !1023 + %.compoundliteral456.sroa.2.0..sroa_idx8 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 18, i32 1, !dbg !1023 + store double 0x4080006161DD7A20, double* %.compoundliteral456.sroa.2.0..sroa_idx8, align 8, !dbg !1023 + %.compoundliteral460.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 19, i32 0, !dbg !1024 + store double 0x407FFFEF5224A658, double* %.compoundliteral460.sroa.0.0..sroa_idx, align 16, !dbg !1024 + %.compoundliteral460.sroa.2.0..sroa_idx7 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 19, i32 1, !dbg !1024 + store double 0x40800064D2F0E0FB, double* %.compoundliteral460.sroa.2.0..sroa_idx7, align 8, !dbg !1024 + %.compoundliteral464.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 20, i32 0, !dbg !1025 + store double 0x407FFFE97985082F, double* %.compoundliteral464.sroa.0.0..sroa_idx, align 16, !dbg !1025 + %.compoundliteral464.sroa.2.0..sroa_idx6 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 20, i32 1, !dbg !1025 + store double 0x40800067BBA76761, double* %.compoundliteral464.sroa.2.0..sroa_idx6, align 8, !dbg !1025 + %.compoundliteral468.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 21, i32 0, !dbg !1026 + store double 0x407FFFE3A76CE198, double* %.compoundliteral468.sroa.0.0..sroa_idx, align 16, !dbg !1026 + %.compoundliteral468.sroa.2.0..sroa_idx5 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 21, i32 1, !dbg !1026 + store double 0x4080006A3087F53C, double* %.compoundliteral468.sroa.2.0..sroa_idx5, align 8, !dbg !1026 + %.compoundliteral472.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 22, i32 0, !dbg !1027 + store double 0x407FFFDDE458AC2A, double* %.compoundliteral472.sroa.0.0..sroa_idx, align 16, !dbg !1027 + %.compoundliteral472.sroa.2.0..sroa_idx4 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 22, i32 1, !dbg !1027 + store double 0x4080006C427E60CB, double* %.compoundliteral472.sroa.2.0..sroa_idx4, align 8, !dbg !1027 + %.compoundliteral476.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 23, i32 0, !dbg !1028 + store double 0x407FFFD8379EC190, double* %.compoundliteral476.sroa.0.0..sroa_idx, align 16, !dbg !1028 + %.compoundliteral476.sroa.2.0..sroa_idx3 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 23, i32 1, !dbg !1028 + store double 0x4080006DFF9235BC, double* %.compoundliteral476.sroa.2.0..sroa_idx3, align 8, !dbg !1028 + %.compoundliteral480.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 24, i32 0, !dbg !1029 + store double 0x407FFFD2A76113A7, double* %.compoundliteral480.sroa.0.0..sroa_idx, align 16, !dbg !1029 + %.compoundliteral480.sroa.2.0..sroa_idx2 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 24, i32 1, !dbg !1029 + store double 0x4080006F7377203C, double* %.compoundliteral480.sroa.2.0..sroa_idx2, align 8, !dbg !1029 + %.compoundliteral484.sroa.0.0..sroa_idx = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 25, i32 0, !dbg !1030 + store double 0x407FFFCD389947BC, double* %.compoundliteral484.sroa.0.0..sroa_idx, align 16, !dbg !1030 + %.compoundliteral484.sroa.2.0..sroa_idx1 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 25, i32 1, !dbg !1030 + store double 0x40800070A7FF2BFD, double* %.compoundliteral484.sroa.2.0..sroa_idx1, align 8, !dbg !1030 + br label %if.end, !dbg !1031 + +if.end: ; preds = %if.then386, %land.lhs.true384, %land.lhs.true382, %land.lhs.true380, %if.else378 + br label %if.end487 + +if.end487: ; preds = %if.end, %if.then277 + br label %if.end488 + +if.end488: ; preds = %if.end487, %if.then188 + br label %if.end489 + +if.end489: ; preds = %if.end488, %if.then99 + br label %if.end490 + +if.end490: ; preds = %if.end489, %if.then66 + br label %if.end491 + +if.end491: ; preds = %if.end490, %if.then33 + br label %if.end492 + +if.end492: ; preds = %if.end491, %if.then + %1 = load i8, i8* %Class, align 1, !dbg !1032, !tbaa !140 + %conv = sext i8 %1 to i32, !dbg !1032 + %cmp493 = icmp ne i32 %conv, 85, !dbg !1034 + br i1 %cmp493, label %if.then495, label %if.end588, !dbg !1035 + +if.then495: ; preds = %if.end492 + store i32 1, i32* %verified, align 4, !dbg !1036, !tbaa !140 + call void @llvm.dbg.value(metadata i32 1, metadata !828, metadata !DIExpression()), !dbg !835 + br label %for.cond, !dbg !1038 + +for.cond: ; preds = %for.inc, %if.then495 + %i.0 = phi i32 [ 1, %if.then495 ], [ %inc, %for.inc ], !dbg !1040 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !828, metadata !DIExpression()), !dbg !835 + %cmp496 = icmp sle i32 %i.0, %nt, !dbg !1041 + br i1 %cmp496, label %for.body, label %for.end, !dbg !1043 + +for.body: ; preds = %for.cond + %idxprom = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx500 = getelementptr inbounds [7 x %struct.dcomplex], [7 x %struct.dcomplex]* @sums, i64 0, i64 %idxprom, !dbg !1044 + %real501 = getelementptr inbounds %struct.dcomplex, %struct.dcomplex* %arrayidx500, i32 0, i32 0, !dbg !1044 + %2 = load double, double* %real501, align 16, !dbg !1044, !tbaa !1046 + %idxprom502 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx503 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 %idxprom502, !dbg !1044 + %real504 = getelementptr inbounds %struct.dcomplex, %struct.dcomplex* %arrayidx503, i32 0, i32 0, !dbg !1044 + %3 = load double, double* %real504, align 16, !dbg !1044, !tbaa !1046 + %sub = fsub double %2, %3, !dbg !1044 + %idxprom506 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx507 = getelementptr inbounds [7 x %struct.dcomplex], [7 x %struct.dcomplex]* @sums, i64 0, i64 %idxprom506, !dbg !1044 + %imag508 = getelementptr inbounds %struct.dcomplex, %struct.dcomplex* %arrayidx507, i32 0, i32 1, !dbg !1044 + %4 = load double, double* %imag508, align 8, !dbg !1044, !tbaa !1048 + %idxprom509 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx510 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 %idxprom509, !dbg !1044 + %imag511 = getelementptr inbounds %struct.dcomplex, %struct.dcomplex* %arrayidx510, i32 0, i32 1, !dbg !1044 + %5 = load double, double* %imag511, align 8, !dbg !1044, !tbaa !1048 + %sub512 = fsub double %4, %5, !dbg !1044 + %idxprom513 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx514 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 %idxprom513, !dbg !1044 + %6 = bitcast %struct.dcomplex* %arrayidx514 to { double, double }*, !dbg !1044 + %7 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0, !dbg !1044 + %8 = load double, double* %7, align 16, !dbg !1044 + %9 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1, !dbg !1044 + %10 = load double, double* %9, align 8, !dbg !1044 + %call = call { double, double } @dcmplx_div(double %sub, double %sub512, double %8, double %10), !dbg !1044 + %11 = extractvalue { double, double } %call, 0, !dbg !1044 + %12 = extractvalue { double, double } %call, 1, !dbg !1044 + %idxprom518 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx519 = getelementptr inbounds [7 x %struct.dcomplex], [7 x %struct.dcomplex]* @sums, i64 0, i64 %idxprom518, !dbg !1044 + %real520 = getelementptr inbounds %struct.dcomplex, %struct.dcomplex* %arrayidx519, i32 0, i32 0, !dbg !1044 + %13 = load double, double* %real520, align 16, !dbg !1044, !tbaa !1046 + %idxprom521 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx522 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 %idxprom521, !dbg !1044 + %real523 = getelementptr inbounds %struct.dcomplex, %struct.dcomplex* %arrayidx522, i32 0, i32 0, !dbg !1044 + %14 = load double, double* %real523, align 16, !dbg !1044, !tbaa !1046 + %sub524 = fsub double %13, %14, !dbg !1044 + %idxprom526 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx527 = getelementptr inbounds [7 x %struct.dcomplex], [7 x %struct.dcomplex]* @sums, i64 0, i64 %idxprom526, !dbg !1044 + %imag528 = getelementptr inbounds %struct.dcomplex, %struct.dcomplex* %arrayidx527, i32 0, i32 1, !dbg !1044 + %15 = load double, double* %imag528, align 8, !dbg !1044, !tbaa !1048 + %idxprom529 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx530 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 %idxprom529, !dbg !1044 + %imag531 = getelementptr inbounds %struct.dcomplex, %struct.dcomplex* %arrayidx530, i32 0, i32 1, !dbg !1044 + %16 = load double, double* %imag531, align 8, !dbg !1044, !tbaa !1048 + %sub532 = fsub double %15, %16, !dbg !1044 + %idxprom533 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx534 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 %idxprom533, !dbg !1044 + %17 = bitcast %struct.dcomplex* %arrayidx534 to { double, double }*, !dbg !1044 + %18 = getelementptr inbounds { double, double }, { double, double }* %17, i32 0, i32 0, !dbg !1044 + %19 = load double, double* %18, align 16, !dbg !1044 + %20 = getelementptr inbounds { double, double }, { double, double }* %17, i32 0, i32 1, !dbg !1044 + %21 = load double, double* %20, align 8, !dbg !1044 + %call535 = call { double, double } @dcmplx_div(double %sub524, double %sub532, double %19, double %21), !dbg !1044 + %22 = extractvalue { double, double } %call535, 0, !dbg !1044 + %23 = extractvalue { double, double } %call535, 1, !dbg !1044 + %mul = fmul double %11, %22, !dbg !1044 + %idxprom540 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx541 = getelementptr inbounds [7 x %struct.dcomplex], [7 x %struct.dcomplex]* @sums, i64 0, i64 %idxprom540, !dbg !1044 + %real542 = getelementptr inbounds %struct.dcomplex, %struct.dcomplex* %arrayidx541, i32 0, i32 0, !dbg !1044 + %24 = load double, double* %real542, align 16, !dbg !1044, !tbaa !1046 + %idxprom543 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx544 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 %idxprom543, !dbg !1044 + %real545 = getelementptr inbounds %struct.dcomplex, %struct.dcomplex* %arrayidx544, i32 0, i32 0, !dbg !1044 + %25 = load double, double* %real545, align 16, !dbg !1044, !tbaa !1046 + %sub546 = fsub double %24, %25, !dbg !1044 + %idxprom548 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx549 = getelementptr inbounds [7 x %struct.dcomplex], [7 x %struct.dcomplex]* @sums, i64 0, i64 %idxprom548, !dbg !1044 + %imag550 = getelementptr inbounds %struct.dcomplex, %struct.dcomplex* %arrayidx549, i32 0, i32 1, !dbg !1044 + %26 = load double, double* %imag550, align 8, !dbg !1044, !tbaa !1048 + %idxprom551 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx552 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 %idxprom551, !dbg !1044 + %imag553 = getelementptr inbounds %struct.dcomplex, %struct.dcomplex* %arrayidx552, i32 0, i32 1, !dbg !1044 + %27 = load double, double* %imag553, align 8, !dbg !1044, !tbaa !1048 + %sub554 = fsub double %26, %27, !dbg !1044 + %idxprom555 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx556 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 %idxprom555, !dbg !1044 + %28 = bitcast %struct.dcomplex* %arrayidx556 to { double, double }*, !dbg !1044 + %29 = getelementptr inbounds { double, double }, { double, double }* %28, i32 0, i32 0, !dbg !1044 + %30 = load double, double* %29, align 16, !dbg !1044 + %31 = getelementptr inbounds { double, double }, { double, double }* %28, i32 0, i32 1, !dbg !1044 + %32 = load double, double* %31, align 8, !dbg !1044 + %call557 = call { double, double } @dcmplx_div(double %sub546, double %sub554, double %30, double %32), !dbg !1044 + %33 = extractvalue { double, double } %call557, 0, !dbg !1044 + %34 = extractvalue { double, double } %call557, 1, !dbg !1044 + %idxprom562 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx563 = getelementptr inbounds [7 x %struct.dcomplex], [7 x %struct.dcomplex]* @sums, i64 0, i64 %idxprom562, !dbg !1044 + %real564 = getelementptr inbounds %struct.dcomplex, %struct.dcomplex* %arrayidx563, i32 0, i32 0, !dbg !1044 + %35 = load double, double* %real564, align 16, !dbg !1044, !tbaa !1046 + %idxprom565 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx566 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 %idxprom565, !dbg !1044 + %real567 = getelementptr inbounds %struct.dcomplex, %struct.dcomplex* %arrayidx566, i32 0, i32 0, !dbg !1044 + %36 = load double, double* %real567, align 16, !dbg !1044, !tbaa !1046 + %sub568 = fsub double %35, %36, !dbg !1044 + %idxprom570 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx571 = getelementptr inbounds [7 x %struct.dcomplex], [7 x %struct.dcomplex]* @sums, i64 0, i64 %idxprom570, !dbg !1044 + %imag572 = getelementptr inbounds %struct.dcomplex, %struct.dcomplex* %arrayidx571, i32 0, i32 1, !dbg !1044 + %37 = load double, double* %imag572, align 8, !dbg !1044, !tbaa !1048 + %idxprom573 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx574 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 %idxprom573, !dbg !1044 + %imag575 = getelementptr inbounds %struct.dcomplex, %struct.dcomplex* %arrayidx574, i32 0, i32 1, !dbg !1044 + %38 = load double, double* %imag575, align 8, !dbg !1044, !tbaa !1048 + %sub576 = fsub double %37, %38, !dbg !1044 + %idxprom577 = sext i32 %i.0 to i64, !dbg !1044 + %arrayidx578 = getelementptr inbounds [26 x %struct.dcomplex], [26 x %struct.dcomplex]* %csum_ref, i64 0, i64 %idxprom577, !dbg !1044 + %39 = bitcast %struct.dcomplex* %arrayidx578 to { double, double }*, !dbg !1044 + %40 = getelementptr inbounds { double, double }, { double, double }* %39, i32 0, i32 0, !dbg !1044 + %41 = load double, double* %40, align 16, !dbg !1044 + %42 = getelementptr inbounds { double, double }, { double, double }* %39, i32 0, i32 1, !dbg !1044 + %43 = load double, double* %42, align 8, !dbg !1044 + %call579 = call { double, double } @dcmplx_div(double %sub568, double %sub576, double %41, double %43), !dbg !1044 + %44 = extractvalue { double, double } %call579, 0, !dbg !1044 + %45 = extractvalue { double, double } %call579, 1, !dbg !1044 + %mul582 = fmul double %34, %45, !dbg !1044 + %add = fadd double %mul, %mul582, !dbg !1044 + %call583 = call double @sqrt(double %add) #6, !dbg !1044 + call void @llvm.dbg.value(metadata double %call583, metadata !829, metadata !DIExpression()), !dbg !835 + %cmp584 = fcmp ole double %call583, 0x3D719799812DEA11, !dbg !1049 + br i1 %cmp584, label %if.end587, label %if.then586, !dbg !1051 + +if.then586: ; preds = %for.body + store i32 0, i32* %verified, align 4, !dbg !1052, !tbaa !140 + br label %for.end, !dbg !1054 + +if.end587: ; preds = %for.body + br label %for.inc, !dbg !1055 + +for.inc: ; preds = %if.end587 + %inc = add nsw i32 %i.0, 1, !dbg !1056 + call void @llvm.dbg.value(metadata i32 %inc, metadata !828, metadata !DIExpression()), !dbg !835 + br label %for.cond, !dbg !1057, !llvm.loop !1058 + +for.end: ; preds = %if.then586, %for.cond + br label %if.end588, !dbg !1060 + +if.end588: ; preds = %for.end, %if.end492 + %46 = load i8, i8* %Class, align 1, !dbg !1061, !tbaa !140 + %conv589 = sext i8 %46 to i32, !dbg !1061 + %cmp590 = icmp ne i32 %conv589, 85, !dbg !1063 + br i1 %cmp590, label %if.then592, label %if.end598, !dbg !1064 + +if.then592: ; preds = %if.end588 + %47 = load i32, i32* %verified, align 4, !dbg !1065, !tbaa !140 + %tobool = icmp ne i32 %47, 0, !dbg !1065 + br i1 %tobool, label %if.then593, label %if.else595, !dbg !1068 + +if.then593: ; preds = %if.then592 + %call594 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.24, i64 0, i64 0)), !dbg !1069 + br label %if.end597, !dbg !1071 + +if.else595: ; preds = %if.then592 + %call596 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.25, i64 0, i64 0)), !dbg !1072 + br label %if.end597 + +if.end597: ; preds = %if.else595, %if.then593 + br label %if.end598, !dbg !1074 + +if.end598: ; preds = %if.end597, %if.end588 + %48 = load i8, i8* %Class, align 1, !dbg !1075, !tbaa !140 + %conv599 = sext i8 %48 to i32, !dbg !1075 + %call600 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.26, i64 0, i64 0), i32 %conv599), !dbg !1076 + %49 = bitcast [26 x %struct.dcomplex]* %csum_ref to i8*, !dbg !1077 + call void @llvm.lifetime.end.p0i8(i64 416, i8* %49) #6, !dbg !1077 + ret void, !dbg !1077 +} + +declare dso_local void @timer_stop(i32) #3 + +declare dso_local double @timer_read(i32) #3 + +; Function Attrs: nounwind +declare dso_local double @log(double) #4 + +declare dso_local void @print_results(i8*, i8 signext, i32, i32, i32, i32, double, double, i8*, i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*) #3 + +; Function Attrs: argmemonly nounwind +declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #2 + +; Function Attrs: nounwind uwtable +define internal double @ipow46(double %a, i32 %exponent) #0 !dbg !1078 { +entry: + %q = alloca double, align 8 + %r = alloca double, align 8 + call void @llvm.dbg.value(metadata double %a, metadata !1082, metadata !DIExpression()), !dbg !1090 + call void @llvm.dbg.value(metadata i32 %exponent, metadata !1083, metadata !DIExpression()), !dbg !1090 + %0 = bitcast double* %q to i8*, !dbg !1091 + call void @llvm.lifetime.start.p0i8(i64 8, i8* %0) #6, !dbg !1091 + call void @llvm.dbg.declare(metadata double* %q, metadata !1086, metadata !DIExpression()), !dbg !1092 + %1 = bitcast double* %r to i8*, !dbg !1091 + call void @llvm.lifetime.start.p0i8(i64 8, i8* %1) #6, !dbg !1091 + call void @llvm.dbg.declare(metadata double* %r, metadata !1087, metadata !DIExpression()), !dbg !1093 + call void @llvm.dbg.value(metadata double 1.000000e+00, metadata !1084, metadata !DIExpression()), !dbg !1090 + %cmp = icmp eq i32 %exponent, 0, !dbg !1094 + br i1 %cmp, label %if.then, label %if.end, !dbg !1096 + +if.then: ; preds = %entry + br label %cleanup, !dbg !1097 + +if.end: ; preds = %entry + store double %a, double* %q, align 8, !dbg !1098, !tbaa !249 + store double 1.000000e+00, double* %r, align 8, !dbg !1099, !tbaa !249 + call void @llvm.dbg.value(metadata i32 %exponent, metadata !1088, metadata !DIExpression()), !dbg !1090 + br label %while.cond, !dbg !1100 + +while.cond: ; preds = %if.end5, %if.end + %n.0 = phi i32 [ %exponent, %if.end ], [ %n.1, %if.end5 ], !dbg !1090 + call void @llvm.dbg.value(metadata i32 %n.0, metadata !1088, metadata !DIExpression()), !dbg !1090 + %cmp1 = icmp sgt i32 %n.0, 1, !dbg !1101 + br i1 %cmp1, label %while.body, label %while.end, !dbg !1100 + +while.body: ; preds = %while.cond + %div = sdiv i32 %n.0, 2, !dbg !1102 + call void @llvm.dbg.value(metadata i32 %div, metadata !1089, metadata !DIExpression()), !dbg !1090 + %mul = mul nsw i32 %div, 2, !dbg !1104 + %cmp2 = icmp eq i32 %mul, %n.0, !dbg !1106 + br i1 %cmp2, label %if.then3, label %if.else, !dbg !1107 + +if.then3: ; preds = %while.body + %2 = load double, double* %q, align 8, !dbg !1108, !tbaa !249 + %call = call double @randlc(double* %q, double %2), !dbg !1110 + call void @llvm.dbg.value(metadata double %call, metadata !1085, metadata !DIExpression()), !dbg !1090 + call void @llvm.dbg.value(metadata i32 %div, metadata !1088, metadata !DIExpression()), !dbg !1090 + br label %if.end5, !dbg !1111 + +if.else: ; preds = %while.body + %3 = load double, double* %q, align 8, !dbg !1112, !tbaa !249 + %call4 = call double @randlc(double* %r, double %3), !dbg !1114 + call void @llvm.dbg.value(metadata double %call4, metadata !1085, metadata !DIExpression()), !dbg !1090 + %sub = sub nsw i32 %n.0, 1, !dbg !1115 + call void @llvm.dbg.value(metadata i32 %sub, metadata !1088, metadata !DIExpression()), !dbg !1090 + br label %if.end5 + +if.end5: ; preds = %if.else, %if.then3 + %n.1 = phi i32 [ %div, %if.then3 ], [ %sub, %if.else ], !dbg !1116 + call void @llvm.dbg.value(metadata i32 %n.1, metadata !1088, metadata !DIExpression()), !dbg !1090 + br label %while.cond, !dbg !1100, !llvm.loop !1117 + +while.end: ; preds = %while.cond + %4 = load double, double* %q, align 8, !dbg !1119, !tbaa !249 + %call6 = call double @randlc(double* %r, double %4), !dbg !1120 + call void @llvm.dbg.value(metadata double %call6, metadata !1085, metadata !DIExpression()), !dbg !1090 + %5 = load double, double* %r, align 8, !dbg !1121, !tbaa !249 + call void @llvm.dbg.value(metadata double %5, metadata !1084, metadata !DIExpression()), !dbg !1090 + br label %cleanup, !dbg !1122 + +cleanup: ; preds = %while.end, %if.then + %retval.0 = phi double [ 1.000000e+00, %if.then ], [ %5, %while.end ], !dbg !1090 + %6 = bitcast double* %r to i8*, !dbg !1123 + call void @llvm.lifetime.end.p0i8(i64 8, i8* %6) #6, !dbg !1123 + %7 = bitcast double* %q to i8*, !dbg !1123 + call void @llvm.lifetime.end.p0i8(i64 8, i8* %7) #6, !dbg !1123 + ret double %retval.0, !dbg !1123 +} + +declare dso_local double @randlc(double*, double) #3 + +; Function Attrs: nounwind uwtable +define internal void @setup() #0 !dbg !1124 { +entry: + store i32 0, i32* @debug, align 4, !dbg !1188, !tbaa !140 + %call = call %struct._IO_FILE* @fopen(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i64 0, i64 0)), !dbg !1189 + call void @llvm.dbg.value(metadata %struct._IO_FILE* %call, metadata !1128, metadata !DIExpression()), !dbg !1191 + %cmp = icmp ne %struct._IO_FILE* %call, null, !dbg !1192 + br i1 %cmp, label %if.then, label %if.else, !dbg !1193 + +if.then: ; preds = %entry + store i32 1, i32* @timers_enabled, align 4, !dbg !1194, !tbaa !140 + %call1 = call i32 @fclose(%struct._IO_FILE* %call), !dbg !1196 + br label %if.end, !dbg !1197 + +if.else: ; preds = %entry + store i32 0, i32* @timers_enabled, align 4, !dbg !1198, !tbaa !140 + br label %if.end + +if.end: ; preds = %if.else, %if.then + store i32 6, i32* @niter, align 4, !dbg !1200, !tbaa !106 + %call2 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.10, i64 0, i64 0)), !dbg !1201 + %call3 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.11, i64 0, i64 0), i32 256, i32 256, i32 128), !dbg !1202 + %0 = load i32, i32* @niter, align 4, !dbg !1203, !tbaa !106 + %call4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.12, i64 0, i64 0), i32 %0), !dbg !1204 + %call5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.13, i64 0, i64 0)), !dbg !1205 + store i32 256, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 0), align 4, !dbg !1206, !tbaa !106 + store i32 256, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 1), align 4, !dbg !1207, !tbaa !106 + store i32 128, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @dims, i64 0, i64 2), align 4, !dbg !1208, !tbaa !106 + ret void, !dbg !1209 +} + +declare dso_local %struct._IO_FILE* @fopen(i8*, i8*) #3 + +declare dso_local i32 @fclose(%struct._IO_FILE*) #3 + +declare dso_local i32 @printf(i8*, ...) #3 + +; Function Attrs: nounwind +declare dso_local double @exp(double) #4 + +; Function Attrs: nounwind uwtable +define internal void @print_timers() #0 !dbg !1210 { +entry: + %tstrings = alloca [9 x i8*], align 16 + %0 = bitcast [9 x i8*]* %tstrings to i8*, !dbg !1219 + call void @llvm.lifetime.start.p0i8(i64 72, i8* %0) #6, !dbg !1219 + call void @llvm.dbg.declare(metadata [9 x i8*]* %tstrings, metadata !1215, metadata !DIExpression()), !dbg !1220 + %arrayidx = getelementptr inbounds [9 x i8*], [9 x i8*]* %tstrings, i64 0, i64 1, !dbg !1221 + store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.14, i64 0, i64 0), i8** %arrayidx, align 8, !dbg !1222, !tbaa !1223 + %arrayidx1 = getelementptr inbounds [9 x i8*], [9 x i8*]* %tstrings, i64 0, i64 2, !dbg !1225 + store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8** %arrayidx1, align 16, !dbg !1226, !tbaa !1223 + %arrayidx2 = getelementptr inbounds [9 x i8*], [9 x i8*]* %tstrings, i64 0, i64 3, !dbg !1227 + store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.16, i64 0, i64 0), i8** %arrayidx2, align 8, !dbg !1228, !tbaa !1223 + %arrayidx3 = getelementptr inbounds [9 x i8*], [9 x i8*]* %tstrings, i64 0, i64 4, !dbg !1229 + store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.17, i64 0, i64 0), i8** %arrayidx3, align 16, !dbg !1230, !tbaa !1223 + %arrayidx4 = getelementptr inbounds [9 x i8*], [9 x i8*]* %tstrings, i64 0, i64 5, !dbg !1231 + store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.18, i64 0, i64 0), i8** %arrayidx4, align 8, !dbg !1232, !tbaa !1223 + %arrayidx5 = getelementptr inbounds [9 x i8*], [9 x i8*]* %tstrings, i64 0, i64 6, !dbg !1233 + store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.19, i64 0, i64 0), i8** %arrayidx5, align 16, !dbg !1234, !tbaa !1223 + %arrayidx6 = getelementptr inbounds [9 x i8*], [9 x i8*]* %tstrings, i64 0, i64 7, !dbg !1235 + store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.20, i64 0, i64 0), i8** %arrayidx6, align 8, !dbg !1236, !tbaa !1223 + %arrayidx7 = getelementptr inbounds [9 x i8*], [9 x i8*]* %tstrings, i64 0, i64 8, !dbg !1237 + store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.21, i64 0, i64 0), i8** %arrayidx7, align 16, !dbg !1238, !tbaa !1223 + %call = call double @timer_read(i32 1), !dbg !1239 + call void @llvm.dbg.value(metadata double %call, metadata !1214, metadata !DIExpression()), !dbg !1240 + %cmp = fcmp ole double %call, 0.000000e+00, !dbg !1241 + br i1 %cmp, label %if.then, label %if.end, !dbg !1243 + +if.then: ; preds = %entry + call void @llvm.dbg.value(metadata double 1.000000e+00, metadata !1214, metadata !DIExpression()), !dbg !1240 + br label %if.end, !dbg !1244 + +if.end: ; preds = %if.then, %entry + %t_m.0 = phi double [ 1.000000e+00, %if.then ], [ %call, %entry ], !dbg !1240 + call void @llvm.dbg.value(metadata double %t_m.0, metadata !1214, metadata !DIExpression()), !dbg !1240 + call void @llvm.dbg.value(metadata i32 1, metadata !1212, metadata !DIExpression()), !dbg !1240 + br label %for.cond, !dbg !1245 + +for.cond: ; preds = %for.inc, %if.end + %i.0 = phi i32 [ 1, %if.end ], [ %inc, %for.inc ], !dbg !1247 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !1212, metadata !DIExpression()), !dbg !1240 + %cmp8 = icmp sle i32 %i.0, 8, !dbg !1248 + br i1 %cmp8, label %for.body, label %for.end, !dbg !1250 + +for.body: ; preds = %for.cond + %call9 = call double @timer_read(i32 %i.0), !dbg !1251 + call void @llvm.dbg.value(metadata double %call9, metadata !1213, metadata !DIExpression()), !dbg !1240 + %idxprom = sext i32 %i.0 to i64, !dbg !1253 + %arrayidx10 = getelementptr inbounds [9 x i8*], [9 x i8*]* %tstrings, i64 0, i64 %idxprom, !dbg !1253 + %1 = load i8*, i8** %arrayidx10, align 8, !dbg !1253, !tbaa !1223 + %mul = fmul double %call9, 1.000000e+02, !dbg !1254 + %div = fdiv double %mul, %t_m.0, !dbg !1255 + %call11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.22, i64 0, i64 0), i32 %i.0, i8* %1, double %call9, double %div), !dbg !1256 + br label %for.inc, !dbg !1257 + +for.inc: ; preds = %for.body + %inc = add nsw i32 %i.0, 1, !dbg !1258 + call void @llvm.dbg.value(metadata i32 %inc, metadata !1212, metadata !DIExpression()), !dbg !1240 + br label %for.cond, !dbg !1259, !llvm.loop !1260 + +for.end: ; preds = %for.cond + %2 = bitcast [9 x i8*]* %tstrings to i8*, !dbg !1262 + call void @llvm.lifetime.end.p0i8(i64 72, i8* %2) #6, !dbg !1262 + ret void, !dbg !1262 +} + +; Function Attrs: nounwind uwtable +define internal i32 @ilog2(i32 %n) #0 !dbg !1263 { +entry: + call void @llvm.dbg.value(metadata i32 %n, metadata !1267, metadata !DIExpression()), !dbg !1270 + %cmp = icmp eq i32 %n, 1, !dbg !1271 + br i1 %cmp, label %if.then, label %if.end, !dbg !1273 + +if.then: ; preds = %entry + br label %cleanup, !dbg !1274 + +if.end: ; preds = %entry + call void @llvm.dbg.value(metadata i32 1, metadata !1269, metadata !DIExpression()), !dbg !1270 + call void @llvm.dbg.value(metadata i32 2, metadata !1268, metadata !DIExpression()), !dbg !1270 + br label %while.cond, !dbg !1275 + +while.cond: ; preds = %while.body, %if.end + %nn.0 = phi i32 [ 2, %if.end ], [ %mul, %while.body ], !dbg !1270 + %lg.0 = phi i32 [ 1, %if.end ], [ %add, %while.body ], !dbg !1270 + call void @llvm.dbg.value(metadata i32 %lg.0, metadata !1269, metadata !DIExpression()), !dbg !1270 + call void @llvm.dbg.value(metadata i32 %nn.0, metadata !1268, metadata !DIExpression()), !dbg !1270 + %cmp1 = icmp slt i32 %nn.0, %n, !dbg !1276 + br i1 %cmp1, label %while.body, label %while.end, !dbg !1275 + +while.body: ; preds = %while.cond + %mul = mul nsw i32 %nn.0, 2, !dbg !1277 + call void @llvm.dbg.value(metadata i32 %mul, metadata !1268, metadata !DIExpression()), !dbg !1270 + %add = add nsw i32 %lg.0, 1, !dbg !1279 + call void @llvm.dbg.value(metadata i32 %add, metadata !1269, metadata !DIExpression()), !dbg !1270 + br label %while.cond, !dbg !1275, !llvm.loop !1280 + +while.end: ; preds = %while.cond + br label %cleanup, !dbg !1282 + +cleanup: ; preds = %while.end, %if.then + %retval.0 = phi i32 [ 0, %if.then ], [ %lg.0, %while.end ], !dbg !1270 + ret i32 %retval.0, !dbg !1283 +} + +; Function Attrs: nounwind +declare dso_local double @cos(double) #4 + +; Function Attrs: nounwind +declare dso_local double @sin(double) #4 + +; Function Attrs: nounwind uwtable +define internal void @cffts1_pos(i32 %is, i32 %d1, i32 %d2, i32 %d3) #0 !dbg !1284 { +entry: + call void @llvm.dbg.value(metadata i32 %is, metadata !1286, metadata !DIExpression()), !dbg !1324 + call void @llvm.dbg.value(metadata i32 %d1, metadata !1287, metadata !DIExpression()), !dbg !1324 + call void @llvm.dbg.value(metadata i32 %d2, metadata !1288, metadata !DIExpression()), !dbg !1324 + call void @llvm.dbg.value(metadata i32 %d3, metadata !1289, metadata !DIExpression()), !dbg !1324 + call void @llvm.dbg.declare(metadata !1325, metadata !1294, metadata !DIExpression()), !dbg !1326 + %call = call i32 @ilog2(i32 %d1), !dbg !1327 + call void @llvm.dbg.value(metadata i32 %call, metadata !1290, metadata !DIExpression()), !dbg !1324 + call void @llvm.dbg.value(metadata i32 0, metadata !1293, metadata !DIExpression()), !dbg !1324 + br label %for.cond, !dbg !1328 + +for.cond: ; preds = %for.inc300, %entry + %k.0 = phi i32 [ 0, %entry ], [ %inc301, %for.inc300 ], !dbg !1331 + call void @llvm.dbg.value(metadata i32 %k.0, metadata !1293, metadata !DIExpression()), !dbg !1324 + %cmp = icmp slt i32 %k.0, %d3, !dbg !1332 + br i1 %cmp, label %for.body, label %for.end302, !dbg !1334 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 0, metadata !1292, metadata !DIExpression()), !dbg !1324 + br label %for.cond1, !dbg !1335 + +for.cond1: ; preds = %for.inc297, %for.body + %j.0 = phi i32 [ 0, %for.body ], [ %inc298, %for.inc297 ], !dbg !1338 + call void @llvm.dbg.value(metadata i32 %j.0, metadata !1292, metadata !DIExpression()), !dbg !1324 + %cmp2 = icmp slt i32 %j.0, %d2, !dbg !1339 + br i1 %cmp2, label %for.body3, label %for.end299, !dbg !1341 + +for.body3: ; preds = %for.cond1 + call void @llvm.dbg.value(metadata i32 0, metadata !1291, metadata !DIExpression()), !dbg !1324 + br label %for.cond4, !dbg !1342 + +for.cond4: ; preds = %for.inc, %for.body3 + %i.0 = phi i32 [ 0, %for.body3 ], [ %inc, %for.inc ], !dbg !1345 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !1291, metadata !DIExpression()), !dbg !1324 + %cmp5 = icmp slt i32 %i.0, %d1, !dbg !1346 + br i1 %cmp5, label %for.body6, label %for.end, !dbg !1348 + +for.body6: ; preds = %for.cond4 + %mul = mul nsw i32 %k.0, %d2, !dbg !1349 + %add = add nsw i32 %d1, 1, !dbg !1351 + %mul7 = mul nsw i32 %mul, %add, !dbg !1352 + %add8 = add nsw i32 %d1, 1, !dbg !1353 + %mul9 = mul nsw i32 %j.0, %add8, !dbg !1354 + %add10 = add nsw i32 %mul7, %mul9, !dbg !1355 + %add11 = add nsw i32 %add10, %i.0, !dbg !1356 + %idxprom = sext i32 %add11 to i64, !dbg !1357 + %arrayidx = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_real, i64 0, i64 %idxprom, !dbg !1357 + %0 = load double, double* %arrayidx, align 8, !dbg !1357, !tbaa !249 + %idxprom12 = sext i32 %k.0 to i64, !dbg !1358 + %arrayidx13 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom12, !dbg !1358 + %idxprom14 = sext i32 %i.0 to i64, !dbg !1358 + %arrayidx15 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx13, i64 0, i64 %idxprom14, !dbg !1358 + %idxprom16 = sext i32 %j.0 to i64, !dbg !1358 + %arrayidx17 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx15, i64 0, i64 %idxprom16, !dbg !1358 + store double %0, double* %arrayidx17, align 8, !dbg !1359, !tbaa !249 + %mul18 = mul nsw i32 %k.0, %d2, !dbg !1360 + %add19 = add nsw i32 %d1, 1, !dbg !1361 + %mul20 = mul nsw i32 %mul18, %add19, !dbg !1362 + %add21 = add nsw i32 %d1, 1, !dbg !1363 + %mul22 = mul nsw i32 %j.0, %add21, !dbg !1364 + %add23 = add nsw i32 %mul20, %mul22, !dbg !1365 + %add24 = add nsw i32 %add23, %i.0, !dbg !1366 + %idxprom25 = sext i32 %add24 to i64, !dbg !1367 + %arrayidx26 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_imag, i64 0, i64 %idxprom25, !dbg !1367 + %1 = load double, double* %arrayidx26, align 8, !dbg !1367, !tbaa !249 + %idxprom27 = sext i32 %k.0 to i64, !dbg !1368 + %arrayidx28 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom27, !dbg !1368 + %idxprom29 = sext i32 %i.0 to i64, !dbg !1368 + %arrayidx30 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx28, i64 0, i64 %idxprom29, !dbg !1368 + %idxprom31 = sext i32 %j.0 to i64, !dbg !1368 + %arrayidx32 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx30, i64 0, i64 %idxprom31, !dbg !1368 + store double %1, double* %arrayidx32, align 8, !dbg !1369, !tbaa !249 + br label %for.inc, !dbg !1370 + +for.inc: ; preds = %for.body6 + %inc = add nsw i32 %i.0, 1, !dbg !1371 + call void @llvm.dbg.value(metadata i32 %inc, metadata !1291, metadata !DIExpression()), !dbg !1324 + br label %for.cond4, !dbg !1372, !llvm.loop !1373 + +for.end: ; preds = %for.cond4 + call void @llvm.dbg.value(metadata i32 1, metadata !1295, metadata !DIExpression()), !dbg !1324 + br label %for.cond33, !dbg !1375 + +for.cond33: ; preds = %for.inc258, %for.end + %l.0 = phi i32 [ 1, %for.end ], [ %add259, %for.inc258 ], !dbg !1377 + call void @llvm.dbg.value(metadata i32 %l.0, metadata !1295, metadata !DIExpression()), !dbg !1324 + %cmp34 = icmp sle i32 %l.0, %call, !dbg !1378 + br i1 %cmp34, label %for.body35, label %for.end260, !dbg !1380 + +for.body35: ; preds = %for.cond33 + %div = sdiv i32 %d1, 2, !dbg !1381 + call void @llvm.dbg.value(metadata i32 %div, metadata !1299, metadata !DIExpression()), !dbg !1324 + %sub = sub nsw i32 %l.0, 1, !dbg !1383 + %shl = shl i32 1, %sub, !dbg !1384 + call void @llvm.dbg.value(metadata i32 %shl, metadata !1302, metadata !DIExpression()), !dbg !1324 + %sub36 = sub nsw i32 %call, %l.0, !dbg !1385 + %shl37 = shl i32 1, %sub36, !dbg !1386 + call void @llvm.dbg.value(metadata i32 %shl37, metadata !1300, metadata !DIExpression()), !dbg !1324 + %mul38 = mul nsw i32 2, %shl, !dbg !1387 + call void @llvm.dbg.value(metadata i32 %mul38, metadata !1301, metadata !DIExpression()), !dbg !1324 + call void @llvm.dbg.value(metadata i32 %shl37, metadata !1303, metadata !DIExpression()), !dbg !1324 + call void @llvm.dbg.value(metadata i32 0, metadata !1297, metadata !DIExpression()), !dbg !1324 + br label %for.cond39, !dbg !1388 + +for.cond39: ; preds = %for.inc126, %for.body35 + %i1.0 = phi i32 [ 0, %for.body35 ], [ %inc127, %for.inc126 ], !dbg !1390 + call void @llvm.dbg.value(metadata i32 %i1.0, metadata !1297, metadata !DIExpression()), !dbg !1324 + %sub40 = sub nsw i32 %shl37, 1, !dbg !1391 + %cmp41 = icmp sle i32 %i1.0, %sub40, !dbg !1393 + br i1 %cmp41, label %for.body42, label %for.end128, !dbg !1394 + +for.body42: ; preds = %for.cond39 + call void @llvm.dbg.value(metadata i32 0, metadata !1298, metadata !DIExpression()), !dbg !1324 + br label %for.cond43, !dbg !1395 + +for.cond43: ; preds = %for.inc123, %for.body42 + %k1.0 = phi i32 [ 0, %for.body42 ], [ %inc124, %for.inc123 ], !dbg !1398 + call void @llvm.dbg.value(metadata i32 %k1.0, metadata !1298, metadata !DIExpression()), !dbg !1324 + %sub44 = sub nsw i32 %shl, 1, !dbg !1399 + %cmp45 = icmp sle i32 %k1.0, %sub44, !dbg !1401 + br i1 %cmp45, label %for.body46, label %for.end125, !dbg !1402 + +for.body46: ; preds = %for.cond43 + %mul47 = mul nsw i32 %i1.0, %shl, !dbg !1403 + call void @llvm.dbg.value(metadata i32 %mul47, metadata !1304, metadata !DIExpression()), !dbg !1324 + %add48 = add nsw i32 %mul47, %div, !dbg !1405 + call void @llvm.dbg.value(metadata i32 %add48, metadata !1305, metadata !DIExpression()), !dbg !1324 + %mul49 = mul nsw i32 %i1.0, %mul38, !dbg !1406 + call void @llvm.dbg.value(metadata i32 %mul49, metadata !1306, metadata !DIExpression()), !dbg !1324 + %add50 = add nsw i32 %mul49, %shl, !dbg !1407 + call void @llvm.dbg.value(metadata i32 %add50, metadata !1307, metadata !DIExpression()), !dbg !1324 + %add51 = add nsw i32 %shl37, %i1.0, !dbg !1408 + %idxprom52 = sext i32 %add51 to i64, !dbg !1409 + %arrayidx53 = getelementptr inbounds [257 x double], [257 x double]* @u_real, i64 0, i64 %idxprom52, !dbg !1409 + %2 = load double, double* %arrayidx53, align 8, !dbg !1409, !tbaa !249 + call void @llvm.dbg.value(metadata double %2, metadata !1308, metadata !DIExpression()), !dbg !1324 + %add54 = add nsw i32 %shl37, %i1.0, !dbg !1410 + %idxprom55 = sext i32 %add54 to i64, !dbg !1411 + %arrayidx56 = getelementptr inbounds [257 x double], [257 x double]* @u_imag, i64 0, i64 %idxprom55, !dbg !1411 + %3 = load double, double* %arrayidx56, align 8, !dbg !1411, !tbaa !249 + call void @llvm.dbg.value(metadata double %3, metadata !1311, metadata !DIExpression()), !dbg !1324 + %idxprom57 = sext i32 %k.0 to i64, !dbg !1412 + %arrayidx58 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom57, !dbg !1412 + %add59 = add nsw i32 %mul47, %k1.0, !dbg !1413 + %idxprom60 = sext i32 %add59 to i64, !dbg !1412 + %arrayidx61 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx58, i64 0, i64 %idxprom60, !dbg !1412 + %idxprom62 = sext i32 %j.0 to i64, !dbg !1412 + %arrayidx63 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx61, i64 0, i64 %idxprom62, !dbg !1412 + %4 = load double, double* %arrayidx63, align 8, !dbg !1412, !tbaa !249 + call void @llvm.dbg.value(metadata double %4, metadata !1309, metadata !DIExpression()), !dbg !1324 + %idxprom64 = sext i32 %k.0 to i64, !dbg !1414 + %arrayidx65 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom64, !dbg !1414 + %add66 = add nsw i32 %mul47, %k1.0, !dbg !1415 + %idxprom67 = sext i32 %add66 to i64, !dbg !1414 + %arrayidx68 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx65, i64 0, i64 %idxprom67, !dbg !1414 + %idxprom69 = sext i32 %j.0 to i64, !dbg !1414 + %arrayidx70 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx68, i64 0, i64 %idxprom69, !dbg !1414 + %5 = load double, double* %arrayidx70, align 8, !dbg !1414, !tbaa !249 + call void @llvm.dbg.value(metadata double %5, metadata !1312, metadata !DIExpression()), !dbg !1324 + %idxprom71 = sext i32 %k.0 to i64, !dbg !1416 + %arrayidx72 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom71, !dbg !1416 + %add73 = add nsw i32 %add48, %k1.0, !dbg !1417 + %idxprom74 = sext i32 %add73 to i64, !dbg !1416 + %arrayidx75 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx72, i64 0, i64 %idxprom74, !dbg !1416 + %idxprom76 = sext i32 %j.0 to i64, !dbg !1416 + %arrayidx77 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx75, i64 0, i64 %idxprom76, !dbg !1416 + %6 = load double, double* %arrayidx77, align 8, !dbg !1416, !tbaa !249 + call void @llvm.dbg.value(metadata double %6, metadata !1310, metadata !DIExpression()), !dbg !1324 + %idxprom78 = sext i32 %k.0 to i64, !dbg !1418 + %arrayidx79 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom78, !dbg !1418 + %add80 = add nsw i32 %add48, %k1.0, !dbg !1419 + %idxprom81 = sext i32 %add80 to i64, !dbg !1418 + %arrayidx82 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx79, i64 0, i64 %idxprom81, !dbg !1418 + %idxprom83 = sext i32 %j.0 to i64, !dbg !1418 + %arrayidx84 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx82, i64 0, i64 %idxprom83, !dbg !1418 + %7 = load double, double* %arrayidx84, align 8, !dbg !1418, !tbaa !249 + call void @llvm.dbg.value(metadata double %7, metadata !1313, metadata !DIExpression()), !dbg !1324 + %add85 = fadd double %4, %6, !dbg !1420 + %idxprom86 = sext i32 %k.0 to i64, !dbg !1421 + %arrayidx87 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom86, !dbg !1421 + %add88 = add nsw i32 %mul49, %k1.0, !dbg !1422 + %idxprom89 = sext i32 %add88 to i64, !dbg !1421 + %arrayidx90 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx87, i64 0, i64 %idxprom89, !dbg !1421 + %idxprom91 = sext i32 %j.0 to i64, !dbg !1421 + %arrayidx92 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx90, i64 0, i64 %idxprom91, !dbg !1421 + store double %add85, double* %arrayidx92, align 8, !dbg !1423, !tbaa !249 + %add93 = fadd double %5, %7, !dbg !1424 + %idxprom94 = sext i32 %k.0 to i64, !dbg !1425 + %arrayidx95 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom94, !dbg !1425 + %add96 = add nsw i32 %mul49, %k1.0, !dbg !1426 + %idxprom97 = sext i32 %add96 to i64, !dbg !1425 + %arrayidx98 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx95, i64 0, i64 %idxprom97, !dbg !1425 + %idxprom99 = sext i32 %j.0 to i64, !dbg !1425 + %arrayidx100 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx98, i64 0, i64 %idxprom99, !dbg !1425 + store double %add93, double* %arrayidx100, align 8, !dbg !1427, !tbaa !249 + %sub101 = fsub double %4, %6, !dbg !1428 + call void @llvm.dbg.value(metadata double %sub101, metadata !1320, metadata !DIExpression()), !dbg !1324 + %sub102 = fsub double %5, %7, !dbg !1429 + call void @llvm.dbg.value(metadata double %sub102, metadata !1322, metadata !DIExpression()), !dbg !1324 + %mul103 = fmul double %2, %sub101, !dbg !1430 + %mul104 = fmul double %3, %sub102, !dbg !1431 + %sub105 = fsub double %mul103, %mul104, !dbg !1432 + %idxprom106 = sext i32 %k.0 to i64, !dbg !1433 + %arrayidx107 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom106, !dbg !1433 + %add108 = add nsw i32 %add50, %k1.0, !dbg !1434 + %idxprom109 = sext i32 %add108 to i64, !dbg !1433 + %arrayidx110 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx107, i64 0, i64 %idxprom109, !dbg !1433 + %idxprom111 = sext i32 %j.0 to i64, !dbg !1433 + %arrayidx112 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx110, i64 0, i64 %idxprom111, !dbg !1433 + store double %sub105, double* %arrayidx112, align 8, !dbg !1435, !tbaa !249 + %mul113 = fmul double %2, %sub102, !dbg !1436 + %mul114 = fmul double %3, %sub101, !dbg !1437 + %add115 = fadd double %mul113, %mul114, !dbg !1438 + %idxprom116 = sext i32 %k.0 to i64, !dbg !1439 + %arrayidx117 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom116, !dbg !1439 + %add118 = add nsw i32 %add50, %k1.0, !dbg !1440 + %idxprom119 = sext i32 %add118 to i64, !dbg !1439 + %arrayidx120 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx117, i64 0, i64 %idxprom119, !dbg !1439 + %idxprom121 = sext i32 %j.0 to i64, !dbg !1439 + %arrayidx122 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx120, i64 0, i64 %idxprom121, !dbg !1439 + store double %add115, double* %arrayidx122, align 8, !dbg !1441, !tbaa !249 + br label %for.inc123, !dbg !1442 + +for.inc123: ; preds = %for.body46 + %inc124 = add nsw i32 %k1.0, 1, !dbg !1443 + call void @llvm.dbg.value(metadata i32 %inc124, metadata !1298, metadata !DIExpression()), !dbg !1324 + br label %for.cond43, !dbg !1444, !llvm.loop !1445 + +for.end125: ; preds = %for.cond43 + br label %for.inc126, !dbg !1447 + +for.inc126: ; preds = %for.end125 + %inc127 = add nsw i32 %i1.0, 1, !dbg !1448 + call void @llvm.dbg.value(metadata i32 %inc127, metadata !1297, metadata !DIExpression()), !dbg !1324 + br label %for.cond39, !dbg !1449, !llvm.loop !1450 + +for.end128: ; preds = %for.cond39 + %cmp129 = icmp eq i32 %l.0, %call, !dbg !1452 + br i1 %cmp129, label %if.then, label %if.else, !dbg !1454 + +if.then: ; preds = %for.end128 + call void @llvm.dbg.value(metadata i32 0, metadata !1296, metadata !DIExpression()), !dbg !1324 + br label %for.cond130, !dbg !1455 + +for.cond130: ; preds = %for.inc157, %if.then + %j1.0 = phi i32 [ 0, %if.then ], [ %inc158, %for.inc157 ], !dbg !1458 + call void @llvm.dbg.value(metadata i32 %j1.0, metadata !1296, metadata !DIExpression()), !dbg !1324 + %cmp131 = icmp slt i32 %j1.0, %d1, !dbg !1459 + br i1 %cmp131, label %for.body132, label %for.end159, !dbg !1461 + +for.body132: ; preds = %for.cond130 + %idxprom133 = sext i32 %k.0 to i64, !dbg !1462 + %arrayidx134 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom133, !dbg !1462 + %idxprom135 = sext i32 %j1.0 to i64, !dbg !1462 + %arrayidx136 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx134, i64 0, i64 %idxprom135, !dbg !1462 + %idxprom137 = sext i32 %j.0 to i64, !dbg !1462 + %arrayidx138 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx136, i64 0, i64 %idxprom137, !dbg !1462 + %8 = load double, double* %arrayidx138, align 8, !dbg !1462, !tbaa !249 + %idxprom139 = sext i32 %k.0 to i64, !dbg !1464 + %arrayidx140 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom139, !dbg !1464 + %idxprom141 = sext i32 %j1.0 to i64, !dbg !1464 + %arrayidx142 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx140, i64 0, i64 %idxprom141, !dbg !1464 + %idxprom143 = sext i32 %j.0 to i64, !dbg !1464 + %arrayidx144 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx142, i64 0, i64 %idxprom143, !dbg !1464 + store double %8, double* %arrayidx144, align 8, !dbg !1465, !tbaa !249 + %idxprom145 = sext i32 %k.0 to i64, !dbg !1466 + %arrayidx146 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom145, !dbg !1466 + %idxprom147 = sext i32 %j1.0 to i64, !dbg !1466 + %arrayidx148 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx146, i64 0, i64 %idxprom147, !dbg !1466 + %idxprom149 = sext i32 %j.0 to i64, !dbg !1466 + %arrayidx150 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx148, i64 0, i64 %idxprom149, !dbg !1466 + %9 = load double, double* %arrayidx150, align 8, !dbg !1466, !tbaa !249 + %idxprom151 = sext i32 %k.0 to i64, !dbg !1467 + %arrayidx152 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom151, !dbg !1467 + %idxprom153 = sext i32 %j1.0 to i64, !dbg !1467 + %arrayidx154 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx152, i64 0, i64 %idxprom153, !dbg !1467 + %idxprom155 = sext i32 %j.0 to i64, !dbg !1467 + %arrayidx156 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx154, i64 0, i64 %idxprom155, !dbg !1467 + store double %9, double* %arrayidx156, align 8, !dbg !1468, !tbaa !249 + br label %for.inc157, !dbg !1469 + +for.inc157: ; preds = %for.body132 + %inc158 = add nsw i32 %j1.0, 1, !dbg !1470 + call void @llvm.dbg.value(metadata i32 %inc158, metadata !1296, metadata !DIExpression()), !dbg !1324 + br label %for.cond130, !dbg !1471, !llvm.loop !1472 + +for.end159: ; preds = %for.cond130 + br label %if.end, !dbg !1474 + +if.else: ; preds = %for.end128 + %div160 = sdiv i32 %d1, 2, !dbg !1475 + call void @llvm.dbg.value(metadata i32 %div160, metadata !1299, metadata !DIExpression()), !dbg !1324 + %add161 = add nsw i32 %l.0, 1, !dbg !1477 + %sub162 = sub nsw i32 %add161, 1, !dbg !1478 + %shl163 = shl i32 1, %sub162, !dbg !1479 + call void @llvm.dbg.value(metadata i32 %shl163, metadata !1302, metadata !DIExpression()), !dbg !1324 + %add164 = add nsw i32 %l.0, 1, !dbg !1480 + %sub165 = sub nsw i32 %call, %add164, !dbg !1481 + %shl166 = shl i32 1, %sub165, !dbg !1482 + call void @llvm.dbg.value(metadata i32 %shl166, metadata !1300, metadata !DIExpression()), !dbg !1324 + %mul167 = mul nsw i32 2, %shl163, !dbg !1483 + call void @llvm.dbg.value(metadata i32 %mul167, metadata !1301, metadata !DIExpression()), !dbg !1324 + call void @llvm.dbg.value(metadata i32 %shl166, metadata !1303, metadata !DIExpression()), !dbg !1324 + call void @llvm.dbg.value(metadata i32 0, metadata !1297, metadata !DIExpression()), !dbg !1324 + br label %for.cond168, !dbg !1484 + +for.cond168: ; preds = %for.inc255, %if.else + %i1.1 = phi i32 [ 0, %if.else ], [ %inc256, %for.inc255 ], !dbg !1486 + call void @llvm.dbg.value(metadata i32 %i1.1, metadata !1297, metadata !DIExpression()), !dbg !1324 + %sub169 = sub nsw i32 %shl166, 1, !dbg !1487 + %cmp170 = icmp sle i32 %i1.1, %sub169, !dbg !1489 + br i1 %cmp170, label %for.body171, label %for.end257, !dbg !1490 + +for.body171: ; preds = %for.cond168 + call void @llvm.dbg.value(metadata i32 0, metadata !1298, metadata !DIExpression()), !dbg !1324 + br label %for.cond172, !dbg !1491 + +for.cond172: ; preds = %for.inc252, %for.body171 + %k1.1 = phi i32 [ 0, %for.body171 ], [ %inc253, %for.inc252 ], !dbg !1494 + call void @llvm.dbg.value(metadata i32 %k1.1, metadata !1298, metadata !DIExpression()), !dbg !1324 + %sub173 = sub nsw i32 %shl163, 1, !dbg !1495 + %cmp174 = icmp sle i32 %k1.1, %sub173, !dbg !1497 + br i1 %cmp174, label %for.body175, label %for.end254, !dbg !1498 + +for.body175: ; preds = %for.cond172 + %mul176 = mul nsw i32 %i1.1, %shl163, !dbg !1499 + call void @llvm.dbg.value(metadata i32 %mul176, metadata !1304, metadata !DIExpression()), !dbg !1324 + %add177 = add nsw i32 %mul176, %div160, !dbg !1501 + call void @llvm.dbg.value(metadata i32 %add177, metadata !1305, metadata !DIExpression()), !dbg !1324 + %mul178 = mul nsw i32 %i1.1, %mul167, !dbg !1502 + call void @llvm.dbg.value(metadata i32 %mul178, metadata !1306, metadata !DIExpression()), !dbg !1324 + %add179 = add nsw i32 %mul178, %shl163, !dbg !1503 + call void @llvm.dbg.value(metadata i32 %add179, metadata !1307, metadata !DIExpression()), !dbg !1324 + %add180 = add nsw i32 %shl166, %i1.1, !dbg !1504 + %idxprom181 = sext i32 %add180 to i64, !dbg !1505 + %arrayidx182 = getelementptr inbounds [257 x double], [257 x double]* @u_real, i64 0, i64 %idxprom181, !dbg !1505 + %10 = load double, double* %arrayidx182, align 8, !dbg !1505, !tbaa !249 + call void @llvm.dbg.value(metadata double %10, metadata !1314, metadata !DIExpression()), !dbg !1324 + %add183 = add nsw i32 %shl166, %i1.1, !dbg !1506 + %idxprom184 = sext i32 %add183 to i64, !dbg !1507 + %arrayidx185 = getelementptr inbounds [257 x double], [257 x double]* @u_imag, i64 0, i64 %idxprom184, !dbg !1507 + %11 = load double, double* %arrayidx185, align 8, !dbg !1507, !tbaa !249 + call void @llvm.dbg.value(metadata double %11, metadata !1317, metadata !DIExpression()), !dbg !1324 + %idxprom186 = sext i32 %k.0 to i64, !dbg !1508 + %arrayidx187 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom186, !dbg !1508 + %add188 = add nsw i32 %mul176, %k1.1, !dbg !1509 + %idxprom189 = sext i32 %add188 to i64, !dbg !1508 + %arrayidx190 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx187, i64 0, i64 %idxprom189, !dbg !1508 + %idxprom191 = sext i32 %j.0 to i64, !dbg !1508 + %arrayidx192 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx190, i64 0, i64 %idxprom191, !dbg !1508 + %12 = load double, double* %arrayidx192, align 8, !dbg !1508, !tbaa !249 + call void @llvm.dbg.value(metadata double %12, metadata !1315, metadata !DIExpression()), !dbg !1324 + %idxprom193 = sext i32 %k.0 to i64, !dbg !1510 + %arrayidx194 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom193, !dbg !1510 + %add195 = add nsw i32 %mul176, %k1.1, !dbg !1511 + %idxprom196 = sext i32 %add195 to i64, !dbg !1510 + %arrayidx197 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx194, i64 0, i64 %idxprom196, !dbg !1510 + %idxprom198 = sext i32 %j.0 to i64, !dbg !1510 + %arrayidx199 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx197, i64 0, i64 %idxprom198, !dbg !1510 + %13 = load double, double* %arrayidx199, align 8, !dbg !1510, !tbaa !249 + call void @llvm.dbg.value(metadata double %13, metadata !1318, metadata !DIExpression()), !dbg !1324 + %idxprom200 = sext i32 %k.0 to i64, !dbg !1512 + %arrayidx201 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom200, !dbg !1512 + %add202 = add nsw i32 %add177, %k1.1, !dbg !1513 + %idxprom203 = sext i32 %add202 to i64, !dbg !1512 + %arrayidx204 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx201, i64 0, i64 %idxprom203, !dbg !1512 + %idxprom205 = sext i32 %j.0 to i64, !dbg !1512 + %arrayidx206 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx204, i64 0, i64 %idxprom205, !dbg !1512 + %14 = load double, double* %arrayidx206, align 8, !dbg !1512, !tbaa !249 + call void @llvm.dbg.value(metadata double %14, metadata !1316, metadata !DIExpression()), !dbg !1324 + %idxprom207 = sext i32 %k.0 to i64, !dbg !1514 + %arrayidx208 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom207, !dbg !1514 + %add209 = add nsw i32 %add177, %k1.1, !dbg !1515 + %idxprom210 = sext i32 %add209 to i64, !dbg !1514 + %arrayidx211 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx208, i64 0, i64 %idxprom210, !dbg !1514 + %idxprom212 = sext i32 %j.0 to i64, !dbg !1514 + %arrayidx213 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx211, i64 0, i64 %idxprom212, !dbg !1514 + %15 = load double, double* %arrayidx213, align 8, !dbg !1514, !tbaa !249 + call void @llvm.dbg.value(metadata double %15, metadata !1319, metadata !DIExpression()), !dbg !1324 + %add214 = fadd double %12, %14, !dbg !1516 + %idxprom215 = sext i32 %k.0 to i64, !dbg !1517 + %arrayidx216 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom215, !dbg !1517 + %add217 = add nsw i32 %mul178, %k1.1, !dbg !1518 + %idxprom218 = sext i32 %add217 to i64, !dbg !1517 + %arrayidx219 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx216, i64 0, i64 %idxprom218, !dbg !1517 + %idxprom220 = sext i32 %j.0 to i64, !dbg !1517 + %arrayidx221 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx219, i64 0, i64 %idxprom220, !dbg !1517 + store double %add214, double* %arrayidx221, align 8, !dbg !1519, !tbaa !249 + %add222 = fadd double %13, %15, !dbg !1520 + %idxprom223 = sext i32 %k.0 to i64, !dbg !1521 + %arrayidx224 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom223, !dbg !1521 + %add225 = add nsw i32 %mul178, %k1.1, !dbg !1522 + %idxprom226 = sext i32 %add225 to i64, !dbg !1521 + %arrayidx227 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx224, i64 0, i64 %idxprom226, !dbg !1521 + %idxprom228 = sext i32 %j.0 to i64, !dbg !1521 + %arrayidx229 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx227, i64 0, i64 %idxprom228, !dbg !1521 + store double %add222, double* %arrayidx229, align 8, !dbg !1523, !tbaa !249 + %sub230 = fsub double %12, %14, !dbg !1524 + call void @llvm.dbg.value(metadata double %sub230, metadata !1321, metadata !DIExpression()), !dbg !1324 + %sub231 = fsub double %13, %15, !dbg !1525 + call void @llvm.dbg.value(metadata double %sub231, metadata !1323, metadata !DIExpression()), !dbg !1324 + %mul232 = fmul double %10, %sub230, !dbg !1526 + %mul233 = fmul double %11, %sub231, !dbg !1527 + %sub234 = fsub double %mul232, %mul233, !dbg !1528 + %idxprom235 = sext i32 %k.0 to i64, !dbg !1529 + %arrayidx236 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom235, !dbg !1529 + %add237 = add nsw i32 %add179, %k1.1, !dbg !1530 + %idxprom238 = sext i32 %add237 to i64, !dbg !1529 + %arrayidx239 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx236, i64 0, i64 %idxprom238, !dbg !1529 + %idxprom240 = sext i32 %j.0 to i64, !dbg !1529 + %arrayidx241 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx239, i64 0, i64 %idxprom240, !dbg !1529 + store double %sub234, double* %arrayidx241, align 8, !dbg !1531, !tbaa !249 + %mul242 = fmul double %10, %sub231, !dbg !1532 + %mul243 = fmul double %11, %sub230, !dbg !1533 + %add244 = fadd double %mul242, %mul243, !dbg !1534 + %idxprom245 = sext i32 %k.0 to i64, !dbg !1535 + %arrayidx246 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom245, !dbg !1535 + %add247 = add nsw i32 %add179, %k1.1, !dbg !1536 + %idxprom248 = sext i32 %add247 to i64, !dbg !1535 + %arrayidx249 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx246, i64 0, i64 %idxprom248, !dbg !1535 + %idxprom250 = sext i32 %j.0 to i64, !dbg !1535 + %arrayidx251 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx249, i64 0, i64 %idxprom250, !dbg !1535 + store double %add244, double* %arrayidx251, align 8, !dbg !1537, !tbaa !249 + br label %for.inc252, !dbg !1538 + +for.inc252: ; preds = %for.body175 + %inc253 = add nsw i32 %k1.1, 1, !dbg !1539 + call void @llvm.dbg.value(metadata i32 %inc253, metadata !1298, metadata !DIExpression()), !dbg !1324 + br label %for.cond172, !dbg !1540, !llvm.loop !1541 + +for.end254: ; preds = %for.cond172 + br label %for.inc255, !dbg !1543 + +for.inc255: ; preds = %for.end254 + %inc256 = add nsw i32 %i1.1, 1, !dbg !1544 + call void @llvm.dbg.value(metadata i32 %inc256, metadata !1297, metadata !DIExpression()), !dbg !1324 + br label %for.cond168, !dbg !1545, !llvm.loop !1546 + +for.end257: ; preds = %for.cond168 + br label %if.end + +if.end: ; preds = %for.end257, %for.end159 + br label %for.inc258, !dbg !1548 + +for.inc258: ; preds = %if.end + %add259 = add nsw i32 %l.0, 2, !dbg !1549 + call void @llvm.dbg.value(metadata i32 %add259, metadata !1295, metadata !DIExpression()), !dbg !1324 + br label %for.cond33, !dbg !1550, !llvm.loop !1551 + +for.end260: ; preds = %for.cond33 + call void @llvm.dbg.value(metadata i32 0, metadata !1291, metadata !DIExpression()), !dbg !1324 + br label %for.cond261, !dbg !1553 + +for.cond261: ; preds = %for.inc294, %for.end260 + %i.1 = phi i32 [ 0, %for.end260 ], [ %inc295, %for.inc294 ], !dbg !1555 + call void @llvm.dbg.value(metadata i32 %i.1, metadata !1291, metadata !DIExpression()), !dbg !1324 + %cmp262 = icmp slt i32 %i.1, %d1, !dbg !1556 + br i1 %cmp262, label %for.body263, label %for.end296, !dbg !1558 + +for.body263: ; preds = %for.cond261 + %idxprom264 = sext i32 %k.0 to i64, !dbg !1559 + %arrayidx265 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom264, !dbg !1559 + %idxprom266 = sext i32 %i.1 to i64, !dbg !1559 + %arrayidx267 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx265, i64 0, i64 %idxprom266, !dbg !1559 + %idxprom268 = sext i32 %j.0 to i64, !dbg !1559 + %arrayidx269 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx267, i64 0, i64 %idxprom268, !dbg !1559 + %16 = load double, double* %arrayidx269, align 8, !dbg !1559, !tbaa !249 + %mul270 = mul nsw i32 %k.0, %d2, !dbg !1561 + %add271 = add nsw i32 %d1, 1, !dbg !1562 + %mul272 = mul nsw i32 %mul270, %add271, !dbg !1563 + %add273 = add nsw i32 %d1, 1, !dbg !1564 + %mul274 = mul nsw i32 %j.0, %add273, !dbg !1565 + %add275 = add nsw i32 %mul272, %mul274, !dbg !1566 + %add276 = add nsw i32 %add275, %i.1, !dbg !1567 + %idxprom277 = sext i32 %add276 to i64, !dbg !1568 + %arrayidx278 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_real, i64 0, i64 %idxprom277, !dbg !1568 + store double %16, double* %arrayidx278, align 8, !dbg !1569, !tbaa !249 + %idxprom279 = sext i32 %k.0 to i64, !dbg !1570 + %arrayidx280 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom279, !dbg !1570 + %idxprom281 = sext i32 %i.1 to i64, !dbg !1570 + %arrayidx282 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx280, i64 0, i64 %idxprom281, !dbg !1570 + %idxprom283 = sext i32 %j.0 to i64, !dbg !1570 + %arrayidx284 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx282, i64 0, i64 %idxprom283, !dbg !1570 + %17 = load double, double* %arrayidx284, align 8, !dbg !1570, !tbaa !249 + %mul285 = mul nsw i32 %k.0, %d2, !dbg !1571 + %add286 = add nsw i32 %d1, 1, !dbg !1572 + %mul287 = mul nsw i32 %mul285, %add286, !dbg !1573 + %add288 = add nsw i32 %d1, 1, !dbg !1574 + %mul289 = mul nsw i32 %j.0, %add288, !dbg !1575 + %add290 = add nsw i32 %mul287, %mul289, !dbg !1576 + %add291 = add nsw i32 %add290, %i.1, !dbg !1577 + %idxprom292 = sext i32 %add291 to i64, !dbg !1578 + %arrayidx293 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_imag, i64 0, i64 %idxprom292, !dbg !1578 + store double %17, double* %arrayidx293, align 8, !dbg !1579, !tbaa !249 + br label %for.inc294, !dbg !1580 + +for.inc294: ; preds = %for.body263 + %inc295 = add nsw i32 %i.1, 1, !dbg !1581 + call void @llvm.dbg.value(metadata i32 %inc295, metadata !1291, metadata !DIExpression()), !dbg !1324 + br label %for.cond261, !dbg !1582, !llvm.loop !1583 + +for.end296: ; preds = %for.cond261 + br label %for.inc297, !dbg !1585 + +for.inc297: ; preds = %for.end296 + %inc298 = add nsw i32 %j.0, 1, !dbg !1586 + call void @llvm.dbg.value(metadata i32 %inc298, metadata !1292, metadata !DIExpression()), !dbg !1324 + br label %for.cond1, !dbg !1587, !llvm.loop !1588 + +for.end299: ; preds = %for.cond1 + br label %for.inc300, !dbg !1590 + +for.inc300: ; preds = %for.end299 + %inc301 = add nsw i32 %k.0, 1, !dbg !1591 + call void @llvm.dbg.value(metadata i32 %inc301, metadata !1293, metadata !DIExpression()), !dbg !1324 + br label %for.cond, !dbg !1592, !llvm.loop !1593 + +for.end302: ; preds = %for.cond + ret void, !dbg !1595 +} + +; Function Attrs: nounwind uwtable +define internal void @cffts2_pos(i32 %is, i32 %d1, i32 %d2, i32 %d3) #0 !dbg !1596 { +entry: + call void @llvm.dbg.value(metadata i32 %is, metadata !1598, metadata !DIExpression()), !dbg !1636 + call void @llvm.dbg.value(metadata i32 %d1, metadata !1599, metadata !DIExpression()), !dbg !1636 + call void @llvm.dbg.value(metadata i32 %d2, metadata !1600, metadata !DIExpression()), !dbg !1636 + call void @llvm.dbg.value(metadata i32 %d3, metadata !1601, metadata !DIExpression()), !dbg !1636 + call void @llvm.dbg.declare(metadata !1325, metadata !1606, metadata !DIExpression()), !dbg !1637 + %call = call i32 @ilog2(i32 %d2), !dbg !1638 + call void @llvm.dbg.value(metadata i32 %call, metadata !1602, metadata !DIExpression()), !dbg !1636 + call void @llvm.dbg.value(metadata i32 0, metadata !1605, metadata !DIExpression()), !dbg !1636 + br label %for.cond, !dbg !1639 + +for.cond: ; preds = %for.inc300, %entry + %k.0 = phi i32 [ 0, %entry ], [ %inc301, %for.inc300 ], !dbg !1642 + call void @llvm.dbg.value(metadata i32 %k.0, metadata !1605, metadata !DIExpression()), !dbg !1636 + %cmp = icmp slt i32 %k.0, %d3, !dbg !1643 + br i1 %cmp, label %for.body, label %for.end302, !dbg !1645 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 0, metadata !1603, metadata !DIExpression()), !dbg !1636 + br label %for.cond1, !dbg !1646 + +for.cond1: ; preds = %for.inc297, %for.body + %i.0 = phi i32 [ 0, %for.body ], [ %inc298, %for.inc297 ], !dbg !1649 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !1603, metadata !DIExpression()), !dbg !1636 + %cmp2 = icmp slt i32 %i.0, %d1, !dbg !1650 + br i1 %cmp2, label %for.body3, label %for.end299, !dbg !1652 + +for.body3: ; preds = %for.cond1 + call void @llvm.dbg.value(metadata i32 0, metadata !1604, metadata !DIExpression()), !dbg !1636 + br label %for.cond4, !dbg !1653 + +for.cond4: ; preds = %for.inc, %for.body3 + %j.0 = phi i32 [ 0, %for.body3 ], [ %inc, %for.inc ], !dbg !1656 + call void @llvm.dbg.value(metadata i32 %j.0, metadata !1604, metadata !DIExpression()), !dbg !1636 + %cmp5 = icmp slt i32 %j.0, %d2, !dbg !1657 + br i1 %cmp5, label %for.body6, label %for.end, !dbg !1659 + +for.body6: ; preds = %for.cond4 + %mul = mul nsw i32 %k.0, %d2, !dbg !1660 + %add = add nsw i32 %d1, 1, !dbg !1662 + %mul7 = mul nsw i32 %mul, %add, !dbg !1663 + %add8 = add nsw i32 %d1, 1, !dbg !1664 + %mul9 = mul nsw i32 %j.0, %add8, !dbg !1665 + %add10 = add nsw i32 %mul7, %mul9, !dbg !1666 + %add11 = add nsw i32 %add10, %i.0, !dbg !1667 + %idxprom = sext i32 %add11 to i64, !dbg !1668 + %arrayidx = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_real, i64 0, i64 %idxprom, !dbg !1668 + %0 = load double, double* %arrayidx, align 8, !dbg !1668, !tbaa !249 + %idxprom12 = sext i32 %k.0 to i64, !dbg !1669 + %arrayidx13 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom12, !dbg !1669 + %idxprom14 = sext i32 %j.0 to i64, !dbg !1669 + %arrayidx15 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx13, i64 0, i64 %idxprom14, !dbg !1669 + %idxprom16 = sext i32 %i.0 to i64, !dbg !1669 + %arrayidx17 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx15, i64 0, i64 %idxprom16, !dbg !1669 + store double %0, double* %arrayidx17, align 8, !dbg !1670, !tbaa !249 + %mul18 = mul nsw i32 %k.0, %d2, !dbg !1671 + %add19 = add nsw i32 %d1, 1, !dbg !1672 + %mul20 = mul nsw i32 %mul18, %add19, !dbg !1673 + %add21 = add nsw i32 %d1, 1, !dbg !1674 + %mul22 = mul nsw i32 %j.0, %add21, !dbg !1675 + %add23 = add nsw i32 %mul20, %mul22, !dbg !1676 + %add24 = add nsw i32 %add23, %i.0, !dbg !1677 + %idxprom25 = sext i32 %add24 to i64, !dbg !1678 + %arrayidx26 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_imag, i64 0, i64 %idxprom25, !dbg !1678 + %1 = load double, double* %arrayidx26, align 8, !dbg !1678, !tbaa !249 + %idxprom27 = sext i32 %k.0 to i64, !dbg !1679 + %arrayidx28 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom27, !dbg !1679 + %idxprom29 = sext i32 %j.0 to i64, !dbg !1679 + %arrayidx30 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx28, i64 0, i64 %idxprom29, !dbg !1679 + %idxprom31 = sext i32 %i.0 to i64, !dbg !1679 + %arrayidx32 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx30, i64 0, i64 %idxprom31, !dbg !1679 + store double %1, double* %arrayidx32, align 8, !dbg !1680, !tbaa !249 + br label %for.inc, !dbg !1681 + +for.inc: ; preds = %for.body6 + %inc = add nsw i32 %j.0, 1, !dbg !1682 + call void @llvm.dbg.value(metadata i32 %inc, metadata !1604, metadata !DIExpression()), !dbg !1636 + br label %for.cond4, !dbg !1683, !llvm.loop !1684 + +for.end: ; preds = %for.cond4 + call void @llvm.dbg.value(metadata i32 1, metadata !1607, metadata !DIExpression()), !dbg !1636 + br label %for.cond33, !dbg !1686 + +for.cond33: ; preds = %for.inc258, %for.end + %l.0 = phi i32 [ 1, %for.end ], [ %add259, %for.inc258 ], !dbg !1688 + call void @llvm.dbg.value(metadata i32 %l.0, metadata !1607, metadata !DIExpression()), !dbg !1636 + %cmp34 = icmp sle i32 %l.0, %call, !dbg !1689 + br i1 %cmp34, label %for.body35, label %for.end260, !dbg !1691 + +for.body35: ; preds = %for.cond33 + %div = sdiv i32 %d2, 2, !dbg !1692 + call void @llvm.dbg.value(metadata i32 %div, metadata !1611, metadata !DIExpression()), !dbg !1636 + %sub = sub nsw i32 %l.0, 1, !dbg !1694 + %shl = shl i32 1, %sub, !dbg !1695 + call void @llvm.dbg.value(metadata i32 %shl, metadata !1614, metadata !DIExpression()), !dbg !1636 + %sub36 = sub nsw i32 %call, %l.0, !dbg !1696 + %shl37 = shl i32 1, %sub36, !dbg !1697 + call void @llvm.dbg.value(metadata i32 %shl37, metadata !1612, metadata !DIExpression()), !dbg !1636 + %mul38 = mul nsw i32 2, %shl, !dbg !1698 + call void @llvm.dbg.value(metadata i32 %mul38, metadata !1613, metadata !DIExpression()), !dbg !1636 + call void @llvm.dbg.value(metadata i32 %shl37, metadata !1615, metadata !DIExpression()), !dbg !1636 + call void @llvm.dbg.value(metadata i32 0, metadata !1609, metadata !DIExpression()), !dbg !1636 + br label %for.cond39, !dbg !1699 + +for.cond39: ; preds = %for.inc126, %for.body35 + %i1.0 = phi i32 [ 0, %for.body35 ], [ %inc127, %for.inc126 ], !dbg !1701 + call void @llvm.dbg.value(metadata i32 %i1.0, metadata !1609, metadata !DIExpression()), !dbg !1636 + %sub40 = sub nsw i32 %shl37, 1, !dbg !1702 + %cmp41 = icmp sle i32 %i1.0, %sub40, !dbg !1704 + br i1 %cmp41, label %for.body42, label %for.end128, !dbg !1705 + +for.body42: ; preds = %for.cond39 + call void @llvm.dbg.value(metadata i32 0, metadata !1610, metadata !DIExpression()), !dbg !1636 + br label %for.cond43, !dbg !1706 + +for.cond43: ; preds = %for.inc123, %for.body42 + %k1.0 = phi i32 [ 0, %for.body42 ], [ %inc124, %for.inc123 ], !dbg !1709 + call void @llvm.dbg.value(metadata i32 %k1.0, metadata !1610, metadata !DIExpression()), !dbg !1636 + %sub44 = sub nsw i32 %shl, 1, !dbg !1710 + %cmp45 = icmp sle i32 %k1.0, %sub44, !dbg !1712 + br i1 %cmp45, label %for.body46, label %for.end125, !dbg !1713 + +for.body46: ; preds = %for.cond43 + %mul47 = mul nsw i32 %i1.0, %shl, !dbg !1714 + call void @llvm.dbg.value(metadata i32 %mul47, metadata !1616, metadata !DIExpression()), !dbg !1636 + %add48 = add nsw i32 %mul47, %div, !dbg !1716 + call void @llvm.dbg.value(metadata i32 %add48, metadata !1617, metadata !DIExpression()), !dbg !1636 + %mul49 = mul nsw i32 %i1.0, %mul38, !dbg !1717 + call void @llvm.dbg.value(metadata i32 %mul49, metadata !1618, metadata !DIExpression()), !dbg !1636 + %add50 = add nsw i32 %mul49, %shl, !dbg !1718 + call void @llvm.dbg.value(metadata i32 %add50, metadata !1619, metadata !DIExpression()), !dbg !1636 + %add51 = add nsw i32 %shl37, %i1.0, !dbg !1719 + %idxprom52 = sext i32 %add51 to i64, !dbg !1720 + %arrayidx53 = getelementptr inbounds [257 x double], [257 x double]* @u_real, i64 0, i64 %idxprom52, !dbg !1720 + %2 = load double, double* %arrayidx53, align 8, !dbg !1720, !tbaa !249 + call void @llvm.dbg.value(metadata double %2, metadata !1620, metadata !DIExpression()), !dbg !1636 + %add54 = add nsw i32 %shl37, %i1.0, !dbg !1721 + %idxprom55 = sext i32 %add54 to i64, !dbg !1722 + %arrayidx56 = getelementptr inbounds [257 x double], [257 x double]* @u_imag, i64 0, i64 %idxprom55, !dbg !1722 + %3 = load double, double* %arrayidx56, align 8, !dbg !1722, !tbaa !249 + call void @llvm.dbg.value(metadata double %3, metadata !1623, metadata !DIExpression()), !dbg !1636 + %idxprom57 = sext i32 %k.0 to i64, !dbg !1723 + %arrayidx58 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom57, !dbg !1723 + %add59 = add nsw i32 %mul47, %k1.0, !dbg !1724 + %idxprom60 = sext i32 %add59 to i64, !dbg !1723 + %arrayidx61 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx58, i64 0, i64 %idxprom60, !dbg !1723 + %idxprom62 = sext i32 %i.0 to i64, !dbg !1723 + %arrayidx63 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx61, i64 0, i64 %idxprom62, !dbg !1723 + %4 = load double, double* %arrayidx63, align 8, !dbg !1723, !tbaa !249 + call void @llvm.dbg.value(metadata double %4, metadata !1621, metadata !DIExpression()), !dbg !1636 + %idxprom64 = sext i32 %k.0 to i64, !dbg !1725 + %arrayidx65 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom64, !dbg !1725 + %add66 = add nsw i32 %mul47, %k1.0, !dbg !1726 + %idxprom67 = sext i32 %add66 to i64, !dbg !1725 + %arrayidx68 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx65, i64 0, i64 %idxprom67, !dbg !1725 + %idxprom69 = sext i32 %i.0 to i64, !dbg !1725 + %arrayidx70 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx68, i64 0, i64 %idxprom69, !dbg !1725 + %5 = load double, double* %arrayidx70, align 8, !dbg !1725, !tbaa !249 + call void @llvm.dbg.value(metadata double %5, metadata !1624, metadata !DIExpression()), !dbg !1636 + %idxprom71 = sext i32 %k.0 to i64, !dbg !1727 + %arrayidx72 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom71, !dbg !1727 + %add73 = add nsw i32 %add48, %k1.0, !dbg !1728 + %idxprom74 = sext i32 %add73 to i64, !dbg !1727 + %arrayidx75 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx72, i64 0, i64 %idxprom74, !dbg !1727 + %idxprom76 = sext i32 %i.0 to i64, !dbg !1727 + %arrayidx77 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx75, i64 0, i64 %idxprom76, !dbg !1727 + %6 = load double, double* %arrayidx77, align 8, !dbg !1727, !tbaa !249 + call void @llvm.dbg.value(metadata double %6, metadata !1622, metadata !DIExpression()), !dbg !1636 + %idxprom78 = sext i32 %k.0 to i64, !dbg !1729 + %arrayidx79 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom78, !dbg !1729 + %add80 = add nsw i32 %add48, %k1.0, !dbg !1730 + %idxprom81 = sext i32 %add80 to i64, !dbg !1729 + %arrayidx82 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx79, i64 0, i64 %idxprom81, !dbg !1729 + %idxprom83 = sext i32 %i.0 to i64, !dbg !1729 + %arrayidx84 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx82, i64 0, i64 %idxprom83, !dbg !1729 + %7 = load double, double* %arrayidx84, align 8, !dbg !1729, !tbaa !249 + call void @llvm.dbg.value(metadata double %7, metadata !1625, metadata !DIExpression()), !dbg !1636 + %add85 = fadd double %4, %6, !dbg !1731 + %idxprom86 = sext i32 %k.0 to i64, !dbg !1732 + %arrayidx87 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom86, !dbg !1732 + %add88 = add nsw i32 %mul49, %k1.0, !dbg !1733 + %idxprom89 = sext i32 %add88 to i64, !dbg !1732 + %arrayidx90 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx87, i64 0, i64 %idxprom89, !dbg !1732 + %idxprom91 = sext i32 %i.0 to i64, !dbg !1732 + %arrayidx92 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx90, i64 0, i64 %idxprom91, !dbg !1732 + store double %add85, double* %arrayidx92, align 8, !dbg !1734, !tbaa !249 + %add93 = fadd double %5, %7, !dbg !1735 + %idxprom94 = sext i32 %k.0 to i64, !dbg !1736 + %arrayidx95 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom94, !dbg !1736 + %add96 = add nsw i32 %mul49, %k1.0, !dbg !1737 + %idxprom97 = sext i32 %add96 to i64, !dbg !1736 + %arrayidx98 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx95, i64 0, i64 %idxprom97, !dbg !1736 + %idxprom99 = sext i32 %i.0 to i64, !dbg !1736 + %arrayidx100 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx98, i64 0, i64 %idxprom99, !dbg !1736 + store double %add93, double* %arrayidx100, align 8, !dbg !1738, !tbaa !249 + %sub101 = fsub double %4, %6, !dbg !1739 + call void @llvm.dbg.value(metadata double %sub101, metadata !1632, metadata !DIExpression()), !dbg !1636 + %sub102 = fsub double %5, %7, !dbg !1740 + call void @llvm.dbg.value(metadata double %sub102, metadata !1634, metadata !DIExpression()), !dbg !1636 + %mul103 = fmul double %2, %sub101, !dbg !1741 + %mul104 = fmul double %3, %sub102, !dbg !1742 + %sub105 = fsub double %mul103, %mul104, !dbg !1743 + %idxprom106 = sext i32 %k.0 to i64, !dbg !1744 + %arrayidx107 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom106, !dbg !1744 + %add108 = add nsw i32 %add50, %k1.0, !dbg !1745 + %idxprom109 = sext i32 %add108 to i64, !dbg !1744 + %arrayidx110 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx107, i64 0, i64 %idxprom109, !dbg !1744 + %idxprom111 = sext i32 %i.0 to i64, !dbg !1744 + %arrayidx112 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx110, i64 0, i64 %idxprom111, !dbg !1744 + store double %sub105, double* %arrayidx112, align 8, !dbg !1746, !tbaa !249 + %mul113 = fmul double %2, %sub102, !dbg !1747 + %mul114 = fmul double %3, %sub101, !dbg !1748 + %add115 = fadd double %mul113, %mul114, !dbg !1749 + %idxprom116 = sext i32 %k.0 to i64, !dbg !1750 + %arrayidx117 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom116, !dbg !1750 + %add118 = add nsw i32 %add50, %k1.0, !dbg !1751 + %idxprom119 = sext i32 %add118 to i64, !dbg !1750 + %arrayidx120 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx117, i64 0, i64 %idxprom119, !dbg !1750 + %idxprom121 = sext i32 %i.0 to i64, !dbg !1750 + %arrayidx122 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx120, i64 0, i64 %idxprom121, !dbg !1750 + store double %add115, double* %arrayidx122, align 8, !dbg !1752, !tbaa !249 + br label %for.inc123, !dbg !1753 + +for.inc123: ; preds = %for.body46 + %inc124 = add nsw i32 %k1.0, 1, !dbg !1754 + call void @llvm.dbg.value(metadata i32 %inc124, metadata !1610, metadata !DIExpression()), !dbg !1636 + br label %for.cond43, !dbg !1755, !llvm.loop !1756 + +for.end125: ; preds = %for.cond43 + br label %for.inc126, !dbg !1758 + +for.inc126: ; preds = %for.end125 + %inc127 = add nsw i32 %i1.0, 1, !dbg !1759 + call void @llvm.dbg.value(metadata i32 %inc127, metadata !1609, metadata !DIExpression()), !dbg !1636 + br label %for.cond39, !dbg !1760, !llvm.loop !1761 + +for.end128: ; preds = %for.cond39 + %cmp129 = icmp eq i32 %l.0, %call, !dbg !1763 + br i1 %cmp129, label %if.then, label %if.else, !dbg !1765 + +if.then: ; preds = %for.end128 + call void @llvm.dbg.value(metadata i32 0, metadata !1608, metadata !DIExpression()), !dbg !1636 + br label %for.cond130, !dbg !1766 + +for.cond130: ; preds = %for.inc157, %if.then + %j1.0 = phi i32 [ 0, %if.then ], [ %inc158, %for.inc157 ], !dbg !1769 + call void @llvm.dbg.value(metadata i32 %j1.0, metadata !1608, metadata !DIExpression()), !dbg !1636 + %cmp131 = icmp slt i32 %j1.0, %d1, !dbg !1770 + br i1 %cmp131, label %for.body132, label %for.end159, !dbg !1772 + +for.body132: ; preds = %for.cond130 + %idxprom133 = sext i32 %k.0 to i64, !dbg !1773 + %arrayidx134 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom133, !dbg !1773 + %idxprom135 = sext i32 %j1.0 to i64, !dbg !1773 + %arrayidx136 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx134, i64 0, i64 %idxprom135, !dbg !1773 + %idxprom137 = sext i32 %i.0 to i64, !dbg !1773 + %arrayidx138 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx136, i64 0, i64 %idxprom137, !dbg !1773 + %8 = load double, double* %arrayidx138, align 8, !dbg !1773, !tbaa !249 + %idxprom139 = sext i32 %k.0 to i64, !dbg !1775 + %arrayidx140 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom139, !dbg !1775 + %idxprom141 = sext i32 %j1.0 to i64, !dbg !1775 + %arrayidx142 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx140, i64 0, i64 %idxprom141, !dbg !1775 + %idxprom143 = sext i32 %i.0 to i64, !dbg !1775 + %arrayidx144 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx142, i64 0, i64 %idxprom143, !dbg !1775 + store double %8, double* %arrayidx144, align 8, !dbg !1776, !tbaa !249 + %idxprom145 = sext i32 %k.0 to i64, !dbg !1777 + %arrayidx146 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom145, !dbg !1777 + %idxprom147 = sext i32 %j1.0 to i64, !dbg !1777 + %arrayidx148 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx146, i64 0, i64 %idxprom147, !dbg !1777 + %idxprom149 = sext i32 %i.0 to i64, !dbg !1777 + %arrayidx150 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx148, i64 0, i64 %idxprom149, !dbg !1777 + %9 = load double, double* %arrayidx150, align 8, !dbg !1777, !tbaa !249 + %idxprom151 = sext i32 %k.0 to i64, !dbg !1778 + %arrayidx152 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom151, !dbg !1778 + %idxprom153 = sext i32 %j1.0 to i64, !dbg !1778 + %arrayidx154 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx152, i64 0, i64 %idxprom153, !dbg !1778 + %idxprom155 = sext i32 %i.0 to i64, !dbg !1778 + %arrayidx156 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx154, i64 0, i64 %idxprom155, !dbg !1778 + store double %9, double* %arrayidx156, align 8, !dbg !1779, !tbaa !249 + br label %for.inc157, !dbg !1780 + +for.inc157: ; preds = %for.body132 + %inc158 = add nsw i32 %j1.0, 1, !dbg !1781 + call void @llvm.dbg.value(metadata i32 %inc158, metadata !1608, metadata !DIExpression()), !dbg !1636 + br label %for.cond130, !dbg !1782, !llvm.loop !1783 + +for.end159: ; preds = %for.cond130 + br label %if.end, !dbg !1785 + +if.else: ; preds = %for.end128 + %div160 = sdiv i32 %d2, 2, !dbg !1786 + call void @llvm.dbg.value(metadata i32 %div160, metadata !1611, metadata !DIExpression()), !dbg !1636 + %add161 = add nsw i32 %l.0, 1, !dbg !1788 + %sub162 = sub nsw i32 %add161, 1, !dbg !1789 + %shl163 = shl i32 1, %sub162, !dbg !1790 + call void @llvm.dbg.value(metadata i32 %shl163, metadata !1614, metadata !DIExpression()), !dbg !1636 + %add164 = add nsw i32 %l.0, 1, !dbg !1791 + %sub165 = sub nsw i32 %call, %add164, !dbg !1792 + %shl166 = shl i32 1, %sub165, !dbg !1793 + call void @llvm.dbg.value(metadata i32 %shl166, metadata !1612, metadata !DIExpression()), !dbg !1636 + %mul167 = mul nsw i32 2, %shl163, !dbg !1794 + call void @llvm.dbg.value(metadata i32 %mul167, metadata !1613, metadata !DIExpression()), !dbg !1636 + call void @llvm.dbg.value(metadata i32 %shl166, metadata !1615, metadata !DIExpression()), !dbg !1636 + call void @llvm.dbg.value(metadata i32 0, metadata !1609, metadata !DIExpression()), !dbg !1636 + br label %for.cond168, !dbg !1795 + +for.cond168: ; preds = %for.inc255, %if.else + %i1.1 = phi i32 [ 0, %if.else ], [ %inc256, %for.inc255 ], !dbg !1797 + call void @llvm.dbg.value(metadata i32 %i1.1, metadata !1609, metadata !DIExpression()), !dbg !1636 + %sub169 = sub nsw i32 %shl166, 1, !dbg !1798 + %cmp170 = icmp sle i32 %i1.1, %sub169, !dbg !1800 + br i1 %cmp170, label %for.body171, label %for.end257, !dbg !1801 + +for.body171: ; preds = %for.cond168 + call void @llvm.dbg.value(metadata i32 0, metadata !1610, metadata !DIExpression()), !dbg !1636 + br label %for.cond172, !dbg !1802 + +for.cond172: ; preds = %for.inc252, %for.body171 + %k1.1 = phi i32 [ 0, %for.body171 ], [ %inc253, %for.inc252 ], !dbg !1805 + call void @llvm.dbg.value(metadata i32 %k1.1, metadata !1610, metadata !DIExpression()), !dbg !1636 + %sub173 = sub nsw i32 %shl163, 1, !dbg !1806 + %cmp174 = icmp sle i32 %k1.1, %sub173, !dbg !1808 + br i1 %cmp174, label %for.body175, label %for.end254, !dbg !1809 + +for.body175: ; preds = %for.cond172 + %mul176 = mul nsw i32 %i1.1, %shl163, !dbg !1810 + call void @llvm.dbg.value(metadata i32 %mul176, metadata !1616, metadata !DIExpression()), !dbg !1636 + %add177 = add nsw i32 %mul176, %div160, !dbg !1812 + call void @llvm.dbg.value(metadata i32 %add177, metadata !1617, metadata !DIExpression()), !dbg !1636 + %mul178 = mul nsw i32 %i1.1, %mul167, !dbg !1813 + call void @llvm.dbg.value(metadata i32 %mul178, metadata !1618, metadata !DIExpression()), !dbg !1636 + %add179 = add nsw i32 %mul178, %shl163, !dbg !1814 + call void @llvm.dbg.value(metadata i32 %add179, metadata !1619, metadata !DIExpression()), !dbg !1636 + %add180 = add nsw i32 %shl166, %i1.1, !dbg !1815 + %idxprom181 = sext i32 %add180 to i64, !dbg !1816 + %arrayidx182 = getelementptr inbounds [257 x double], [257 x double]* @u_real, i64 0, i64 %idxprom181, !dbg !1816 + %10 = load double, double* %arrayidx182, align 8, !dbg !1816, !tbaa !249 + call void @llvm.dbg.value(metadata double %10, metadata !1626, metadata !DIExpression()), !dbg !1636 + %add183 = add nsw i32 %shl166, %i1.1, !dbg !1817 + %idxprom184 = sext i32 %add183 to i64, !dbg !1818 + %arrayidx185 = getelementptr inbounds [257 x double], [257 x double]* @u_imag, i64 0, i64 %idxprom184, !dbg !1818 + %11 = load double, double* %arrayidx185, align 8, !dbg !1818, !tbaa !249 + call void @llvm.dbg.value(metadata double %11, metadata !1629, metadata !DIExpression()), !dbg !1636 + %idxprom186 = sext i32 %k.0 to i64, !dbg !1819 + %arrayidx187 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom186, !dbg !1819 + %add188 = add nsw i32 %mul176, %k1.1, !dbg !1820 + %idxprom189 = sext i32 %add188 to i64, !dbg !1819 + %arrayidx190 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx187, i64 0, i64 %idxprom189, !dbg !1819 + %idxprom191 = sext i32 %i.0 to i64, !dbg !1819 + %arrayidx192 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx190, i64 0, i64 %idxprom191, !dbg !1819 + %12 = load double, double* %arrayidx192, align 8, !dbg !1819, !tbaa !249 + call void @llvm.dbg.value(metadata double %12, metadata !1627, metadata !DIExpression()), !dbg !1636 + %idxprom193 = sext i32 %k.0 to i64, !dbg !1821 + %arrayidx194 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom193, !dbg !1821 + %add195 = add nsw i32 %mul176, %k1.1, !dbg !1822 + %idxprom196 = sext i32 %add195 to i64, !dbg !1821 + %arrayidx197 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx194, i64 0, i64 %idxprom196, !dbg !1821 + %idxprom198 = sext i32 %i.0 to i64, !dbg !1821 + %arrayidx199 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx197, i64 0, i64 %idxprom198, !dbg !1821 + %13 = load double, double* %arrayidx199, align 8, !dbg !1821, !tbaa !249 + call void @llvm.dbg.value(metadata double %13, metadata !1630, metadata !DIExpression()), !dbg !1636 + %idxprom200 = sext i32 %k.0 to i64, !dbg !1823 + %arrayidx201 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom200, !dbg !1823 + %add202 = add nsw i32 %add177, %k1.1, !dbg !1824 + %idxprom203 = sext i32 %add202 to i64, !dbg !1823 + %arrayidx204 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx201, i64 0, i64 %idxprom203, !dbg !1823 + %idxprom205 = sext i32 %i.0 to i64, !dbg !1823 + %arrayidx206 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx204, i64 0, i64 %idxprom205, !dbg !1823 + %14 = load double, double* %arrayidx206, align 8, !dbg !1823, !tbaa !249 + call void @llvm.dbg.value(metadata double %14, metadata !1628, metadata !DIExpression()), !dbg !1636 + %idxprom207 = sext i32 %k.0 to i64, !dbg !1825 + %arrayidx208 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom207, !dbg !1825 + %add209 = add nsw i32 %add177, %k1.1, !dbg !1826 + %idxprom210 = sext i32 %add209 to i64, !dbg !1825 + %arrayidx211 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx208, i64 0, i64 %idxprom210, !dbg !1825 + %idxprom212 = sext i32 %i.0 to i64, !dbg !1825 + %arrayidx213 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx211, i64 0, i64 %idxprom212, !dbg !1825 + %15 = load double, double* %arrayidx213, align 8, !dbg !1825, !tbaa !249 + call void @llvm.dbg.value(metadata double %15, metadata !1631, metadata !DIExpression()), !dbg !1636 + %add214 = fadd double %12, %14, !dbg !1827 + %idxprom215 = sext i32 %k.0 to i64, !dbg !1828 + %arrayidx216 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom215, !dbg !1828 + %add217 = add nsw i32 %mul178, %k1.1, !dbg !1829 + %idxprom218 = sext i32 %add217 to i64, !dbg !1828 + %arrayidx219 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx216, i64 0, i64 %idxprom218, !dbg !1828 + %idxprom220 = sext i32 %i.0 to i64, !dbg !1828 + %arrayidx221 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx219, i64 0, i64 %idxprom220, !dbg !1828 + store double %add214, double* %arrayidx221, align 8, !dbg !1830, !tbaa !249 + %add222 = fadd double %13, %15, !dbg !1831 + %idxprom223 = sext i32 %k.0 to i64, !dbg !1832 + %arrayidx224 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom223, !dbg !1832 + %add225 = add nsw i32 %mul178, %k1.1, !dbg !1833 + %idxprom226 = sext i32 %add225 to i64, !dbg !1832 + %arrayidx227 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx224, i64 0, i64 %idxprom226, !dbg !1832 + %idxprom228 = sext i32 %i.0 to i64, !dbg !1832 + %arrayidx229 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx227, i64 0, i64 %idxprom228, !dbg !1832 + store double %add222, double* %arrayidx229, align 8, !dbg !1834, !tbaa !249 + %sub230 = fsub double %12, %14, !dbg !1835 + call void @llvm.dbg.value(metadata double %sub230, metadata !1633, metadata !DIExpression()), !dbg !1636 + %sub231 = fsub double %13, %15, !dbg !1836 + call void @llvm.dbg.value(metadata double %sub231, metadata !1635, metadata !DIExpression()), !dbg !1636 + %mul232 = fmul double %10, %sub230, !dbg !1837 + %mul233 = fmul double %11, %sub231, !dbg !1838 + %sub234 = fsub double %mul232, %mul233, !dbg !1839 + %idxprom235 = sext i32 %k.0 to i64, !dbg !1840 + %arrayidx236 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom235, !dbg !1840 + %add237 = add nsw i32 %add179, %k1.1, !dbg !1841 + %idxprom238 = sext i32 %add237 to i64, !dbg !1840 + %arrayidx239 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx236, i64 0, i64 %idxprom238, !dbg !1840 + %idxprom240 = sext i32 %i.0 to i64, !dbg !1840 + %arrayidx241 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx239, i64 0, i64 %idxprom240, !dbg !1840 + store double %sub234, double* %arrayidx241, align 8, !dbg !1842, !tbaa !249 + %mul242 = fmul double %10, %sub231, !dbg !1843 + %mul243 = fmul double %11, %sub230, !dbg !1844 + %add244 = fadd double %mul242, %mul243, !dbg !1845 + %idxprom245 = sext i32 %k.0 to i64, !dbg !1846 + %arrayidx246 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom245, !dbg !1846 + %add247 = add nsw i32 %add179, %k1.1, !dbg !1847 + %idxprom248 = sext i32 %add247 to i64, !dbg !1846 + %arrayidx249 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx246, i64 0, i64 %idxprom248, !dbg !1846 + %idxprom250 = sext i32 %i.0 to i64, !dbg !1846 + %arrayidx251 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx249, i64 0, i64 %idxprom250, !dbg !1846 + store double %add244, double* %arrayidx251, align 8, !dbg !1848, !tbaa !249 + br label %for.inc252, !dbg !1849 + +for.inc252: ; preds = %for.body175 + %inc253 = add nsw i32 %k1.1, 1, !dbg !1850 + call void @llvm.dbg.value(metadata i32 %inc253, metadata !1610, metadata !DIExpression()), !dbg !1636 + br label %for.cond172, !dbg !1851, !llvm.loop !1852 + +for.end254: ; preds = %for.cond172 + br label %for.inc255, !dbg !1854 + +for.inc255: ; preds = %for.end254 + %inc256 = add nsw i32 %i1.1, 1, !dbg !1855 + call void @llvm.dbg.value(metadata i32 %inc256, metadata !1609, metadata !DIExpression()), !dbg !1636 + br label %for.cond168, !dbg !1856, !llvm.loop !1857 + +for.end257: ; preds = %for.cond168 + br label %if.end + +if.end: ; preds = %for.end257, %for.end159 + br label %for.inc258, !dbg !1859 + +for.inc258: ; preds = %if.end + %add259 = add nsw i32 %l.0, 2, !dbg !1860 + call void @llvm.dbg.value(metadata i32 %add259, metadata !1607, metadata !DIExpression()), !dbg !1636 + br label %for.cond33, !dbg !1861, !llvm.loop !1862 + +for.end260: ; preds = %for.cond33 + call void @llvm.dbg.value(metadata i32 0, metadata !1604, metadata !DIExpression()), !dbg !1636 + br label %for.cond261, !dbg !1864 + +for.cond261: ; preds = %for.inc294, %for.end260 + %j.1 = phi i32 [ 0, %for.end260 ], [ %inc295, %for.inc294 ], !dbg !1866 + call void @llvm.dbg.value(metadata i32 %j.1, metadata !1604, metadata !DIExpression()), !dbg !1636 + %cmp262 = icmp slt i32 %j.1, %d2, !dbg !1867 + br i1 %cmp262, label %for.body263, label %for.end296, !dbg !1869 + +for.body263: ; preds = %for.cond261 + %idxprom264 = sext i32 %k.0 to i64, !dbg !1870 + %arrayidx265 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom264, !dbg !1870 + %idxprom266 = sext i32 %j.1 to i64, !dbg !1870 + %arrayidx267 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx265, i64 0, i64 %idxprom266, !dbg !1870 + %idxprom268 = sext i32 %i.0 to i64, !dbg !1870 + %arrayidx269 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx267, i64 0, i64 %idxprom268, !dbg !1870 + %16 = load double, double* %arrayidx269, align 8, !dbg !1870, !tbaa !249 + %mul270 = mul nsw i32 %k.0, %d2, !dbg !1872 + %add271 = add nsw i32 %d1, 1, !dbg !1873 + %mul272 = mul nsw i32 %mul270, %add271, !dbg !1874 + %add273 = add nsw i32 %d1, 1, !dbg !1875 + %mul274 = mul nsw i32 %j.1, %add273, !dbg !1876 + %add275 = add nsw i32 %mul272, %mul274, !dbg !1877 + %add276 = add nsw i32 %add275, %i.0, !dbg !1878 + %idxprom277 = sext i32 %add276 to i64, !dbg !1879 + %arrayidx278 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_real, i64 0, i64 %idxprom277, !dbg !1879 + store double %16, double* %arrayidx278, align 8, !dbg !1880, !tbaa !249 + %idxprom279 = sext i32 %k.0 to i64, !dbg !1881 + %arrayidx280 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom279, !dbg !1881 + %idxprom281 = sext i32 %j.1 to i64, !dbg !1881 + %arrayidx282 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx280, i64 0, i64 %idxprom281, !dbg !1881 + %idxprom283 = sext i32 %i.0 to i64, !dbg !1881 + %arrayidx284 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx282, i64 0, i64 %idxprom283, !dbg !1881 + %17 = load double, double* %arrayidx284, align 8, !dbg !1881, !tbaa !249 + %mul285 = mul nsw i32 %k.0, %d2, !dbg !1882 + %add286 = add nsw i32 %d1, 1, !dbg !1883 + %mul287 = mul nsw i32 %mul285, %add286, !dbg !1884 + %add288 = add nsw i32 %d1, 1, !dbg !1885 + %mul289 = mul nsw i32 %j.1, %add288, !dbg !1886 + %add290 = add nsw i32 %mul287, %mul289, !dbg !1887 + %add291 = add nsw i32 %add290, %i.0, !dbg !1888 + %idxprom292 = sext i32 %add291 to i64, !dbg !1889 + %arrayidx293 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_imag, i64 0, i64 %idxprom292, !dbg !1889 + store double %17, double* %arrayidx293, align 8, !dbg !1890, !tbaa !249 + br label %for.inc294, !dbg !1891 + +for.inc294: ; preds = %for.body263 + %inc295 = add nsw i32 %j.1, 1, !dbg !1892 + call void @llvm.dbg.value(metadata i32 %inc295, metadata !1604, metadata !DIExpression()), !dbg !1636 + br label %for.cond261, !dbg !1893, !llvm.loop !1894 + +for.end296: ; preds = %for.cond261 + br label %for.inc297, !dbg !1896 + +for.inc297: ; preds = %for.end296 + %inc298 = add nsw i32 %i.0, 1, !dbg !1897 + call void @llvm.dbg.value(metadata i32 %inc298, metadata !1603, metadata !DIExpression()), !dbg !1636 + br label %for.cond1, !dbg !1898, !llvm.loop !1899 + +for.end299: ; preds = %for.cond1 + br label %for.inc300, !dbg !1901 + +for.inc300: ; preds = %for.end299 + %inc301 = add nsw i32 %k.0, 1, !dbg !1902 + call void @llvm.dbg.value(metadata i32 %inc301, metadata !1605, metadata !DIExpression()), !dbg !1636 + br label %for.cond, !dbg !1903, !llvm.loop !1904 + +for.end302: ; preds = %for.cond + ret void, !dbg !1906 +} + +; Function Attrs: nounwind uwtable +define internal void @cffts3_pos(i32 %is, i32 %d1, i32 %d2, i32 %d3) #0 !dbg !1907 { +entry: + call void @llvm.dbg.value(metadata i32 %is, metadata !1909, metadata !DIExpression()), !dbg !1947 + call void @llvm.dbg.value(metadata i32 %d1, metadata !1910, metadata !DIExpression()), !dbg !1947 + call void @llvm.dbg.value(metadata i32 %d2, metadata !1911, metadata !DIExpression()), !dbg !1947 + call void @llvm.dbg.value(metadata i32 %d3, metadata !1912, metadata !DIExpression()), !dbg !1947 + call void @llvm.dbg.declare(metadata !1325, metadata !1917, metadata !DIExpression()), !dbg !1948 + %call = call i32 @ilog2(i32 %d3), !dbg !1949 + call void @llvm.dbg.value(metadata i32 %call, metadata !1913, metadata !DIExpression()), !dbg !1947 + call void @llvm.dbg.value(metadata i32 0, metadata !1915, metadata !DIExpression()), !dbg !1947 + br label %for.cond, !dbg !1950 + +for.cond: ; preds = %for.inc300, %entry + %j.0 = phi i32 [ 0, %entry ], [ %inc301, %for.inc300 ], !dbg !1953 + call void @llvm.dbg.value(metadata i32 %j.0, metadata !1915, metadata !DIExpression()), !dbg !1947 + %cmp = icmp slt i32 %j.0, %d2, !dbg !1954 + br i1 %cmp, label %for.body, label %for.end302, !dbg !1956 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 0, metadata !1914, metadata !DIExpression()), !dbg !1947 + br label %for.cond1, !dbg !1957 + +for.cond1: ; preds = %for.inc297, %for.body + %i.0 = phi i32 [ 0, %for.body ], [ %inc298, %for.inc297 ], !dbg !1960 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !1914, metadata !DIExpression()), !dbg !1947 + %cmp2 = icmp slt i32 %i.0, %d1, !dbg !1961 + br i1 %cmp2, label %for.body3, label %for.end299, !dbg !1963 + +for.body3: ; preds = %for.cond1 + call void @llvm.dbg.value(metadata i32 0, metadata !1916, metadata !DIExpression()), !dbg !1947 + br label %for.cond4, !dbg !1964 + +for.cond4: ; preds = %for.inc, %for.body3 + %k.0 = phi i32 [ 0, %for.body3 ], [ %inc, %for.inc ], !dbg !1967 + call void @llvm.dbg.value(metadata i32 %k.0, metadata !1916, metadata !DIExpression()), !dbg !1947 + %cmp5 = icmp slt i32 %k.0, %d3, !dbg !1968 + br i1 %cmp5, label %for.body6, label %for.end, !dbg !1970 + +for.body6: ; preds = %for.cond4 + %mul = mul nsw i32 %k.0, %d2, !dbg !1971 + %add = add nsw i32 %d1, 1, !dbg !1973 + %mul7 = mul nsw i32 %mul, %add, !dbg !1974 + %add8 = add nsw i32 %d1, 1, !dbg !1975 + %mul9 = mul nsw i32 %j.0, %add8, !dbg !1976 + %add10 = add nsw i32 %mul7, %mul9, !dbg !1977 + %add11 = add nsw i32 %add10, %i.0, !dbg !1978 + %idxprom = sext i32 %add11 to i64, !dbg !1979 + %arrayidx = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_real, i64 0, i64 %idxprom, !dbg !1979 + %0 = load double, double* %arrayidx, align 8, !dbg !1979, !tbaa !249 + %idxprom12 = sext i32 %j.0 to i64, !dbg !1980 + %arrayidx13 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom12, !dbg !1980 + %idxprom14 = sext i32 %k.0 to i64, !dbg !1980 + %arrayidx15 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx13, i64 0, i64 %idxprom14, !dbg !1980 + %idxprom16 = sext i32 %i.0 to i64, !dbg !1980 + %arrayidx17 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx15, i64 0, i64 %idxprom16, !dbg !1980 + store double %0, double* %arrayidx17, align 8, !dbg !1981, !tbaa !249 + %mul18 = mul nsw i32 %k.0, %d2, !dbg !1982 + %add19 = add nsw i32 %d1, 1, !dbg !1983 + %mul20 = mul nsw i32 %mul18, %add19, !dbg !1984 + %add21 = add nsw i32 %d1, 1, !dbg !1985 + %mul22 = mul nsw i32 %j.0, %add21, !dbg !1986 + %add23 = add nsw i32 %mul20, %mul22, !dbg !1987 + %add24 = add nsw i32 %add23, %i.0, !dbg !1988 + %idxprom25 = sext i32 %add24 to i64, !dbg !1989 + %arrayidx26 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_imag, i64 0, i64 %idxprom25, !dbg !1989 + %1 = load double, double* %arrayidx26, align 8, !dbg !1989, !tbaa !249 + %idxprom27 = sext i32 %j.0 to i64, !dbg !1990 + %arrayidx28 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom27, !dbg !1990 + %idxprom29 = sext i32 %k.0 to i64, !dbg !1990 + %arrayidx30 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx28, i64 0, i64 %idxprom29, !dbg !1990 + %idxprom31 = sext i32 %i.0 to i64, !dbg !1990 + %arrayidx32 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx30, i64 0, i64 %idxprom31, !dbg !1990 + store double %1, double* %arrayidx32, align 8, !dbg !1991, !tbaa !249 + br label %for.inc, !dbg !1992 + +for.inc: ; preds = %for.body6 + %inc = add nsw i32 %k.0, 1, !dbg !1993 + call void @llvm.dbg.value(metadata i32 %inc, metadata !1916, metadata !DIExpression()), !dbg !1947 + br label %for.cond4, !dbg !1994, !llvm.loop !1995 + +for.end: ; preds = %for.cond4 + call void @llvm.dbg.value(metadata i32 1, metadata !1918, metadata !DIExpression()), !dbg !1947 + br label %for.cond33, !dbg !1997 + +for.cond33: ; preds = %for.inc258, %for.end + %l.0 = phi i32 [ 1, %for.end ], [ %add259, %for.inc258 ], !dbg !1999 + call void @llvm.dbg.value(metadata i32 %l.0, metadata !1918, metadata !DIExpression()), !dbg !1947 + %cmp34 = icmp sle i32 %l.0, %call, !dbg !2000 + br i1 %cmp34, label %for.body35, label %for.end260, !dbg !2002 + +for.body35: ; preds = %for.cond33 + %div = sdiv i32 %d3, 2, !dbg !2003 + call void @llvm.dbg.value(metadata i32 %div, metadata !1922, metadata !DIExpression()), !dbg !1947 + %sub = sub nsw i32 %l.0, 1, !dbg !2005 + %shl = shl i32 1, %sub, !dbg !2006 + call void @llvm.dbg.value(metadata i32 %shl, metadata !1925, metadata !DIExpression()), !dbg !1947 + %sub36 = sub nsw i32 %call, %l.0, !dbg !2007 + %shl37 = shl i32 1, %sub36, !dbg !2008 + call void @llvm.dbg.value(metadata i32 %shl37, metadata !1923, metadata !DIExpression()), !dbg !1947 + %mul38 = mul nsw i32 2, %shl, !dbg !2009 + call void @llvm.dbg.value(metadata i32 %mul38, metadata !1924, metadata !DIExpression()), !dbg !1947 + call void @llvm.dbg.value(metadata i32 %shl37, metadata !1926, metadata !DIExpression()), !dbg !1947 + call void @llvm.dbg.value(metadata i32 0, metadata !1920, metadata !DIExpression()), !dbg !1947 + br label %for.cond39, !dbg !2010 + +for.cond39: ; preds = %for.inc126, %for.body35 + %i1.0 = phi i32 [ 0, %for.body35 ], [ %inc127, %for.inc126 ], !dbg !2012 + call void @llvm.dbg.value(metadata i32 %i1.0, metadata !1920, metadata !DIExpression()), !dbg !1947 + %sub40 = sub nsw i32 %shl37, 1, !dbg !2013 + %cmp41 = icmp sle i32 %i1.0, %sub40, !dbg !2015 + br i1 %cmp41, label %for.body42, label %for.end128, !dbg !2016 + +for.body42: ; preds = %for.cond39 + call void @llvm.dbg.value(metadata i32 0, metadata !1921, metadata !DIExpression()), !dbg !1947 + br label %for.cond43, !dbg !2017 + +for.cond43: ; preds = %for.inc123, %for.body42 + %k1.0 = phi i32 [ 0, %for.body42 ], [ %inc124, %for.inc123 ], !dbg !2020 + call void @llvm.dbg.value(metadata i32 %k1.0, metadata !1921, metadata !DIExpression()), !dbg !1947 + %sub44 = sub nsw i32 %shl, 1, !dbg !2021 + %cmp45 = icmp sle i32 %k1.0, %sub44, !dbg !2023 + br i1 %cmp45, label %for.body46, label %for.end125, !dbg !2024 + +for.body46: ; preds = %for.cond43 + %mul47 = mul nsw i32 %i1.0, %shl, !dbg !2025 + call void @llvm.dbg.value(metadata i32 %mul47, metadata !1927, metadata !DIExpression()), !dbg !1947 + %add48 = add nsw i32 %mul47, %div, !dbg !2027 + call void @llvm.dbg.value(metadata i32 %add48, metadata !1928, metadata !DIExpression()), !dbg !1947 + %mul49 = mul nsw i32 %i1.0, %mul38, !dbg !2028 + call void @llvm.dbg.value(metadata i32 %mul49, metadata !1929, metadata !DIExpression()), !dbg !1947 + %add50 = add nsw i32 %mul49, %shl, !dbg !2029 + call void @llvm.dbg.value(metadata i32 %add50, metadata !1930, metadata !DIExpression()), !dbg !1947 + %add51 = add nsw i32 %shl37, %i1.0, !dbg !2030 + %idxprom52 = sext i32 %add51 to i64, !dbg !2031 + %arrayidx53 = getelementptr inbounds [257 x double], [257 x double]* @u_real, i64 0, i64 %idxprom52, !dbg !2031 + %2 = load double, double* %arrayidx53, align 8, !dbg !2031, !tbaa !249 + call void @llvm.dbg.value(metadata double %2, metadata !1931, metadata !DIExpression()), !dbg !1947 + %add54 = add nsw i32 %shl37, %i1.0, !dbg !2032 + %idxprom55 = sext i32 %add54 to i64, !dbg !2033 + %arrayidx56 = getelementptr inbounds [257 x double], [257 x double]* @u_imag, i64 0, i64 %idxprom55, !dbg !2033 + %3 = load double, double* %arrayidx56, align 8, !dbg !2033, !tbaa !249 + call void @llvm.dbg.value(metadata double %3, metadata !1934, metadata !DIExpression()), !dbg !1947 + %idxprom57 = sext i32 %j.0 to i64, !dbg !2034 + %arrayidx58 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom57, !dbg !2034 + %add59 = add nsw i32 %mul47, %k1.0, !dbg !2035 + %idxprom60 = sext i32 %add59 to i64, !dbg !2034 + %arrayidx61 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx58, i64 0, i64 %idxprom60, !dbg !2034 + %idxprom62 = sext i32 %i.0 to i64, !dbg !2034 + %arrayidx63 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx61, i64 0, i64 %idxprom62, !dbg !2034 + %4 = load double, double* %arrayidx63, align 8, !dbg !2034, !tbaa !249 + call void @llvm.dbg.value(metadata double %4, metadata !1932, metadata !DIExpression()), !dbg !1947 + %idxprom64 = sext i32 %j.0 to i64, !dbg !2036 + %arrayidx65 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom64, !dbg !2036 + %add66 = add nsw i32 %mul47, %k1.0, !dbg !2037 + %idxprom67 = sext i32 %add66 to i64, !dbg !2036 + %arrayidx68 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx65, i64 0, i64 %idxprom67, !dbg !2036 + %idxprom69 = sext i32 %i.0 to i64, !dbg !2036 + %arrayidx70 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx68, i64 0, i64 %idxprom69, !dbg !2036 + %5 = load double, double* %arrayidx70, align 8, !dbg !2036, !tbaa !249 + call void @llvm.dbg.value(metadata double %5, metadata !1935, metadata !DIExpression()), !dbg !1947 + %idxprom71 = sext i32 %j.0 to i64, !dbg !2038 + %arrayidx72 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom71, !dbg !2038 + %add73 = add nsw i32 %add48, %k1.0, !dbg !2039 + %idxprom74 = sext i32 %add73 to i64, !dbg !2038 + %arrayidx75 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx72, i64 0, i64 %idxprom74, !dbg !2038 + %idxprom76 = sext i32 %i.0 to i64, !dbg !2038 + %arrayidx77 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx75, i64 0, i64 %idxprom76, !dbg !2038 + %6 = load double, double* %arrayidx77, align 8, !dbg !2038, !tbaa !249 + call void @llvm.dbg.value(metadata double %6, metadata !1933, metadata !DIExpression()), !dbg !1947 + %idxprom78 = sext i32 %j.0 to i64, !dbg !2040 + %arrayidx79 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom78, !dbg !2040 + %add80 = add nsw i32 %add48, %k1.0, !dbg !2041 + %idxprom81 = sext i32 %add80 to i64, !dbg !2040 + %arrayidx82 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx79, i64 0, i64 %idxprom81, !dbg !2040 + %idxprom83 = sext i32 %i.0 to i64, !dbg !2040 + %arrayidx84 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx82, i64 0, i64 %idxprom83, !dbg !2040 + %7 = load double, double* %arrayidx84, align 8, !dbg !2040, !tbaa !249 + call void @llvm.dbg.value(metadata double %7, metadata !1936, metadata !DIExpression()), !dbg !1947 + %add85 = fadd double %4, %6, !dbg !2042 + %idxprom86 = sext i32 %j.0 to i64, !dbg !2043 + %arrayidx87 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom86, !dbg !2043 + %add88 = add nsw i32 %mul49, %k1.0, !dbg !2044 + %idxprom89 = sext i32 %add88 to i64, !dbg !2043 + %arrayidx90 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx87, i64 0, i64 %idxprom89, !dbg !2043 + %idxprom91 = sext i32 %i.0 to i64, !dbg !2043 + %arrayidx92 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx90, i64 0, i64 %idxprom91, !dbg !2043 + store double %add85, double* %arrayidx92, align 8, !dbg !2045, !tbaa !249 + %add93 = fadd double %5, %7, !dbg !2046 + %idxprom94 = sext i32 %j.0 to i64, !dbg !2047 + %arrayidx95 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom94, !dbg !2047 + %add96 = add nsw i32 %mul49, %k1.0, !dbg !2048 + %idxprom97 = sext i32 %add96 to i64, !dbg !2047 + %arrayidx98 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx95, i64 0, i64 %idxprom97, !dbg !2047 + %idxprom99 = sext i32 %i.0 to i64, !dbg !2047 + %arrayidx100 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx98, i64 0, i64 %idxprom99, !dbg !2047 + store double %add93, double* %arrayidx100, align 8, !dbg !2049, !tbaa !249 + %sub101 = fsub double %4, %6, !dbg !2050 + call void @llvm.dbg.value(metadata double %sub101, metadata !1943, metadata !DIExpression()), !dbg !1947 + %sub102 = fsub double %5, %7, !dbg !2051 + call void @llvm.dbg.value(metadata double %sub102, metadata !1945, metadata !DIExpression()), !dbg !1947 + %mul103 = fmul double %2, %sub101, !dbg !2052 + %mul104 = fmul double %3, %sub102, !dbg !2053 + %sub105 = fsub double %mul103, %mul104, !dbg !2054 + %idxprom106 = sext i32 %j.0 to i64, !dbg !2055 + %arrayidx107 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom106, !dbg !2055 + %add108 = add nsw i32 %add50, %k1.0, !dbg !2056 + %idxprom109 = sext i32 %add108 to i64, !dbg !2055 + %arrayidx110 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx107, i64 0, i64 %idxprom109, !dbg !2055 + %idxprom111 = sext i32 %i.0 to i64, !dbg !2055 + %arrayidx112 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx110, i64 0, i64 %idxprom111, !dbg !2055 + store double %sub105, double* %arrayidx112, align 8, !dbg !2057, !tbaa !249 + %mul113 = fmul double %2, %sub102, !dbg !2058 + %mul114 = fmul double %3, %sub101, !dbg !2059 + %add115 = fadd double %mul113, %mul114, !dbg !2060 + %idxprom116 = sext i32 %j.0 to i64, !dbg !2061 + %arrayidx117 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom116, !dbg !2061 + %add118 = add nsw i32 %add50, %k1.0, !dbg !2062 + %idxprom119 = sext i32 %add118 to i64, !dbg !2061 + %arrayidx120 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx117, i64 0, i64 %idxprom119, !dbg !2061 + %idxprom121 = sext i32 %i.0 to i64, !dbg !2061 + %arrayidx122 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx120, i64 0, i64 %idxprom121, !dbg !2061 + store double %add115, double* %arrayidx122, align 8, !dbg !2063, !tbaa !249 + br label %for.inc123, !dbg !2064 + +for.inc123: ; preds = %for.body46 + %inc124 = add nsw i32 %k1.0, 1, !dbg !2065 + call void @llvm.dbg.value(metadata i32 %inc124, metadata !1921, metadata !DIExpression()), !dbg !1947 + br label %for.cond43, !dbg !2066, !llvm.loop !2067 + +for.end125: ; preds = %for.cond43 + br label %for.inc126, !dbg !2069 + +for.inc126: ; preds = %for.end125 + %inc127 = add nsw i32 %i1.0, 1, !dbg !2070 + call void @llvm.dbg.value(metadata i32 %inc127, metadata !1920, metadata !DIExpression()), !dbg !1947 + br label %for.cond39, !dbg !2071, !llvm.loop !2072 + +for.end128: ; preds = %for.cond39 + %cmp129 = icmp eq i32 %l.0, %call, !dbg !2074 + br i1 %cmp129, label %if.then, label %if.else, !dbg !2076 + +if.then: ; preds = %for.end128 + call void @llvm.dbg.value(metadata i32 0, metadata !1919, metadata !DIExpression()), !dbg !1947 + br label %for.cond130, !dbg !2077 + +for.cond130: ; preds = %for.inc157, %if.then + %j1.0 = phi i32 [ 0, %if.then ], [ %inc158, %for.inc157 ], !dbg !2080 + call void @llvm.dbg.value(metadata i32 %j1.0, metadata !1919, metadata !DIExpression()), !dbg !1947 + %cmp131 = icmp slt i32 %j1.0, %d1, !dbg !2081 + br i1 %cmp131, label %for.body132, label %for.end159, !dbg !2083 + +for.body132: ; preds = %for.cond130 + %idxprom133 = sext i32 %j.0 to i64, !dbg !2084 + %arrayidx134 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom133, !dbg !2084 + %idxprom135 = sext i32 %j1.0 to i64, !dbg !2084 + %arrayidx136 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx134, i64 0, i64 %idxprom135, !dbg !2084 + %idxprom137 = sext i32 %i.0 to i64, !dbg !2084 + %arrayidx138 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx136, i64 0, i64 %idxprom137, !dbg !2084 + %8 = load double, double* %arrayidx138, align 8, !dbg !2084, !tbaa !249 + %idxprom139 = sext i32 %j.0 to i64, !dbg !2086 + %arrayidx140 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom139, !dbg !2086 + %idxprom141 = sext i32 %j1.0 to i64, !dbg !2086 + %arrayidx142 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx140, i64 0, i64 %idxprom141, !dbg !2086 + %idxprom143 = sext i32 %i.0 to i64, !dbg !2086 + %arrayidx144 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx142, i64 0, i64 %idxprom143, !dbg !2086 + store double %8, double* %arrayidx144, align 8, !dbg !2087, !tbaa !249 + %idxprom145 = sext i32 %j.0 to i64, !dbg !2088 + %arrayidx146 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom145, !dbg !2088 + %idxprom147 = sext i32 %j1.0 to i64, !dbg !2088 + %arrayidx148 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx146, i64 0, i64 %idxprom147, !dbg !2088 + %idxprom149 = sext i32 %i.0 to i64, !dbg !2088 + %arrayidx150 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx148, i64 0, i64 %idxprom149, !dbg !2088 + %9 = load double, double* %arrayidx150, align 8, !dbg !2088, !tbaa !249 + %idxprom151 = sext i32 %j.0 to i64, !dbg !2089 + %arrayidx152 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom151, !dbg !2089 + %idxprom153 = sext i32 %j1.0 to i64, !dbg !2089 + %arrayidx154 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx152, i64 0, i64 %idxprom153, !dbg !2089 + %idxprom155 = sext i32 %i.0 to i64, !dbg !2089 + %arrayidx156 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx154, i64 0, i64 %idxprom155, !dbg !2089 + store double %9, double* %arrayidx156, align 8, !dbg !2090, !tbaa !249 + br label %for.inc157, !dbg !2091 + +for.inc157: ; preds = %for.body132 + %inc158 = add nsw i32 %j1.0, 1, !dbg !2092 + call void @llvm.dbg.value(metadata i32 %inc158, metadata !1919, metadata !DIExpression()), !dbg !1947 + br label %for.cond130, !dbg !2093, !llvm.loop !2094 + +for.end159: ; preds = %for.cond130 + br label %if.end, !dbg !2096 + +if.else: ; preds = %for.end128 + %div160 = sdiv i32 %d3, 2, !dbg !2097 + call void @llvm.dbg.value(metadata i32 %div160, metadata !1922, metadata !DIExpression()), !dbg !1947 + %add161 = add nsw i32 %l.0, 1, !dbg !2099 + %sub162 = sub nsw i32 %add161, 1, !dbg !2100 + %shl163 = shl i32 1, %sub162, !dbg !2101 + call void @llvm.dbg.value(metadata i32 %shl163, metadata !1925, metadata !DIExpression()), !dbg !1947 + %add164 = add nsw i32 %l.0, 1, !dbg !2102 + %sub165 = sub nsw i32 %call, %add164, !dbg !2103 + %shl166 = shl i32 1, %sub165, !dbg !2104 + call void @llvm.dbg.value(metadata i32 %shl166, metadata !1923, metadata !DIExpression()), !dbg !1947 + %mul167 = mul nsw i32 2, %shl163, !dbg !2105 + call void @llvm.dbg.value(metadata i32 %mul167, metadata !1924, metadata !DIExpression()), !dbg !1947 + call void @llvm.dbg.value(metadata i32 %shl166, metadata !1926, metadata !DIExpression()), !dbg !1947 + call void @llvm.dbg.value(metadata i32 0, metadata !1920, metadata !DIExpression()), !dbg !1947 + br label %for.cond168, !dbg !2106 + +for.cond168: ; preds = %for.inc255, %if.else + %i1.1 = phi i32 [ 0, %if.else ], [ %inc256, %for.inc255 ], !dbg !2108 + call void @llvm.dbg.value(metadata i32 %i1.1, metadata !1920, metadata !DIExpression()), !dbg !1947 + %sub169 = sub nsw i32 %shl166, 1, !dbg !2109 + %cmp170 = icmp sle i32 %i1.1, %sub169, !dbg !2111 + br i1 %cmp170, label %for.body171, label %for.end257, !dbg !2112 + +for.body171: ; preds = %for.cond168 + call void @llvm.dbg.value(metadata i32 0, metadata !1921, metadata !DIExpression()), !dbg !1947 + br label %for.cond172, !dbg !2113 + +for.cond172: ; preds = %for.inc252, %for.body171 + %k1.1 = phi i32 [ 0, %for.body171 ], [ %inc253, %for.inc252 ], !dbg !2116 + call void @llvm.dbg.value(metadata i32 %k1.1, metadata !1921, metadata !DIExpression()), !dbg !1947 + %sub173 = sub nsw i32 %shl163, 1, !dbg !2117 + %cmp174 = icmp sle i32 %k1.1, %sub173, !dbg !2119 + br i1 %cmp174, label %for.body175, label %for.end254, !dbg !2120 + +for.body175: ; preds = %for.cond172 + %mul176 = mul nsw i32 %i1.1, %shl163, !dbg !2121 + call void @llvm.dbg.value(metadata i32 %mul176, metadata !1927, metadata !DIExpression()), !dbg !1947 + %add177 = add nsw i32 %mul176, %div160, !dbg !2123 + call void @llvm.dbg.value(metadata i32 %add177, metadata !1928, metadata !DIExpression()), !dbg !1947 + %mul178 = mul nsw i32 %i1.1, %mul167, !dbg !2124 + call void @llvm.dbg.value(metadata i32 %mul178, metadata !1929, metadata !DIExpression()), !dbg !1947 + %add179 = add nsw i32 %mul178, %shl163, !dbg !2125 + call void @llvm.dbg.value(metadata i32 %add179, metadata !1930, metadata !DIExpression()), !dbg !1947 + %add180 = add nsw i32 %shl166, %i1.1, !dbg !2126 + %idxprom181 = sext i32 %add180 to i64, !dbg !2127 + %arrayidx182 = getelementptr inbounds [257 x double], [257 x double]* @u_real, i64 0, i64 %idxprom181, !dbg !2127 + %10 = load double, double* %arrayidx182, align 8, !dbg !2127, !tbaa !249 + call void @llvm.dbg.value(metadata double %10, metadata !1937, metadata !DIExpression()), !dbg !1947 + %add183 = add nsw i32 %shl166, %i1.1, !dbg !2128 + %idxprom184 = sext i32 %add183 to i64, !dbg !2129 + %arrayidx185 = getelementptr inbounds [257 x double], [257 x double]* @u_imag, i64 0, i64 %idxprom184, !dbg !2129 + %11 = load double, double* %arrayidx185, align 8, !dbg !2129, !tbaa !249 + call void @llvm.dbg.value(metadata double %11, metadata !1940, metadata !DIExpression()), !dbg !1947 + %idxprom186 = sext i32 %j.0 to i64, !dbg !2130 + %arrayidx187 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom186, !dbg !2130 + %add188 = add nsw i32 %mul176, %k1.1, !dbg !2131 + %idxprom189 = sext i32 %add188 to i64, !dbg !2130 + %arrayidx190 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx187, i64 0, i64 %idxprom189, !dbg !2130 + %idxprom191 = sext i32 %i.0 to i64, !dbg !2130 + %arrayidx192 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx190, i64 0, i64 %idxprom191, !dbg !2130 + %12 = load double, double* %arrayidx192, align 8, !dbg !2130, !tbaa !249 + call void @llvm.dbg.value(metadata double %12, metadata !1938, metadata !DIExpression()), !dbg !1947 + %idxprom193 = sext i32 %j.0 to i64, !dbg !2132 + %arrayidx194 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom193, !dbg !2132 + %add195 = add nsw i32 %mul176, %k1.1, !dbg !2133 + %idxprom196 = sext i32 %add195 to i64, !dbg !2132 + %arrayidx197 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx194, i64 0, i64 %idxprom196, !dbg !2132 + %idxprom198 = sext i32 %i.0 to i64, !dbg !2132 + %arrayidx199 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx197, i64 0, i64 %idxprom198, !dbg !2132 + %13 = load double, double* %arrayidx199, align 8, !dbg !2132, !tbaa !249 + call void @llvm.dbg.value(metadata double %13, metadata !1941, metadata !DIExpression()), !dbg !1947 + %idxprom200 = sext i32 %j.0 to i64, !dbg !2134 + %arrayidx201 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom200, !dbg !2134 + %add202 = add nsw i32 %add177, %k1.1, !dbg !2135 + %idxprom203 = sext i32 %add202 to i64, !dbg !2134 + %arrayidx204 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx201, i64 0, i64 %idxprom203, !dbg !2134 + %idxprom205 = sext i32 %i.0 to i64, !dbg !2134 + %arrayidx206 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx204, i64 0, i64 %idxprom205, !dbg !2134 + %14 = load double, double* %arrayidx206, align 8, !dbg !2134, !tbaa !249 + call void @llvm.dbg.value(metadata double %14, metadata !1939, metadata !DIExpression()), !dbg !1947 + %idxprom207 = sext i32 %j.0 to i64, !dbg !2136 + %arrayidx208 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom207, !dbg !2136 + %add209 = add nsw i32 %add177, %k1.1, !dbg !2137 + %idxprom210 = sext i32 %add209 to i64, !dbg !2136 + %arrayidx211 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx208, i64 0, i64 %idxprom210, !dbg !2136 + %idxprom212 = sext i32 %i.0 to i64, !dbg !2136 + %arrayidx213 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx211, i64 0, i64 %idxprom212, !dbg !2136 + %15 = load double, double* %arrayidx213, align 8, !dbg !2136, !tbaa !249 + call void @llvm.dbg.value(metadata double %15, metadata !1942, metadata !DIExpression()), !dbg !1947 + %add214 = fadd double %12, %14, !dbg !2138 + %idxprom215 = sext i32 %j.0 to i64, !dbg !2139 + %arrayidx216 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom215, !dbg !2139 + %add217 = add nsw i32 %mul178, %k1.1, !dbg !2140 + %idxprom218 = sext i32 %add217 to i64, !dbg !2139 + %arrayidx219 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx216, i64 0, i64 %idxprom218, !dbg !2139 + %idxprom220 = sext i32 %i.0 to i64, !dbg !2139 + %arrayidx221 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx219, i64 0, i64 %idxprom220, !dbg !2139 + store double %add214, double* %arrayidx221, align 8, !dbg !2141, !tbaa !249 + %add222 = fadd double %13, %15, !dbg !2142 + %idxprom223 = sext i32 %j.0 to i64, !dbg !2143 + %arrayidx224 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom223, !dbg !2143 + %add225 = add nsw i32 %mul178, %k1.1, !dbg !2144 + %idxprom226 = sext i32 %add225 to i64, !dbg !2143 + %arrayidx227 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx224, i64 0, i64 %idxprom226, !dbg !2143 + %idxprom228 = sext i32 %i.0 to i64, !dbg !2143 + %arrayidx229 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx227, i64 0, i64 %idxprom228, !dbg !2143 + store double %add222, double* %arrayidx229, align 8, !dbg !2145, !tbaa !249 + %sub230 = fsub double %12, %14, !dbg !2146 + call void @llvm.dbg.value(metadata double %sub230, metadata !1944, metadata !DIExpression()), !dbg !1947 + %sub231 = fsub double %13, %15, !dbg !2147 + call void @llvm.dbg.value(metadata double %sub231, metadata !1946, metadata !DIExpression()), !dbg !1947 + %mul232 = fmul double %10, %sub230, !dbg !2148 + %mul233 = fmul double %11, %sub231, !dbg !2149 + %sub234 = fsub double %mul232, %mul233, !dbg !2150 + %idxprom235 = sext i32 %j.0 to i64, !dbg !2151 + %arrayidx236 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom235, !dbg !2151 + %add237 = add nsw i32 %add179, %k1.1, !dbg !2152 + %idxprom238 = sext i32 %add237 to i64, !dbg !2151 + %arrayidx239 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx236, i64 0, i64 %idxprom238, !dbg !2151 + %idxprom240 = sext i32 %i.0 to i64, !dbg !2151 + %arrayidx241 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx239, i64 0, i64 %idxprom240, !dbg !2151 + store double %sub234, double* %arrayidx241, align 8, !dbg !2153, !tbaa !249 + %mul242 = fmul double %10, %sub231, !dbg !2154 + %mul243 = fmul double %11, %sub230, !dbg !2155 + %add244 = fadd double %mul242, %mul243, !dbg !2156 + %idxprom245 = sext i32 %j.0 to i64, !dbg !2157 + %arrayidx246 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom245, !dbg !2157 + %add247 = add nsw i32 %add179, %k1.1, !dbg !2158 + %idxprom248 = sext i32 %add247 to i64, !dbg !2157 + %arrayidx249 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx246, i64 0, i64 %idxprom248, !dbg !2157 + %idxprom250 = sext i32 %i.0 to i64, !dbg !2157 + %arrayidx251 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx249, i64 0, i64 %idxprom250, !dbg !2157 + store double %add244, double* %arrayidx251, align 8, !dbg !2159, !tbaa !249 + br label %for.inc252, !dbg !2160 + +for.inc252: ; preds = %for.body175 + %inc253 = add nsw i32 %k1.1, 1, !dbg !2161 + call void @llvm.dbg.value(metadata i32 %inc253, metadata !1921, metadata !DIExpression()), !dbg !1947 + br label %for.cond172, !dbg !2162, !llvm.loop !2163 + +for.end254: ; preds = %for.cond172 + br label %for.inc255, !dbg !2165 + +for.inc255: ; preds = %for.end254 + %inc256 = add nsw i32 %i1.1, 1, !dbg !2166 + call void @llvm.dbg.value(metadata i32 %inc256, metadata !1920, metadata !DIExpression()), !dbg !1947 + br label %for.cond168, !dbg !2167, !llvm.loop !2168 + +for.end257: ; preds = %for.cond168 + br label %if.end + +if.end: ; preds = %for.end257, %for.end159 + br label %for.inc258, !dbg !2170 + +for.inc258: ; preds = %if.end + %add259 = add nsw i32 %l.0, 2, !dbg !2171 + call void @llvm.dbg.value(metadata i32 %add259, metadata !1918, metadata !DIExpression()), !dbg !1947 + br label %for.cond33, !dbg !2172, !llvm.loop !2173 + +for.end260: ; preds = %for.cond33 + call void @llvm.dbg.value(metadata i32 0, metadata !1916, metadata !DIExpression()), !dbg !1947 + br label %for.cond261, !dbg !2175 + +for.cond261: ; preds = %for.inc294, %for.end260 + %k.1 = phi i32 [ 0, %for.end260 ], [ %inc295, %for.inc294 ], !dbg !2177 + call void @llvm.dbg.value(metadata i32 %k.1, metadata !1916, metadata !DIExpression()), !dbg !1947 + %cmp262 = icmp slt i32 %k.1, %d3, !dbg !2178 + br i1 %cmp262, label %for.body263, label %for.end296, !dbg !2180 + +for.body263: ; preds = %for.cond261 + %idxprom264 = sext i32 %j.0 to i64, !dbg !2181 + %arrayidx265 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom264, !dbg !2181 + %idxprom266 = sext i32 %k.1 to i64, !dbg !2181 + %arrayidx267 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx265, i64 0, i64 %idxprom266, !dbg !2181 + %idxprom268 = sext i32 %i.0 to i64, !dbg !2181 + %arrayidx269 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx267, i64 0, i64 %idxprom268, !dbg !2181 + %16 = load double, double* %arrayidx269, align 8, !dbg !2181, !tbaa !249 + %mul270 = mul nsw i32 %k.1, %d2, !dbg !2183 + %add271 = add nsw i32 %d1, 1, !dbg !2184 + %mul272 = mul nsw i32 %mul270, %add271, !dbg !2185 + %add273 = add nsw i32 %d1, 1, !dbg !2186 + %mul274 = mul nsw i32 %j.0, %add273, !dbg !2187 + %add275 = add nsw i32 %mul272, %mul274, !dbg !2188 + %add276 = add nsw i32 %add275, %i.0, !dbg !2189 + %idxprom277 = sext i32 %add276 to i64, !dbg !2190 + %arrayidx278 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u0_real, i64 0, i64 %idxprom277, !dbg !2190 + store double %16, double* %arrayidx278, align 8, !dbg !2191, !tbaa !249 + %idxprom279 = sext i32 %j.0 to i64, !dbg !2192 + %arrayidx280 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom279, !dbg !2192 + %idxprom281 = sext i32 %k.1 to i64, !dbg !2192 + %arrayidx282 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx280, i64 0, i64 %idxprom281, !dbg !2192 + %idxprom283 = sext i32 %i.0 to i64, !dbg !2192 + %arrayidx284 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx282, i64 0, i64 %idxprom283, !dbg !2192 + %17 = load double, double* %arrayidx284, align 8, !dbg !2192, !tbaa !249 + %mul285 = mul nsw i32 %k.1, %d2, !dbg !2193 + %add286 = add nsw i32 %d1, 1, !dbg !2194 + %mul287 = mul nsw i32 %mul285, %add286, !dbg !2195 + %add288 = add nsw i32 %d1, 1, !dbg !2196 + %mul289 = mul nsw i32 %j.0, %add288, !dbg !2197 + %add290 = add nsw i32 %mul287, %mul289, !dbg !2198 + %add291 = add nsw i32 %add290, %i.0, !dbg !2199 + %idxprom292 = sext i32 %add291 to i64, !dbg !2200 + %arrayidx293 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u0_imag, i64 0, i64 %idxprom292, !dbg !2200 + store double %17, double* %arrayidx293, align 8, !dbg !2201, !tbaa !249 + br label %for.inc294, !dbg !2202 + +for.inc294: ; preds = %for.body263 + %inc295 = add nsw i32 %k.1, 1, !dbg !2203 + call void @llvm.dbg.value(metadata i32 %inc295, metadata !1916, metadata !DIExpression()), !dbg !1947 + br label %for.cond261, !dbg !2204, !llvm.loop !2205 + +for.end296: ; preds = %for.cond261 + br label %for.inc297, !dbg !2207 + +for.inc297: ; preds = %for.end296 + %inc298 = add nsw i32 %i.0, 1, !dbg !2208 + call void @llvm.dbg.value(metadata i32 %inc298, metadata !1914, metadata !DIExpression()), !dbg !1947 + br label %for.cond1, !dbg !2209, !llvm.loop !2210 + +for.end299: ; preds = %for.cond1 + br label %for.inc300, !dbg !2212 + +for.inc300: ; preds = %for.end299 + %inc301 = add nsw i32 %j.0, 1, !dbg !2213 + call void @llvm.dbg.value(metadata i32 %inc301, metadata !1915, metadata !DIExpression()), !dbg !1947 + br label %for.cond, !dbg !2214, !llvm.loop !2215 + +for.end302: ; preds = %for.cond + ret void, !dbg !2217 +} + +; Function Attrs: nounwind uwtable +define internal void @cffts3_neg(i32 %is, i32 %d1, i32 %d2, i32 %d3) #0 !dbg !2218 { +entry: + call void @llvm.dbg.value(metadata i32 %is, metadata !2220, metadata !DIExpression()), !dbg !2258 + call void @llvm.dbg.value(metadata i32 %d1, metadata !2221, metadata !DIExpression()), !dbg !2258 + call void @llvm.dbg.value(metadata i32 %d2, metadata !2222, metadata !DIExpression()), !dbg !2258 + call void @llvm.dbg.value(metadata i32 %d3, metadata !2223, metadata !DIExpression()), !dbg !2258 + call void @llvm.dbg.declare(metadata !1325, metadata !2228, metadata !DIExpression()), !dbg !2259 + %call = call i32 @ilog2(i32 %d3), !dbg !2260 + call void @llvm.dbg.value(metadata i32 %call, metadata !2224, metadata !DIExpression()), !dbg !2258 + call void @llvm.dbg.value(metadata i32 0, metadata !2226, metadata !DIExpression()), !dbg !2258 + br label %for.cond, !dbg !2261 + +for.cond: ; preds = %for.inc302, %entry + %j.0 = phi i32 [ 0, %entry ], [ %inc303, %for.inc302 ], !dbg !2264 + call void @llvm.dbg.value(metadata i32 %j.0, metadata !2226, metadata !DIExpression()), !dbg !2258 + %cmp = icmp slt i32 %j.0, %d2, !dbg !2265 + br i1 %cmp, label %for.body, label %for.end304, !dbg !2267 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 0, metadata !2225, metadata !DIExpression()), !dbg !2258 + br label %for.cond1, !dbg !2268 + +for.cond1: ; preds = %for.inc299, %for.body + %i.0 = phi i32 [ 0, %for.body ], [ %inc300, %for.inc299 ], !dbg !2271 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !2225, metadata !DIExpression()), !dbg !2258 + %cmp2 = icmp slt i32 %i.0, %d1, !dbg !2272 + br i1 %cmp2, label %for.body3, label %for.end301, !dbg !2274 + +for.body3: ; preds = %for.cond1 + call void @llvm.dbg.value(metadata i32 0, metadata !2227, metadata !DIExpression()), !dbg !2258 + br label %for.cond4, !dbg !2275 + +for.cond4: ; preds = %for.inc, %for.body3 + %k.0 = phi i32 [ 0, %for.body3 ], [ %inc, %for.inc ], !dbg !2278 + call void @llvm.dbg.value(metadata i32 %k.0, metadata !2227, metadata !DIExpression()), !dbg !2258 + %cmp5 = icmp slt i32 %k.0, %d3, !dbg !2279 + br i1 %cmp5, label %for.body6, label %for.end, !dbg !2281 + +for.body6: ; preds = %for.cond4 + %mul = mul nsw i32 %k.0, %d2, !dbg !2282 + %add = add nsw i32 %d1, 1, !dbg !2284 + %mul7 = mul nsw i32 %mul, %add, !dbg !2285 + %add8 = add nsw i32 %d1, 1, !dbg !2286 + %mul9 = mul nsw i32 %j.0, %add8, !dbg !2287 + %add10 = add nsw i32 %mul7, %mul9, !dbg !2288 + %add11 = add nsw i32 %add10, %i.0, !dbg !2289 + %idxprom = sext i32 %add11 to i64, !dbg !2290 + %arrayidx = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_real, i64 0, i64 %idxprom, !dbg !2290 + %0 = load double, double* %arrayidx, align 8, !dbg !2290, !tbaa !249 + %idxprom12 = sext i32 %j.0 to i64, !dbg !2291 + %arrayidx13 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom12, !dbg !2291 + %idxprom14 = sext i32 %k.0 to i64, !dbg !2291 + %arrayidx15 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx13, i64 0, i64 %idxprom14, !dbg !2291 + %idxprom16 = sext i32 %i.0 to i64, !dbg !2291 + %arrayidx17 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx15, i64 0, i64 %idxprom16, !dbg !2291 + store double %0, double* %arrayidx17, align 8, !dbg !2292, !tbaa !249 + %mul18 = mul nsw i32 %k.0, %d2, !dbg !2293 + %add19 = add nsw i32 %d1, 1, !dbg !2294 + %mul20 = mul nsw i32 %mul18, %add19, !dbg !2295 + %add21 = add nsw i32 %d1, 1, !dbg !2296 + %mul22 = mul nsw i32 %j.0, %add21, !dbg !2297 + %add23 = add nsw i32 %mul20, %mul22, !dbg !2298 + %add24 = add nsw i32 %add23, %i.0, !dbg !2299 + %idxprom25 = sext i32 %add24 to i64, !dbg !2300 + %arrayidx26 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_imag, i64 0, i64 %idxprom25, !dbg !2300 + %1 = load double, double* %arrayidx26, align 8, !dbg !2300, !tbaa !249 + %idxprom27 = sext i32 %j.0 to i64, !dbg !2301 + %arrayidx28 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom27, !dbg !2301 + %idxprom29 = sext i32 %k.0 to i64, !dbg !2301 + %arrayidx30 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx28, i64 0, i64 %idxprom29, !dbg !2301 + %idxprom31 = sext i32 %i.0 to i64, !dbg !2301 + %arrayidx32 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx30, i64 0, i64 %idxprom31, !dbg !2301 + store double %1, double* %arrayidx32, align 8, !dbg !2302, !tbaa !249 + br label %for.inc, !dbg !2303 + +for.inc: ; preds = %for.body6 + %inc = add nsw i32 %k.0, 1, !dbg !2304 + call void @llvm.dbg.value(metadata i32 %inc, metadata !2227, metadata !DIExpression()), !dbg !2258 + br label %for.cond4, !dbg !2305, !llvm.loop !2306 + +for.end: ; preds = %for.cond4 + call void @llvm.dbg.value(metadata i32 1, metadata !2229, metadata !DIExpression()), !dbg !2258 + br label %for.cond33, !dbg !2308 + +for.cond33: ; preds = %for.inc260, %for.end + %l.0 = phi i32 [ 1, %for.end ], [ %add261, %for.inc260 ], !dbg !2310 + call void @llvm.dbg.value(metadata i32 %l.0, metadata !2229, metadata !DIExpression()), !dbg !2258 + %cmp34 = icmp sle i32 %l.0, %call, !dbg !2311 + br i1 %cmp34, label %for.body35, label %for.end262, !dbg !2313 + +for.body35: ; preds = %for.cond33 + %div = sdiv i32 %d3, 2, !dbg !2314 + call void @llvm.dbg.value(metadata i32 %div, metadata !2233, metadata !DIExpression()), !dbg !2258 + %sub = sub nsw i32 %l.0, 1, !dbg !2316 + %shl = shl i32 1, %sub, !dbg !2317 + call void @llvm.dbg.value(metadata i32 %shl, metadata !2236, metadata !DIExpression()), !dbg !2258 + %sub36 = sub nsw i32 %call, %l.0, !dbg !2318 + %shl37 = shl i32 1, %sub36, !dbg !2319 + call void @llvm.dbg.value(metadata i32 %shl37, metadata !2234, metadata !DIExpression()), !dbg !2258 + %mul38 = mul nsw i32 2, %shl, !dbg !2320 + call void @llvm.dbg.value(metadata i32 %mul38, metadata !2235, metadata !DIExpression()), !dbg !2258 + call void @llvm.dbg.value(metadata i32 %shl37, metadata !2237, metadata !DIExpression()), !dbg !2258 + call void @llvm.dbg.value(metadata i32 0, metadata !2231, metadata !DIExpression()), !dbg !2258 + br label %for.cond39, !dbg !2321 + +for.cond39: ; preds = %for.inc127, %for.body35 + %i1.0 = phi i32 [ 0, %for.body35 ], [ %inc128, %for.inc127 ], !dbg !2323 + call void @llvm.dbg.value(metadata i32 %i1.0, metadata !2231, metadata !DIExpression()), !dbg !2258 + %sub40 = sub nsw i32 %shl37, 1, !dbg !2324 + %cmp41 = icmp sle i32 %i1.0, %sub40, !dbg !2326 + br i1 %cmp41, label %for.body42, label %for.end129, !dbg !2327 + +for.body42: ; preds = %for.cond39 + call void @llvm.dbg.value(metadata i32 0, metadata !2232, metadata !DIExpression()), !dbg !2258 + br label %for.cond43, !dbg !2328 + +for.cond43: ; preds = %for.inc124, %for.body42 + %k1.0 = phi i32 [ 0, %for.body42 ], [ %inc125, %for.inc124 ], !dbg !2331 + call void @llvm.dbg.value(metadata i32 %k1.0, metadata !2232, metadata !DIExpression()), !dbg !2258 + %sub44 = sub nsw i32 %shl, 1, !dbg !2332 + %cmp45 = icmp sle i32 %k1.0, %sub44, !dbg !2334 + br i1 %cmp45, label %for.body46, label %for.end126, !dbg !2335 + +for.body46: ; preds = %for.cond43 + %mul47 = mul nsw i32 %i1.0, %shl, !dbg !2336 + call void @llvm.dbg.value(metadata i32 %mul47, metadata !2238, metadata !DIExpression()), !dbg !2258 + %add48 = add nsw i32 %mul47, %div, !dbg !2338 + call void @llvm.dbg.value(metadata i32 %add48, metadata !2239, metadata !DIExpression()), !dbg !2258 + %mul49 = mul nsw i32 %i1.0, %mul38, !dbg !2339 + call void @llvm.dbg.value(metadata i32 %mul49, metadata !2240, metadata !DIExpression()), !dbg !2258 + %add50 = add nsw i32 %mul49, %shl, !dbg !2340 + call void @llvm.dbg.value(metadata i32 %add50, metadata !2241, metadata !DIExpression()), !dbg !2258 + %add51 = add nsw i32 %shl37, %i1.0, !dbg !2341 + %idxprom52 = sext i32 %add51 to i64, !dbg !2342 + %arrayidx53 = getelementptr inbounds [257 x double], [257 x double]* @u_real, i64 0, i64 %idxprom52, !dbg !2342 + %2 = load double, double* %arrayidx53, align 8, !dbg !2342, !tbaa !249 + call void @llvm.dbg.value(metadata double %2, metadata !2242, metadata !DIExpression()), !dbg !2258 + %add54 = add nsw i32 %shl37, %i1.0, !dbg !2343 + %idxprom55 = sext i32 %add54 to i64, !dbg !2344 + %arrayidx56 = getelementptr inbounds [257 x double], [257 x double]* @u_imag, i64 0, i64 %idxprom55, !dbg !2344 + %3 = load double, double* %arrayidx56, align 8, !dbg !2344, !tbaa !249 + %mul57 = fmul double -1.000000e+00, %3, !dbg !2345 + call void @llvm.dbg.value(metadata double %mul57, metadata !2245, metadata !DIExpression()), !dbg !2258 + %idxprom58 = sext i32 %j.0 to i64, !dbg !2346 + %arrayidx59 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom58, !dbg !2346 + %add60 = add nsw i32 %mul47, %k1.0, !dbg !2347 + %idxprom61 = sext i32 %add60 to i64, !dbg !2346 + %arrayidx62 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx59, i64 0, i64 %idxprom61, !dbg !2346 + %idxprom63 = sext i32 %i.0 to i64, !dbg !2346 + %arrayidx64 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx62, i64 0, i64 %idxprom63, !dbg !2346 + %4 = load double, double* %arrayidx64, align 8, !dbg !2346, !tbaa !249 + call void @llvm.dbg.value(metadata double %4, metadata !2243, metadata !DIExpression()), !dbg !2258 + %idxprom65 = sext i32 %j.0 to i64, !dbg !2348 + %arrayidx66 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom65, !dbg !2348 + %add67 = add nsw i32 %mul47, %k1.0, !dbg !2349 + %idxprom68 = sext i32 %add67 to i64, !dbg !2348 + %arrayidx69 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx66, i64 0, i64 %idxprom68, !dbg !2348 + %idxprom70 = sext i32 %i.0 to i64, !dbg !2348 + %arrayidx71 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx69, i64 0, i64 %idxprom70, !dbg !2348 + %5 = load double, double* %arrayidx71, align 8, !dbg !2348, !tbaa !249 + call void @llvm.dbg.value(metadata double %5, metadata !2246, metadata !DIExpression()), !dbg !2258 + %idxprom72 = sext i32 %j.0 to i64, !dbg !2350 + %arrayidx73 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom72, !dbg !2350 + %add74 = add nsw i32 %add48, %k1.0, !dbg !2351 + %idxprom75 = sext i32 %add74 to i64, !dbg !2350 + %arrayidx76 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx73, i64 0, i64 %idxprom75, !dbg !2350 + %idxprom77 = sext i32 %i.0 to i64, !dbg !2350 + %arrayidx78 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx76, i64 0, i64 %idxprom77, !dbg !2350 + %6 = load double, double* %arrayidx78, align 8, !dbg !2350, !tbaa !249 + call void @llvm.dbg.value(metadata double %6, metadata !2244, metadata !DIExpression()), !dbg !2258 + %idxprom79 = sext i32 %j.0 to i64, !dbg !2352 + %arrayidx80 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom79, !dbg !2352 + %add81 = add nsw i32 %add48, %k1.0, !dbg !2353 + %idxprom82 = sext i32 %add81 to i64, !dbg !2352 + %arrayidx83 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx80, i64 0, i64 %idxprom82, !dbg !2352 + %idxprom84 = sext i32 %i.0 to i64, !dbg !2352 + %arrayidx85 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx83, i64 0, i64 %idxprom84, !dbg !2352 + %7 = load double, double* %arrayidx85, align 8, !dbg !2352, !tbaa !249 + call void @llvm.dbg.value(metadata double %7, metadata !2247, metadata !DIExpression()), !dbg !2258 + %add86 = fadd double %4, %6, !dbg !2354 + %idxprom87 = sext i32 %j.0 to i64, !dbg !2355 + %arrayidx88 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom87, !dbg !2355 + %add89 = add nsw i32 %mul49, %k1.0, !dbg !2356 + %idxprom90 = sext i32 %add89 to i64, !dbg !2355 + %arrayidx91 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx88, i64 0, i64 %idxprom90, !dbg !2355 + %idxprom92 = sext i32 %i.0 to i64, !dbg !2355 + %arrayidx93 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx91, i64 0, i64 %idxprom92, !dbg !2355 + store double %add86, double* %arrayidx93, align 8, !dbg !2357, !tbaa !249 + %add94 = fadd double %5, %7, !dbg !2358 + %idxprom95 = sext i32 %j.0 to i64, !dbg !2359 + %arrayidx96 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom95, !dbg !2359 + %add97 = add nsw i32 %mul49, %k1.0, !dbg !2360 + %idxprom98 = sext i32 %add97 to i64, !dbg !2359 + %arrayidx99 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx96, i64 0, i64 %idxprom98, !dbg !2359 + %idxprom100 = sext i32 %i.0 to i64, !dbg !2359 + %arrayidx101 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx99, i64 0, i64 %idxprom100, !dbg !2359 + store double %add94, double* %arrayidx101, align 8, !dbg !2361, !tbaa !249 + %sub102 = fsub double %4, %6, !dbg !2362 + call void @llvm.dbg.value(metadata double %sub102, metadata !2254, metadata !DIExpression()), !dbg !2258 + %sub103 = fsub double %5, %7, !dbg !2363 + call void @llvm.dbg.value(metadata double %sub103, metadata !2256, metadata !DIExpression()), !dbg !2258 + %mul104 = fmul double %2, %sub102, !dbg !2364 + %mul105 = fmul double %mul57, %sub103, !dbg !2365 + %sub106 = fsub double %mul104, %mul105, !dbg !2366 + %idxprom107 = sext i32 %j.0 to i64, !dbg !2367 + %arrayidx108 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom107, !dbg !2367 + %add109 = add nsw i32 %add50, %k1.0, !dbg !2368 + %idxprom110 = sext i32 %add109 to i64, !dbg !2367 + %arrayidx111 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx108, i64 0, i64 %idxprom110, !dbg !2367 + %idxprom112 = sext i32 %i.0 to i64, !dbg !2367 + %arrayidx113 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx111, i64 0, i64 %idxprom112, !dbg !2367 + store double %sub106, double* %arrayidx113, align 8, !dbg !2369, !tbaa !249 + %mul114 = fmul double %2, %sub103, !dbg !2370 + %mul115 = fmul double %mul57, %sub102, !dbg !2371 + %add116 = fadd double %mul114, %mul115, !dbg !2372 + %idxprom117 = sext i32 %j.0 to i64, !dbg !2373 + %arrayidx118 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom117, !dbg !2373 + %add119 = add nsw i32 %add50, %k1.0, !dbg !2374 + %idxprom120 = sext i32 %add119 to i64, !dbg !2373 + %arrayidx121 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx118, i64 0, i64 %idxprom120, !dbg !2373 + %idxprom122 = sext i32 %i.0 to i64, !dbg !2373 + %arrayidx123 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx121, i64 0, i64 %idxprom122, !dbg !2373 + store double %add116, double* %arrayidx123, align 8, !dbg !2375, !tbaa !249 + br label %for.inc124, !dbg !2376 + +for.inc124: ; preds = %for.body46 + %inc125 = add nsw i32 %k1.0, 1, !dbg !2377 + call void @llvm.dbg.value(metadata i32 %inc125, metadata !2232, metadata !DIExpression()), !dbg !2258 + br label %for.cond43, !dbg !2378, !llvm.loop !2379 + +for.end126: ; preds = %for.cond43 + br label %for.inc127, !dbg !2381 + +for.inc127: ; preds = %for.end126 + %inc128 = add nsw i32 %i1.0, 1, !dbg !2382 + call void @llvm.dbg.value(metadata i32 %inc128, metadata !2231, metadata !DIExpression()), !dbg !2258 + br label %for.cond39, !dbg !2383, !llvm.loop !2384 + +for.end129: ; preds = %for.cond39 + %cmp130 = icmp eq i32 %l.0, %call, !dbg !2386 + br i1 %cmp130, label %if.then, label %if.else, !dbg !2388 + +if.then: ; preds = %for.end129 + call void @llvm.dbg.value(metadata i32 0, metadata !2230, metadata !DIExpression()), !dbg !2258 + br label %for.cond131, !dbg !2389 + +for.cond131: ; preds = %for.inc158, %if.then + %j1.0 = phi i32 [ 0, %if.then ], [ %inc159, %for.inc158 ], !dbg !2392 + call void @llvm.dbg.value(metadata i32 %j1.0, metadata !2230, metadata !DIExpression()), !dbg !2258 + %cmp132 = icmp slt i32 %j1.0, %d1, !dbg !2393 + br i1 %cmp132, label %for.body133, label %for.end160, !dbg !2395 + +for.body133: ; preds = %for.cond131 + %idxprom134 = sext i32 %j.0 to i64, !dbg !2396 + %arrayidx135 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom134, !dbg !2396 + %idxprom136 = sext i32 %j1.0 to i64, !dbg !2396 + %arrayidx137 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx135, i64 0, i64 %idxprom136, !dbg !2396 + %idxprom138 = sext i32 %i.0 to i64, !dbg !2396 + %arrayidx139 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx137, i64 0, i64 %idxprom138, !dbg !2396 + %8 = load double, double* %arrayidx139, align 8, !dbg !2396, !tbaa !249 + %idxprom140 = sext i32 %j.0 to i64, !dbg !2398 + %arrayidx141 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom140, !dbg !2398 + %idxprom142 = sext i32 %j1.0 to i64, !dbg !2398 + %arrayidx143 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx141, i64 0, i64 %idxprom142, !dbg !2398 + %idxprom144 = sext i32 %i.0 to i64, !dbg !2398 + %arrayidx145 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx143, i64 0, i64 %idxprom144, !dbg !2398 + store double %8, double* %arrayidx145, align 8, !dbg !2399, !tbaa !249 + %idxprom146 = sext i32 %j.0 to i64, !dbg !2400 + %arrayidx147 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom146, !dbg !2400 + %idxprom148 = sext i32 %j1.0 to i64, !dbg !2400 + %arrayidx149 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx147, i64 0, i64 %idxprom148, !dbg !2400 + %idxprom150 = sext i32 %i.0 to i64, !dbg !2400 + %arrayidx151 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx149, i64 0, i64 %idxprom150, !dbg !2400 + %9 = load double, double* %arrayidx151, align 8, !dbg !2400, !tbaa !249 + %idxprom152 = sext i32 %j.0 to i64, !dbg !2401 + %arrayidx153 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom152, !dbg !2401 + %idxprom154 = sext i32 %j1.0 to i64, !dbg !2401 + %arrayidx155 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx153, i64 0, i64 %idxprom154, !dbg !2401 + %idxprom156 = sext i32 %i.0 to i64, !dbg !2401 + %arrayidx157 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx155, i64 0, i64 %idxprom156, !dbg !2401 + store double %9, double* %arrayidx157, align 8, !dbg !2402, !tbaa !249 + br label %for.inc158, !dbg !2403 + +for.inc158: ; preds = %for.body133 + %inc159 = add nsw i32 %j1.0, 1, !dbg !2404 + call void @llvm.dbg.value(metadata i32 %inc159, metadata !2230, metadata !DIExpression()), !dbg !2258 + br label %for.cond131, !dbg !2405, !llvm.loop !2406 + +for.end160: ; preds = %for.cond131 + br label %if.end, !dbg !2408 + +if.else: ; preds = %for.end129 + %div161 = sdiv i32 %d3, 2, !dbg !2409 + call void @llvm.dbg.value(metadata i32 %div161, metadata !2233, metadata !DIExpression()), !dbg !2258 + %add162 = add nsw i32 %l.0, 1, !dbg !2411 + %sub163 = sub nsw i32 %add162, 1, !dbg !2412 + %shl164 = shl i32 1, %sub163, !dbg !2413 + call void @llvm.dbg.value(metadata i32 %shl164, metadata !2236, metadata !DIExpression()), !dbg !2258 + %add165 = add nsw i32 %l.0, 1, !dbg !2414 + %sub166 = sub nsw i32 %call, %add165, !dbg !2415 + %shl167 = shl i32 1, %sub166, !dbg !2416 + call void @llvm.dbg.value(metadata i32 %shl167, metadata !2234, metadata !DIExpression()), !dbg !2258 + %mul168 = mul nsw i32 2, %shl164, !dbg !2417 + call void @llvm.dbg.value(metadata i32 %mul168, metadata !2235, metadata !DIExpression()), !dbg !2258 + call void @llvm.dbg.value(metadata i32 %shl167, metadata !2237, metadata !DIExpression()), !dbg !2258 + call void @llvm.dbg.value(metadata i32 0, metadata !2231, metadata !DIExpression()), !dbg !2258 + br label %for.cond169, !dbg !2418 + +for.cond169: ; preds = %for.inc257, %if.else + %i1.1 = phi i32 [ 0, %if.else ], [ %inc258, %for.inc257 ], !dbg !2420 + call void @llvm.dbg.value(metadata i32 %i1.1, metadata !2231, metadata !DIExpression()), !dbg !2258 + %sub170 = sub nsw i32 %shl167, 1, !dbg !2421 + %cmp171 = icmp sle i32 %i1.1, %sub170, !dbg !2423 + br i1 %cmp171, label %for.body172, label %for.end259, !dbg !2424 + +for.body172: ; preds = %for.cond169 + call void @llvm.dbg.value(metadata i32 0, metadata !2232, metadata !DIExpression()), !dbg !2258 + br label %for.cond173, !dbg !2425 + +for.cond173: ; preds = %for.inc254, %for.body172 + %k1.1 = phi i32 [ 0, %for.body172 ], [ %inc255, %for.inc254 ], !dbg !2428 + call void @llvm.dbg.value(metadata i32 %k1.1, metadata !2232, metadata !DIExpression()), !dbg !2258 + %sub174 = sub nsw i32 %shl164, 1, !dbg !2429 + %cmp175 = icmp sle i32 %k1.1, %sub174, !dbg !2431 + br i1 %cmp175, label %for.body176, label %for.end256, !dbg !2432 + +for.body176: ; preds = %for.cond173 + %mul177 = mul nsw i32 %i1.1, %shl164, !dbg !2433 + call void @llvm.dbg.value(metadata i32 %mul177, metadata !2238, metadata !DIExpression()), !dbg !2258 + %add178 = add nsw i32 %mul177, %div161, !dbg !2435 + call void @llvm.dbg.value(metadata i32 %add178, metadata !2239, metadata !DIExpression()), !dbg !2258 + %mul179 = mul nsw i32 %i1.1, %mul168, !dbg !2436 + call void @llvm.dbg.value(metadata i32 %mul179, metadata !2240, metadata !DIExpression()), !dbg !2258 + %add180 = add nsw i32 %mul179, %shl164, !dbg !2437 + call void @llvm.dbg.value(metadata i32 %add180, metadata !2241, metadata !DIExpression()), !dbg !2258 + %add181 = add nsw i32 %shl167, %i1.1, !dbg !2438 + %idxprom182 = sext i32 %add181 to i64, !dbg !2439 + %arrayidx183 = getelementptr inbounds [257 x double], [257 x double]* @u_real, i64 0, i64 %idxprom182, !dbg !2439 + %10 = load double, double* %arrayidx183, align 8, !dbg !2439, !tbaa !249 + call void @llvm.dbg.value(metadata double %10, metadata !2248, metadata !DIExpression()), !dbg !2258 + %add184 = add nsw i32 %shl167, %i1.1, !dbg !2440 + %idxprom185 = sext i32 %add184 to i64, !dbg !2441 + %arrayidx186 = getelementptr inbounds [257 x double], [257 x double]* @u_imag, i64 0, i64 %idxprom185, !dbg !2441 + %11 = load double, double* %arrayidx186, align 8, !dbg !2441, !tbaa !249 + %mul187 = fmul double -1.000000e+00, %11, !dbg !2442 + call void @llvm.dbg.value(metadata double %mul187, metadata !2251, metadata !DIExpression()), !dbg !2258 + %idxprom188 = sext i32 %j.0 to i64, !dbg !2443 + %arrayidx189 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom188, !dbg !2443 + %add190 = add nsw i32 %mul177, %k1.1, !dbg !2444 + %idxprom191 = sext i32 %add190 to i64, !dbg !2443 + %arrayidx192 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx189, i64 0, i64 %idxprom191, !dbg !2443 + %idxprom193 = sext i32 %i.0 to i64, !dbg !2443 + %arrayidx194 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx192, i64 0, i64 %idxprom193, !dbg !2443 + %12 = load double, double* %arrayidx194, align 8, !dbg !2443, !tbaa !249 + call void @llvm.dbg.value(metadata double %12, metadata !2249, metadata !DIExpression()), !dbg !2258 + %idxprom195 = sext i32 %j.0 to i64, !dbg !2445 + %arrayidx196 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom195, !dbg !2445 + %add197 = add nsw i32 %mul177, %k1.1, !dbg !2446 + %idxprom198 = sext i32 %add197 to i64, !dbg !2445 + %arrayidx199 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx196, i64 0, i64 %idxprom198, !dbg !2445 + %idxprom200 = sext i32 %i.0 to i64, !dbg !2445 + %arrayidx201 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx199, i64 0, i64 %idxprom200, !dbg !2445 + %13 = load double, double* %arrayidx201, align 8, !dbg !2445, !tbaa !249 + call void @llvm.dbg.value(metadata double %13, metadata !2252, metadata !DIExpression()), !dbg !2258 + %idxprom202 = sext i32 %j.0 to i64, !dbg !2447 + %arrayidx203 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom202, !dbg !2447 + %add204 = add nsw i32 %add178, %k1.1, !dbg !2448 + %idxprom205 = sext i32 %add204 to i64, !dbg !2447 + %arrayidx206 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx203, i64 0, i64 %idxprom205, !dbg !2447 + %idxprom207 = sext i32 %i.0 to i64, !dbg !2447 + %arrayidx208 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx206, i64 0, i64 %idxprom207, !dbg !2447 + %14 = load double, double* %arrayidx208, align 8, !dbg !2447, !tbaa !249 + call void @llvm.dbg.value(metadata double %14, metadata !2250, metadata !DIExpression()), !dbg !2258 + %idxprom209 = sext i32 %j.0 to i64, !dbg !2449 + %arrayidx210 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom209, !dbg !2449 + %add211 = add nsw i32 %add178, %k1.1, !dbg !2450 + %idxprom212 = sext i32 %add211 to i64, !dbg !2449 + %arrayidx213 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx210, i64 0, i64 %idxprom212, !dbg !2449 + %idxprom214 = sext i32 %i.0 to i64, !dbg !2449 + %arrayidx215 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx213, i64 0, i64 %idxprom214, !dbg !2449 + %15 = load double, double* %arrayidx215, align 8, !dbg !2449, !tbaa !249 + call void @llvm.dbg.value(metadata double %15, metadata !2253, metadata !DIExpression()), !dbg !2258 + %add216 = fadd double %12, %14, !dbg !2451 + %idxprom217 = sext i32 %j.0 to i64, !dbg !2452 + %arrayidx218 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom217, !dbg !2452 + %add219 = add nsw i32 %mul179, %k1.1, !dbg !2453 + %idxprom220 = sext i32 %add219 to i64, !dbg !2452 + %arrayidx221 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx218, i64 0, i64 %idxprom220, !dbg !2452 + %idxprom222 = sext i32 %i.0 to i64, !dbg !2452 + %arrayidx223 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx221, i64 0, i64 %idxprom222, !dbg !2452 + store double %add216, double* %arrayidx223, align 8, !dbg !2454, !tbaa !249 + %add224 = fadd double %13, %15, !dbg !2455 + %idxprom225 = sext i32 %j.0 to i64, !dbg !2456 + %arrayidx226 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom225, !dbg !2456 + %add227 = add nsw i32 %mul179, %k1.1, !dbg !2457 + %idxprom228 = sext i32 %add227 to i64, !dbg !2456 + %arrayidx229 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx226, i64 0, i64 %idxprom228, !dbg !2456 + %idxprom230 = sext i32 %i.0 to i64, !dbg !2456 + %arrayidx231 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx229, i64 0, i64 %idxprom230, !dbg !2456 + store double %add224, double* %arrayidx231, align 8, !dbg !2458, !tbaa !249 + %sub232 = fsub double %12, %14, !dbg !2459 + call void @llvm.dbg.value(metadata double %sub232, metadata !2255, metadata !DIExpression()), !dbg !2258 + %sub233 = fsub double %13, %15, !dbg !2460 + call void @llvm.dbg.value(metadata double %sub233, metadata !2257, metadata !DIExpression()), !dbg !2258 + %mul234 = fmul double %10, %sub232, !dbg !2461 + %mul235 = fmul double %mul187, %sub233, !dbg !2462 + %sub236 = fsub double %mul234, %mul235, !dbg !2463 + %idxprom237 = sext i32 %j.0 to i64, !dbg !2464 + %arrayidx238 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom237, !dbg !2464 + %add239 = add nsw i32 %add180, %k1.1, !dbg !2465 + %idxprom240 = sext i32 %add239 to i64, !dbg !2464 + %arrayidx241 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx238, i64 0, i64 %idxprom240, !dbg !2464 + %idxprom242 = sext i32 %i.0 to i64, !dbg !2464 + %arrayidx243 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx241, i64 0, i64 %idxprom242, !dbg !2464 + store double %sub236, double* %arrayidx243, align 8, !dbg !2466, !tbaa !249 + %mul244 = fmul double %10, %sub233, !dbg !2467 + %mul245 = fmul double %mul187, %sub232, !dbg !2468 + %add246 = fadd double %mul244, %mul245, !dbg !2469 + %idxprom247 = sext i32 %j.0 to i64, !dbg !2470 + %arrayidx248 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom247, !dbg !2470 + %add249 = add nsw i32 %add180, %k1.1, !dbg !2471 + %idxprom250 = sext i32 %add249 to i64, !dbg !2470 + %arrayidx251 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx248, i64 0, i64 %idxprom250, !dbg !2470 + %idxprom252 = sext i32 %i.0 to i64, !dbg !2470 + %arrayidx253 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx251, i64 0, i64 %idxprom252, !dbg !2470 + store double %add246, double* %arrayidx253, align 8, !dbg !2472, !tbaa !249 + br label %for.inc254, !dbg !2473 + +for.inc254: ; preds = %for.body176 + %inc255 = add nsw i32 %k1.1, 1, !dbg !2474 + call void @llvm.dbg.value(metadata i32 %inc255, metadata !2232, metadata !DIExpression()), !dbg !2258 + br label %for.cond173, !dbg !2475, !llvm.loop !2476 + +for.end256: ; preds = %for.cond173 + br label %for.inc257, !dbg !2478 + +for.inc257: ; preds = %for.end256 + %inc258 = add nsw i32 %i1.1, 1, !dbg !2479 + call void @llvm.dbg.value(metadata i32 %inc258, metadata !2231, metadata !DIExpression()), !dbg !2258 + br label %for.cond169, !dbg !2480, !llvm.loop !2481 + +for.end259: ; preds = %for.cond169 + br label %if.end + +if.end: ; preds = %for.end259, %for.end160 + br label %for.inc260, !dbg !2483 + +for.inc260: ; preds = %if.end + %add261 = add nsw i32 %l.0, 2, !dbg !2484 + call void @llvm.dbg.value(metadata i32 %add261, metadata !2229, metadata !DIExpression()), !dbg !2258 + br label %for.cond33, !dbg !2485, !llvm.loop !2486 + +for.end262: ; preds = %for.cond33 + call void @llvm.dbg.value(metadata i32 0, metadata !2227, metadata !DIExpression()), !dbg !2258 + br label %for.cond263, !dbg !2488 + +for.cond263: ; preds = %for.inc296, %for.end262 + %k.1 = phi i32 [ 0, %for.end262 ], [ %inc297, %for.inc296 ], !dbg !2490 + call void @llvm.dbg.value(metadata i32 %k.1, metadata !2227, metadata !DIExpression()), !dbg !2258 + %cmp264 = icmp slt i32 %k.1, %d3, !dbg !2491 + br i1 %cmp264, label %for.body265, label %for.end298, !dbg !2493 + +for.body265: ; preds = %for.cond263 + %idxprom266 = sext i32 %j.0 to i64, !dbg !2494 + %arrayidx267 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom266, !dbg !2494 + %idxprom268 = sext i32 %k.1 to i64, !dbg !2494 + %arrayidx269 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx267, i64 0, i64 %idxprom268, !dbg !2494 + %idxprom270 = sext i32 %i.0 to i64, !dbg !2494 + %arrayidx271 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx269, i64 0, i64 %idxprom270, !dbg !2494 + %16 = load double, double* %arrayidx271, align 8, !dbg !2494, !tbaa !249 + %mul272 = mul nsw i32 %k.1, %d2, !dbg !2496 + %add273 = add nsw i32 %d1, 1, !dbg !2497 + %mul274 = mul nsw i32 %mul272, %add273, !dbg !2498 + %add275 = add nsw i32 %d1, 1, !dbg !2499 + %mul276 = mul nsw i32 %j.0, %add275, !dbg !2500 + %add277 = add nsw i32 %mul274, %mul276, !dbg !2501 + %add278 = add nsw i32 %add277, %i.0, !dbg !2502 + %idxprom279 = sext i32 %add278 to i64, !dbg !2503 + %arrayidx280 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_real, i64 0, i64 %idxprom279, !dbg !2503 + store double %16, double* %arrayidx280, align 8, !dbg !2504, !tbaa !249 + %idxprom281 = sext i32 %j.0 to i64, !dbg !2505 + %arrayidx282 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom281, !dbg !2505 + %idxprom283 = sext i32 %k.1 to i64, !dbg !2505 + %arrayidx284 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx282, i64 0, i64 %idxprom283, !dbg !2505 + %idxprom285 = sext i32 %i.0 to i64, !dbg !2505 + %arrayidx286 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx284, i64 0, i64 %idxprom285, !dbg !2505 + %17 = load double, double* %arrayidx286, align 8, !dbg !2505, !tbaa !249 + %mul287 = mul nsw i32 %k.1, %d2, !dbg !2506 + %add288 = add nsw i32 %d1, 1, !dbg !2507 + %mul289 = mul nsw i32 %mul287, %add288, !dbg !2508 + %add290 = add nsw i32 %d1, 1, !dbg !2509 + %mul291 = mul nsw i32 %j.0, %add290, !dbg !2510 + %add292 = add nsw i32 %mul289, %mul291, !dbg !2511 + %add293 = add nsw i32 %add292, %i.0, !dbg !2512 + %idxprom294 = sext i32 %add293 to i64, !dbg !2513 + %arrayidx295 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_imag, i64 0, i64 %idxprom294, !dbg !2513 + store double %17, double* %arrayidx295, align 8, !dbg !2514, !tbaa !249 + br label %for.inc296, !dbg !2515 + +for.inc296: ; preds = %for.body265 + %inc297 = add nsw i32 %k.1, 1, !dbg !2516 + call void @llvm.dbg.value(metadata i32 %inc297, metadata !2227, metadata !DIExpression()), !dbg !2258 + br label %for.cond263, !dbg !2517, !llvm.loop !2518 + +for.end298: ; preds = %for.cond263 + br label %for.inc299, !dbg !2520 + +for.inc299: ; preds = %for.end298 + %inc300 = add nsw i32 %i.0, 1, !dbg !2521 + call void @llvm.dbg.value(metadata i32 %inc300, metadata !2225, metadata !DIExpression()), !dbg !2258 + br label %for.cond1, !dbg !2522, !llvm.loop !2523 + +for.end301: ; preds = %for.cond1 + br label %for.inc302, !dbg !2525 + +for.inc302: ; preds = %for.end301 + %inc303 = add nsw i32 %j.0, 1, !dbg !2526 + call void @llvm.dbg.value(metadata i32 %inc303, metadata !2226, metadata !DIExpression()), !dbg !2258 + br label %for.cond, !dbg !2527, !llvm.loop !2528 + +for.end304: ; preds = %for.cond + ret void, !dbg !2530 +} + +; Function Attrs: nounwind uwtable +define internal void @cffts2_neg(i32 %is, i32 %d1, i32 %d2, i32 %d3) #0 !dbg !2531 { +entry: + call void @llvm.dbg.value(metadata i32 %is, metadata !2533, metadata !DIExpression()), !dbg !2571 + call void @llvm.dbg.value(metadata i32 %d1, metadata !2534, metadata !DIExpression()), !dbg !2571 + call void @llvm.dbg.value(metadata i32 %d2, metadata !2535, metadata !DIExpression()), !dbg !2571 + call void @llvm.dbg.value(metadata i32 %d3, metadata !2536, metadata !DIExpression()), !dbg !2571 + call void @llvm.dbg.declare(metadata !1325, metadata !2541, metadata !DIExpression()), !dbg !2572 + %call = call i32 @ilog2(i32 %d2), !dbg !2573 + call void @llvm.dbg.value(metadata i32 %call, metadata !2537, metadata !DIExpression()), !dbg !2571 + call void @llvm.dbg.value(metadata i32 0, metadata !2540, metadata !DIExpression()), !dbg !2571 + br label %for.cond, !dbg !2574 + +for.cond: ; preds = %for.inc302, %entry + %k.0 = phi i32 [ 0, %entry ], [ %inc303, %for.inc302 ], !dbg !2577 + call void @llvm.dbg.value(metadata i32 %k.0, metadata !2540, metadata !DIExpression()), !dbg !2571 + %cmp = icmp slt i32 %k.0, %d3, !dbg !2578 + br i1 %cmp, label %for.body, label %for.end304, !dbg !2580 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 0, metadata !2538, metadata !DIExpression()), !dbg !2571 + br label %for.cond1, !dbg !2581 + +for.cond1: ; preds = %for.inc299, %for.body + %i.0 = phi i32 [ 0, %for.body ], [ %inc300, %for.inc299 ], !dbg !2584 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !2538, metadata !DIExpression()), !dbg !2571 + %cmp2 = icmp slt i32 %i.0, %d1, !dbg !2585 + br i1 %cmp2, label %for.body3, label %for.end301, !dbg !2587 + +for.body3: ; preds = %for.cond1 + call void @llvm.dbg.value(metadata i32 0, metadata !2539, metadata !DIExpression()), !dbg !2571 + br label %for.cond4, !dbg !2588 + +for.cond4: ; preds = %for.inc, %for.body3 + %j.0 = phi i32 [ 0, %for.body3 ], [ %inc, %for.inc ], !dbg !2591 + call void @llvm.dbg.value(metadata i32 %j.0, metadata !2539, metadata !DIExpression()), !dbg !2571 + %cmp5 = icmp slt i32 %j.0, %d2, !dbg !2592 + br i1 %cmp5, label %for.body6, label %for.end, !dbg !2594 + +for.body6: ; preds = %for.cond4 + %mul = mul nsw i32 %k.0, %d2, !dbg !2595 + %add = add nsw i32 %d1, 1, !dbg !2597 + %mul7 = mul nsw i32 %mul, %add, !dbg !2598 + %add8 = add nsw i32 %d1, 1, !dbg !2599 + %mul9 = mul nsw i32 %j.0, %add8, !dbg !2600 + %add10 = add nsw i32 %mul7, %mul9, !dbg !2601 + %add11 = add nsw i32 %add10, %i.0, !dbg !2602 + %idxprom = sext i32 %add11 to i64, !dbg !2603 + %arrayidx = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_real, i64 0, i64 %idxprom, !dbg !2603 + %0 = load double, double* %arrayidx, align 8, !dbg !2603, !tbaa !249 + %idxprom12 = sext i32 %k.0 to i64, !dbg !2604 + %arrayidx13 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom12, !dbg !2604 + %idxprom14 = sext i32 %j.0 to i64, !dbg !2604 + %arrayidx15 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx13, i64 0, i64 %idxprom14, !dbg !2604 + %idxprom16 = sext i32 %i.0 to i64, !dbg !2604 + %arrayidx17 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx15, i64 0, i64 %idxprom16, !dbg !2604 + store double %0, double* %arrayidx17, align 8, !dbg !2605, !tbaa !249 + %mul18 = mul nsw i32 %k.0, %d2, !dbg !2606 + %add19 = add nsw i32 %d1, 1, !dbg !2607 + %mul20 = mul nsw i32 %mul18, %add19, !dbg !2608 + %add21 = add nsw i32 %d1, 1, !dbg !2609 + %mul22 = mul nsw i32 %j.0, %add21, !dbg !2610 + %add23 = add nsw i32 %mul20, %mul22, !dbg !2611 + %add24 = add nsw i32 %add23, %i.0, !dbg !2612 + %idxprom25 = sext i32 %add24 to i64, !dbg !2613 + %arrayidx26 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_imag, i64 0, i64 %idxprom25, !dbg !2613 + %1 = load double, double* %arrayidx26, align 8, !dbg !2613, !tbaa !249 + %idxprom27 = sext i32 %k.0 to i64, !dbg !2614 + %arrayidx28 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom27, !dbg !2614 + %idxprom29 = sext i32 %j.0 to i64, !dbg !2614 + %arrayidx30 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx28, i64 0, i64 %idxprom29, !dbg !2614 + %idxprom31 = sext i32 %i.0 to i64, !dbg !2614 + %arrayidx32 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx30, i64 0, i64 %idxprom31, !dbg !2614 + store double %1, double* %arrayidx32, align 8, !dbg !2615, !tbaa !249 + br label %for.inc, !dbg !2616 + +for.inc: ; preds = %for.body6 + %inc = add nsw i32 %j.0, 1, !dbg !2617 + call void @llvm.dbg.value(metadata i32 %inc, metadata !2539, metadata !DIExpression()), !dbg !2571 + br label %for.cond4, !dbg !2618, !llvm.loop !2619 + +for.end: ; preds = %for.cond4 + call void @llvm.dbg.value(metadata i32 1, metadata !2542, metadata !DIExpression()), !dbg !2571 + br label %for.cond33, !dbg !2621 + +for.cond33: ; preds = %for.inc260, %for.end + %l.0 = phi i32 [ 1, %for.end ], [ %add261, %for.inc260 ], !dbg !2623 + call void @llvm.dbg.value(metadata i32 %l.0, metadata !2542, metadata !DIExpression()), !dbg !2571 + %cmp34 = icmp sle i32 %l.0, %call, !dbg !2624 + br i1 %cmp34, label %for.body35, label %for.end262, !dbg !2626 + +for.body35: ; preds = %for.cond33 + %div = sdiv i32 %d2, 2, !dbg !2627 + call void @llvm.dbg.value(metadata i32 %div, metadata !2546, metadata !DIExpression()), !dbg !2571 + %sub = sub nsw i32 %l.0, 1, !dbg !2629 + %shl = shl i32 1, %sub, !dbg !2630 + call void @llvm.dbg.value(metadata i32 %shl, metadata !2549, metadata !DIExpression()), !dbg !2571 + %sub36 = sub nsw i32 %call, %l.0, !dbg !2631 + %shl37 = shl i32 1, %sub36, !dbg !2632 + call void @llvm.dbg.value(metadata i32 %shl37, metadata !2547, metadata !DIExpression()), !dbg !2571 + %mul38 = mul nsw i32 2, %shl, !dbg !2633 + call void @llvm.dbg.value(metadata i32 %mul38, metadata !2548, metadata !DIExpression()), !dbg !2571 + call void @llvm.dbg.value(metadata i32 %shl37, metadata !2550, metadata !DIExpression()), !dbg !2571 + call void @llvm.dbg.value(metadata i32 0, metadata !2544, metadata !DIExpression()), !dbg !2571 + br label %for.cond39, !dbg !2634 + +for.cond39: ; preds = %for.inc127, %for.body35 + %i1.0 = phi i32 [ 0, %for.body35 ], [ %inc128, %for.inc127 ], !dbg !2636 + call void @llvm.dbg.value(metadata i32 %i1.0, metadata !2544, metadata !DIExpression()), !dbg !2571 + %sub40 = sub nsw i32 %shl37, 1, !dbg !2637 + %cmp41 = icmp sle i32 %i1.0, %sub40, !dbg !2639 + br i1 %cmp41, label %for.body42, label %for.end129, !dbg !2640 + +for.body42: ; preds = %for.cond39 + call void @llvm.dbg.value(metadata i32 0, metadata !2545, metadata !DIExpression()), !dbg !2571 + br label %for.cond43, !dbg !2641 + +for.cond43: ; preds = %for.inc124, %for.body42 + %k1.0 = phi i32 [ 0, %for.body42 ], [ %inc125, %for.inc124 ], !dbg !2644 + call void @llvm.dbg.value(metadata i32 %k1.0, metadata !2545, metadata !DIExpression()), !dbg !2571 + %sub44 = sub nsw i32 %shl, 1, !dbg !2645 + %cmp45 = icmp sle i32 %k1.0, %sub44, !dbg !2647 + br i1 %cmp45, label %for.body46, label %for.end126, !dbg !2648 + +for.body46: ; preds = %for.cond43 + %mul47 = mul nsw i32 %i1.0, %shl, !dbg !2649 + call void @llvm.dbg.value(metadata i32 %mul47, metadata !2551, metadata !DIExpression()), !dbg !2571 + %add48 = add nsw i32 %mul47, %div, !dbg !2651 + call void @llvm.dbg.value(metadata i32 %add48, metadata !2552, metadata !DIExpression()), !dbg !2571 + %mul49 = mul nsw i32 %i1.0, %mul38, !dbg !2652 + call void @llvm.dbg.value(metadata i32 %mul49, metadata !2553, metadata !DIExpression()), !dbg !2571 + %add50 = add nsw i32 %mul49, %shl, !dbg !2653 + call void @llvm.dbg.value(metadata i32 %add50, metadata !2554, metadata !DIExpression()), !dbg !2571 + %add51 = add nsw i32 %shl37, %i1.0, !dbg !2654 + %idxprom52 = sext i32 %add51 to i64, !dbg !2655 + %arrayidx53 = getelementptr inbounds [257 x double], [257 x double]* @u_real, i64 0, i64 %idxprom52, !dbg !2655 + %2 = load double, double* %arrayidx53, align 8, !dbg !2655, !tbaa !249 + call void @llvm.dbg.value(metadata double %2, metadata !2555, metadata !DIExpression()), !dbg !2571 + %add54 = add nsw i32 %shl37, %i1.0, !dbg !2656 + %idxprom55 = sext i32 %add54 to i64, !dbg !2657 + %arrayidx56 = getelementptr inbounds [257 x double], [257 x double]* @u_imag, i64 0, i64 %idxprom55, !dbg !2657 + %3 = load double, double* %arrayidx56, align 8, !dbg !2657, !tbaa !249 + %mul57 = fmul double -1.000000e+00, %3, !dbg !2658 + call void @llvm.dbg.value(metadata double %mul57, metadata !2558, metadata !DIExpression()), !dbg !2571 + %idxprom58 = sext i32 %k.0 to i64, !dbg !2659 + %arrayidx59 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom58, !dbg !2659 + %add60 = add nsw i32 %mul47, %k1.0, !dbg !2660 + %idxprom61 = sext i32 %add60 to i64, !dbg !2659 + %arrayidx62 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx59, i64 0, i64 %idxprom61, !dbg !2659 + %idxprom63 = sext i32 %i.0 to i64, !dbg !2659 + %arrayidx64 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx62, i64 0, i64 %idxprom63, !dbg !2659 + %4 = load double, double* %arrayidx64, align 8, !dbg !2659, !tbaa !249 + call void @llvm.dbg.value(metadata double %4, metadata !2556, metadata !DIExpression()), !dbg !2571 + %idxprom65 = sext i32 %k.0 to i64, !dbg !2661 + %arrayidx66 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom65, !dbg !2661 + %add67 = add nsw i32 %mul47, %k1.0, !dbg !2662 + %idxprom68 = sext i32 %add67 to i64, !dbg !2661 + %arrayidx69 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx66, i64 0, i64 %idxprom68, !dbg !2661 + %idxprom70 = sext i32 %i.0 to i64, !dbg !2661 + %arrayidx71 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx69, i64 0, i64 %idxprom70, !dbg !2661 + %5 = load double, double* %arrayidx71, align 8, !dbg !2661, !tbaa !249 + call void @llvm.dbg.value(metadata double %5, metadata !2559, metadata !DIExpression()), !dbg !2571 + %idxprom72 = sext i32 %k.0 to i64, !dbg !2663 + %arrayidx73 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom72, !dbg !2663 + %add74 = add nsw i32 %add48, %k1.0, !dbg !2664 + %idxprom75 = sext i32 %add74 to i64, !dbg !2663 + %arrayidx76 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx73, i64 0, i64 %idxprom75, !dbg !2663 + %idxprom77 = sext i32 %i.0 to i64, !dbg !2663 + %arrayidx78 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx76, i64 0, i64 %idxprom77, !dbg !2663 + %6 = load double, double* %arrayidx78, align 8, !dbg !2663, !tbaa !249 + call void @llvm.dbg.value(metadata double %6, metadata !2557, metadata !DIExpression()), !dbg !2571 + %idxprom79 = sext i32 %k.0 to i64, !dbg !2665 + %arrayidx80 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom79, !dbg !2665 + %add81 = add nsw i32 %add48, %k1.0, !dbg !2666 + %idxprom82 = sext i32 %add81 to i64, !dbg !2665 + %arrayidx83 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx80, i64 0, i64 %idxprom82, !dbg !2665 + %idxprom84 = sext i32 %i.0 to i64, !dbg !2665 + %arrayidx85 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx83, i64 0, i64 %idxprom84, !dbg !2665 + %7 = load double, double* %arrayidx85, align 8, !dbg !2665, !tbaa !249 + call void @llvm.dbg.value(metadata double %7, metadata !2560, metadata !DIExpression()), !dbg !2571 + %add86 = fadd double %4, %6, !dbg !2667 + %idxprom87 = sext i32 %k.0 to i64, !dbg !2668 + %arrayidx88 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom87, !dbg !2668 + %add89 = add nsw i32 %mul49, %k1.0, !dbg !2669 + %idxprom90 = sext i32 %add89 to i64, !dbg !2668 + %arrayidx91 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx88, i64 0, i64 %idxprom90, !dbg !2668 + %idxprom92 = sext i32 %i.0 to i64, !dbg !2668 + %arrayidx93 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx91, i64 0, i64 %idxprom92, !dbg !2668 + store double %add86, double* %arrayidx93, align 8, !dbg !2670, !tbaa !249 + %add94 = fadd double %5, %7, !dbg !2671 + %idxprom95 = sext i32 %k.0 to i64, !dbg !2672 + %arrayidx96 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom95, !dbg !2672 + %add97 = add nsw i32 %mul49, %k1.0, !dbg !2673 + %idxprom98 = sext i32 %add97 to i64, !dbg !2672 + %arrayidx99 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx96, i64 0, i64 %idxprom98, !dbg !2672 + %idxprom100 = sext i32 %i.0 to i64, !dbg !2672 + %arrayidx101 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx99, i64 0, i64 %idxprom100, !dbg !2672 + store double %add94, double* %arrayidx101, align 8, !dbg !2674, !tbaa !249 + %sub102 = fsub double %4, %6, !dbg !2675 + call void @llvm.dbg.value(metadata double %sub102, metadata !2567, metadata !DIExpression()), !dbg !2571 + %sub103 = fsub double %5, %7, !dbg !2676 + call void @llvm.dbg.value(metadata double %sub103, metadata !2569, metadata !DIExpression()), !dbg !2571 + %mul104 = fmul double %2, %sub102, !dbg !2677 + %mul105 = fmul double %mul57, %sub103, !dbg !2678 + %sub106 = fsub double %mul104, %mul105, !dbg !2679 + %idxprom107 = sext i32 %k.0 to i64, !dbg !2680 + %arrayidx108 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom107, !dbg !2680 + %add109 = add nsw i32 %add50, %k1.0, !dbg !2681 + %idxprom110 = sext i32 %add109 to i64, !dbg !2680 + %arrayidx111 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx108, i64 0, i64 %idxprom110, !dbg !2680 + %idxprom112 = sext i32 %i.0 to i64, !dbg !2680 + %arrayidx113 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx111, i64 0, i64 %idxprom112, !dbg !2680 + store double %sub106, double* %arrayidx113, align 8, !dbg !2682, !tbaa !249 + %mul114 = fmul double %2, %sub103, !dbg !2683 + %mul115 = fmul double %mul57, %sub102, !dbg !2684 + %add116 = fadd double %mul114, %mul115, !dbg !2685 + %idxprom117 = sext i32 %k.0 to i64, !dbg !2686 + %arrayidx118 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom117, !dbg !2686 + %add119 = add nsw i32 %add50, %k1.0, !dbg !2687 + %idxprom120 = sext i32 %add119 to i64, !dbg !2686 + %arrayidx121 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx118, i64 0, i64 %idxprom120, !dbg !2686 + %idxprom122 = sext i32 %i.0 to i64, !dbg !2686 + %arrayidx123 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx121, i64 0, i64 %idxprom122, !dbg !2686 + store double %add116, double* %arrayidx123, align 8, !dbg !2688, !tbaa !249 + br label %for.inc124, !dbg !2689 + +for.inc124: ; preds = %for.body46 + %inc125 = add nsw i32 %k1.0, 1, !dbg !2690 + call void @llvm.dbg.value(metadata i32 %inc125, metadata !2545, metadata !DIExpression()), !dbg !2571 + br label %for.cond43, !dbg !2691, !llvm.loop !2692 + +for.end126: ; preds = %for.cond43 + br label %for.inc127, !dbg !2694 + +for.inc127: ; preds = %for.end126 + %inc128 = add nsw i32 %i1.0, 1, !dbg !2695 + call void @llvm.dbg.value(metadata i32 %inc128, metadata !2544, metadata !DIExpression()), !dbg !2571 + br label %for.cond39, !dbg !2696, !llvm.loop !2697 + +for.end129: ; preds = %for.cond39 + %cmp130 = icmp eq i32 %l.0, %call, !dbg !2699 + br i1 %cmp130, label %if.then, label %if.else, !dbg !2701 + +if.then: ; preds = %for.end129 + call void @llvm.dbg.value(metadata i32 0, metadata !2543, metadata !DIExpression()), !dbg !2571 + br label %for.cond131, !dbg !2702 + +for.cond131: ; preds = %for.inc158, %if.then + %j1.0 = phi i32 [ 0, %if.then ], [ %inc159, %for.inc158 ], !dbg !2705 + call void @llvm.dbg.value(metadata i32 %j1.0, metadata !2543, metadata !DIExpression()), !dbg !2571 + %cmp132 = icmp slt i32 %j1.0, %d1, !dbg !2706 + br i1 %cmp132, label %for.body133, label %for.end160, !dbg !2708 + +for.body133: ; preds = %for.cond131 + %idxprom134 = sext i32 %k.0 to i64, !dbg !2709 + %arrayidx135 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom134, !dbg !2709 + %idxprom136 = sext i32 %j1.0 to i64, !dbg !2709 + %arrayidx137 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx135, i64 0, i64 %idxprom136, !dbg !2709 + %idxprom138 = sext i32 %i.0 to i64, !dbg !2709 + %arrayidx139 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx137, i64 0, i64 %idxprom138, !dbg !2709 + %8 = load double, double* %arrayidx139, align 8, !dbg !2709, !tbaa !249 + %idxprom140 = sext i32 %k.0 to i64, !dbg !2711 + %arrayidx141 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom140, !dbg !2711 + %idxprom142 = sext i32 %j1.0 to i64, !dbg !2711 + %arrayidx143 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx141, i64 0, i64 %idxprom142, !dbg !2711 + %idxprom144 = sext i32 %i.0 to i64, !dbg !2711 + %arrayidx145 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx143, i64 0, i64 %idxprom144, !dbg !2711 + store double %8, double* %arrayidx145, align 8, !dbg !2712, !tbaa !249 + %idxprom146 = sext i32 %k.0 to i64, !dbg !2713 + %arrayidx147 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom146, !dbg !2713 + %idxprom148 = sext i32 %j1.0 to i64, !dbg !2713 + %arrayidx149 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx147, i64 0, i64 %idxprom148, !dbg !2713 + %idxprom150 = sext i32 %i.0 to i64, !dbg !2713 + %arrayidx151 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx149, i64 0, i64 %idxprom150, !dbg !2713 + %9 = load double, double* %arrayidx151, align 8, !dbg !2713, !tbaa !249 + %idxprom152 = sext i32 %k.0 to i64, !dbg !2714 + %arrayidx153 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom152, !dbg !2714 + %idxprom154 = sext i32 %j1.0 to i64, !dbg !2714 + %arrayidx155 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx153, i64 0, i64 %idxprom154, !dbg !2714 + %idxprom156 = sext i32 %i.0 to i64, !dbg !2714 + %arrayidx157 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx155, i64 0, i64 %idxprom156, !dbg !2714 + store double %9, double* %arrayidx157, align 8, !dbg !2715, !tbaa !249 + br label %for.inc158, !dbg !2716 + +for.inc158: ; preds = %for.body133 + %inc159 = add nsw i32 %j1.0, 1, !dbg !2717 + call void @llvm.dbg.value(metadata i32 %inc159, metadata !2543, metadata !DIExpression()), !dbg !2571 + br label %for.cond131, !dbg !2718, !llvm.loop !2719 + +for.end160: ; preds = %for.cond131 + br label %if.end, !dbg !2721 + +if.else: ; preds = %for.end129 + %div161 = sdiv i32 %d2, 2, !dbg !2722 + call void @llvm.dbg.value(metadata i32 %div161, metadata !2546, metadata !DIExpression()), !dbg !2571 + %add162 = add nsw i32 %l.0, 1, !dbg !2724 + %sub163 = sub nsw i32 %add162, 1, !dbg !2725 + %shl164 = shl i32 1, %sub163, !dbg !2726 + call void @llvm.dbg.value(metadata i32 %shl164, metadata !2549, metadata !DIExpression()), !dbg !2571 + %add165 = add nsw i32 %l.0, 1, !dbg !2727 + %sub166 = sub nsw i32 %call, %add165, !dbg !2728 + %shl167 = shl i32 1, %sub166, !dbg !2729 + call void @llvm.dbg.value(metadata i32 %shl167, metadata !2547, metadata !DIExpression()), !dbg !2571 + %mul168 = mul nsw i32 2, %shl164, !dbg !2730 + call void @llvm.dbg.value(metadata i32 %mul168, metadata !2548, metadata !DIExpression()), !dbg !2571 + call void @llvm.dbg.value(metadata i32 %shl167, metadata !2550, metadata !DIExpression()), !dbg !2571 + call void @llvm.dbg.value(metadata i32 0, metadata !2544, metadata !DIExpression()), !dbg !2571 + br label %for.cond169, !dbg !2731 + +for.cond169: ; preds = %for.inc257, %if.else + %i1.1 = phi i32 [ 0, %if.else ], [ %inc258, %for.inc257 ], !dbg !2733 + call void @llvm.dbg.value(metadata i32 %i1.1, metadata !2544, metadata !DIExpression()), !dbg !2571 + %sub170 = sub nsw i32 %shl167, 1, !dbg !2734 + %cmp171 = icmp sle i32 %i1.1, %sub170, !dbg !2736 + br i1 %cmp171, label %for.body172, label %for.end259, !dbg !2737 + +for.body172: ; preds = %for.cond169 + call void @llvm.dbg.value(metadata i32 0, metadata !2545, metadata !DIExpression()), !dbg !2571 + br label %for.cond173, !dbg !2738 + +for.cond173: ; preds = %for.inc254, %for.body172 + %k1.1 = phi i32 [ 0, %for.body172 ], [ %inc255, %for.inc254 ], !dbg !2741 + call void @llvm.dbg.value(metadata i32 %k1.1, metadata !2545, metadata !DIExpression()), !dbg !2571 + %sub174 = sub nsw i32 %shl164, 1, !dbg !2742 + %cmp175 = icmp sle i32 %k1.1, %sub174, !dbg !2744 + br i1 %cmp175, label %for.body176, label %for.end256, !dbg !2745 + +for.body176: ; preds = %for.cond173 + %mul177 = mul nsw i32 %i1.1, %shl164, !dbg !2746 + call void @llvm.dbg.value(metadata i32 %mul177, metadata !2551, metadata !DIExpression()), !dbg !2571 + %add178 = add nsw i32 %mul177, %div161, !dbg !2748 + call void @llvm.dbg.value(metadata i32 %add178, metadata !2552, metadata !DIExpression()), !dbg !2571 + %mul179 = mul nsw i32 %i1.1, %mul168, !dbg !2749 + call void @llvm.dbg.value(metadata i32 %mul179, metadata !2553, metadata !DIExpression()), !dbg !2571 + %add180 = add nsw i32 %mul179, %shl164, !dbg !2750 + call void @llvm.dbg.value(metadata i32 %add180, metadata !2554, metadata !DIExpression()), !dbg !2571 + %add181 = add nsw i32 %shl167, %i1.1, !dbg !2751 + %idxprom182 = sext i32 %add181 to i64, !dbg !2752 + %arrayidx183 = getelementptr inbounds [257 x double], [257 x double]* @u_real, i64 0, i64 %idxprom182, !dbg !2752 + %10 = load double, double* %arrayidx183, align 8, !dbg !2752, !tbaa !249 + call void @llvm.dbg.value(metadata double %10, metadata !2561, metadata !DIExpression()), !dbg !2571 + %add184 = add nsw i32 %shl167, %i1.1, !dbg !2753 + %idxprom185 = sext i32 %add184 to i64, !dbg !2754 + %arrayidx186 = getelementptr inbounds [257 x double], [257 x double]* @u_imag, i64 0, i64 %idxprom185, !dbg !2754 + %11 = load double, double* %arrayidx186, align 8, !dbg !2754, !tbaa !249 + %mul187 = fmul double -1.000000e+00, %11, !dbg !2755 + call void @llvm.dbg.value(metadata double %mul187, metadata !2564, metadata !DIExpression()), !dbg !2571 + %idxprom188 = sext i32 %k.0 to i64, !dbg !2756 + %arrayidx189 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom188, !dbg !2756 + %add190 = add nsw i32 %mul177, %k1.1, !dbg !2757 + %idxprom191 = sext i32 %add190 to i64, !dbg !2756 + %arrayidx192 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx189, i64 0, i64 %idxprom191, !dbg !2756 + %idxprom193 = sext i32 %i.0 to i64, !dbg !2756 + %arrayidx194 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx192, i64 0, i64 %idxprom193, !dbg !2756 + %12 = load double, double* %arrayidx194, align 8, !dbg !2756, !tbaa !249 + call void @llvm.dbg.value(metadata double %12, metadata !2562, metadata !DIExpression()), !dbg !2571 + %idxprom195 = sext i32 %k.0 to i64, !dbg !2758 + %arrayidx196 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom195, !dbg !2758 + %add197 = add nsw i32 %mul177, %k1.1, !dbg !2759 + %idxprom198 = sext i32 %add197 to i64, !dbg !2758 + %arrayidx199 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx196, i64 0, i64 %idxprom198, !dbg !2758 + %idxprom200 = sext i32 %i.0 to i64, !dbg !2758 + %arrayidx201 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx199, i64 0, i64 %idxprom200, !dbg !2758 + %13 = load double, double* %arrayidx201, align 8, !dbg !2758, !tbaa !249 + call void @llvm.dbg.value(metadata double %13, metadata !2565, metadata !DIExpression()), !dbg !2571 + %idxprom202 = sext i32 %k.0 to i64, !dbg !2760 + %arrayidx203 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom202, !dbg !2760 + %add204 = add nsw i32 %add178, %k1.1, !dbg !2761 + %idxprom205 = sext i32 %add204 to i64, !dbg !2760 + %arrayidx206 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx203, i64 0, i64 %idxprom205, !dbg !2760 + %idxprom207 = sext i32 %i.0 to i64, !dbg !2760 + %arrayidx208 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx206, i64 0, i64 %idxprom207, !dbg !2760 + %14 = load double, double* %arrayidx208, align 8, !dbg !2760, !tbaa !249 + call void @llvm.dbg.value(metadata double %14, metadata !2563, metadata !DIExpression()), !dbg !2571 + %idxprom209 = sext i32 %k.0 to i64, !dbg !2762 + %arrayidx210 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom209, !dbg !2762 + %add211 = add nsw i32 %add178, %k1.1, !dbg !2763 + %idxprom212 = sext i32 %add211 to i64, !dbg !2762 + %arrayidx213 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx210, i64 0, i64 %idxprom212, !dbg !2762 + %idxprom214 = sext i32 %i.0 to i64, !dbg !2762 + %arrayidx215 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx213, i64 0, i64 %idxprom214, !dbg !2762 + %15 = load double, double* %arrayidx215, align 8, !dbg !2762, !tbaa !249 + call void @llvm.dbg.value(metadata double %15, metadata !2566, metadata !DIExpression()), !dbg !2571 + %add216 = fadd double %12, %14, !dbg !2764 + %idxprom217 = sext i32 %k.0 to i64, !dbg !2765 + %arrayidx218 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom217, !dbg !2765 + %add219 = add nsw i32 %mul179, %k1.1, !dbg !2766 + %idxprom220 = sext i32 %add219 to i64, !dbg !2765 + %arrayidx221 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx218, i64 0, i64 %idxprom220, !dbg !2765 + %idxprom222 = sext i32 %i.0 to i64, !dbg !2765 + %arrayidx223 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx221, i64 0, i64 %idxprom222, !dbg !2765 + store double %add216, double* %arrayidx223, align 8, !dbg !2767, !tbaa !249 + %add224 = fadd double %13, %15, !dbg !2768 + %idxprom225 = sext i32 %k.0 to i64, !dbg !2769 + %arrayidx226 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom225, !dbg !2769 + %add227 = add nsw i32 %mul179, %k1.1, !dbg !2770 + %idxprom228 = sext i32 %add227 to i64, !dbg !2769 + %arrayidx229 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx226, i64 0, i64 %idxprom228, !dbg !2769 + %idxprom230 = sext i32 %i.0 to i64, !dbg !2769 + %arrayidx231 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx229, i64 0, i64 %idxprom230, !dbg !2769 + store double %add224, double* %arrayidx231, align 8, !dbg !2771, !tbaa !249 + %sub232 = fsub double %12, %14, !dbg !2772 + call void @llvm.dbg.value(metadata double %sub232, metadata !2568, metadata !DIExpression()), !dbg !2571 + %sub233 = fsub double %13, %15, !dbg !2773 + call void @llvm.dbg.value(metadata double %sub233, metadata !2570, metadata !DIExpression()), !dbg !2571 + %mul234 = fmul double %10, %sub232, !dbg !2774 + %mul235 = fmul double %mul187, %sub233, !dbg !2775 + %sub236 = fsub double %mul234, %mul235, !dbg !2776 + %idxprom237 = sext i32 %k.0 to i64, !dbg !2777 + %arrayidx238 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom237, !dbg !2777 + %add239 = add nsw i32 %add180, %k1.1, !dbg !2778 + %idxprom240 = sext i32 %add239 to i64, !dbg !2777 + %arrayidx241 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx238, i64 0, i64 %idxprom240, !dbg !2777 + %idxprom242 = sext i32 %i.0 to i64, !dbg !2777 + %arrayidx243 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx241, i64 0, i64 %idxprom242, !dbg !2777 + store double %sub236, double* %arrayidx243, align 8, !dbg !2779, !tbaa !249 + %mul244 = fmul double %10, %sub233, !dbg !2780 + %mul245 = fmul double %mul187, %sub232, !dbg !2781 + %add246 = fadd double %mul244, %mul245, !dbg !2782 + %idxprom247 = sext i32 %k.0 to i64, !dbg !2783 + %arrayidx248 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom247, !dbg !2783 + %add249 = add nsw i32 %add180, %k1.1, !dbg !2784 + %idxprom250 = sext i32 %add249 to i64, !dbg !2783 + %arrayidx251 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx248, i64 0, i64 %idxprom250, !dbg !2783 + %idxprom252 = sext i32 %i.0 to i64, !dbg !2783 + %arrayidx253 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx251, i64 0, i64 %idxprom252, !dbg !2783 + store double %add246, double* %arrayidx253, align 8, !dbg !2785, !tbaa !249 + br label %for.inc254, !dbg !2786 + +for.inc254: ; preds = %for.body176 + %inc255 = add nsw i32 %k1.1, 1, !dbg !2787 + call void @llvm.dbg.value(metadata i32 %inc255, metadata !2545, metadata !DIExpression()), !dbg !2571 + br label %for.cond173, !dbg !2788, !llvm.loop !2789 + +for.end256: ; preds = %for.cond173 + br label %for.inc257, !dbg !2791 + +for.inc257: ; preds = %for.end256 + %inc258 = add nsw i32 %i1.1, 1, !dbg !2792 + call void @llvm.dbg.value(metadata i32 %inc258, metadata !2544, metadata !DIExpression()), !dbg !2571 + br label %for.cond169, !dbg !2793, !llvm.loop !2794 + +for.end259: ; preds = %for.cond169 + br label %if.end + +if.end: ; preds = %for.end259, %for.end160 + br label %for.inc260, !dbg !2796 + +for.inc260: ; preds = %if.end + %add261 = add nsw i32 %l.0, 2, !dbg !2797 + call void @llvm.dbg.value(metadata i32 %add261, metadata !2542, metadata !DIExpression()), !dbg !2571 + br label %for.cond33, !dbg !2798, !llvm.loop !2799 + +for.end262: ; preds = %for.cond33 + call void @llvm.dbg.value(metadata i32 0, metadata !2539, metadata !DIExpression()), !dbg !2571 + br label %for.cond263, !dbg !2801 + +for.cond263: ; preds = %for.inc296, %for.end262 + %j.1 = phi i32 [ 0, %for.end262 ], [ %inc297, %for.inc296 ], !dbg !2803 + call void @llvm.dbg.value(metadata i32 %j.1, metadata !2539, metadata !DIExpression()), !dbg !2571 + %cmp264 = icmp slt i32 %j.1, %d2, !dbg !2804 + br i1 %cmp264, label %for.body265, label %for.end298, !dbg !2806 + +for.body265: ; preds = %for.cond263 + %idxprom266 = sext i32 %k.0 to i64, !dbg !2807 + %arrayidx267 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom266, !dbg !2807 + %idxprom268 = sext i32 %j.1 to i64, !dbg !2807 + %arrayidx269 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx267, i64 0, i64 %idxprom268, !dbg !2807 + %idxprom270 = sext i32 %i.0 to i64, !dbg !2807 + %arrayidx271 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx269, i64 0, i64 %idxprom270, !dbg !2807 + %16 = load double, double* %arrayidx271, align 8, !dbg !2807, !tbaa !249 + %mul272 = mul nsw i32 %k.0, %d2, !dbg !2809 + %add273 = add nsw i32 %d1, 1, !dbg !2810 + %mul274 = mul nsw i32 %mul272, %add273, !dbg !2811 + %add275 = add nsw i32 %d1, 1, !dbg !2812 + %mul276 = mul nsw i32 %j.1, %add275, !dbg !2813 + %add277 = add nsw i32 %mul274, %mul276, !dbg !2814 + %add278 = add nsw i32 %add277, %i.0, !dbg !2815 + %idxprom279 = sext i32 %add278 to i64, !dbg !2816 + %arrayidx280 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_real, i64 0, i64 %idxprom279, !dbg !2816 + store double %16, double* %arrayidx280, align 8, !dbg !2817, !tbaa !249 + %idxprom281 = sext i32 %k.0 to i64, !dbg !2818 + %arrayidx282 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom281, !dbg !2818 + %idxprom283 = sext i32 %j.1 to i64, !dbg !2818 + %arrayidx284 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx282, i64 0, i64 %idxprom283, !dbg !2818 + %idxprom285 = sext i32 %i.0 to i64, !dbg !2818 + %arrayidx286 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx284, i64 0, i64 %idxprom285, !dbg !2818 + %17 = load double, double* %arrayidx286, align 8, !dbg !2818, !tbaa !249 + %mul287 = mul nsw i32 %k.0, %d2, !dbg !2819 + %add288 = add nsw i32 %d1, 1, !dbg !2820 + %mul289 = mul nsw i32 %mul287, %add288, !dbg !2821 + %add290 = add nsw i32 %d1, 1, !dbg !2822 + %mul291 = mul nsw i32 %j.1, %add290, !dbg !2823 + %add292 = add nsw i32 %mul289, %mul291, !dbg !2824 + %add293 = add nsw i32 %add292, %i.0, !dbg !2825 + %idxprom294 = sext i32 %add293 to i64, !dbg !2826 + %arrayidx295 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_imag, i64 0, i64 %idxprom294, !dbg !2826 + store double %17, double* %arrayidx295, align 8, !dbg !2827, !tbaa !249 + br label %for.inc296, !dbg !2828 + +for.inc296: ; preds = %for.body265 + %inc297 = add nsw i32 %j.1, 1, !dbg !2829 + call void @llvm.dbg.value(metadata i32 %inc297, metadata !2539, metadata !DIExpression()), !dbg !2571 + br label %for.cond263, !dbg !2830, !llvm.loop !2831 + +for.end298: ; preds = %for.cond263 + br label %for.inc299, !dbg !2833 + +for.inc299: ; preds = %for.end298 + %inc300 = add nsw i32 %i.0, 1, !dbg !2834 + call void @llvm.dbg.value(metadata i32 %inc300, metadata !2538, metadata !DIExpression()), !dbg !2571 + br label %for.cond1, !dbg !2835, !llvm.loop !2836 + +for.end301: ; preds = %for.cond1 + br label %for.inc302, !dbg !2838 + +for.inc302: ; preds = %for.end301 + %inc303 = add nsw i32 %k.0, 1, !dbg !2839 + call void @llvm.dbg.value(metadata i32 %inc303, metadata !2540, metadata !DIExpression()), !dbg !2571 + br label %for.cond, !dbg !2840, !llvm.loop !2841 + +for.end304: ; preds = %for.cond + ret void, !dbg !2843 +} + +; Function Attrs: nounwind uwtable +define internal void @cffts1_neg(i32 %is, i32 %d1, i32 %d2, i32 %d3) #0 !dbg !2844 { +entry: + call void @llvm.dbg.value(metadata i32 %is, metadata !2846, metadata !DIExpression()), !dbg !2884 + call void @llvm.dbg.value(metadata i32 %d1, metadata !2847, metadata !DIExpression()), !dbg !2884 + call void @llvm.dbg.value(metadata i32 %d2, metadata !2848, metadata !DIExpression()), !dbg !2884 + call void @llvm.dbg.value(metadata i32 %d3, metadata !2849, metadata !DIExpression()), !dbg !2884 + call void @llvm.dbg.declare(metadata !1325, metadata !2854, metadata !DIExpression()), !dbg !2885 + %call = call i32 @ilog2(i32 %d1), !dbg !2886 + call void @llvm.dbg.value(metadata i32 %call, metadata !2850, metadata !DIExpression()), !dbg !2884 + call void @llvm.dbg.value(metadata i32 0, metadata !2853, metadata !DIExpression()), !dbg !2884 + br label %for.cond, !dbg !2887 + +for.cond: ; preds = %for.inc302, %entry + %k.0 = phi i32 [ 0, %entry ], [ %inc303, %for.inc302 ], !dbg !2890 + call void @llvm.dbg.value(metadata i32 %k.0, metadata !2853, metadata !DIExpression()), !dbg !2884 + %cmp = icmp slt i32 %k.0, %d3, !dbg !2891 + br i1 %cmp, label %for.body, label %for.end304, !dbg !2893 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 0, metadata !2852, metadata !DIExpression()), !dbg !2884 + br label %for.cond1, !dbg !2894 + +for.cond1: ; preds = %for.inc299, %for.body + %j.0 = phi i32 [ 0, %for.body ], [ %inc300, %for.inc299 ], !dbg !2897 + call void @llvm.dbg.value(metadata i32 %j.0, metadata !2852, metadata !DIExpression()), !dbg !2884 + %cmp2 = icmp slt i32 %j.0, %d2, !dbg !2898 + br i1 %cmp2, label %for.body3, label %for.end301, !dbg !2900 + +for.body3: ; preds = %for.cond1 + call void @llvm.dbg.value(metadata i32 0, metadata !2851, metadata !DIExpression()), !dbg !2884 + br label %for.cond4, !dbg !2901 + +for.cond4: ; preds = %for.inc, %for.body3 + %i.0 = phi i32 [ 0, %for.body3 ], [ %inc, %for.inc ], !dbg !2904 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !2851, metadata !DIExpression()), !dbg !2884 + %cmp5 = icmp slt i32 %i.0, %d1, !dbg !2905 + br i1 %cmp5, label %for.body6, label %for.end, !dbg !2907 + +for.body6: ; preds = %for.cond4 + %mul = mul nsw i32 %k.0, %d2, !dbg !2908 + %add = add nsw i32 %d1, 1, !dbg !2910 + %mul7 = mul nsw i32 %mul, %add, !dbg !2911 + %add8 = add nsw i32 %d1, 1, !dbg !2912 + %mul9 = mul nsw i32 %j.0, %add8, !dbg !2913 + %add10 = add nsw i32 %mul7, %mul9, !dbg !2914 + %add11 = add nsw i32 %add10, %i.0, !dbg !2915 + %idxprom = sext i32 %add11 to i64, !dbg !2916 + %arrayidx = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_real, i64 0, i64 %idxprom, !dbg !2916 + %0 = load double, double* %arrayidx, align 8, !dbg !2916, !tbaa !249 + %idxprom12 = sext i32 %k.0 to i64, !dbg !2917 + %arrayidx13 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom12, !dbg !2917 + %idxprom14 = sext i32 %i.0 to i64, !dbg !2917 + %arrayidx15 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx13, i64 0, i64 %idxprom14, !dbg !2917 + %idxprom16 = sext i32 %j.0 to i64, !dbg !2917 + %arrayidx17 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx15, i64 0, i64 %idxprom16, !dbg !2917 + store double %0, double* %arrayidx17, align 8, !dbg !2918, !tbaa !249 + %mul18 = mul nsw i32 %k.0, %d2, !dbg !2919 + %add19 = add nsw i32 %d1, 1, !dbg !2920 + %mul20 = mul nsw i32 %mul18, %add19, !dbg !2921 + %add21 = add nsw i32 %d1, 1, !dbg !2922 + %mul22 = mul nsw i32 %j.0, %add21, !dbg !2923 + %add23 = add nsw i32 %mul20, %mul22, !dbg !2924 + %add24 = add nsw i32 %add23, %i.0, !dbg !2925 + %idxprom25 = sext i32 %add24 to i64, !dbg !2926 + %arrayidx26 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_imag, i64 0, i64 %idxprom25, !dbg !2926 + %1 = load double, double* %arrayidx26, align 8, !dbg !2926, !tbaa !249 + %idxprom27 = sext i32 %k.0 to i64, !dbg !2927 + %arrayidx28 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom27, !dbg !2927 + %idxprom29 = sext i32 %i.0 to i64, !dbg !2927 + %arrayidx30 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx28, i64 0, i64 %idxprom29, !dbg !2927 + %idxprom31 = sext i32 %j.0 to i64, !dbg !2927 + %arrayidx32 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx30, i64 0, i64 %idxprom31, !dbg !2927 + store double %1, double* %arrayidx32, align 8, !dbg !2928, !tbaa !249 + br label %for.inc, !dbg !2929 + +for.inc: ; preds = %for.body6 + %inc = add nsw i32 %i.0, 1, !dbg !2930 + call void @llvm.dbg.value(metadata i32 %inc, metadata !2851, metadata !DIExpression()), !dbg !2884 + br label %for.cond4, !dbg !2931, !llvm.loop !2932 + +for.end: ; preds = %for.cond4 + call void @llvm.dbg.value(metadata i32 1, metadata !2855, metadata !DIExpression()), !dbg !2884 + br label %for.cond33, !dbg !2934 + +for.cond33: ; preds = %for.inc260, %for.end + %l.0 = phi i32 [ 1, %for.end ], [ %add261, %for.inc260 ], !dbg !2936 + call void @llvm.dbg.value(metadata i32 %l.0, metadata !2855, metadata !DIExpression()), !dbg !2884 + %cmp34 = icmp sle i32 %l.0, %call, !dbg !2937 + br i1 %cmp34, label %for.body35, label %for.end262, !dbg !2939 + +for.body35: ; preds = %for.cond33 + %div = sdiv i32 %d1, 2, !dbg !2940 + call void @llvm.dbg.value(metadata i32 %div, metadata !2859, metadata !DIExpression()), !dbg !2884 + %sub = sub nsw i32 %l.0, 1, !dbg !2942 + %shl = shl i32 1, %sub, !dbg !2943 + call void @llvm.dbg.value(metadata i32 %shl, metadata !2862, metadata !DIExpression()), !dbg !2884 + %sub36 = sub nsw i32 %call, %l.0, !dbg !2944 + %shl37 = shl i32 1, %sub36, !dbg !2945 + call void @llvm.dbg.value(metadata i32 %shl37, metadata !2860, metadata !DIExpression()), !dbg !2884 + %mul38 = mul nsw i32 2, %shl, !dbg !2946 + call void @llvm.dbg.value(metadata i32 %mul38, metadata !2861, metadata !DIExpression()), !dbg !2884 + call void @llvm.dbg.value(metadata i32 %shl37, metadata !2863, metadata !DIExpression()), !dbg !2884 + call void @llvm.dbg.value(metadata i32 0, metadata !2857, metadata !DIExpression()), !dbg !2884 + br label %for.cond39, !dbg !2947 + +for.cond39: ; preds = %for.inc127, %for.body35 + %i1.0 = phi i32 [ 0, %for.body35 ], [ %inc128, %for.inc127 ], !dbg !2949 + call void @llvm.dbg.value(metadata i32 %i1.0, metadata !2857, metadata !DIExpression()), !dbg !2884 + %sub40 = sub nsw i32 %shl37, 1, !dbg !2950 + %cmp41 = icmp sle i32 %i1.0, %sub40, !dbg !2952 + br i1 %cmp41, label %for.body42, label %for.end129, !dbg !2953 + +for.body42: ; preds = %for.cond39 + call void @llvm.dbg.value(metadata i32 0, metadata !2858, metadata !DIExpression()), !dbg !2884 + br label %for.cond43, !dbg !2954 + +for.cond43: ; preds = %for.inc124, %for.body42 + %k1.0 = phi i32 [ 0, %for.body42 ], [ %inc125, %for.inc124 ], !dbg !2957 + call void @llvm.dbg.value(metadata i32 %k1.0, metadata !2858, metadata !DIExpression()), !dbg !2884 + %sub44 = sub nsw i32 %shl, 1, !dbg !2958 + %cmp45 = icmp sle i32 %k1.0, %sub44, !dbg !2960 + br i1 %cmp45, label %for.body46, label %for.end126, !dbg !2961 + +for.body46: ; preds = %for.cond43 + %mul47 = mul nsw i32 %i1.0, %shl, !dbg !2962 + call void @llvm.dbg.value(metadata i32 %mul47, metadata !2864, metadata !DIExpression()), !dbg !2884 + %add48 = add nsw i32 %mul47, %div, !dbg !2964 + call void @llvm.dbg.value(metadata i32 %add48, metadata !2865, metadata !DIExpression()), !dbg !2884 + %mul49 = mul nsw i32 %i1.0, %mul38, !dbg !2965 + call void @llvm.dbg.value(metadata i32 %mul49, metadata !2866, metadata !DIExpression()), !dbg !2884 + %add50 = add nsw i32 %mul49, %shl, !dbg !2966 + call void @llvm.dbg.value(metadata i32 %add50, metadata !2867, metadata !DIExpression()), !dbg !2884 + %add51 = add nsw i32 %shl37, %i1.0, !dbg !2967 + %idxprom52 = sext i32 %add51 to i64, !dbg !2968 + %arrayidx53 = getelementptr inbounds [257 x double], [257 x double]* @u_real, i64 0, i64 %idxprom52, !dbg !2968 + %2 = load double, double* %arrayidx53, align 8, !dbg !2968, !tbaa !249 + call void @llvm.dbg.value(metadata double %2, metadata !2868, metadata !DIExpression()), !dbg !2884 + %add54 = add nsw i32 %shl37, %i1.0, !dbg !2969 + %idxprom55 = sext i32 %add54 to i64, !dbg !2970 + %arrayidx56 = getelementptr inbounds [257 x double], [257 x double]* @u_imag, i64 0, i64 %idxprom55, !dbg !2970 + %3 = load double, double* %arrayidx56, align 8, !dbg !2970, !tbaa !249 + %mul57 = fmul double -1.000000e+00, %3, !dbg !2971 + call void @llvm.dbg.value(metadata double %mul57, metadata !2871, metadata !DIExpression()), !dbg !2884 + %idxprom58 = sext i32 %k.0 to i64, !dbg !2972 + %arrayidx59 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom58, !dbg !2972 + %add60 = add nsw i32 %mul47, %k1.0, !dbg !2973 + %idxprom61 = sext i32 %add60 to i64, !dbg !2972 + %arrayidx62 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx59, i64 0, i64 %idxprom61, !dbg !2972 + %idxprom63 = sext i32 %j.0 to i64, !dbg !2972 + %arrayidx64 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx62, i64 0, i64 %idxprom63, !dbg !2972 + %4 = load double, double* %arrayidx64, align 8, !dbg !2972, !tbaa !249 + call void @llvm.dbg.value(metadata double %4, metadata !2869, metadata !DIExpression()), !dbg !2884 + %idxprom65 = sext i32 %k.0 to i64, !dbg !2974 + %arrayidx66 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom65, !dbg !2974 + %add67 = add nsw i32 %mul47, %k1.0, !dbg !2975 + %idxprom68 = sext i32 %add67 to i64, !dbg !2974 + %arrayidx69 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx66, i64 0, i64 %idxprom68, !dbg !2974 + %idxprom70 = sext i32 %j.0 to i64, !dbg !2974 + %arrayidx71 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx69, i64 0, i64 %idxprom70, !dbg !2974 + %5 = load double, double* %arrayidx71, align 8, !dbg !2974, !tbaa !249 + call void @llvm.dbg.value(metadata double %5, metadata !2872, metadata !DIExpression()), !dbg !2884 + %idxprom72 = sext i32 %k.0 to i64, !dbg !2976 + %arrayidx73 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom72, !dbg !2976 + %add74 = add nsw i32 %add48, %k1.0, !dbg !2977 + %idxprom75 = sext i32 %add74 to i64, !dbg !2976 + %arrayidx76 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx73, i64 0, i64 %idxprom75, !dbg !2976 + %idxprom77 = sext i32 %j.0 to i64, !dbg !2976 + %arrayidx78 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx76, i64 0, i64 %idxprom77, !dbg !2976 + %6 = load double, double* %arrayidx78, align 8, !dbg !2976, !tbaa !249 + call void @llvm.dbg.value(metadata double %6, metadata !2870, metadata !DIExpression()), !dbg !2884 + %idxprom79 = sext i32 %k.0 to i64, !dbg !2978 + %arrayidx80 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom79, !dbg !2978 + %add81 = add nsw i32 %add48, %k1.0, !dbg !2979 + %idxprom82 = sext i32 %add81 to i64, !dbg !2978 + %arrayidx83 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx80, i64 0, i64 %idxprom82, !dbg !2978 + %idxprom84 = sext i32 %j.0 to i64, !dbg !2978 + %arrayidx85 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx83, i64 0, i64 %idxprom84, !dbg !2978 + %7 = load double, double* %arrayidx85, align 8, !dbg !2978, !tbaa !249 + call void @llvm.dbg.value(metadata double %7, metadata !2873, metadata !DIExpression()), !dbg !2884 + %add86 = fadd double %4, %6, !dbg !2980 + %idxprom87 = sext i32 %k.0 to i64, !dbg !2981 + %arrayidx88 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom87, !dbg !2981 + %add89 = add nsw i32 %mul49, %k1.0, !dbg !2982 + %idxprom90 = sext i32 %add89 to i64, !dbg !2981 + %arrayidx91 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx88, i64 0, i64 %idxprom90, !dbg !2981 + %idxprom92 = sext i32 %j.0 to i64, !dbg !2981 + %arrayidx93 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx91, i64 0, i64 %idxprom92, !dbg !2981 + store double %add86, double* %arrayidx93, align 8, !dbg !2983, !tbaa !249 + %add94 = fadd double %5, %7, !dbg !2984 + %idxprom95 = sext i32 %k.0 to i64, !dbg !2985 + %arrayidx96 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom95, !dbg !2985 + %add97 = add nsw i32 %mul49, %k1.0, !dbg !2986 + %idxprom98 = sext i32 %add97 to i64, !dbg !2985 + %arrayidx99 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx96, i64 0, i64 %idxprom98, !dbg !2985 + %idxprom100 = sext i32 %j.0 to i64, !dbg !2985 + %arrayidx101 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx99, i64 0, i64 %idxprom100, !dbg !2985 + store double %add94, double* %arrayidx101, align 8, !dbg !2987, !tbaa !249 + %sub102 = fsub double %4, %6, !dbg !2988 + call void @llvm.dbg.value(metadata double %sub102, metadata !2880, metadata !DIExpression()), !dbg !2884 + %sub103 = fsub double %5, %7, !dbg !2989 + call void @llvm.dbg.value(metadata double %sub103, metadata !2882, metadata !DIExpression()), !dbg !2884 + %mul104 = fmul double %2, %sub102, !dbg !2990 + %mul105 = fmul double %mul57, %sub103, !dbg !2991 + %sub106 = fsub double %mul104, %mul105, !dbg !2992 + %idxprom107 = sext i32 %k.0 to i64, !dbg !2993 + %arrayidx108 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom107, !dbg !2993 + %add109 = add nsw i32 %add50, %k1.0, !dbg !2994 + %idxprom110 = sext i32 %add109 to i64, !dbg !2993 + %arrayidx111 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx108, i64 0, i64 %idxprom110, !dbg !2993 + %idxprom112 = sext i32 %j.0 to i64, !dbg !2993 + %arrayidx113 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx111, i64 0, i64 %idxprom112, !dbg !2993 + store double %sub106, double* %arrayidx113, align 8, !dbg !2995, !tbaa !249 + %mul114 = fmul double %2, %sub103, !dbg !2996 + %mul115 = fmul double %mul57, %sub102, !dbg !2997 + %add116 = fadd double %mul114, %mul115, !dbg !2998 + %idxprom117 = sext i32 %k.0 to i64, !dbg !2999 + %arrayidx118 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom117, !dbg !2999 + %add119 = add nsw i32 %add50, %k1.0, !dbg !3000 + %idxprom120 = sext i32 %add119 to i64, !dbg !2999 + %arrayidx121 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx118, i64 0, i64 %idxprom120, !dbg !2999 + %idxprom122 = sext i32 %j.0 to i64, !dbg !2999 + %arrayidx123 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx121, i64 0, i64 %idxprom122, !dbg !2999 + store double %add116, double* %arrayidx123, align 8, !dbg !3001, !tbaa !249 + br label %for.inc124, !dbg !3002 + +for.inc124: ; preds = %for.body46 + %inc125 = add nsw i32 %k1.0, 1, !dbg !3003 + call void @llvm.dbg.value(metadata i32 %inc125, metadata !2858, metadata !DIExpression()), !dbg !2884 + br label %for.cond43, !dbg !3004, !llvm.loop !3005 + +for.end126: ; preds = %for.cond43 + br label %for.inc127, !dbg !3007 + +for.inc127: ; preds = %for.end126 + %inc128 = add nsw i32 %i1.0, 1, !dbg !3008 + call void @llvm.dbg.value(metadata i32 %inc128, metadata !2857, metadata !DIExpression()), !dbg !2884 + br label %for.cond39, !dbg !3009, !llvm.loop !3010 + +for.end129: ; preds = %for.cond39 + %cmp130 = icmp eq i32 %l.0, %call, !dbg !3012 + br i1 %cmp130, label %if.then, label %if.else, !dbg !3014 + +if.then: ; preds = %for.end129 + call void @llvm.dbg.value(metadata i32 0, metadata !2856, metadata !DIExpression()), !dbg !2884 + br label %for.cond131, !dbg !3015 + +for.cond131: ; preds = %for.inc158, %if.then + %j1.0 = phi i32 [ 0, %if.then ], [ %inc159, %for.inc158 ], !dbg !3018 + call void @llvm.dbg.value(metadata i32 %j1.0, metadata !2856, metadata !DIExpression()), !dbg !2884 + %cmp132 = icmp slt i32 %j1.0, %d1, !dbg !3019 + br i1 %cmp132, label %for.body133, label %for.end160, !dbg !3021 + +for.body133: ; preds = %for.cond131 + %idxprom134 = sext i32 %k.0 to i64, !dbg !3022 + %arrayidx135 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom134, !dbg !3022 + %idxprom136 = sext i32 %j1.0 to i64, !dbg !3022 + %arrayidx137 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx135, i64 0, i64 %idxprom136, !dbg !3022 + %idxprom138 = sext i32 %j.0 to i64, !dbg !3022 + %arrayidx139 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx137, i64 0, i64 %idxprom138, !dbg !3022 + %8 = load double, double* %arrayidx139, align 8, !dbg !3022, !tbaa !249 + %idxprom140 = sext i32 %k.0 to i64, !dbg !3024 + %arrayidx141 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom140, !dbg !3024 + %idxprom142 = sext i32 %j1.0 to i64, !dbg !3024 + %arrayidx143 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx141, i64 0, i64 %idxprom142, !dbg !3024 + %idxprom144 = sext i32 %j.0 to i64, !dbg !3024 + %arrayidx145 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx143, i64 0, i64 %idxprom144, !dbg !3024 + store double %8, double* %arrayidx145, align 8, !dbg !3025, !tbaa !249 + %idxprom146 = sext i32 %k.0 to i64, !dbg !3026 + %arrayidx147 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom146, !dbg !3026 + %idxprom148 = sext i32 %j1.0 to i64, !dbg !3026 + %arrayidx149 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx147, i64 0, i64 %idxprom148, !dbg !3026 + %idxprom150 = sext i32 %j.0 to i64, !dbg !3026 + %arrayidx151 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx149, i64 0, i64 %idxprom150, !dbg !3026 + %9 = load double, double* %arrayidx151, align 8, !dbg !3026, !tbaa !249 + %idxprom152 = sext i32 %k.0 to i64, !dbg !3027 + %arrayidx153 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom152, !dbg !3027 + %idxprom154 = sext i32 %j1.0 to i64, !dbg !3027 + %arrayidx155 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx153, i64 0, i64 %idxprom154, !dbg !3027 + %idxprom156 = sext i32 %j.0 to i64, !dbg !3027 + %arrayidx157 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx155, i64 0, i64 %idxprom156, !dbg !3027 + store double %9, double* %arrayidx157, align 8, !dbg !3028, !tbaa !249 + br label %for.inc158, !dbg !3029 + +for.inc158: ; preds = %for.body133 + %inc159 = add nsw i32 %j1.0, 1, !dbg !3030 + call void @llvm.dbg.value(metadata i32 %inc159, metadata !2856, metadata !DIExpression()), !dbg !2884 + br label %for.cond131, !dbg !3031, !llvm.loop !3032 + +for.end160: ; preds = %for.cond131 + br label %if.end, !dbg !3034 + +if.else: ; preds = %for.end129 + %div161 = sdiv i32 %d1, 2, !dbg !3035 + call void @llvm.dbg.value(metadata i32 %div161, metadata !2859, metadata !DIExpression()), !dbg !2884 + %add162 = add nsw i32 %l.0, 1, !dbg !3037 + %sub163 = sub nsw i32 %add162, 1, !dbg !3038 + %shl164 = shl i32 1, %sub163, !dbg !3039 + call void @llvm.dbg.value(metadata i32 %shl164, metadata !2862, metadata !DIExpression()), !dbg !2884 + %add165 = add nsw i32 %l.0, 1, !dbg !3040 + %sub166 = sub nsw i32 %call, %add165, !dbg !3041 + %shl167 = shl i32 1, %sub166, !dbg !3042 + call void @llvm.dbg.value(metadata i32 %shl167, metadata !2860, metadata !DIExpression()), !dbg !2884 + %mul168 = mul nsw i32 2, %shl164, !dbg !3043 + call void @llvm.dbg.value(metadata i32 %mul168, metadata !2861, metadata !DIExpression()), !dbg !2884 + call void @llvm.dbg.value(metadata i32 %shl167, metadata !2863, metadata !DIExpression()), !dbg !2884 + call void @llvm.dbg.value(metadata i32 0, metadata !2857, metadata !DIExpression()), !dbg !2884 + br label %for.cond169, !dbg !3044 + +for.cond169: ; preds = %for.inc257, %if.else + %i1.1 = phi i32 [ 0, %if.else ], [ %inc258, %for.inc257 ], !dbg !3046 + call void @llvm.dbg.value(metadata i32 %i1.1, metadata !2857, metadata !DIExpression()), !dbg !2884 + %sub170 = sub nsw i32 %shl167, 1, !dbg !3047 + %cmp171 = icmp sle i32 %i1.1, %sub170, !dbg !3049 + br i1 %cmp171, label %for.body172, label %for.end259, !dbg !3050 + +for.body172: ; preds = %for.cond169 + call void @llvm.dbg.value(metadata i32 0, metadata !2858, metadata !DIExpression()), !dbg !2884 + br label %for.cond173, !dbg !3051 + +for.cond173: ; preds = %for.inc254, %for.body172 + %k1.1 = phi i32 [ 0, %for.body172 ], [ %inc255, %for.inc254 ], !dbg !3054 + call void @llvm.dbg.value(metadata i32 %k1.1, metadata !2858, metadata !DIExpression()), !dbg !2884 + %sub174 = sub nsw i32 %shl164, 1, !dbg !3055 + %cmp175 = icmp sle i32 %k1.1, %sub174, !dbg !3057 + br i1 %cmp175, label %for.body176, label %for.end256, !dbg !3058 + +for.body176: ; preds = %for.cond173 + %mul177 = mul nsw i32 %i1.1, %shl164, !dbg !3059 + call void @llvm.dbg.value(metadata i32 %mul177, metadata !2864, metadata !DIExpression()), !dbg !2884 + %add178 = add nsw i32 %mul177, %div161, !dbg !3061 + call void @llvm.dbg.value(metadata i32 %add178, metadata !2865, metadata !DIExpression()), !dbg !2884 + %mul179 = mul nsw i32 %i1.1, %mul168, !dbg !3062 + call void @llvm.dbg.value(metadata i32 %mul179, metadata !2866, metadata !DIExpression()), !dbg !2884 + %add180 = add nsw i32 %mul179, %shl164, !dbg !3063 + call void @llvm.dbg.value(metadata i32 %add180, metadata !2867, metadata !DIExpression()), !dbg !2884 + %add181 = add nsw i32 %shl167, %i1.1, !dbg !3064 + %idxprom182 = sext i32 %add181 to i64, !dbg !3065 + %arrayidx183 = getelementptr inbounds [257 x double], [257 x double]* @u_real, i64 0, i64 %idxprom182, !dbg !3065 + %10 = load double, double* %arrayidx183, align 8, !dbg !3065, !tbaa !249 + call void @llvm.dbg.value(metadata double %10, metadata !2874, metadata !DIExpression()), !dbg !2884 + %add184 = add nsw i32 %shl167, %i1.1, !dbg !3066 + %idxprom185 = sext i32 %add184 to i64, !dbg !3067 + %arrayidx186 = getelementptr inbounds [257 x double], [257 x double]* @u_imag, i64 0, i64 %idxprom185, !dbg !3067 + %11 = load double, double* %arrayidx186, align 8, !dbg !3067, !tbaa !249 + %mul187 = fmul double -1.000000e+00, %11, !dbg !3068 + call void @llvm.dbg.value(metadata double %mul187, metadata !2877, metadata !DIExpression()), !dbg !2884 + %idxprom188 = sext i32 %k.0 to i64, !dbg !3069 + %arrayidx189 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom188, !dbg !3069 + %add190 = add nsw i32 %mul177, %k1.1, !dbg !3070 + %idxprom191 = sext i32 %add190 to i64, !dbg !3069 + %arrayidx192 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx189, i64 0, i64 %idxprom191, !dbg !3069 + %idxprom193 = sext i32 %j.0 to i64, !dbg !3069 + %arrayidx194 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx192, i64 0, i64 %idxprom193, !dbg !3069 + %12 = load double, double* %arrayidx194, align 8, !dbg !3069, !tbaa !249 + call void @llvm.dbg.value(metadata double %12, metadata !2875, metadata !DIExpression()), !dbg !2884 + %idxprom195 = sext i32 %k.0 to i64, !dbg !3071 + %arrayidx196 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom195, !dbg !3071 + %add197 = add nsw i32 %mul177, %k1.1, !dbg !3072 + %idxprom198 = sext i32 %add197 to i64, !dbg !3071 + %arrayidx199 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx196, i64 0, i64 %idxprom198, !dbg !3071 + %idxprom200 = sext i32 %j.0 to i64, !dbg !3071 + %arrayidx201 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx199, i64 0, i64 %idxprom200, !dbg !3071 + %13 = load double, double* %arrayidx201, align 8, !dbg !3071, !tbaa !249 + call void @llvm.dbg.value(metadata double %13, metadata !2878, metadata !DIExpression()), !dbg !2884 + %idxprom202 = sext i32 %k.0 to i64, !dbg !3073 + %arrayidx203 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_real, i64 0, i64 %idxprom202, !dbg !3073 + %add204 = add nsw i32 %add178, %k1.1, !dbg !3074 + %idxprom205 = sext i32 %add204 to i64, !dbg !3073 + %arrayidx206 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx203, i64 0, i64 %idxprom205, !dbg !3073 + %idxprom207 = sext i32 %j.0 to i64, !dbg !3073 + %arrayidx208 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx206, i64 0, i64 %idxprom207, !dbg !3073 + %14 = load double, double* %arrayidx208, align 8, !dbg !3073, !tbaa !249 + call void @llvm.dbg.value(metadata double %14, metadata !2876, metadata !DIExpression()), !dbg !2884 + %idxprom209 = sext i32 %k.0 to i64, !dbg !3075 + %arrayidx210 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty2_imag, i64 0, i64 %idxprom209, !dbg !3075 + %add211 = add nsw i32 %add178, %k1.1, !dbg !3076 + %idxprom212 = sext i32 %add211 to i64, !dbg !3075 + %arrayidx213 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx210, i64 0, i64 %idxprom212, !dbg !3075 + %idxprom214 = sext i32 %j.0 to i64, !dbg !3075 + %arrayidx215 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx213, i64 0, i64 %idxprom214, !dbg !3075 + %15 = load double, double* %arrayidx215, align 8, !dbg !3075, !tbaa !249 + call void @llvm.dbg.value(metadata double %15, metadata !2879, metadata !DIExpression()), !dbg !2884 + %add216 = fadd double %12, %14, !dbg !3077 + %idxprom217 = sext i32 %k.0 to i64, !dbg !3078 + %arrayidx218 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom217, !dbg !3078 + %add219 = add nsw i32 %mul179, %k1.1, !dbg !3079 + %idxprom220 = sext i32 %add219 to i64, !dbg !3078 + %arrayidx221 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx218, i64 0, i64 %idxprom220, !dbg !3078 + %idxprom222 = sext i32 %j.0 to i64, !dbg !3078 + %arrayidx223 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx221, i64 0, i64 %idxprom222, !dbg !3078 + store double %add216, double* %arrayidx223, align 8, !dbg !3080, !tbaa !249 + %add224 = fadd double %13, %15, !dbg !3081 + %idxprom225 = sext i32 %k.0 to i64, !dbg !3082 + %arrayidx226 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom225, !dbg !3082 + %add227 = add nsw i32 %mul179, %k1.1, !dbg !3083 + %idxprom228 = sext i32 %add227 to i64, !dbg !3082 + %arrayidx229 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx226, i64 0, i64 %idxprom228, !dbg !3082 + %idxprom230 = sext i32 %j.0 to i64, !dbg !3082 + %arrayidx231 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx229, i64 0, i64 %idxprom230, !dbg !3082 + store double %add224, double* %arrayidx231, align 8, !dbg !3084, !tbaa !249 + %sub232 = fsub double %12, %14, !dbg !3085 + call void @llvm.dbg.value(metadata double %sub232, metadata !2881, metadata !DIExpression()), !dbg !2884 + %sub233 = fsub double %13, %15, !dbg !3086 + call void @llvm.dbg.value(metadata double %sub233, metadata !2883, metadata !DIExpression()), !dbg !2884 + %mul234 = fmul double %10, %sub232, !dbg !3087 + %mul235 = fmul double %mul187, %sub233, !dbg !3088 + %sub236 = fsub double %mul234, %mul235, !dbg !3089 + %idxprom237 = sext i32 %k.0 to i64, !dbg !3090 + %arrayidx238 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom237, !dbg !3090 + %add239 = add nsw i32 %add180, %k1.1, !dbg !3091 + %idxprom240 = sext i32 %add239 to i64, !dbg !3090 + %arrayidx241 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx238, i64 0, i64 %idxprom240, !dbg !3090 + %idxprom242 = sext i32 %j.0 to i64, !dbg !3090 + %arrayidx243 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx241, i64 0, i64 %idxprom242, !dbg !3090 + store double %sub236, double* %arrayidx243, align 8, !dbg !3092, !tbaa !249 + %mul244 = fmul double %10, %sub233, !dbg !3093 + %mul245 = fmul double %mul187, %sub232, !dbg !3094 + %add246 = fadd double %mul244, %mul245, !dbg !3095 + %idxprom247 = sext i32 %k.0 to i64, !dbg !3096 + %arrayidx248 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom247, !dbg !3096 + %add249 = add nsw i32 %add180, %k1.1, !dbg !3097 + %idxprom250 = sext i32 %add249 to i64, !dbg !3096 + %arrayidx251 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx248, i64 0, i64 %idxprom250, !dbg !3096 + %idxprom252 = sext i32 %j.0 to i64, !dbg !3096 + %arrayidx253 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx251, i64 0, i64 %idxprom252, !dbg !3096 + store double %add246, double* %arrayidx253, align 8, !dbg !3098, !tbaa !249 + br label %for.inc254, !dbg !3099 + +for.inc254: ; preds = %for.body176 + %inc255 = add nsw i32 %k1.1, 1, !dbg !3100 + call void @llvm.dbg.value(metadata i32 %inc255, metadata !2858, metadata !DIExpression()), !dbg !2884 + br label %for.cond173, !dbg !3101, !llvm.loop !3102 + +for.end256: ; preds = %for.cond173 + br label %for.inc257, !dbg !3104 + +for.inc257: ; preds = %for.end256 + %inc258 = add nsw i32 %i1.1, 1, !dbg !3105 + call void @llvm.dbg.value(metadata i32 %inc258, metadata !2857, metadata !DIExpression()), !dbg !2884 + br label %for.cond169, !dbg !3106, !llvm.loop !3107 + +for.end259: ; preds = %for.cond169 + br label %if.end + +if.end: ; preds = %for.end259, %for.end160 + br label %for.inc260, !dbg !3109 + +for.inc260: ; preds = %if.end + %add261 = add nsw i32 %l.0, 2, !dbg !3110 + call void @llvm.dbg.value(metadata i32 %add261, metadata !2855, metadata !DIExpression()), !dbg !2884 + br label %for.cond33, !dbg !3111, !llvm.loop !3112 + +for.end262: ; preds = %for.cond33 + call void @llvm.dbg.value(metadata i32 0, metadata !2851, metadata !DIExpression()), !dbg !2884 + br label %for.cond263, !dbg !3114 + +for.cond263: ; preds = %for.inc296, %for.end262 + %i.1 = phi i32 [ 0, %for.end262 ], [ %inc297, %for.inc296 ], !dbg !3116 + call void @llvm.dbg.value(metadata i32 %i.1, metadata !2851, metadata !DIExpression()), !dbg !2884 + %cmp264 = icmp slt i32 %i.1, %d1, !dbg !3117 + br i1 %cmp264, label %for.body265, label %for.end298, !dbg !3119 + +for.body265: ; preds = %for.cond263 + %idxprom266 = sext i32 %k.0 to i64, !dbg !3120 + %arrayidx267 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_real, i64 0, i64 %idxprom266, !dbg !3120 + %idxprom268 = sext i32 %i.1 to i64, !dbg !3120 + %arrayidx269 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx267, i64 0, i64 %idxprom268, !dbg !3120 + %idxprom270 = sext i32 %j.0 to i64, !dbg !3120 + %arrayidx271 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx269, i64 0, i64 %idxprom270, !dbg !3120 + %16 = load double, double* %arrayidx271, align 8, !dbg !3120, !tbaa !249 + %mul272 = mul nsw i32 %k.0, %d2, !dbg !3122 + %add273 = add nsw i32 %d1, 1, !dbg !3123 + %mul274 = mul nsw i32 %mul272, %add273, !dbg !3124 + %add275 = add nsw i32 %d1, 1, !dbg !3125 + %mul276 = mul nsw i32 %j.0, %add275, !dbg !3126 + %add277 = add nsw i32 %mul274, %mul276, !dbg !3127 + %add278 = add nsw i32 %add277, %i.1, !dbg !3128 + %idxprom279 = sext i32 %add278 to i64, !dbg !3129 + %arrayidx280 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_real, i64 0, i64 %idxprom279, !dbg !3129 + store double %16, double* %arrayidx280, align 8, !dbg !3130, !tbaa !249 + %idxprom281 = sext i32 %k.0 to i64, !dbg !3131 + %arrayidx282 = getelementptr inbounds [256 x [256 x [256 x double]]], [256 x [256 x [256 x double]]]* @gty1_imag, i64 0, i64 %idxprom281, !dbg !3131 + %idxprom283 = sext i32 %i.1 to i64, !dbg !3131 + %arrayidx284 = getelementptr inbounds [256 x [256 x double]], [256 x [256 x double]]* %arrayidx282, i64 0, i64 %idxprom283, !dbg !3131 + %idxprom285 = sext i32 %j.0 to i64, !dbg !3131 + %arrayidx286 = getelementptr inbounds [256 x double], [256 x double]* %arrayidx284, i64 0, i64 %idxprom285, !dbg !3131 + %17 = load double, double* %arrayidx286, align 8, !dbg !3131, !tbaa !249 + %mul287 = mul nsw i32 %k.0, %d2, !dbg !3132 + %add288 = add nsw i32 %d1, 1, !dbg !3133 + %mul289 = mul nsw i32 %mul287, %add288, !dbg !3134 + %add290 = add nsw i32 %d1, 1, !dbg !3135 + %mul291 = mul nsw i32 %j.0, %add290, !dbg !3136 + %add292 = add nsw i32 %mul289, %mul291, !dbg !3137 + %add293 = add nsw i32 %add292, %i.1, !dbg !3138 + %idxprom294 = sext i32 %add293 to i64, !dbg !3139 + %arrayidx295 = getelementptr inbounds [8421376 x double], [8421376 x double]* @u1_imag, i64 0, i64 %idxprom294, !dbg !3139 + store double %17, double* %arrayidx295, align 8, !dbg !3140, !tbaa !249 + br label %for.inc296, !dbg !3141 + +for.inc296: ; preds = %for.body265 + %inc297 = add nsw i32 %i.1, 1, !dbg !3142 + call void @llvm.dbg.value(metadata i32 %inc297, metadata !2851, metadata !DIExpression()), !dbg !2884 + br label %for.cond263, !dbg !3143, !llvm.loop !3144 + +for.end298: ; preds = %for.cond263 + br label %for.inc299, !dbg !3146 + +for.inc299: ; preds = %for.end298 + %inc300 = add nsw i32 %j.0, 1, !dbg !3147 + call void @llvm.dbg.value(metadata i32 %inc300, metadata !2852, metadata !DIExpression()), !dbg !2884 + br label %for.cond1, !dbg !3148, !llvm.loop !3149 + +for.end301: ; preds = %for.cond1 + br label %for.inc302, !dbg !3151 + +for.inc302: ; preds = %for.end301 + %inc303 = add nsw i32 %k.0, 1, !dbg !3152 + call void @llvm.dbg.value(metadata i32 %inc303, metadata !2853, metadata !DIExpression()), !dbg !2884 + br label %for.cond, !dbg !3153, !llvm.loop !3154 + +for.end304: ; preds = %for.cond + ret void, !dbg !3156 +} + +; Function Attrs: argmemonly nounwind +declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1 immarg) #2 + +; Function Attrs: nounwind +declare dso_local double @sqrt(double) #4 + +; Function Attrs: inlinehint nounwind uwtable +define internal { double, double } @dcmplx_div(double %z1.coerce0, double %z1.coerce1, double %z2.coerce0, double %z2.coerce1) #5 !dbg !3157 { +entry: + call void @llvm.dbg.value(metadata double %z1.coerce0, metadata !3161, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64)), !dbg !3171 + call void @llvm.dbg.value(metadata double %z1.coerce1, metadata !3161, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg !3171 + call void @llvm.dbg.value(metadata double %z2.coerce0, metadata !3162, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64)), !dbg !3171 + call void @llvm.dbg.value(metadata double %z2.coerce1, metadata !3162, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg !3171 + call void @llvm.dbg.value(metadata double %z1.coerce0, metadata !3163, metadata !DIExpression()), !dbg !3171 + call void @llvm.dbg.value(metadata double %z1.coerce1, metadata !3164, metadata !DIExpression()), !dbg !3171 + call void @llvm.dbg.value(metadata double %z2.coerce0, metadata !3165, metadata !DIExpression()), !dbg !3171 + call void @llvm.dbg.value(metadata double %z2.coerce1, metadata !3166, metadata !DIExpression()), !dbg !3171 + %mul = fmul double %z2.coerce0, %z2.coerce0, !dbg !3172 + %mul3 = fmul double %z2.coerce1, %z2.coerce1, !dbg !3173 + %add = fadd double %mul, %mul3, !dbg !3174 + call void @llvm.dbg.value(metadata double %add, metadata !3167, metadata !DIExpression()), !dbg !3171 + %mul5 = fmul double %z1.coerce0, %z2.coerce0, !dbg !3175 + %mul6 = fmul double %z1.coerce1, %z2.coerce1, !dbg !3176 + %add7 = fadd double %mul5, %mul6, !dbg !3177 + %div = fdiv double %add7, %add, !dbg !3178 + call void @llvm.dbg.value(metadata double %div, metadata !3168, metadata !DIExpression()), !dbg !3171 + %mul9 = fmul double %z1.coerce1, %z2.coerce0, !dbg !3179 + %mul10 = fmul double %z1.coerce0, %z2.coerce1, !dbg !3180 + %sub = fsub double %mul9, %mul10, !dbg !3181 + %div11 = fdiv double %sub, %add, !dbg !3182 + call void @llvm.dbg.value(metadata double %div11, metadata !3169, metadata !DIExpression()), !dbg !3171 + call void @llvm.dbg.value(metadata double %div, metadata !3170, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64)), !dbg !3171 + call void @llvm.dbg.value(metadata double %div11, metadata !3170, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg !3171 + %.fca.0.insert = insertvalue { double, double } undef, double %div, 0, !dbg !3183 + %.fca.1.insert = insertvalue { double, double } %.fca.0.insert, double %div11, 1, !dbg !3183 + ret { double, double } %.fca.1.insert, !dbg !3183 +} + +; Function Attrs: nounwind readnone speculatable +declare void @llvm.dbg.value(metadata, metadata, metadata) #1 + +attributes #0 = { nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #1 = { nounwind readnone speculatable } +attributes #2 = { argmemonly nounwind } +attributes #3 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #4 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #5 = { inlinehint nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #6 = { nounwind } + +!llvm.dbg.cu = !{!2} +!llvm.module.flags = !{!66, !67, !68} +!llvm.ident = !{!69} + +!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) +!1 = distinct !DIGlobalVariable(name: "dims", scope: !2, file: !3, line: 89, type: !63, isLocal: true, isDefinition: true) +!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 9.0.0 (git@github.com:prithayan/llvm-project.git 9683f06d0ed55984d96f430331d28b1437b7dd07)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, retainedTypes: !10, globals: !14, nameTableKind: None) +!3 = !DIFile(filename: "ft.c", directory: "/home/prithayan/project/openmp_benchmark/schandra_udel/NAS_SHOC_OpenACC_2.5/NAS-OMP-OFFLOADING/FT") +!4 = !{!5} +!5 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !3, line: 80, baseType: !6, size: 32, elements: !7) +!6 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) +!7 = !{!8, !9} +!8 = !DIEnumerator(name: "false", value: 0, isUnsigned: true) +!9 = !DIEnumerator(name: "true", value: 1, isUnsigned: true) +!10 = !{!11, !12, !13} +!11 = !DIBasicType(name: "double", size: 64, encoding: DW_ATE_float) +!12 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!13 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) +!14 = !{!0, !15, !18, !20, !25, !27, !29, !31, !33, !35, !40, !42, !47, !49, !51, !53} +!15 = !DIGlobalVariableExpression(var: !16, expr: !DIExpression()) +!16 = distinct !DIGlobalVariable(name: "timers_enabled", scope: !2, file: !3, line: 101, type: !17, isLocal: true, isDefinition: true) +!17 = !DIDerivedType(tag: DW_TAG_typedef, name: "logical", file: !3, line: 80, baseType: !5) +!18 = !DIGlobalVariableExpression(var: !19, expr: !DIExpression()) +!19 = distinct !DIGlobalVariable(name: "niter", scope: !2, file: !3, line: 114, type: !12, isLocal: true, isDefinition: true) +!20 = !DIGlobalVariableExpression(var: !21, expr: !DIExpression()) +!21 = distinct !DIGlobalVariable(name: "u0_real", scope: !2, file: !3, line: 168, type: !22, isLocal: false, isDefinition: true) +!22 = !DICompositeType(tag: DW_TAG_array_type, baseType: !11, size: 538968064, elements: !23) +!23 = !{!24} +!24 = !DISubrange(count: 8421376) +!25 = !DIGlobalVariableExpression(var: !26, expr: !DIExpression()) +!26 = distinct !DIGlobalVariable(name: "u0_imag", scope: !2, file: !3, line: 169, type: !22, isLocal: false, isDefinition: true) +!27 = !DIGlobalVariableExpression(var: !28, expr: !DIExpression()) +!28 = distinct !DIGlobalVariable(name: "u1_real", scope: !2, file: !3, line: 170, type: !22, isLocal: false, isDefinition: true) +!29 = !DIGlobalVariableExpression(var: !30, expr: !DIExpression()) +!30 = distinct !DIGlobalVariable(name: "u1_imag", scope: !2, file: !3, line: 171, type: !22, isLocal: false, isDefinition: true) +!31 = !DIGlobalVariableExpression(var: !32, expr: !DIExpression()) +!32 = distinct !DIGlobalVariable(name: "twiddle", scope: !2, file: !3, line: 172, type: !22, isLocal: false, isDefinition: true) +!33 = !DIGlobalVariableExpression(var: !34, expr: !DIExpression()) +!34 = distinct !DIGlobalVariable(name: "debug", scope: !2, file: !3, line: 102, type: !17, isLocal: true, isDefinition: true) +!35 = !DIGlobalVariableExpression(var: !36, expr: !DIExpression()) +!36 = distinct !DIGlobalVariable(name: "u_real", scope: !2, file: !3, line: 111, type: !37, isLocal: true, isDefinition: true) +!37 = !DICompositeType(tag: DW_TAG_array_type, baseType: !11, size: 16448, elements: !38) +!38 = !{!39} +!39 = !DISubrange(count: 257) +!40 = !DIGlobalVariableExpression(var: !41, expr: !DIExpression()) +!41 = distinct !DIGlobalVariable(name: "u_imag", scope: !2, file: !3, line: 112, type: !37, isLocal: true, isDefinition: true) +!42 = !DIGlobalVariableExpression(var: !43, expr: !DIExpression()) +!43 = distinct !DIGlobalVariable(name: "gty1_real", scope: !2, file: !3, line: 142, type: !44, isLocal: true, isDefinition: true) +!44 = !DICompositeType(tag: DW_TAG_array_type, baseType: !11, size: 1073741824, elements: !45) +!45 = !{!46, !46, !46} +!46 = !DISubrange(count: 256) +!47 = !DIGlobalVariableExpression(var: !48, expr: !DIExpression()) +!48 = distinct !DIGlobalVariable(name: "gty1_imag", scope: !2, file: !3, line: 143, type: !44, isLocal: true, isDefinition: true) +!49 = !DIGlobalVariableExpression(var: !50, expr: !DIExpression()) +!50 = distinct !DIGlobalVariable(name: "gty2_real", scope: !2, file: !3, line: 144, type: !44, isLocal: true, isDefinition: true) +!51 = !DIGlobalVariableExpression(var: !52, expr: !DIExpression()) +!52 = distinct !DIGlobalVariable(name: "gty2_imag", scope: !2, file: !3, line: 145, type: !44, isLocal: true, isDefinition: true) +!53 = !DIGlobalVariableExpression(var: !54, expr: !DIExpression()) +!54 = distinct !DIGlobalVariable(name: "sums", scope: !2, file: !3, line: 113, type: !55, isLocal: true, isDefinition: true) +!55 = !DICompositeType(tag: DW_TAG_array_type, baseType: !56, size: 896, elements: !61) +!56 = !DIDerivedType(tag: DW_TAG_typedef, name: "dcomplex", file: !3, line: 84, baseType: !57) +!57 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !3, line: 81, size: 128, elements: !58) +!58 = !{!59, !60} +!59 = !DIDerivedType(tag: DW_TAG_member, name: "real", scope: !57, file: !3, line: 82, baseType: !11, size: 64) +!60 = !DIDerivedType(tag: DW_TAG_member, name: "imag", scope: !57, file: !3, line: 83, baseType: !11, size: 64, offset: 64) +!61 = !{!62} +!62 = !DISubrange(count: 7) +!63 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 96, elements: !64) +!64 = !{!65} +!65 = !DISubrange(count: 3) +!66 = !{i32 2, !"Dwarf Version", i32 4} +!67 = !{i32 2, !"Debug Info Version", i32 3} +!68 = !{i32 1, !"wchar_size", i32 4} +!69 = !{!"clang version 9.0.0 (git@github.com:prithayan/llvm-project.git 9683f06d0ed55984d96f430331d28b1437b7dd07)"} +!70 = distinct !DISubprogram(name: "main", scope: !3, file: !3, line: 199, type: !71, scopeLine: 200, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !76) +!71 = !DISubroutineType(types: !72) +!72 = !{!12, !12, !73} +!73 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !74, size: 64) +!74 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !75, size: 64) +!75 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) +!76 = !{!77, !78, !79, !80, !81, !82, !83, !84} +!77 = !DILocalVariable(name: "argc", arg: 1, scope: !70, file: !3, line: 199, type: !12) +!78 = !DILocalVariable(name: "argv", arg: 2, scope: !70, file: !3, line: 199, type: !73) +!79 = !DILocalVariable(name: "i", scope: !70, file: !3, line: 201, type: !12) +!80 = !DILocalVariable(name: "iter", scope: !70, file: !3, line: 202, type: !12) +!81 = !DILocalVariable(name: "total_time", scope: !70, file: !3, line: 203, type: !11) +!82 = !DILocalVariable(name: "mflops", scope: !70, file: !3, line: 203, type: !11) +!83 = !DILocalVariable(name: "verified", scope: !70, file: !3, line: 204, type: !17) +!84 = !DILocalVariable(name: "Class", scope: !70, file: !3, line: 205, type: !75) +!85 = !DILocation(line: 0, scope: !70) +!86 = !DILocation(line: 204, column: 3, scope: !70) +!87 = !DILocation(line: 204, column: 11, scope: !70) +!88 = !DILocation(line: 205, column: 3, scope: !70) +!89 = !DILocation(line: 205, column: 8, scope: !70) +!90 = !DILocation(line: 213, column: 8, scope: !91) +!91 = distinct !DILexicalBlock(scope: !70, file: !3, line: 213, column: 3) +!92 = !DILocation(line: 0, scope: !91) +!93 = !DILocation(line: 213, column: 17, scope: !94) +!94 = distinct !DILexicalBlock(scope: !91, file: !3, line: 213, column: 3) +!95 = !DILocation(line: 213, column: 3, scope: !91) +!96 = !DILocation(line: 214, column: 5, scope: !97) +!97 = distinct !DILexicalBlock(scope: !94, file: !3, line: 213, column: 32) +!98 = !DILocation(line: 215, column: 3, scope: !97) +!99 = !DILocation(line: 213, column: 28, scope: !94) +!100 = !DILocation(line: 213, column: 3, scope: !94) +!101 = distinct !{!101, !95, !102} +!102 = !DILocation(line: 215, column: 3, scope: !91) +!103 = !DILocation(line: 216, column: 3, scope: !70) +!104 = !DILocation(line: 222, column: 13, scope: !105) +!105 = distinct !DILexicalBlock(scope: !70, file: !3, line: 221, column: 3) +!106 = !{!107, !107, i64 0} +!107 = !{!"int", !108, i64 0} +!108 = !{!"omnipotent char", !109, i64 0} +!109 = !{!"Simple C/C++ TBAA"} +!110 = !DILocation(line: 222, column: 22, scope: !105) +!111 = !DILocation(line: 222, column: 31, scope: !105) +!112 = !DILocation(line: 222, column: 5, scope: !105) +!113 = !DILocation(line: 223, column: 22, scope: !105) +!114 = !DILocation(line: 223, column: 31, scope: !105) +!115 = !DILocation(line: 223, column: 40, scope: !105) +!116 = !DILocation(line: 223, column: 5, scope: !105) +!117 = !DILocation(line: 224, column: 32, scope: !105) +!118 = !DILocation(line: 224, column: 41, scope: !105) +!119 = !DILocation(line: 224, column: 50, scope: !105) +!120 = !DILocation(line: 224, column: 5, scope: !105) +!121 = !DILocation(line: 225, column: 14, scope: !105) +!122 = !DILocation(line: 225, column: 5, scope: !105) +!123 = !DILocation(line: 226, column: 5, scope: !105) +!124 = !DILocation(line: 232, column: 10, scope: !125) +!125 = distinct !DILexicalBlock(scope: !105, file: !3, line: 232, column: 5) +!126 = !DILocation(line: 0, scope: !125) +!127 = !DILocation(line: 232, column: 19, scope: !128) +!128 = distinct !DILexicalBlock(scope: !125, file: !3, line: 232, column: 5) +!129 = !DILocation(line: 232, column: 5, scope: !125) +!130 = !DILocation(line: 233, column: 7, scope: !131) +!131 = distinct !DILexicalBlock(scope: !128, file: !3, line: 232, column: 34) +!132 = !DILocation(line: 234, column: 5, scope: !131) +!133 = !DILocation(line: 232, column: 30, scope: !128) +!134 = !DILocation(line: 232, column: 5, scope: !128) +!135 = distinct !{!135, !129, !136} +!136 = !DILocation(line: 234, column: 5, scope: !125) +!137 = !DILocation(line: 236, column: 5, scope: !105) +!138 = !DILocation(line: 237, column: 9, scope: !139) +!139 = distinct !DILexicalBlock(scope: !105, file: !3, line: 237, column: 9) +!140 = !{!108, !108, i64 0} +!141 = !DILocation(line: 237, column: 9, scope: !105) +!142 = !DILocation(line: 237, column: 25, scope: !139) +!143 = !DILocation(line: 239, column: 22, scope: !105) +!144 = !DILocation(line: 239, column: 31, scope: !105) +!145 = !DILocation(line: 239, column: 40, scope: !105) +!146 = !DILocation(line: 239, column: 5, scope: !105) +!147 = !DILocation(line: 241, column: 32, scope: !105) +!148 = !DILocation(line: 241, column: 41, scope: !105) +!149 = !DILocation(line: 241, column: 50, scope: !105) +!150 = !DILocation(line: 241, column: 5, scope: !105) +!151 = !DILocation(line: 243, column: 14, scope: !105) +!152 = !DILocation(line: 243, column: 5, scope: !105) +!153 = !DILocation(line: 245, column: 5, scope: !105) +!154 = !DILocation(line: 247, column: 10, scope: !155) +!155 = distinct !DILexicalBlock(scope: !105, file: !3, line: 247, column: 5) +!156 = !DILocation(line: 0, scope: !155) +!157 = !DILocation(line: 247, column: 28, scope: !158) +!158 = distinct !DILexicalBlock(scope: !155, file: !3, line: 247, column: 5) +!159 = !DILocation(line: 247, column: 25, scope: !158) +!160 = !DILocation(line: 247, column: 5, scope: !155) +!161 = !DILocation(line: 248, column: 14, scope: !162) +!162 = distinct !DILexicalBlock(scope: !158, file: !3, line: 247, column: 43) +!163 = !DILocation(line: 248, column: 23, scope: !162) +!164 = !DILocation(line: 248, column: 32, scope: !162) +!165 = !DILocation(line: 248, column: 7, scope: !162) +!166 = !DILocation(line: 249, column: 7, scope: !162) +!167 = !DILocation(line: 250, column: 22, scope: !162) +!168 = !DILocation(line: 250, column: 31, scope: !162) +!169 = !DILocation(line: 250, column: 40, scope: !162) +!170 = !DILocation(line: 250, column: 7, scope: !162) +!171 = !DILocation(line: 251, column: 5, scope: !162) +!172 = !DILocation(line: 247, column: 39, scope: !158) +!173 = !DILocation(line: 247, column: 5, scope: !158) +!174 = distinct !{!174, !160, !175} +!175 = !DILocation(line: 251, column: 5, scope: !155) +!176 = !DILocation(line: 253, column: 24, scope: !105) +!177 = !DILocation(line: 253, column: 5, scope: !105) +!178 = !DILocation(line: 254, column: 5, scope: !105) +!179 = !DILocation(line: 255, column: 18, scope: !105) +!180 = !DILocation(line: 258, column: 18, scope: !181) +!181 = distinct !DILexicalBlock(scope: !70, file: !3, line: 258, column: 7) +!182 = !DILocation(line: 258, column: 7, scope: !70) +!183 = !DILocation(line: 260, column: 30, scope: !184) +!184 = distinct !DILexicalBlock(scope: !181, file: !3, line: 258, column: 26) +!185 = !DILocation(line: 260, column: 28, scope: !184) +!186 = !DILocation(line: 260, column: 18, scope: !184) +!187 = !DILocation(line: 261, column: 28, scope: !184) +!188 = !DILocation(line: 261, column: 26, scope: !184) +!189 = !DILocation(line: 261, column: 16, scope: !184) +!190 = !DILocation(line: 261, column: 51, scope: !184) +!191 = !DILocation(line: 261, column: 49, scope: !184) +!192 = !DILocation(line: 261, column: 5, scope: !184) +!193 = !DILocation(line: 259, column: 38, scope: !184) +!194 = !DILocation(line: 262, column: 5, scope: !184) +!195 = !DILocation(line: 263, column: 3, scope: !184) +!196 = !DILocation(line: 0, scope: !181) +!197 = !DILocation(line: 266, column: 23, scope: !70) +!198 = !DILocation(line: 266, column: 42, scope: !70) +!199 = !DILocation(line: 267, column: 55, scope: !70) +!200 = !DILocation(line: 266, column: 3, scope: !70) +!201 = !DILocation(line: 269, column: 7, scope: !202) +!202 = distinct !DILexicalBlock(scope: !70, file: !3, line: 269, column: 7) +!203 = !DILocation(line: 269, column: 7, scope: !70) +!204 = !DILocation(line: 269, column: 23, scope: !202) +!205 = !DILocation(line: 272, column: 1, scope: !70) +!206 = !DILocation(line: 271, column: 3, scope: !70) +!207 = distinct !DISubprogram(name: "init_ui", scope: !3, file: !3, line: 278, type: !208, scopeLine: 279, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !210) +!208 = !DISubroutineType(types: !209) +!209 = !{null, !12, !12, !12} +!210 = !{!211, !212, !213, !214, !215, !216} +!211 = !DILocalVariable(name: "d1", arg: 1, scope: !207, file: !3, line: 278, type: !12) +!212 = !DILocalVariable(name: "d2", arg: 2, scope: !207, file: !3, line: 278, type: !12) +!213 = !DILocalVariable(name: "d3", arg: 3, scope: !207, file: !3, line: 278, type: !12) +!214 = !DILocalVariable(name: "i", scope: !207, file: !3, line: 280, type: !12) +!215 = !DILocalVariable(name: "j", scope: !207, file: !3, line: 280, type: !12) +!216 = !DILocalVariable(name: "k", scope: !207, file: !3, line: 280, type: !12) +!217 = !DILocation(line: 0, scope: !207) +!218 = !DILocation(line: 287, column: 10, scope: !219) +!219 = distinct !DILexicalBlock(scope: !220, file: !3, line: 287, column: 5) +!220 = distinct !DILexicalBlock(scope: !207, file: !3, line: 284, column: 3) +!221 = !DILocation(line: 0, scope: !219) +!222 = !DILocation(line: 287, column: 19, scope: !223) +!223 = distinct !DILexicalBlock(scope: !219, file: !3, line: 287, column: 5) +!224 = !DILocation(line: 287, column: 5, scope: !219) +!225 = !DILocation(line: 289, column: 12, scope: !226) +!226 = distinct !DILexicalBlock(scope: !227, file: !3, line: 289, column: 7) +!227 = distinct !DILexicalBlock(scope: !223, file: !3, line: 287, column: 30) +!228 = !DILocation(line: 0, scope: !226) +!229 = !DILocation(line: 289, column: 21, scope: !230) +!230 = distinct !DILexicalBlock(scope: !226, file: !3, line: 289, column: 7) +!231 = !DILocation(line: 289, column: 7, scope: !226) +!232 = !DILocation(line: 290, column: 14, scope: !233) +!233 = distinct !DILexicalBlock(scope: !234, file: !3, line: 290, column: 9) +!234 = distinct !DILexicalBlock(scope: !230, file: !3, line: 289, column: 32) +!235 = !DILocation(line: 0, scope: !233) +!236 = !DILocation(line: 290, column: 23, scope: !237) +!237 = distinct !DILexicalBlock(scope: !233, file: !3, line: 290, column: 9) +!238 = !DILocation(line: 290, column: 9, scope: !233) +!239 = !DILocation(line: 291, column: 20, scope: !240) +!240 = distinct !DILexicalBlock(scope: !237, file: !3, line: 290, column: 34) +!241 = !DILocation(line: 291, column: 27, scope: !240) +!242 = !DILocation(line: 291, column: 23, scope: !240) +!243 = !DILocation(line: 291, column: 38, scope: !240) +!244 = !DILocation(line: 291, column: 34, scope: !240) +!245 = !DILocation(line: 291, column: 31, scope: !240) +!246 = !DILocation(line: 291, column: 42, scope: !240) +!247 = !DILocation(line: 291, column: 11, scope: !240) +!248 = !DILocation(line: 291, column: 47, scope: !240) +!249 = !{!250, !250, i64 0} +!250 = !{!"double", !108, i64 0} +!251 = !DILocation(line: 292, column: 20, scope: !240) +!252 = !DILocation(line: 292, column: 27, scope: !240) +!253 = !DILocation(line: 292, column: 23, scope: !240) +!254 = !DILocation(line: 292, column: 38, scope: !240) +!255 = !DILocation(line: 292, column: 34, scope: !240) +!256 = !DILocation(line: 292, column: 31, scope: !240) +!257 = !DILocation(line: 292, column: 42, scope: !240) +!258 = !DILocation(line: 292, column: 11, scope: !240) +!259 = !DILocation(line: 292, column: 47, scope: !240) +!260 = !DILocation(line: 293, column: 20, scope: !240) +!261 = !DILocation(line: 293, column: 27, scope: !240) +!262 = !DILocation(line: 293, column: 23, scope: !240) +!263 = !DILocation(line: 293, column: 38, scope: !240) +!264 = !DILocation(line: 293, column: 34, scope: !240) +!265 = !DILocation(line: 293, column: 31, scope: !240) +!266 = !DILocation(line: 293, column: 42, scope: !240) +!267 = !DILocation(line: 293, column: 11, scope: !240) +!268 = !DILocation(line: 293, column: 47, scope: !240) +!269 = !DILocation(line: 294, column: 20, scope: !240) +!270 = !DILocation(line: 294, column: 27, scope: !240) +!271 = !DILocation(line: 294, column: 23, scope: !240) +!272 = !DILocation(line: 294, column: 38, scope: !240) +!273 = !DILocation(line: 294, column: 34, scope: !240) +!274 = !DILocation(line: 294, column: 31, scope: !240) +!275 = !DILocation(line: 294, column: 42, scope: !240) +!276 = !DILocation(line: 294, column: 11, scope: !240) +!277 = !DILocation(line: 294, column: 47, scope: !240) +!278 = !DILocation(line: 295, column: 20, scope: !240) +!279 = !DILocation(line: 295, column: 27, scope: !240) +!280 = !DILocation(line: 295, column: 23, scope: !240) +!281 = !DILocation(line: 295, column: 38, scope: !240) +!282 = !DILocation(line: 295, column: 34, scope: !240) +!283 = !DILocation(line: 295, column: 31, scope: !240) +!284 = !DILocation(line: 295, column: 42, scope: !240) +!285 = !DILocation(line: 295, column: 11, scope: !240) +!286 = !DILocation(line: 295, column: 47, scope: !240) +!287 = !DILocation(line: 296, column: 9, scope: !240) +!288 = !DILocation(line: 290, column: 30, scope: !237) +!289 = !DILocation(line: 290, column: 9, scope: !237) +!290 = distinct !{!290, !238, !291} +!291 = !DILocation(line: 296, column: 9, scope: !233) +!292 = !DILocation(line: 297, column: 7, scope: !234) +!293 = !DILocation(line: 289, column: 28, scope: !230) +!294 = !DILocation(line: 289, column: 7, scope: !230) +!295 = distinct !{!295, !231, !296} +!296 = !DILocation(line: 297, column: 7, scope: !226) +!297 = !DILocation(line: 298, column: 5, scope: !227) +!298 = !DILocation(line: 287, column: 26, scope: !223) +!299 = !DILocation(line: 287, column: 5, scope: !223) +!300 = distinct !{!300, !224, !301} +!301 = !DILocation(line: 298, column: 5, scope: !219) +!302 = !DILocation(line: 301, column: 1, scope: !207) +!303 = distinct !DISubprogram(name: "compute_indexmap", scope: !3, file: !3, line: 486, type: !208, scopeLine: 487, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !304) +!304 = !{!305, !306, !307, !308, !309, !310, !311, !312, !313, !314, !315, !316} +!305 = !DILocalVariable(name: "d1", arg: 1, scope: !303, file: !3, line: 486, type: !12) +!306 = !DILocalVariable(name: "d2", arg: 2, scope: !303, file: !3, line: 486, type: !12) +!307 = !DILocalVariable(name: "d3", arg: 3, scope: !303, file: !3, line: 486, type: !12) +!308 = !DILocalVariable(name: "i", scope: !303, file: !3, line: 488, type: !12) +!309 = !DILocalVariable(name: "j", scope: !303, file: !3, line: 488, type: !12) +!310 = !DILocalVariable(name: "k", scope: !303, file: !3, line: 488, type: !12) +!311 = !DILocalVariable(name: "kk", scope: !303, file: !3, line: 488, type: !12) +!312 = !DILocalVariable(name: "kk2", scope: !303, file: !3, line: 488, type: !12) +!313 = !DILocalVariable(name: "jj", scope: !303, file: !3, line: 488, type: !12) +!314 = !DILocalVariable(name: "kj2", scope: !303, file: !3, line: 488, type: !12) +!315 = !DILocalVariable(name: "ii", scope: !303, file: !3, line: 488, type: !12) +!316 = !DILocalVariable(name: "ap", scope: !303, file: !3, line: 489, type: !11) +!317 = !DILocation(line: 0, scope: !303) +!318 = !DILocation(line: 513, column: 10, scope: !319) +!319 = distinct !DILexicalBlock(scope: !320, file: !3, line: 513, column: 5) +!320 = distinct !DILexicalBlock(scope: !303, file: !3, line: 509, column: 3) +!321 = !DILocation(line: 0, scope: !319) +!322 = !DILocation(line: 513, column: 19, scope: !323) +!323 = distinct !DILexicalBlock(scope: !319, file: !3, line: 513, column: 5) +!324 = !DILocation(line: 513, column: 5, scope: !319) +!325 = !DILocation(line: 516, column: 12, scope: !326) +!326 = distinct !DILexicalBlock(scope: !327, file: !3, line: 516, column: 7) +!327 = distinct !DILexicalBlock(scope: !323, file: !3, line: 513, column: 30) +!328 = !DILocation(line: 0, scope: !326) +!329 = !DILocation(line: 516, column: 21, scope: !330) +!330 = distinct !DILexicalBlock(scope: !326, file: !3, line: 516, column: 7) +!331 = !DILocation(line: 516, column: 7, scope: !326) +!332 = !DILocation(line: 519, column: 14, scope: !333) +!333 = distinct !DILexicalBlock(scope: !334, file: !3, line: 519, column: 9) +!334 = distinct !DILexicalBlock(scope: !330, file: !3, line: 516, column: 32) +!335 = !DILocation(line: 0, scope: !333) +!336 = !DILocation(line: 519, column: 23, scope: !337) +!337 = distinct !DILexicalBlock(scope: !333, file: !3, line: 519, column: 9) +!338 = !DILocation(line: 519, column: 9, scope: !333) +!339 = !DILocation(line: 520, column: 20, scope: !340) +!340 = distinct !DILexicalBlock(scope: !337, file: !3, line: 519, column: 34) +!341 = !DILocation(line: 520, column: 28, scope: !340) +!342 = !DILocation(line: 520, column: 34, scope: !340) +!343 = !DILocation(line: 521, column: 19, scope: !340) +!344 = !DILocation(line: 522, column: 20, scope: !340) +!345 = !DILocation(line: 522, column: 28, scope: !340) +!346 = !DILocation(line: 522, column: 34, scope: !340) +!347 = !DILocation(line: 523, column: 19, scope: !340) +!348 = !DILocation(line: 523, column: 23, scope: !340) +!349 = !DILocation(line: 524, column: 20, scope: !340) +!350 = !DILocation(line: 524, column: 28, scope: !340) +!351 = !DILocation(line: 524, column: 34, scope: !340) +!352 = !DILocation(line: 526, column: 69, scope: !340) +!353 = !DILocation(line: 526, column: 72, scope: !340) +!354 = !DILocation(line: 526, column: 58, scope: !340) +!355 = !DILocation(line: 526, column: 56, scope: !340) +!356 = !DILocation(line: 526, column: 49, scope: !340) +!357 = !DILocation(line: 526, column: 20, scope: !340) +!358 = !DILocation(line: 526, column: 27, scope: !340) +!359 = !DILocation(line: 526, column: 23, scope: !340) +!360 = !DILocation(line: 526, column: 38, scope: !340) +!361 = !DILocation(line: 526, column: 34, scope: !340) +!362 = !DILocation(line: 526, column: 31, scope: !340) +!363 = !DILocation(line: 526, column: 42, scope: !340) +!364 = !DILocation(line: 526, column: 11, scope: !340) +!365 = !DILocation(line: 526, column: 47, scope: !340) +!366 = !DILocation(line: 527, column: 9, scope: !340) +!367 = !DILocation(line: 519, column: 30, scope: !337) +!368 = !DILocation(line: 519, column: 9, scope: !337) +!369 = distinct !{!369, !338, !370} +!370 = !DILocation(line: 527, column: 9, scope: !333) +!371 = !DILocation(line: 528, column: 7, scope: !334) +!372 = !DILocation(line: 516, column: 28, scope: !330) +!373 = !DILocation(line: 516, column: 7, scope: !330) +!374 = distinct !{!374, !331, !375} +!375 = !DILocation(line: 528, column: 7, scope: !326) +!376 = !DILocation(line: 529, column: 5, scope: !327) +!377 = !DILocation(line: 513, column: 26, scope: !323) +!378 = !DILocation(line: 513, column: 5, scope: !323) +!379 = distinct !{!379, !324, !380} +!380 = !DILocation(line: 529, column: 5, scope: !319) +!381 = !DILocation(line: 532, column: 1, scope: !303) +!382 = distinct !DISubprogram(name: "compute_initial_conditions", scope: !3, file: !3, line: 338, type: !208, scopeLine: 339, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !383) +!383 = !{!384, !385, !386, !387, !388, !389, !390, !391, !392, !393, !394, !398, !407, !408, !409, !410, !411, !412, !413, !414, !415, !416, !417, !418, !419} +!384 = !DILocalVariable(name: "d1", arg: 1, scope: !382, file: !3, line: 338, type: !12) +!385 = !DILocalVariable(name: "d2", arg: 2, scope: !382, file: !3, line: 338, type: !12) +!386 = !DILocalVariable(name: "d3", arg: 3, scope: !382, file: !3, line: 338, type: !12) +!387 = !DILocalVariable(name: "k", scope: !382, file: !3, line: 340, type: !12) +!388 = !DILocalVariable(name: "j", scope: !382, file: !3, line: 340, type: !12) +!389 = !DILocalVariable(name: "NZ_var", scope: !382, file: !3, line: 341, type: !12) +!390 = !DILocalVariable(name: "x0", scope: !382, file: !3, line: 343, type: !11) +!391 = !DILocalVariable(name: "start", scope: !382, file: !3, line: 343, type: !11) +!392 = !DILocalVariable(name: "an", scope: !382, file: !3, line: 343, type: !11) +!393 = !DILocalVariable(name: "dummy", scope: !382, file: !3, line: 343, type: !11) +!394 = !DILocalVariable(name: "starts", scope: !382, file: !3, line: 343, type: !395) +!395 = !DICompositeType(tag: DW_TAG_array_type, baseType: !11, size: 8192, elements: !396) +!396 = !{!397} +!397 = !DISubrange(count: 128) +!398 = !DILocalVariable(name: "r23", scope: !399, file: !3, line: 370, type: !406) +!399 = distinct !DILexicalBlock(scope: !400, file: !3, line: 368, column: 32) +!400 = distinct !DILexicalBlock(scope: !401, file: !3, line: 368, column: 7) +!401 = distinct !DILexicalBlock(scope: !402, file: !3, line: 368, column: 7) +!402 = distinct !DILexicalBlock(scope: !403, file: !3, line: 366, column: 30) +!403 = distinct !DILexicalBlock(scope: !404, file: !3, line: 366, column: 5) +!404 = distinct !DILexicalBlock(scope: !405, file: !3, line: 366, column: 5) +!405 = distinct !DILexicalBlock(scope: !382, file: !3, line: 364, column: 3) +!406 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !11) +!407 = !DILocalVariable(name: "r46", scope: !399, file: !3, line: 371, type: !406) +!408 = !DILocalVariable(name: "t23", scope: !399, file: !3, line: 372, type: !406) +!409 = !DILocalVariable(name: "t46", scope: !399, file: !3, line: 373, type: !406) +!410 = !DILocalVariable(name: "t1", scope: !399, file: !3, line: 375, type: !11) +!411 = !DILocalVariable(name: "t2", scope: !399, file: !3, line: 375, type: !11) +!412 = !DILocalVariable(name: "t3", scope: !399, file: !3, line: 375, type: !11) +!413 = !DILocalVariable(name: "t4", scope: !399, file: !3, line: 375, type: !11) +!414 = !DILocalVariable(name: "a1", scope: !399, file: !3, line: 375, type: !11) +!415 = !DILocalVariable(name: "a2", scope: !399, file: !3, line: 375, type: !11) +!416 = !DILocalVariable(name: "x1", scope: !399, file: !3, line: 375, type: !11) +!417 = !DILocalVariable(name: "x2", scope: !399, file: !3, line: 375, type: !11) +!418 = !DILocalVariable(name: "z", scope: !399, file: !3, line: 375, type: !11) +!419 = !DILocalVariable(name: "i", scope: !399, file: !3, line: 377, type: !12) +!420 = !DILocation(line: 0, scope: !382) +!421 = !DILocation(line: 343, column: 3, scope: !382) +!422 = !DILocation(line: 343, column: 14, scope: !382) +!423 = !DILocation(line: 343, column: 32, scope: !382) +!424 = !DILocation(line: 345, column: 9, scope: !382) +!425 = !DILocation(line: 349, column: 8, scope: !382) +!426 = !DILocation(line: 350, column: 11, scope: !382) +!427 = !DILocation(line: 351, column: 8, scope: !382) +!428 = !DILocation(line: 353, column: 15, scope: !382) +!429 = !DILocation(line: 353, column: 3, scope: !382) +!430 = !DILocation(line: 353, column: 13, scope: !382) +!431 = !DILocation(line: 354, column: 8, scope: !432) +!432 = distinct !DILexicalBlock(scope: !382, file: !3, line: 354, column: 3) +!433 = !DILocation(line: 0, scope: !432) +!434 = !DILocation(line: 354, column: 17, scope: !435) +!435 = distinct !DILexicalBlock(scope: !432, file: !3, line: 354, column: 3) +!436 = !DILocation(line: 354, column: 3, scope: !432) +!437 = !DILocation(line: 355, column: 13, scope: !438) +!438 = distinct !DILexicalBlock(scope: !435, file: !3, line: 354, column: 28) +!439 = !DILocation(line: 356, column: 17, scope: !438) +!440 = !DILocation(line: 356, column: 5, scope: !438) +!441 = !DILocation(line: 356, column: 15, scope: !438) +!442 = !DILocation(line: 357, column: 3, scope: !438) +!443 = !DILocation(line: 354, column: 24, scope: !435) +!444 = !DILocation(line: 354, column: 3, scope: !435) +!445 = distinct !{!445, !436, !446} +!446 = !DILocation(line: 357, column: 3, scope: !432) +!447 = !DILocation(line: 366, column: 10, scope: !404) +!448 = !DILocation(line: 0, scope: !404) +!449 = !DILocation(line: 366, column: 19, scope: !403) +!450 = !DILocation(line: 366, column: 5, scope: !404) +!451 = !DILocation(line: 367, column: 12, scope: !402) +!452 = !DILocation(line: 368, column: 12, scope: !401) +!453 = !DILocation(line: 367, column: 10, scope: !402) +!454 = !DILocation(line: 0, scope: !401) +!455 = !DILocation(line: 368, column: 21, scope: !400) +!456 = !DILocation(line: 368, column: 7, scope: !401) +!457 = !DILocation(line: 0, scope: !399) +!458 = !DILocation(line: 380, column: 14, scope: !399) +!459 = !DILocation(line: 381, column: 21, scope: !399) +!460 = !DILocation(line: 381, column: 16, scope: !399) +!461 = !DILocation(line: 383, column: 13, scope: !462) +!462 = distinct !DILexicalBlock(scope: !399, file: !3, line: 383, column: 9) +!463 = !DILocation(line: 0, scope: !402) +!464 = !DILocation(line: 0, scope: !462) +!465 = !DILocation(line: 383, column: 19, scope: !466) +!466 = distinct !DILexicalBlock(scope: !462, file: !3, line: 383, column: 9) +!467 = !DILocation(line: 383, column: 9, scope: !462) +!468 = !DILocation(line: 384, column: 20, scope: !469) +!469 = distinct !DILexicalBlock(scope: !466, file: !3, line: 383, column: 30) +!470 = !DILocation(line: 385, column: 16, scope: !469) +!471 = !DILocation(line: 386, column: 24, scope: !469) +!472 = !DILocation(line: 386, column: 19, scope: !469) +!473 = !DILocation(line: 387, column: 19, scope: !469) +!474 = !DILocation(line: 387, column: 29, scope: !469) +!475 = !DILocation(line: 387, column: 24, scope: !469) +!476 = !DILocation(line: 388, column: 27, scope: !469) +!477 = !DILocation(line: 388, column: 16, scope: !469) +!478 = !DILocation(line: 389, column: 24, scope: !469) +!479 = !DILocation(line: 389, column: 18, scope: !469) +!480 = !DILocation(line: 390, column: 20, scope: !469) +!481 = !DILocation(line: 390, column: 29, scope: !469) +!482 = !DILocation(line: 390, column: 24, scope: !469) +!483 = !DILocation(line: 391, column: 27, scope: !469) +!484 = !DILocation(line: 391, column: 16, scope: !469) +!485 = !DILocation(line: 392, column: 25, scope: !469) +!486 = !DILocation(line: 392, column: 19, scope: !469) +!487 = !DILocation(line: 394, column: 15, scope: !488) +!488 = distinct !DILexicalBlock(scope: !469, file: !3, line: 394, column: 14) +!489 = !DILocation(line: 394, column: 18, scope: !488) +!490 = !DILocation(line: 394, column: 14, scope: !469) +!491 = !DILocation(line: 395, column: 56, scope: !488) +!492 = !DILocation(line: 395, column: 22, scope: !488) +!493 = !DILocation(line: 395, column: 29, scope: !488) +!494 = !DILocation(line: 395, column: 25, scope: !488) +!495 = !DILocation(line: 395, column: 40, scope: !488) +!496 = !DILocation(line: 395, column: 36, scope: !488) +!497 = !DILocation(line: 395, column: 33, scope: !488) +!498 = !DILocation(line: 395, column: 47, scope: !488) +!499 = !DILocation(line: 395, column: 44, scope: !488) +!500 = !DILocation(line: 395, column: 13, scope: !488) +!501 = !DILocation(line: 395, column: 51, scope: !488) +!502 = !DILocation(line: 397, column: 56, scope: !488) +!503 = !DILocation(line: 397, column: 22, scope: !488) +!504 = !DILocation(line: 397, column: 29, scope: !488) +!505 = !DILocation(line: 397, column: 25, scope: !488) +!506 = !DILocation(line: 397, column: 40, scope: !488) +!507 = !DILocation(line: 397, column: 36, scope: !488) +!508 = !DILocation(line: 397, column: 33, scope: !488) +!509 = !DILocation(line: 397, column: 47, scope: !488) +!510 = !DILocation(line: 397, column: 44, scope: !488) +!511 = !DILocation(line: 397, column: 13, scope: !488) +!512 = !DILocation(line: 397, column: 51, scope: !488) +!513 = !DILocation(line: 398, column: 9, scope: !469) +!514 = !DILocation(line: 383, column: 27, scope: !466) +!515 = !DILocation(line: 383, column: 9, scope: !466) +!516 = distinct !{!516, !467, !517} +!517 = !DILocation(line: 398, column: 9, scope: !462) +!518 = !DILocation(line: 399, column: 7, scope: !399) +!519 = !DILocation(line: 368, column: 28, scope: !400) +!520 = !DILocation(line: 368, column: 7, scope: !400) +!521 = distinct !{!521, !456, !522} +!522 = !DILocation(line: 399, column: 7, scope: !401) +!523 = !DILocation(line: 400, column: 5, scope: !402) +!524 = !DILocation(line: 366, column: 26, scope: !403) +!525 = !DILocation(line: 366, column: 5, scope: !403) +!526 = distinct !{!526, !450, !527} +!527 = !DILocation(line: 400, column: 5, scope: !404) +!528 = !DILocation(line: 404, column: 1, scope: !382) +!529 = distinct !DISubprogram(name: "fft_init", scope: !3, file: !3, line: 561, type: !530, scopeLine: 562, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !532) +!530 = !DISubroutineType(types: !531) +!531 = !{null, !12} +!532 = !{!533, !534, !535, !536, !537, !538, !539, !540, !541} +!533 = !DILocalVariable(name: "n", arg: 1, scope: !529, file: !3, line: 561, type: !12) +!534 = !DILocalVariable(name: "m", scope: !529, file: !3, line: 563, type: !12) +!535 = !DILocalVariable(name: "nu", scope: !529, file: !3, line: 563, type: !12) +!536 = !DILocalVariable(name: "ku", scope: !529, file: !3, line: 563, type: !12) +!537 = !DILocalVariable(name: "i", scope: !529, file: !3, line: 563, type: !12) +!538 = !DILocalVariable(name: "j", scope: !529, file: !3, line: 563, type: !12) +!539 = !DILocalVariable(name: "ln", scope: !529, file: !3, line: 563, type: !12) +!540 = !DILocalVariable(name: "t", scope: !529, file: !3, line: 564, type: !11) +!541 = !DILocalVariable(name: "ti", scope: !529, file: !3, line: 564, type: !11) +!542 = !DILocation(line: 0, scope: !529) +!543 = !DILocation(line: 571, column: 7, scope: !529) +!544 = !DILocation(line: 584, column: 17, scope: !545) +!545 = distinct !DILexicalBlock(scope: !546, file: !3, line: 583, column: 3) +!546 = distinct !DILexicalBlock(scope: !529, file: !3, line: 580, column: 3) +!547 = !DILocation(line: 584, column: 15, scope: !545) +!548 = !DILocation(line: 585, column: 15, scope: !545) +!549 = !DILocation(line: 591, column: 8, scope: !550) +!550 = distinct !DILexicalBlock(scope: !529, file: !3, line: 591, column: 3) +!551 = !DILocation(line: 0, scope: !550) +!552 = !DILocation(line: 591, column: 17, scope: !553) +!553 = distinct !DILexicalBlock(scope: !550, file: !3, line: 591, column: 3) +!554 = !DILocation(line: 591, column: 3, scope: !550) +!555 = !DILocation(line: 592, column: 14, scope: !556) +!556 = distinct !DILexicalBlock(scope: !553, file: !3, line: 591, column: 28) +!557 = !DILocation(line: 592, column: 12, scope: !556) +!558 = !DILocation(line: 603, column: 12, scope: !559) +!559 = distinct !DILexicalBlock(scope: !560, file: !3, line: 603, column: 7) +!560 = distinct !DILexicalBlock(scope: !556, file: !3, line: 600, column: 5) +!561 = !DILocation(line: 0, scope: !559) +!562 = !DILocation(line: 603, column: 27, scope: !563) +!563 = distinct !DILexicalBlock(scope: !559, file: !3, line: 603, column: 7) +!564 = !DILocation(line: 603, column: 21, scope: !563) +!565 = !DILocation(line: 603, column: 7, scope: !559) +!566 = !DILocation(line: 604, column: 14, scope: !567) +!567 = distinct !DILexicalBlock(scope: !563, file: !3, line: 603, column: 37) +!568 = !DILocation(line: 604, column: 16, scope: !567) +!569 = !DILocation(line: 606, column: 34, scope: !567) +!570 = !DILocation(line: 606, column: 17, scope: !567) +!571 = !DILocation(line: 606, column: 20, scope: !567) +!572 = !DILocation(line: 606, column: 9, scope: !567) +!573 = !DILocation(line: 606, column: 24, scope: !567) +!574 = !DILocation(line: 607, column: 34, scope: !567) +!575 = !DILocation(line: 607, column: 17, scope: !567) +!576 = !DILocation(line: 607, column: 20, scope: !567) +!577 = !DILocation(line: 607, column: 9, scope: !567) +!578 = !DILocation(line: 607, column: 24, scope: !567) +!579 = !DILocation(line: 608, column: 7, scope: !567) +!580 = !DILocation(line: 603, column: 33, scope: !563) +!581 = !DILocation(line: 603, column: 7, scope: !563) +!582 = distinct !{!582, !565, !583} +!583 = !DILocation(line: 608, column: 7, scope: !559) +!584 = !DILocation(line: 612, column: 13, scope: !556) +!585 = !DILocation(line: 613, column: 12, scope: !556) +!586 = !DILocation(line: 614, column: 3, scope: !556) +!587 = !DILocation(line: 591, column: 24, scope: !553) +!588 = !DILocation(line: 591, column: 3, scope: !553) +!589 = distinct !{!589, !554, !590} +!590 = !DILocation(line: 614, column: 3, scope: !550) +!591 = !DILocation(line: 615, column: 1, scope: !529) +!592 = distinct !DISubprogram(name: "fft", scope: !3, file: !3, line: 623, type: !530, scopeLine: 624, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !593) +!593 = !{!594} +!594 = !DILocalVariable(name: "dir", arg: 1, scope: !592, file: !3, line: 623, type: !12) +!595 = !DILocation(line: 0, scope: !592) +!596 = !DILocation(line: 625, column: 11, scope: !597) +!597 = distinct !DILexicalBlock(scope: !592, file: !3, line: 625, column: 7) +!598 = !DILocation(line: 625, column: 7, scope: !592) +!599 = !DILocation(line: 626, column: 19, scope: !600) +!600 = distinct !DILexicalBlock(scope: !597, file: !3, line: 625, column: 17) +!601 = !DILocation(line: 626, column: 28, scope: !600) +!602 = !DILocation(line: 626, column: 37, scope: !600) +!603 = !DILocation(line: 626, column: 5, scope: !600) +!604 = !DILocation(line: 627, column: 19, scope: !600) +!605 = !DILocation(line: 627, column: 28, scope: !600) +!606 = !DILocation(line: 627, column: 37, scope: !600) +!607 = !DILocation(line: 627, column: 5, scope: !600) +!608 = !DILocation(line: 628, column: 19, scope: !600) +!609 = !DILocation(line: 628, column: 28, scope: !600) +!610 = !DILocation(line: 628, column: 37, scope: !600) +!611 = !DILocation(line: 628, column: 5, scope: !600) +!612 = !DILocation(line: 629, column: 3, scope: !600) +!613 = !DILocation(line: 630, column: 20, scope: !614) +!614 = distinct !DILexicalBlock(scope: !597, file: !3, line: 629, column: 10) +!615 = !DILocation(line: 630, column: 29, scope: !614) +!616 = !DILocation(line: 630, column: 38, scope: !614) +!617 = !DILocation(line: 630, column: 5, scope: !614) +!618 = !DILocation(line: 631, column: 20, scope: !614) +!619 = !DILocation(line: 631, column: 29, scope: !614) +!620 = !DILocation(line: 631, column: 38, scope: !614) +!621 = !DILocation(line: 631, column: 5, scope: !614) +!622 = !DILocation(line: 632, column: 20, scope: !614) +!623 = !DILocation(line: 632, column: 29, scope: !614) +!624 = !DILocation(line: 632, column: 38, scope: !614) +!625 = !DILocation(line: 632, column: 5, scope: !614) +!626 = !DILocation(line: 634, column: 1, scope: !592) +!627 = distinct !DISubprogram(name: "evolve", scope: !3, file: !3, line: 307, type: !208, scopeLine: 308, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !628) +!628 = !{!629, !630, !631, !632, !633, !634} +!629 = !DILocalVariable(name: "d1", arg: 1, scope: !627, file: !3, line: 307, type: !12) +!630 = !DILocalVariable(name: "d2", arg: 2, scope: !627, file: !3, line: 307, type: !12) +!631 = !DILocalVariable(name: "d3", arg: 3, scope: !627, file: !3, line: 307, type: !12) +!632 = !DILocalVariable(name: "i", scope: !627, file: !3, line: 309, type: !12) +!633 = !DILocalVariable(name: "j", scope: !627, file: !3, line: 309, type: !12) +!634 = !DILocalVariable(name: "k", scope: !627, file: !3, line: 309, type: !12) +!635 = !DILocation(line: 0, scope: !627) +!636 = !DILocation(line: 314, column: 10, scope: !637) +!637 = distinct !DILexicalBlock(scope: !638, file: !3, line: 314, column: 5) +!638 = distinct !DILexicalBlock(scope: !627, file: !3, line: 312, column: 3) +!639 = !DILocation(line: 0, scope: !637) +!640 = !DILocation(line: 314, column: 19, scope: !641) +!641 = distinct !DILexicalBlock(scope: !637, file: !3, line: 314, column: 5) +!642 = !DILocation(line: 314, column: 5, scope: !637) +!643 = !DILocation(line: 316, column: 12, scope: !644) +!644 = distinct !DILexicalBlock(scope: !645, file: !3, line: 316, column: 7) +!645 = distinct !DILexicalBlock(scope: !641, file: !3, line: 314, column: 30) +!646 = !DILocation(line: 0, scope: !644) +!647 = !DILocation(line: 316, column: 21, scope: !648) +!648 = distinct !DILexicalBlock(scope: !644, file: !3, line: 316, column: 7) +!649 = !DILocation(line: 316, column: 7, scope: !644) +!650 = !DILocation(line: 318, column: 14, scope: !651) +!651 = distinct !DILexicalBlock(scope: !652, file: !3, line: 318, column: 9) +!652 = distinct !DILexicalBlock(scope: !648, file: !3, line: 316, column: 32) +!653 = !DILocation(line: 0, scope: !651) +!654 = !DILocation(line: 318, column: 23, scope: !655) +!655 = distinct !DILexicalBlock(scope: !651, file: !3, line: 318, column: 9) +!656 = !DILocation(line: 318, column: 9, scope: !651) +!657 = !DILocation(line: 319, column: 58, scope: !658) +!658 = distinct !DILexicalBlock(scope: !655, file: !3, line: 318, column: 34) +!659 = !DILocation(line: 319, column: 65, scope: !658) +!660 = !DILocation(line: 319, column: 61, scope: !658) +!661 = !DILocation(line: 319, column: 76, scope: !658) +!662 = !DILocation(line: 319, column: 72, scope: !658) +!663 = !DILocation(line: 319, column: 69, scope: !658) +!664 = !DILocation(line: 319, column: 80, scope: !658) +!665 = !DILocation(line: 319, column: 49, scope: !658) +!666 = !DILocation(line: 320, column: 67, scope: !658) +!667 = !DILocation(line: 320, column: 74, scope: !658) +!668 = !DILocation(line: 320, column: 70, scope: !658) +!669 = !DILocation(line: 320, column: 85, scope: !658) +!670 = !DILocation(line: 320, column: 81, scope: !658) +!671 = !DILocation(line: 320, column: 78, scope: !658) +!672 = !DILocation(line: 320, column: 89, scope: !658) +!673 = !DILocation(line: 320, column: 58, scope: !658) +!674 = !DILocation(line: 320, column: 57, scope: !658) +!675 = !DILocation(line: 319, column: 20, scope: !658) +!676 = !DILocation(line: 319, column: 27, scope: !658) +!677 = !DILocation(line: 319, column: 23, scope: !658) +!678 = !DILocation(line: 319, column: 38, scope: !658) +!679 = !DILocation(line: 319, column: 34, scope: !658) +!680 = !DILocation(line: 319, column: 31, scope: !658) +!681 = !DILocation(line: 319, column: 42, scope: !658) +!682 = !DILocation(line: 319, column: 11, scope: !658) +!683 = !DILocation(line: 319, column: 47, scope: !658) +!684 = !DILocation(line: 321, column: 58, scope: !658) +!685 = !DILocation(line: 321, column: 65, scope: !658) +!686 = !DILocation(line: 321, column: 61, scope: !658) +!687 = !DILocation(line: 321, column: 76, scope: !658) +!688 = !DILocation(line: 321, column: 72, scope: !658) +!689 = !DILocation(line: 321, column: 69, scope: !658) +!690 = !DILocation(line: 321, column: 80, scope: !658) +!691 = !DILocation(line: 321, column: 49, scope: !658) +!692 = !DILocation(line: 322, column: 67, scope: !658) +!693 = !DILocation(line: 322, column: 74, scope: !658) +!694 = !DILocation(line: 322, column: 70, scope: !658) +!695 = !DILocation(line: 322, column: 85, scope: !658) +!696 = !DILocation(line: 322, column: 81, scope: !658) +!697 = !DILocation(line: 322, column: 78, scope: !658) +!698 = !DILocation(line: 322, column: 89, scope: !658) +!699 = !DILocation(line: 322, column: 58, scope: !658) +!700 = !DILocation(line: 322, column: 57, scope: !658) +!701 = !DILocation(line: 321, column: 20, scope: !658) +!702 = !DILocation(line: 321, column: 27, scope: !658) +!703 = !DILocation(line: 321, column: 23, scope: !658) +!704 = !DILocation(line: 321, column: 38, scope: !658) +!705 = !DILocation(line: 321, column: 34, scope: !658) +!706 = !DILocation(line: 321, column: 31, scope: !658) +!707 = !DILocation(line: 321, column: 42, scope: !658) +!708 = !DILocation(line: 321, column: 11, scope: !658) +!709 = !DILocation(line: 321, column: 47, scope: !658) +!710 = !DILocation(line: 324, column: 58, scope: !658) +!711 = !DILocation(line: 324, column: 65, scope: !658) +!712 = !DILocation(line: 324, column: 61, scope: !658) +!713 = !DILocation(line: 324, column: 76, scope: !658) +!714 = !DILocation(line: 324, column: 72, scope: !658) +!715 = !DILocation(line: 324, column: 69, scope: !658) +!716 = !DILocation(line: 324, column: 80, scope: !658) +!717 = !DILocation(line: 324, column: 49, scope: !658) +!718 = !DILocation(line: 324, column: 20, scope: !658) +!719 = !DILocation(line: 324, column: 27, scope: !658) +!720 = !DILocation(line: 324, column: 23, scope: !658) +!721 = !DILocation(line: 324, column: 38, scope: !658) +!722 = !DILocation(line: 324, column: 34, scope: !658) +!723 = !DILocation(line: 324, column: 31, scope: !658) +!724 = !DILocation(line: 324, column: 42, scope: !658) +!725 = !DILocation(line: 324, column: 11, scope: !658) +!726 = !DILocation(line: 324, column: 47, scope: !658) +!727 = !DILocation(line: 325, column: 58, scope: !658) +!728 = !DILocation(line: 325, column: 65, scope: !658) +!729 = !DILocation(line: 325, column: 61, scope: !658) +!730 = !DILocation(line: 325, column: 76, scope: !658) +!731 = !DILocation(line: 325, column: 72, scope: !658) +!732 = !DILocation(line: 325, column: 69, scope: !658) +!733 = !DILocation(line: 325, column: 80, scope: !658) +!734 = !DILocation(line: 325, column: 49, scope: !658) +!735 = !DILocation(line: 325, column: 20, scope: !658) +!736 = !DILocation(line: 325, column: 27, scope: !658) +!737 = !DILocation(line: 325, column: 23, scope: !658) +!738 = !DILocation(line: 325, column: 38, scope: !658) +!739 = !DILocation(line: 325, column: 34, scope: !658) +!740 = !DILocation(line: 325, column: 31, scope: !658) +!741 = !DILocation(line: 325, column: 42, scope: !658) +!742 = !DILocation(line: 325, column: 11, scope: !658) +!743 = !DILocation(line: 325, column: 47, scope: !658) +!744 = !DILocation(line: 326, column: 9, scope: !658) +!745 = !DILocation(line: 318, column: 30, scope: !655) +!746 = !DILocation(line: 318, column: 9, scope: !655) +!747 = distinct !{!747, !656, !748} +!748 = !DILocation(line: 326, column: 9, scope: !651) +!749 = !DILocation(line: 327, column: 7, scope: !652) +!750 = !DILocation(line: 316, column: 28, scope: !648) +!751 = !DILocation(line: 316, column: 7, scope: !648) +!752 = distinct !{!752, !649, !753} +!753 = !DILocation(line: 327, column: 7, scope: !644) +!754 = !DILocation(line: 328, column: 5, scope: !645) +!755 = !DILocation(line: 314, column: 26, scope: !641) +!756 = !DILocation(line: 314, column: 5, scope: !641) +!757 = distinct !{!757, !642, !758} +!758 = !DILocation(line: 328, column: 5, scope: !637) +!759 = !DILocation(line: 331, column: 1, scope: !627) +!760 = distinct !DISubprogram(name: "checksum", scope: !3, file: !3, line: 1427, type: !761, scopeLine: 1428, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !763) +!761 = !DISubroutineType(types: !762) +!762 = !{null, !12, !12, !12, !12} +!763 = !{!764, !765, !766, !767, !768, !769, !770, !771, !772, !773, !774} +!764 = !DILocalVariable(name: "i", arg: 1, scope: !760, file: !3, line: 1427, type: !12) +!765 = !DILocalVariable(name: "d1", arg: 2, scope: !760, file: !3, line: 1427, type: !12) +!766 = !DILocalVariable(name: "d2", arg: 3, scope: !760, file: !3, line: 1427, type: !12) +!767 = !DILocalVariable(name: "d3", arg: 4, scope: !760, file: !3, line: 1427, type: !12) +!768 = !DILocalVariable(name: "j", scope: !760, file: !3, line: 1430, type: !12) +!769 = !DILocalVariable(name: "q", scope: !760, file: !3, line: 1430, type: !12) +!770 = !DILocalVariable(name: "r", scope: !760, file: !3, line: 1430, type: !12) +!771 = !DILocalVariable(name: "s", scope: !760, file: !3, line: 1430, type: !12) +!772 = !DILocalVariable(name: "temp1", scope: !760, file: !3, line: 1431, type: !11) +!773 = !DILocalVariable(name: "temp2", scope: !760, file: !3, line: 1431, type: !11) +!774 = !DILocalVariable(name: "chk", scope: !760, file: !3, line: 1433, type: !56) +!775 = !DILocation(line: 0, scope: !760) +!776 = !DILocation(line: 1453, column: 10, scope: !777) +!777 = distinct !DILexicalBlock(scope: !778, file: !3, line: 1453, column: 5) +!778 = distinct !DILexicalBlock(scope: !760, file: !3, line: 1449, column: 3) +!779 = !DILocation(line: 0, scope: !777) +!780 = !DILocation(line: 1453, column: 19, scope: !781) +!781 = distinct !DILexicalBlock(scope: !777, file: !3, line: 1453, column: 5) +!782 = !DILocation(line: 1453, column: 5, scope: !777) +!783 = !DILocation(line: 1454, column: 13, scope: !784) +!784 = distinct !DILexicalBlock(scope: !781, file: !3, line: 1453, column: 33) +!785 = !DILocation(line: 1455, column: 12, scope: !784) +!786 = !DILocation(line: 1455, column: 15, scope: !784) +!787 = !DILocation(line: 1456, column: 12, scope: !784) +!788 = !DILocation(line: 1456, column: 15, scope: !784) +!789 = !DILocation(line: 1457, column: 32, scope: !784) +!790 = !DILocation(line: 1457, column: 39, scope: !784) +!791 = !DILocation(line: 1457, column: 35, scope: !784) +!792 = !DILocation(line: 1457, column: 50, scope: !784) +!793 = !DILocation(line: 1457, column: 46, scope: !784) +!794 = !DILocation(line: 1457, column: 43, scope: !784) +!795 = !DILocation(line: 1457, column: 54, scope: !784) +!796 = !DILocation(line: 1457, column: 23, scope: !784) +!797 = !DILocation(line: 1457, column: 21, scope: !784) +!798 = !DILocation(line: 1458, column: 32, scope: !784) +!799 = !DILocation(line: 1458, column: 39, scope: !784) +!800 = !DILocation(line: 1458, column: 35, scope: !784) +!801 = !DILocation(line: 1458, column: 50, scope: !784) +!802 = !DILocation(line: 1458, column: 46, scope: !784) +!803 = !DILocation(line: 1458, column: 43, scope: !784) +!804 = !DILocation(line: 1458, column: 54, scope: !784) +!805 = !DILocation(line: 1458, column: 23, scope: !784) +!806 = !DILocation(line: 1458, column: 21, scope: !784) +!807 = !DILocation(line: 1459, column: 5, scope: !784) +!808 = !DILocation(line: 1453, column: 29, scope: !781) +!809 = !DILocation(line: 1453, column: 5, scope: !781) +!810 = distinct !{!810, !782, !811} +!811 = !DILocation(line: 1459, column: 5, scope: !777) +!812 = !DILocation(line: 1464, column: 9, scope: !760) +!813 = !DILocation(line: 1466, column: 3, scope: !760) +!814 = !DILocation(line: 1467, column: 3, scope: !760) +!815 = !DILocation(line: 1467, column: 13, scope: !760) +!816 = !DILocation(line: 1468, column: 1, scope: !760) +!817 = distinct !DISubprogram(name: "verify", scope: !3, file: !3, line: 1471, type: !818, scopeLine: 1473, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !821) +!818 = !DISubroutineType(types: !819) +!819 = !{null, !12, !12, !12, !12, !820, !74} +!820 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !17, size: 64) +!821 = !{!822, !823, !824, !825, !826, !827, !828, !829, !830, !831} +!822 = !DILocalVariable(name: "d1", arg: 1, scope: !817, file: !3, line: 1471, type: !12) +!823 = !DILocalVariable(name: "d2", arg: 2, scope: !817, file: !3, line: 1471, type: !12) +!824 = !DILocalVariable(name: "d3", arg: 3, scope: !817, file: !3, line: 1471, type: !12) +!825 = !DILocalVariable(name: "nt", arg: 4, scope: !817, file: !3, line: 1471, type: !12) +!826 = !DILocalVariable(name: "verified", arg: 5, scope: !817, file: !3, line: 1472, type: !820) +!827 = !DILocalVariable(name: "Class", arg: 6, scope: !817, file: !3, line: 1472, type: !74) +!828 = !DILocalVariable(name: "i", scope: !817, file: !3, line: 1474, type: !12) +!829 = !DILocalVariable(name: "err", scope: !817, file: !3, line: 1475, type: !11) +!830 = !DILocalVariable(name: "epsilon", scope: !817, file: !3, line: 1475, type: !11) +!831 = !DILocalVariable(name: "csum_ref", scope: !817, file: !3, line: 1480, type: !832) +!832 = !DICompositeType(tag: DW_TAG_array_type, baseType: !56, size: 3328, elements: !833) +!833 = !{!834} +!834 = !DISubrange(count: 26) +!835 = !DILocation(line: 0, scope: !817) +!836 = !DILocation(line: 1480, column: 3, scope: !817) +!837 = !DILocation(line: 1480, column: 12, scope: !817) +!838 = !DILocation(line: 1482, column: 10, scope: !817) +!839 = !DILocation(line: 1485, column: 13, scope: !817) +!840 = !DILocation(line: 1487, column: 10, scope: !841) +!841 = distinct !DILexicalBlock(scope: !817, file: !3, line: 1487, column: 7) +!842 = !DILocation(line: 1487, column: 16, scope: !841) +!843 = !DILocation(line: 1487, column: 22, scope: !841) +!844 = !DILocation(line: 1487, column: 28, scope: !841) +!845 = !DILocation(line: 1487, column: 34, scope: !841) +!846 = !DILocation(line: 1487, column: 40, scope: !841) +!847 = !DILocation(line: 1487, column: 46, scope: !841) +!848 = !DILocation(line: 1487, column: 7, scope: !817) +!849 = !DILocation(line: 1491, column: 12, scope: !850) +!850 = distinct !DILexicalBlock(scope: !841, file: !3, line: 1487, column: 52) +!851 = !DILocation(line: 1492, column: 19, scope: !850) +!852 = !DILocation(line: 1493, column: 19, scope: !850) +!853 = !DILocation(line: 1494, column: 19, scope: !850) +!854 = !DILocation(line: 1495, column: 19, scope: !850) +!855 = !DILocation(line: 1496, column: 19, scope: !850) +!856 = !DILocation(line: 1497, column: 19, scope: !850) +!857 = !DILocation(line: 1499, column: 3, scope: !850) +!858 = !DILocation(line: 1499, column: 17, scope: !859) +!859 = distinct !DILexicalBlock(scope: !841, file: !3, line: 1499, column: 14) +!860 = !DILocation(line: 1499, column: 24, scope: !859) +!861 = !DILocation(line: 1499, column: 30, scope: !859) +!862 = !DILocation(line: 1499, column: 37, scope: !859) +!863 = !DILocation(line: 1499, column: 43, scope: !859) +!864 = !DILocation(line: 1499, column: 49, scope: !859) +!865 = !DILocation(line: 1499, column: 55, scope: !859) +!866 = !DILocation(line: 1499, column: 14, scope: !841) +!867 = !DILocation(line: 1503, column: 12, scope: !868) +!868 = distinct !DILexicalBlock(scope: !859, file: !3, line: 1499, column: 61) +!869 = !DILocation(line: 1504, column: 19, scope: !868) +!870 = !DILocation(line: 1505, column: 19, scope: !868) +!871 = !DILocation(line: 1506, column: 19, scope: !868) +!872 = !DILocation(line: 1507, column: 19, scope: !868) +!873 = !DILocation(line: 1508, column: 19, scope: !868) +!874 = !DILocation(line: 1509, column: 19, scope: !868) +!875 = !DILocation(line: 1511, column: 3, scope: !868) +!876 = !DILocation(line: 1511, column: 17, scope: !877) +!877 = distinct !DILexicalBlock(scope: !859, file: !3, line: 1511, column: 14) +!878 = !DILocation(line: 1511, column: 24, scope: !877) +!879 = !DILocation(line: 1511, column: 30, scope: !877) +!880 = !DILocation(line: 1511, column: 37, scope: !877) +!881 = !DILocation(line: 1511, column: 43, scope: !877) +!882 = !DILocation(line: 1511, column: 50, scope: !877) +!883 = !DILocation(line: 1511, column: 56, scope: !877) +!884 = !DILocation(line: 1511, column: 14, scope: !859) +!885 = !DILocation(line: 1515, column: 12, scope: !886) +!886 = distinct !DILexicalBlock(scope: !877, file: !3, line: 1511, column: 62) +!887 = !DILocation(line: 1516, column: 19, scope: !886) +!888 = !DILocation(line: 1517, column: 19, scope: !886) +!889 = !DILocation(line: 1518, column: 19, scope: !886) +!890 = !DILocation(line: 1519, column: 19, scope: !886) +!891 = !DILocation(line: 1520, column: 19, scope: !886) +!892 = !DILocation(line: 1521, column: 19, scope: !886) +!893 = !DILocation(line: 1523, column: 3, scope: !886) +!894 = !DILocation(line: 1523, column: 17, scope: !895) +!895 = distinct !DILexicalBlock(scope: !877, file: !3, line: 1523, column: 14) +!896 = !DILocation(line: 1523, column: 24, scope: !895) +!897 = !DILocation(line: 1523, column: 30, scope: !895) +!898 = !DILocation(line: 1523, column: 37, scope: !895) +!899 = !DILocation(line: 1523, column: 43, scope: !895) +!900 = !DILocation(line: 1523, column: 50, scope: !895) +!901 = !DILocation(line: 1523, column: 56, scope: !895) +!902 = !DILocation(line: 1523, column: 14, scope: !877) +!903 = !DILocation(line: 1527, column: 12, scope: !904) +!904 = distinct !DILexicalBlock(scope: !895, file: !3, line: 1523, column: 63) +!905 = !DILocation(line: 1528, column: 20, scope: !904) +!906 = !DILocation(line: 1529, column: 20, scope: !904) +!907 = !DILocation(line: 1530, column: 20, scope: !904) +!908 = !DILocation(line: 1531, column: 20, scope: !904) +!909 = !DILocation(line: 1532, column: 20, scope: !904) +!910 = !DILocation(line: 1533, column: 20, scope: !904) +!911 = !DILocation(line: 1534, column: 20, scope: !904) +!912 = !DILocation(line: 1535, column: 20, scope: !904) +!913 = !DILocation(line: 1536, column: 20, scope: !904) +!914 = !DILocation(line: 1537, column: 20, scope: !904) +!915 = !DILocation(line: 1538, column: 20, scope: !904) +!916 = !DILocation(line: 1539, column: 20, scope: !904) +!917 = !DILocation(line: 1540, column: 20, scope: !904) +!918 = !DILocation(line: 1541, column: 20, scope: !904) +!919 = !DILocation(line: 1542, column: 20, scope: !904) +!920 = !DILocation(line: 1543, column: 20, scope: !904) +!921 = !DILocation(line: 1544, column: 20, scope: !904) +!922 = !DILocation(line: 1545, column: 20, scope: !904) +!923 = !DILocation(line: 1546, column: 20, scope: !904) +!924 = !DILocation(line: 1547, column: 20, scope: !904) +!925 = !DILocation(line: 1549, column: 3, scope: !904) +!926 = !DILocation(line: 1549, column: 17, scope: !927) +!927 = distinct !DILexicalBlock(scope: !895, file: !3, line: 1549, column: 14) +!928 = !DILocation(line: 1549, column: 24, scope: !927) +!929 = !DILocation(line: 1549, column: 30, scope: !927) +!930 = !DILocation(line: 1549, column: 37, scope: !927) +!931 = !DILocation(line: 1549, column: 43, scope: !927) +!932 = !DILocation(line: 1549, column: 50, scope: !927) +!933 = !DILocation(line: 1549, column: 56, scope: !927) +!934 = !DILocation(line: 1549, column: 14, scope: !895) +!935 = !DILocation(line: 1553, column: 12, scope: !936) +!936 = distinct !DILexicalBlock(scope: !927, file: !3, line: 1549, column: 63) +!937 = !DILocation(line: 1554, column: 20, scope: !936) +!938 = !DILocation(line: 1555, column: 20, scope: !936) +!939 = !DILocation(line: 1556, column: 20, scope: !936) +!940 = !DILocation(line: 1557, column: 20, scope: !936) +!941 = !DILocation(line: 1558, column: 20, scope: !936) +!942 = !DILocation(line: 1559, column: 20, scope: !936) +!943 = !DILocation(line: 1560, column: 20, scope: !936) +!944 = !DILocation(line: 1561, column: 20, scope: !936) +!945 = !DILocation(line: 1562, column: 20, scope: !936) +!946 = !DILocation(line: 1563, column: 20, scope: !936) +!947 = !DILocation(line: 1564, column: 20, scope: !936) +!948 = !DILocation(line: 1565, column: 20, scope: !936) +!949 = !DILocation(line: 1566, column: 20, scope: !936) +!950 = !DILocation(line: 1567, column: 20, scope: !936) +!951 = !DILocation(line: 1568, column: 20, scope: !936) +!952 = !DILocation(line: 1569, column: 20, scope: !936) +!953 = !DILocation(line: 1570, column: 20, scope: !936) +!954 = !DILocation(line: 1571, column: 20, scope: !936) +!955 = !DILocation(line: 1572, column: 20, scope: !936) +!956 = !DILocation(line: 1573, column: 20, scope: !936) +!957 = !DILocation(line: 1575, column: 3, scope: !936) +!958 = !DILocation(line: 1575, column: 17, scope: !959) +!959 = distinct !DILexicalBlock(scope: !927, file: !3, line: 1575, column: 14) +!960 = !DILocation(line: 1575, column: 25, scope: !959) +!961 = !DILocation(line: 1575, column: 31, scope: !959) +!962 = !DILocation(line: 1575, column: 39, scope: !959) +!963 = !DILocation(line: 1575, column: 45, scope: !959) +!964 = !DILocation(line: 1575, column: 53, scope: !959) +!965 = !DILocation(line: 1575, column: 59, scope: !959) +!966 = !DILocation(line: 1575, column: 14, scope: !927) +!967 = !DILocation(line: 1579, column: 12, scope: !968) +!968 = distinct !DILexicalBlock(scope: !959, file: !3, line: 1575, column: 66) +!969 = !DILocation(line: 1580, column: 20, scope: !968) +!970 = !DILocation(line: 1581, column: 20, scope: !968) +!971 = !DILocation(line: 1582, column: 20, scope: !968) +!972 = !DILocation(line: 1583, column: 20, scope: !968) +!973 = !DILocation(line: 1584, column: 20, scope: !968) +!974 = !DILocation(line: 1585, column: 20, scope: !968) +!975 = !DILocation(line: 1586, column: 20, scope: !968) +!976 = !DILocation(line: 1587, column: 20, scope: !968) +!977 = !DILocation(line: 1588, column: 20, scope: !968) +!978 = !DILocation(line: 1589, column: 20, scope: !968) +!979 = !DILocation(line: 1590, column: 20, scope: !968) +!980 = !DILocation(line: 1591, column: 20, scope: !968) +!981 = !DILocation(line: 1592, column: 20, scope: !968) +!982 = !DILocation(line: 1593, column: 20, scope: !968) +!983 = !DILocation(line: 1594, column: 20, scope: !968) +!984 = !DILocation(line: 1595, column: 20, scope: !968) +!985 = !DILocation(line: 1596, column: 20, scope: !968) +!986 = !DILocation(line: 1597, column: 20, scope: !968) +!987 = !DILocation(line: 1598, column: 20, scope: !968) +!988 = !DILocation(line: 1599, column: 20, scope: !968) +!989 = !DILocation(line: 1600, column: 20, scope: !968) +!990 = !DILocation(line: 1601, column: 20, scope: !968) +!991 = !DILocation(line: 1602, column: 20, scope: !968) +!992 = !DILocation(line: 1603, column: 20, scope: !968) +!993 = !DILocation(line: 1604, column: 20, scope: !968) +!994 = !DILocation(line: 1606, column: 3, scope: !968) +!995 = !DILocation(line: 1606, column: 17, scope: !996) +!996 = distinct !DILexicalBlock(scope: !959, file: !3, line: 1606, column: 14) +!997 = !DILocation(line: 1606, column: 25, scope: !996) +!998 = !DILocation(line: 1606, column: 31, scope: !996) +!999 = !DILocation(line: 1606, column: 39, scope: !996) +!1000 = !DILocation(line: 1606, column: 45, scope: !996) +!1001 = !DILocation(line: 1606, column: 53, scope: !996) +!1002 = !DILocation(line: 1606, column: 59, scope: !996) +!1003 = !DILocation(line: 1606, column: 14, scope: !959) +!1004 = !DILocation(line: 1610, column: 12, scope: !1005) +!1005 = distinct !DILexicalBlock(scope: !996, file: !3, line: 1606, column: 66) +!1006 = !DILocation(line: 1611, column: 20, scope: !1005) +!1007 = !DILocation(line: 1612, column: 20, scope: !1005) +!1008 = !DILocation(line: 1613, column: 20, scope: !1005) +!1009 = !DILocation(line: 1614, column: 20, scope: !1005) +!1010 = !DILocation(line: 1615, column: 20, scope: !1005) +!1011 = !DILocation(line: 1616, column: 20, scope: !1005) +!1012 = !DILocation(line: 1617, column: 20, scope: !1005) +!1013 = !DILocation(line: 1618, column: 20, scope: !1005) +!1014 = !DILocation(line: 1619, column: 20, scope: !1005) +!1015 = !DILocation(line: 1620, column: 20, scope: !1005) +!1016 = !DILocation(line: 1621, column: 20, scope: !1005) +!1017 = !DILocation(line: 1622, column: 20, scope: !1005) +!1018 = !DILocation(line: 1623, column: 20, scope: !1005) +!1019 = !DILocation(line: 1624, column: 20, scope: !1005) +!1020 = !DILocation(line: 1625, column: 20, scope: !1005) +!1021 = !DILocation(line: 1626, column: 20, scope: !1005) +!1022 = !DILocation(line: 1627, column: 20, scope: !1005) +!1023 = !DILocation(line: 1628, column: 20, scope: !1005) +!1024 = !DILocation(line: 1629, column: 20, scope: !1005) +!1025 = !DILocation(line: 1630, column: 20, scope: !1005) +!1026 = !DILocation(line: 1631, column: 20, scope: !1005) +!1027 = !DILocation(line: 1632, column: 20, scope: !1005) +!1028 = !DILocation(line: 1633, column: 20, scope: !1005) +!1029 = !DILocation(line: 1634, column: 20, scope: !1005) +!1030 = !DILocation(line: 1635, column: 20, scope: !1005) +!1031 = !DILocation(line: 1636, column: 3, scope: !1005) +!1032 = !DILocation(line: 1638, column: 7, scope: !1033) +!1033 = distinct !DILexicalBlock(scope: !817, file: !3, line: 1638, column: 7) +!1034 = !DILocation(line: 1638, column: 14, scope: !1033) +!1035 = !DILocation(line: 1638, column: 7, scope: !817) +!1036 = !DILocation(line: 1639, column: 15, scope: !1037) +!1037 = distinct !DILexicalBlock(scope: !1033, file: !3, line: 1638, column: 22) +!1038 = !DILocation(line: 1640, column: 10, scope: !1039) +!1039 = distinct !DILexicalBlock(scope: !1037, file: !3, line: 1640, column: 5) +!1040 = !DILocation(line: 0, scope: !1039) +!1041 = !DILocation(line: 1640, column: 19, scope: !1042) +!1042 = distinct !DILexicalBlock(scope: !1039, file: !3, line: 1640, column: 5) +!1043 = !DILocation(line: 1640, column: 5, scope: !1039) +!1044 = !DILocation(line: 1641, column: 13, scope: !1045) +!1045 = distinct !DILexicalBlock(scope: !1042, file: !3, line: 1640, column: 31) +!1046 = !{!1047, !250, i64 0} +!1047 = !{!"", !250, i64 0, !250, i64 8} +!1048 = !{!1047, !250, i64 8} +!1049 = !DILocation(line: 1643, column: 17, scope: !1050) +!1050 = distinct !DILexicalBlock(scope: !1045, file: !3, line: 1643, column: 11) +!1051 = !DILocation(line: 1643, column: 11, scope: !1045) +!1052 = !DILocation(line: 1644, column: 19, scope: !1053) +!1053 = distinct !DILexicalBlock(scope: !1050, file: !3, line: 1643, column: 30) +!1054 = !DILocation(line: 1645, column: 9, scope: !1053) +!1055 = !DILocation(line: 1647, column: 5, scope: !1045) +!1056 = !DILocation(line: 1640, column: 27, scope: !1042) +!1057 = !DILocation(line: 1640, column: 5, scope: !1042) +!1058 = distinct !{!1058, !1043, !1059} +!1059 = !DILocation(line: 1647, column: 5, scope: !1039) +!1060 = !DILocation(line: 1648, column: 3, scope: !1037) +!1061 = !DILocation(line: 1650, column: 7, scope: !1062) +!1062 = distinct !DILexicalBlock(scope: !817, file: !3, line: 1650, column: 7) +!1063 = !DILocation(line: 1650, column: 14, scope: !1062) +!1064 = !DILocation(line: 1650, column: 7, scope: !817) +!1065 = !DILocation(line: 1651, column: 9, scope: !1066) +!1066 = distinct !DILexicalBlock(scope: !1067, file: !3, line: 1651, column: 9) +!1067 = distinct !DILexicalBlock(scope: !1062, file: !3, line: 1650, column: 22) +!1068 = !DILocation(line: 1651, column: 9, scope: !1067) +!1069 = !DILocation(line: 1652, column: 7, scope: !1070) +!1070 = distinct !DILexicalBlock(scope: !1066, file: !3, line: 1651, column: 20) +!1071 = !DILocation(line: 1653, column: 5, scope: !1070) +!1072 = !DILocation(line: 1654, column: 7, scope: !1073) +!1073 = distinct !DILexicalBlock(scope: !1066, file: !3, line: 1653, column: 12) +!1074 = !DILocation(line: 1656, column: 3, scope: !1067) +!1075 = !DILocation(line: 1657, column: 27, scope: !817) +!1076 = !DILocation(line: 1657, column: 3, scope: !817) +!1077 = !DILocation(line: 1658, column: 1, scope: !817) +!1078 = distinct !DISubprogram(name: "ipow46", scope: !3, file: !3, line: 410, type: !1079, scopeLine: 411, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !1081) +!1079 = !DISubroutineType(types: !1080) +!1080 = !{!11, !11, !12} +!1081 = !{!1082, !1083, !1084, !1085, !1086, !1087, !1088, !1089} +!1082 = !DILocalVariable(name: "a", arg: 1, scope: !1078, file: !3, line: 410, type: !11) +!1083 = !DILocalVariable(name: "exponent", arg: 2, scope: !1078, file: !3, line: 410, type: !12) +!1084 = !DILocalVariable(name: "result", scope: !1078, file: !3, line: 412, type: !11) +!1085 = !DILocalVariable(name: "dummy", scope: !1078, file: !3, line: 412, type: !11) +!1086 = !DILocalVariable(name: "q", scope: !1078, file: !3, line: 412, type: !11) +!1087 = !DILocalVariable(name: "r", scope: !1078, file: !3, line: 412, type: !11) +!1088 = !DILocalVariable(name: "n", scope: !1078, file: !3, line: 413, type: !12) +!1089 = !DILocalVariable(name: "n2", scope: !1078, file: !3, line: 413, type: !12) +!1090 = !DILocation(line: 0, scope: !1078) +!1091 = !DILocation(line: 412, column: 3, scope: !1078) +!1092 = !DILocation(line: 412, column: 25, scope: !1078) +!1093 = !DILocation(line: 412, column: 28, scope: !1078) +!1094 = !DILocation(line: 421, column: 16, scope: !1095) +!1095 = distinct !DILexicalBlock(scope: !1078, file: !3, line: 421, column: 7) +!1096 = !DILocation(line: 421, column: 7, scope: !1078) +!1097 = !DILocation(line: 421, column: 22, scope: !1095) +!1098 = !DILocation(line: 422, column: 5, scope: !1078) +!1099 = !DILocation(line: 423, column: 5, scope: !1078) +!1100 = !DILocation(line: 426, column: 3, scope: !1078) +!1101 = !DILocation(line: 426, column: 12, scope: !1078) +!1102 = !DILocation(line: 427, column: 12, scope: !1103) +!1103 = distinct !DILexicalBlock(scope: !1078, file: !3, line: 426, column: 17) +!1104 = !DILocation(line: 428, column: 12, scope: !1105) +!1105 = distinct !DILexicalBlock(scope: !1103, file: !3, line: 428, column: 9) +!1106 = !DILocation(line: 428, column: 16, scope: !1105) +!1107 = !DILocation(line: 428, column: 9, scope: !1103) +!1108 = !DILocation(line: 429, column: 26, scope: !1109) +!1109 = distinct !DILexicalBlock(scope: !1105, file: !3, line: 428, column: 22) +!1110 = !DILocation(line: 429, column: 15, scope: !1109) +!1111 = !DILocation(line: 431, column: 5, scope: !1109) +!1112 = !DILocation(line: 432, column: 26, scope: !1113) +!1113 = distinct !DILexicalBlock(scope: !1105, file: !3, line: 431, column: 12) +!1114 = !DILocation(line: 432, column: 15, scope: !1113) +!1115 = !DILocation(line: 433, column: 12, scope: !1113) +!1116 = !DILocation(line: 0, scope: !1105) +!1117 = distinct !{!1117, !1100, !1118} +!1118 = !DILocation(line: 435, column: 3, scope: !1078) +!1119 = !DILocation(line: 436, column: 22, scope: !1078) +!1120 = !DILocation(line: 436, column: 11, scope: !1078) +!1121 = !DILocation(line: 437, column: 12, scope: !1078) +!1122 = !DILocation(line: 438, column: 3, scope: !1078) +!1123 = !DILocation(line: 439, column: 1, scope: !1078) +!1124 = distinct !DISubprogram(name: "setup", scope: !3, file: !3, line: 442, type: !1125, scopeLine: 443, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !1127) +!1125 = !DISubroutineType(types: !1126) +!1126 = !{null} +!1127 = !{!1128} +!1128 = !DILocalVariable(name: "fp", scope: !1124, file: !3, line: 444, type: !1129) +!1129 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !1130, size: 64) +!1130 = !DIDerivedType(tag: DW_TAG_typedef, name: "FILE", file: !1131, line: 48, baseType: !1132) +!1131 = !DIFile(filename: "/usr/include/stdio.h", directory: "") +!1132 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_IO_FILE", file: !1133, line: 241, size: 1728, elements: !1134) +!1133 = !DIFile(filename: "/usr/include/libio.h", directory: "") +!1134 = !{!1135, !1136, !1137, !1138, !1139, !1140, !1141, !1142, !1143, !1144, !1145, !1146, !1147, !1155, !1156, !1157, !1158, !1162, !1164, !1166, !1170, !1173, !1175, !1176, !1177, !1178, !1179, !1183, !1184} +!1135 = !DIDerivedType(tag: DW_TAG_member, name: "_flags", scope: !1132, file: !1133, line: 242, baseType: !12, size: 32) +!1136 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_read_ptr", scope: !1132, file: !1133, line: 247, baseType: !74, size: 64, offset: 64) +!1137 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_read_end", scope: !1132, file: !1133, line: 248, baseType: !74, size: 64, offset: 128) +!1138 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_read_base", scope: !1132, file: !1133, line: 249, baseType: !74, size: 64, offset: 192) +!1139 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_write_base", scope: !1132, file: !1133, line: 250, baseType: !74, size: 64, offset: 256) +!1140 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_write_ptr", scope: !1132, file: !1133, line: 251, baseType: !74, size: 64, offset: 320) +!1141 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_write_end", scope: !1132, file: !1133, line: 252, baseType: !74, size: 64, offset: 384) +!1142 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_buf_base", scope: !1132, file: !1133, line: 253, baseType: !74, size: 64, offset: 448) +!1143 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_buf_end", scope: !1132, file: !1133, line: 254, baseType: !74, size: 64, offset: 512) +!1144 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_save_base", scope: !1132, file: !1133, line: 256, baseType: !74, size: 64, offset: 576) +!1145 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_backup_base", scope: !1132, file: !1133, line: 257, baseType: !74, size: 64, offset: 640) +!1146 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_save_end", scope: !1132, file: !1133, line: 258, baseType: !74, size: 64, offset: 704) +!1147 = !DIDerivedType(tag: DW_TAG_member, name: "_markers", scope: !1132, file: !1133, line: 260, baseType: !1148, size: 64, offset: 768) +!1148 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !1149, size: 64) +!1149 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_IO_marker", file: !1133, line: 156, size: 192, elements: !1150) +!1150 = !{!1151, !1152, !1154} +!1151 = !DIDerivedType(tag: DW_TAG_member, name: "_next", scope: !1149, file: !1133, line: 157, baseType: !1148, size: 64) +!1152 = !DIDerivedType(tag: DW_TAG_member, name: "_sbuf", scope: !1149, file: !1133, line: 158, baseType: !1153, size: 64, offset: 64) +!1153 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !1132, size: 64) +!1154 = !DIDerivedType(tag: DW_TAG_member, name: "_pos", scope: !1149, file: !1133, line: 162, baseType: !12, size: 32, offset: 128) +!1155 = !DIDerivedType(tag: DW_TAG_member, name: "_chain", scope: !1132, file: !1133, line: 262, baseType: !1153, size: 64, offset: 832) +!1156 = !DIDerivedType(tag: DW_TAG_member, name: "_fileno", scope: !1132, file: !1133, line: 264, baseType: !12, size: 32, offset: 896) +!1157 = !DIDerivedType(tag: DW_TAG_member, name: "_flags2", scope: !1132, file: !1133, line: 268, baseType: !12, size: 32, offset: 928) +!1158 = !DIDerivedType(tag: DW_TAG_member, name: "_old_offset", scope: !1132, file: !1133, line: 270, baseType: !1159, size: 64, offset: 960) +!1159 = !DIDerivedType(tag: DW_TAG_typedef, name: "__off_t", file: !1160, line: 131, baseType: !1161) +!1160 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "") +!1161 = !DIBasicType(name: "long int", size: 64, encoding: DW_ATE_signed) +!1162 = !DIDerivedType(tag: DW_TAG_member, name: "_cur_column", scope: !1132, file: !1133, line: 274, baseType: !1163, size: 16, offset: 1024) +!1163 = !DIBasicType(name: "unsigned short", size: 16, encoding: DW_ATE_unsigned) +!1164 = !DIDerivedType(tag: DW_TAG_member, name: "_vtable_offset", scope: !1132, file: !1133, line: 275, baseType: !1165, size: 8, offset: 1040) +!1165 = !DIBasicType(name: "signed char", size: 8, encoding: DW_ATE_signed_char) +!1166 = !DIDerivedType(tag: DW_TAG_member, name: "_shortbuf", scope: !1132, file: !1133, line: 276, baseType: !1167, size: 8, offset: 1048) +!1167 = !DICompositeType(tag: DW_TAG_array_type, baseType: !75, size: 8, elements: !1168) +!1168 = !{!1169} +!1169 = !DISubrange(count: 1) +!1170 = !DIDerivedType(tag: DW_TAG_member, name: "_lock", scope: !1132, file: !1133, line: 280, baseType: !1171, size: 64, offset: 1088) +!1171 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !1172, size: 64) +!1172 = !DIDerivedType(tag: DW_TAG_typedef, name: "_IO_lock_t", file: !1133, line: 150, baseType: null) +!1173 = !DIDerivedType(tag: DW_TAG_member, name: "_offset", scope: !1132, file: !1133, line: 289, baseType: !1174, size: 64, offset: 1152) +!1174 = !DIDerivedType(tag: DW_TAG_typedef, name: "__off64_t", file: !1160, line: 132, baseType: !1161) +!1175 = !DIDerivedType(tag: DW_TAG_member, name: "__pad1", scope: !1132, file: !1133, line: 297, baseType: !13, size: 64, offset: 1216) +!1176 = !DIDerivedType(tag: DW_TAG_member, name: "__pad2", scope: !1132, file: !1133, line: 298, baseType: !13, size: 64, offset: 1280) +!1177 = !DIDerivedType(tag: DW_TAG_member, name: "__pad3", scope: !1132, file: !1133, line: 299, baseType: !13, size: 64, offset: 1344) +!1178 = !DIDerivedType(tag: DW_TAG_member, name: "__pad4", scope: !1132, file: !1133, line: 300, baseType: !13, size: 64, offset: 1408) +!1179 = !DIDerivedType(tag: DW_TAG_member, name: "__pad5", scope: !1132, file: !1133, line: 302, baseType: !1180, size: 64, offset: 1472) +!1180 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !1181, line: 46, baseType: !1182) +!1181 = !DIFile(filename: "/usr/lib/llvm-9/lib/clang/9.0.0/include/stddef.h", directory: "") +!1182 = !DIBasicType(name: "long unsigned int", size: 64, encoding: DW_ATE_unsigned) +!1183 = !DIDerivedType(tag: DW_TAG_member, name: "_mode", scope: !1132, file: !1133, line: 303, baseType: !12, size: 32, offset: 1536) +!1184 = !DIDerivedType(tag: DW_TAG_member, name: "_unused2", scope: !1132, file: !1133, line: 305, baseType: !1185, size: 160, offset: 1568) +!1185 = !DICompositeType(tag: DW_TAG_array_type, baseType: !75, size: 160, elements: !1186) +!1186 = !{!1187} +!1187 = !DISubrange(count: 20) +!1188 = !DILocation(line: 445, column: 9, scope: !1124) +!1189 = !DILocation(line: 447, column: 13, scope: !1190) +!1190 = distinct !DILexicalBlock(scope: !1124, file: !3, line: 447, column: 7) +!1191 = !DILocation(line: 0, scope: !1124) +!1192 = !DILocation(line: 447, column: 39, scope: !1190) +!1193 = !DILocation(line: 447, column: 7, scope: !1124) +!1194 = !DILocation(line: 448, column: 20, scope: !1195) +!1195 = distinct !DILexicalBlock(scope: !1190, file: !3, line: 447, column: 48) +!1196 = !DILocation(line: 449, column: 5, scope: !1195) +!1197 = !DILocation(line: 450, column: 3, scope: !1195) +!1198 = !DILocation(line: 451, column: 20, scope: !1199) +!1199 = distinct !DILexicalBlock(scope: !1190, file: !3, line: 450, column: 10) +!1200 = !DILocation(line: 454, column: 9, scope: !1124) +!1201 = !DILocation(line: 456, column: 3, scope: !1124) +!1202 = !DILocation(line: 457, column: 3, scope: !1124) +!1203 = !DILocation(line: 458, column: 49, scope: !1124) +!1204 = !DILocation(line: 458, column: 3, scope: !1124) +!1205 = !DILocation(line: 459, column: 3, scope: !1124) +!1206 = !DILocation(line: 461, column: 11, scope: !1124) +!1207 = !DILocation(line: 462, column: 11, scope: !1124) +!1208 = !DILocation(line: 463, column: 11, scope: !1124) +!1209 = !DILocation(line: 479, column: 1, scope: !1124) +!1210 = distinct !DISubprogram(name: "print_timers", scope: !3, file: !3, line: 535, type: !1125, scopeLine: 536, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !1211) +!1211 = !{!1212, !1213, !1214, !1215} +!1212 = !DILocalVariable(name: "i", scope: !1210, file: !3, line: 537, type: !12) +!1213 = !DILocalVariable(name: "t", scope: !1210, file: !3, line: 538, type: !11) +!1214 = !DILocalVariable(name: "t_m", scope: !1210, file: !3, line: 538, type: !11) +!1215 = !DILocalVariable(name: "tstrings", scope: !1210, file: !3, line: 539, type: !1216) +!1216 = !DICompositeType(tag: DW_TAG_array_type, baseType: !74, size: 576, elements: !1217) +!1217 = !{!1218} +!1218 = !DISubrange(count: 9) +!1219 = !DILocation(line: 539, column: 3, scope: !1210) +!1220 = !DILocation(line: 539, column: 9, scope: !1210) +!1221 = !DILocation(line: 540, column: 3, scope: !1210) +!1222 = !DILocation(line: 540, column: 15, scope: !1210) +!1223 = !{!1224, !1224, i64 0} +!1224 = !{!"any pointer", !108, i64 0} +!1225 = !DILocation(line: 541, column: 3, scope: !1210) +!1226 = !DILocation(line: 541, column: 15, scope: !1210) +!1227 = !DILocation(line: 542, column: 3, scope: !1210) +!1228 = !DILocation(line: 542, column: 15, scope: !1210) +!1229 = !DILocation(line: 543, column: 3, scope: !1210) +!1230 = !DILocation(line: 543, column: 15, scope: !1210) +!1231 = !DILocation(line: 544, column: 3, scope: !1210) +!1232 = !DILocation(line: 544, column: 15, scope: !1210) +!1233 = !DILocation(line: 545, column: 3, scope: !1210) +!1234 = !DILocation(line: 545, column: 15, scope: !1210) +!1235 = !DILocation(line: 546, column: 3, scope: !1210) +!1236 = !DILocation(line: 546, column: 15, scope: !1210) +!1237 = !DILocation(line: 547, column: 3, scope: !1210) +!1238 = !DILocation(line: 547, column: 15, scope: !1210) +!1239 = !DILocation(line: 549, column: 9, scope: !1210) +!1240 = !DILocation(line: 0, scope: !1210) +!1241 = !DILocation(line: 550, column: 11, scope: !1242) +!1242 = distinct !DILexicalBlock(scope: !1210, file: !3, line: 550, column: 7) +!1243 = !DILocation(line: 550, column: 7, scope: !1210) +!1244 = !DILocation(line: 550, column: 19, scope: !1242) +!1245 = !DILocation(line: 551, column: 8, scope: !1246) +!1246 = distinct !DILexicalBlock(scope: !1210, file: !3, line: 551, column: 3) +!1247 = !DILocation(line: 0, scope: !1246) +!1248 = !DILocation(line: 551, column: 17, scope: !1249) +!1249 = distinct !DILexicalBlock(scope: !1246, file: !3, line: 551, column: 3) +!1250 = !DILocation(line: 551, column: 3, scope: !1246) +!1251 = !DILocation(line: 552, column: 9, scope: !1252) +!1252 = distinct !DILexicalBlock(scope: !1249, file: !3, line: 551, column: 32) +!1253 = !DILocation(line: 554, column: 12, scope: !1252) +!1254 = !DILocation(line: 554, column: 29, scope: !1252) +!1255 = !DILocation(line: 554, column: 35, scope: !1252) +!1256 = !DILocation(line: 553, column: 5, scope: !1252) +!1257 = !DILocation(line: 555, column: 3, scope: !1252) +!1258 = !DILocation(line: 551, column: 28, scope: !1249) +!1259 = !DILocation(line: 551, column: 3, scope: !1249) +!1260 = distinct !{!1260, !1250, !1261} +!1261 = !DILocation(line: 555, column: 3, scope: !1246) +!1262 = !DILocation(line: 556, column: 1, scope: !1210) +!1263 = distinct !DISubprogram(name: "ilog2", scope: !3, file: !3, line: 1413, type: !1264, scopeLine: 1414, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !1266) +!1264 = !DISubroutineType(types: !1265) +!1265 = !{!12, !12} +!1266 = !{!1267, !1268, !1269} +!1267 = !DILocalVariable(name: "n", arg: 1, scope: !1263, file: !3, line: 1413, type: !12) +!1268 = !DILocalVariable(name: "nn", scope: !1263, file: !3, line: 1415, type: !12) +!1269 = !DILocalVariable(name: "lg", scope: !1263, file: !3, line: 1415, type: !12) +!1270 = !DILocation(line: 0, scope: !1263) +!1271 = !DILocation(line: 1416, column: 9, scope: !1272) +!1272 = distinct !DILexicalBlock(scope: !1263, file: !3, line: 1416, column: 7) +!1273 = !DILocation(line: 1416, column: 7, scope: !1263) +!1274 = !DILocation(line: 1416, column: 15, scope: !1272) +!1275 = !DILocation(line: 1419, column: 3, scope: !1263) +!1276 = !DILocation(line: 1419, column: 13, scope: !1263) +!1277 = !DILocation(line: 1420, column: 12, scope: !1278) +!1278 = distinct !DILexicalBlock(scope: !1263, file: !3, line: 1419, column: 18) +!1279 = !DILocation(line: 1421, column: 12, scope: !1278) +!1280 = distinct !{!1280, !1275, !1281} +!1281 = !DILocation(line: 1422, column: 3, scope: !1263) +!1282 = !DILocation(line: 1423, column: 3, scope: !1263) +!1283 = !DILocation(line: 1424, column: 1, scope: !1263) +!1284 = distinct !DISubprogram(name: "cffts1_pos", scope: !3, file: !3, line: 636, type: !761, scopeLine: 637, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !1285) +!1285 = !{!1286, !1287, !1288, !1289, !1290, !1291, !1292, !1293, !1294, !1295, !1296, !1297, !1298, !1299, !1300, !1301, !1302, !1303, !1304, !1305, !1306, !1307, !1308, !1309, !1310, !1311, !1312, !1313, !1314, !1315, !1316, !1317, !1318, !1319, !1320, !1321, !1322, !1323} +!1286 = !DILocalVariable(name: "is", arg: 1, scope: !1284, file: !3, line: 636, type: !12) +!1287 = !DILocalVariable(name: "d1", arg: 2, scope: !1284, file: !3, line: 636, type: !12) +!1288 = !DILocalVariable(name: "d2", arg: 3, scope: !1284, file: !3, line: 636, type: !12) +!1289 = !DILocalVariable(name: "d3", arg: 4, scope: !1284, file: !3, line: 636, type: !12) +!1290 = !DILocalVariable(name: "logd1", scope: !1284, file: !3, line: 638, type: !12) +!1291 = !DILocalVariable(name: "i", scope: !1284, file: !3, line: 639, type: !12) +!1292 = !DILocalVariable(name: "j", scope: !1284, file: !3, line: 639, type: !12) +!1293 = !DILocalVariable(name: "k", scope: !1284, file: !3, line: 639, type: !12) +!1294 = !DILocalVariable(name: "jj", scope: !1284, file: !3, line: 639, type: !12) +!1295 = !DILocalVariable(name: "l", scope: !1284, file: !3, line: 640, type: !12) +!1296 = !DILocalVariable(name: "j1", scope: !1284, file: !3, line: 640, type: !12) +!1297 = !DILocalVariable(name: "i1", scope: !1284, file: !3, line: 640, type: !12) +!1298 = !DILocalVariable(name: "k1", scope: !1284, file: !3, line: 640, type: !12) +!1299 = !DILocalVariable(name: "n1", scope: !1284, file: !3, line: 641, type: !12) +!1300 = !DILocalVariable(name: "li", scope: !1284, file: !3, line: 641, type: !12) +!1301 = !DILocalVariable(name: "lj", scope: !1284, file: !3, line: 641, type: !12) +!1302 = !DILocalVariable(name: "lk", scope: !1284, file: !3, line: 641, type: !12) +!1303 = !DILocalVariable(name: "ku", scope: !1284, file: !3, line: 641, type: !12) +!1304 = !DILocalVariable(name: "i11", scope: !1284, file: !3, line: 641, type: !12) +!1305 = !DILocalVariable(name: "i12", scope: !1284, file: !3, line: 641, type: !12) +!1306 = !DILocalVariable(name: "i21", scope: !1284, file: !3, line: 641, type: !12) +!1307 = !DILocalVariable(name: "i22", scope: !1284, file: !3, line: 641, type: !12) +!1308 = !DILocalVariable(name: "uu1_real", scope: !1284, file: !3, line: 642, type: !11) +!1309 = !DILocalVariable(name: "x11_real", scope: !1284, file: !3, line: 642, type: !11) +!1310 = !DILocalVariable(name: "x21_real", scope: !1284, file: !3, line: 642, type: !11) +!1311 = !DILocalVariable(name: "uu1_imag", scope: !1284, file: !3, line: 643, type: !11) +!1312 = !DILocalVariable(name: "x11_imag", scope: !1284, file: !3, line: 643, type: !11) +!1313 = !DILocalVariable(name: "x21_imag", scope: !1284, file: !3, line: 643, type: !11) +!1314 = !DILocalVariable(name: "uu2_real", scope: !1284, file: !3, line: 644, type: !11) +!1315 = !DILocalVariable(name: "x12_real", scope: !1284, file: !3, line: 644, type: !11) +!1316 = !DILocalVariable(name: "x22_real", scope: !1284, file: !3, line: 644, type: !11) +!1317 = !DILocalVariable(name: "uu2_imag", scope: !1284, file: !3, line: 645, type: !11) +!1318 = !DILocalVariable(name: "x12_imag", scope: !1284, file: !3, line: 645, type: !11) +!1319 = !DILocalVariable(name: "x22_imag", scope: !1284, file: !3, line: 645, type: !11) +!1320 = !DILocalVariable(name: "temp_real", scope: !1284, file: !3, line: 646, type: !11) +!1321 = !DILocalVariable(name: "temp2_real", scope: !1284, file: !3, line: 646, type: !11) +!1322 = !DILocalVariable(name: "temp_imag", scope: !1284, file: !3, line: 647, type: !11) +!1323 = !DILocalVariable(name: "temp2_imag", scope: !1284, file: !3, line: 647, type: !11) +!1324 = !DILocation(line: 0, scope: !1284) +!1325 = !{} +!1326 = !DILocation(line: 639, column: 16, scope: !1284) +!1327 = !DILocation(line: 649, column: 11, scope: !1284) +!1328 = !DILocation(line: 667, column: 10, scope: !1329) +!1329 = distinct !DILexicalBlock(scope: !1330, file: !3, line: 667, column: 5) +!1330 = distinct !DILexicalBlock(scope: !1284, file: !3, line: 664, column: 3) +!1331 = !DILocation(line: 0, scope: !1329) +!1332 = !DILocation(line: 667, column: 19, scope: !1333) +!1333 = distinct !DILexicalBlock(scope: !1329, file: !3, line: 667, column: 5) +!1334 = !DILocation(line: 667, column: 5, scope: !1329) +!1335 = !DILocation(line: 670, column: 12, scope: !1336) +!1336 = distinct !DILexicalBlock(scope: !1337, file: !3, line: 670, column: 7) +!1337 = distinct !DILexicalBlock(scope: !1333, file: !3, line: 667, column: 30) +!1338 = !DILocation(line: 0, scope: !1336) +!1339 = !DILocation(line: 670, column: 21, scope: !1340) +!1340 = distinct !DILexicalBlock(scope: !1336, file: !3, line: 670, column: 7) +!1341 = !DILocation(line: 670, column: 7, scope: !1336) +!1342 = !DILocation(line: 672, column: 14, scope: !1343) +!1343 = distinct !DILexicalBlock(scope: !1344, file: !3, line: 672, column: 9) +!1344 = distinct !DILexicalBlock(scope: !1340, file: !3, line: 670, column: 32) +!1345 = !DILocation(line: 0, scope: !1343) +!1346 = !DILocation(line: 672, column: 23, scope: !1347) +!1347 = distinct !DILexicalBlock(scope: !1343, file: !3, line: 672, column: 9) +!1348 = !DILocation(line: 672, column: 9, scope: !1343) +!1349 = !DILocation(line: 673, column: 41, scope: !1350) +!1350 = distinct !DILexicalBlock(scope: !1347, file: !3, line: 672, column: 34) +!1351 = !DILocation(line: 673, column: 48, scope: !1350) +!1352 = !DILocation(line: 673, column: 44, scope: !1350) +!1353 = !DILocation(line: 673, column: 59, scope: !1350) +!1354 = !DILocation(line: 673, column: 55, scope: !1350) +!1355 = !DILocation(line: 673, column: 52, scope: !1350) +!1356 = !DILocation(line: 673, column: 63, scope: !1350) +!1357 = !DILocation(line: 673, column: 32, scope: !1350) +!1358 = !DILocation(line: 673, column: 11, scope: !1350) +!1359 = !DILocation(line: 673, column: 30, scope: !1350) +!1360 = !DILocation(line: 674, column: 41, scope: !1350) +!1361 = !DILocation(line: 674, column: 48, scope: !1350) +!1362 = !DILocation(line: 674, column: 44, scope: !1350) +!1363 = !DILocation(line: 674, column: 59, scope: !1350) +!1364 = !DILocation(line: 674, column: 55, scope: !1350) +!1365 = !DILocation(line: 674, column: 52, scope: !1350) +!1366 = !DILocation(line: 674, column: 63, scope: !1350) +!1367 = !DILocation(line: 674, column: 32, scope: !1350) +!1368 = !DILocation(line: 674, column: 11, scope: !1350) +!1369 = !DILocation(line: 674, column: 30, scope: !1350) +!1370 = !DILocation(line: 675, column: 9, scope: !1350) +!1371 = !DILocation(line: 672, column: 30, scope: !1347) +!1372 = !DILocation(line: 672, column: 9, scope: !1347) +!1373 = distinct !{!1373, !1348, !1374} +!1374 = !DILocation(line: 675, column: 9, scope: !1343) +!1375 = !DILocation(line: 677, column: 13, scope: !1376) +!1376 = distinct !DILexicalBlock(scope: !1344, file: !3, line: 677, column: 9) +!1377 = !DILocation(line: 0, scope: !1376) +!1378 = !DILocation(line: 677, column: 22, scope: !1379) +!1379 = distinct !DILexicalBlock(scope: !1376, file: !3, line: 677, column: 9) +!1380 = !DILocation(line: 677, column: 9, scope: !1376) +!1381 = !DILocation(line: 678, column: 19, scope: !1382) +!1382 = distinct !DILexicalBlock(scope: !1379, file: !3, line: 677, column: 39) +!1383 = !DILocation(line: 679, column: 24, scope: !1382) +!1384 = !DILocation(line: 679, column: 18, scope: !1382) +!1385 = !DILocation(line: 680, column: 28, scope: !1382) +!1386 = !DILocation(line: 680, column: 18, scope: !1382) +!1387 = !DILocation(line: 681, column: 18, scope: !1382) +!1388 = !DILocation(line: 684, column: 16, scope: !1389) +!1389 = distinct !DILexicalBlock(scope: !1382, file: !3, line: 684, column: 11) +!1390 = !DILocation(line: 0, scope: !1389) +!1391 = !DILocation(line: 684, column: 33, scope: !1392) +!1392 = distinct !DILexicalBlock(scope: !1389, file: !3, line: 684, column: 11) +!1393 = !DILocation(line: 684, column: 27, scope: !1392) +!1394 = !DILocation(line: 684, column: 11, scope: !1389) +!1395 = !DILocation(line: 685, column: 18, scope: !1396) +!1396 = distinct !DILexicalBlock(scope: !1397, file: !3, line: 685, column: 13) +!1397 = distinct !DILexicalBlock(scope: !1392, file: !3, line: 684, column: 44) +!1398 = !DILocation(line: 0, scope: !1396) +!1399 = !DILocation(line: 685, column: 35, scope: !1400) +!1400 = distinct !DILexicalBlock(scope: !1396, file: !3, line: 685, column: 13) +!1401 = !DILocation(line: 685, column: 29, scope: !1400) +!1402 = !DILocation(line: 685, column: 13, scope: !1396) +!1403 = !DILocation(line: 686, column: 24, scope: !1404) +!1404 = distinct !DILexicalBlock(scope: !1400, file: !3, line: 685, column: 46) +!1405 = !DILocation(line: 687, column: 25, scope: !1404) +!1406 = !DILocation(line: 688, column: 24, scope: !1404) +!1407 = !DILocation(line: 689, column: 25, scope: !1404) +!1408 = !DILocation(line: 691, column: 35, scope: !1404) +!1409 = !DILocation(line: 691, column: 26, scope: !1404) +!1410 = !DILocation(line: 692, column: 35, scope: !1404) +!1411 = !DILocation(line: 692, column: 26, scope: !1404) +!1412 = !DILocation(line: 694, column: 26, scope: !1404) +!1413 = !DILocation(line: 694, column: 42, scope: !1404) +!1414 = !DILocation(line: 695, column: 26, scope: !1404) +!1415 = !DILocation(line: 695, column: 42, scope: !1404) +!1416 = !DILocation(line: 697, column: 26, scope: !1404) +!1417 = !DILocation(line: 697, column: 42, scope: !1404) +!1418 = !DILocation(line: 698, column: 26, scope: !1404) +!1419 = !DILocation(line: 698, column: 42, scope: !1404) +!1420 = !DILocation(line: 700, column: 50, scope: !1404) +!1421 = !DILocation(line: 700, column: 15, scope: !1404) +!1422 = !DILocation(line: 700, column: 31, scope: !1404) +!1423 = !DILocation(line: 700, column: 39, scope: !1404) +!1424 = !DILocation(line: 701, column: 50, scope: !1404) +!1425 = !DILocation(line: 701, column: 15, scope: !1404) +!1426 = !DILocation(line: 701, column: 31, scope: !1404) +!1427 = !DILocation(line: 701, column: 39, scope: !1404) +!1428 = !DILocation(line: 703, column: 36, scope: !1404) +!1429 = !DILocation(line: 704, column: 36, scope: !1404) +!1430 = !DILocation(line: 705, column: 51, scope: !1404) +!1431 = !DILocation(line: 705, column: 76, scope: !1404) +!1432 = !DILocation(line: 705, column: 64, scope: !1404) +!1433 = !DILocation(line: 705, column: 15, scope: !1404) +!1434 = !DILocation(line: 705, column: 31, scope: !1404) +!1435 = !DILocation(line: 705, column: 39, scope: !1404) +!1436 = !DILocation(line: 706, column: 51, scope: !1404) +!1437 = !DILocation(line: 706, column: 76, scope: !1404) +!1438 = !DILocation(line: 706, column: 64, scope: !1404) +!1439 = !DILocation(line: 706, column: 15, scope: !1404) +!1440 = !DILocation(line: 706, column: 31, scope: !1404) +!1441 = !DILocation(line: 706, column: 39, scope: !1404) +!1442 = !DILocation(line: 708, column: 13, scope: !1404) +!1443 = !DILocation(line: 685, column: 42, scope: !1400) +!1444 = !DILocation(line: 685, column: 13, scope: !1400) +!1445 = distinct !{!1445, !1402, !1446} +!1446 = !DILocation(line: 708, column: 13, scope: !1396) +!1447 = !DILocation(line: 709, column: 11, scope: !1397) +!1448 = !DILocation(line: 684, column: 40, scope: !1392) +!1449 = !DILocation(line: 684, column: 11, scope: !1392) +!1450 = distinct !{!1450, !1394, !1451} +!1451 = !DILocation(line: 709, column: 11, scope: !1389) +!1452 = !DILocation(line: 710, column: 16, scope: !1453) +!1453 = distinct !DILexicalBlock(scope: !1382, file: !3, line: 710, column: 14) +!1454 = !DILocation(line: 710, column: 14, scope: !1382) +!1455 = !DILocation(line: 711, column: 18, scope: !1456) +!1456 = distinct !DILexicalBlock(scope: !1457, file: !3, line: 711, column: 13) +!1457 = distinct !DILexicalBlock(scope: !1453, file: !3, line: 710, column: 25) +!1458 = !DILocation(line: 0, scope: !1456) +!1459 = !DILocation(line: 711, column: 29, scope: !1460) +!1460 = distinct !DILexicalBlock(scope: !1456, file: !3, line: 711, column: 13) +!1461 = !DILocation(line: 711, column: 13, scope: !1456) +!1462 = !DILocation(line: 712, column: 37, scope: !1463) +!1463 = distinct !DILexicalBlock(scope: !1460, file: !3, line: 711, column: 41) +!1464 = !DILocation(line: 712, column: 15, scope: !1463) +!1465 = !DILocation(line: 712, column: 35, scope: !1463) +!1466 = !DILocation(line: 713, column: 37, scope: !1463) +!1467 = !DILocation(line: 713, column: 15, scope: !1463) +!1468 = !DILocation(line: 713, column: 35, scope: !1463) +!1469 = !DILocation(line: 714, column: 13, scope: !1463) +!1470 = !DILocation(line: 711, column: 37, scope: !1460) +!1471 = !DILocation(line: 711, column: 13, scope: !1460) +!1472 = distinct !{!1472, !1461, !1473} +!1473 = !DILocation(line: 714, column: 13, scope: !1456) +!1474 = !DILocation(line: 715, column: 11, scope: !1457) +!1475 = !DILocation(line: 716, column: 21, scope: !1476) +!1476 = distinct !DILexicalBlock(scope: !1453, file: !3, line: 715, column: 16) +!1477 = !DILocation(line: 717, column: 25, scope: !1476) +!1478 = !DILocation(line: 717, column: 28, scope: !1476) +!1479 = !DILocation(line: 717, column: 20, scope: !1476) +!1480 = !DILocation(line: 718, column: 34, scope: !1476) +!1481 = !DILocation(line: 718, column: 30, scope: !1476) +!1482 = !DILocation(line: 718, column: 20, scope: !1476) +!1483 = !DILocation(line: 719, column: 20, scope: !1476) +!1484 = !DILocation(line: 723, column: 18, scope: !1485) +!1485 = distinct !DILexicalBlock(scope: !1476, file: !3, line: 723, column: 13) +!1486 = !DILocation(line: 0, scope: !1485) +!1487 = !DILocation(line: 723, column: 35, scope: !1488) +!1488 = distinct !DILexicalBlock(scope: !1485, file: !3, line: 723, column: 13) +!1489 = !DILocation(line: 723, column: 29, scope: !1488) +!1490 = !DILocation(line: 723, column: 13, scope: !1485) +!1491 = !DILocation(line: 724, column: 20, scope: !1492) +!1492 = distinct !DILexicalBlock(scope: !1493, file: !3, line: 724, column: 15) +!1493 = distinct !DILexicalBlock(scope: !1488, file: !3, line: 723, column: 46) +!1494 = !DILocation(line: 0, scope: !1492) +!1495 = !DILocation(line: 724, column: 37, scope: !1496) +!1496 = distinct !DILexicalBlock(scope: !1492, file: !3, line: 724, column: 15) +!1497 = !DILocation(line: 724, column: 31, scope: !1496) +!1498 = !DILocation(line: 724, column: 15, scope: !1492) +!1499 = !DILocation(line: 725, column: 26, scope: !1500) +!1500 = distinct !DILexicalBlock(scope: !1496, file: !3, line: 724, column: 48) +!1501 = !DILocation(line: 726, column: 27, scope: !1500) +!1502 = !DILocation(line: 727, column: 26, scope: !1500) +!1503 = !DILocation(line: 728, column: 27, scope: !1500) +!1504 = !DILocation(line: 730, column: 37, scope: !1500) +!1505 = !DILocation(line: 730, column: 28, scope: !1500) +!1506 = !DILocation(line: 731, column: 37, scope: !1500) +!1507 = !DILocation(line: 731, column: 28, scope: !1500) +!1508 = !DILocation(line: 733, column: 28, scope: !1500) +!1509 = !DILocation(line: 733, column: 44, scope: !1500) +!1510 = !DILocation(line: 734, column: 28, scope: !1500) +!1511 = !DILocation(line: 734, column: 44, scope: !1500) +!1512 = !DILocation(line: 736, column: 28, scope: !1500) +!1513 = !DILocation(line: 736, column: 44, scope: !1500) +!1514 = !DILocation(line: 737, column: 28, scope: !1500) +!1515 = !DILocation(line: 737, column: 44, scope: !1500) +!1516 = !DILocation(line: 739, column: 52, scope: !1500) +!1517 = !DILocation(line: 739, column: 17, scope: !1500) +!1518 = !DILocation(line: 739, column: 33, scope: !1500) +!1519 = !DILocation(line: 739, column: 41, scope: !1500) +!1520 = !DILocation(line: 740, column: 52, scope: !1500) +!1521 = !DILocation(line: 740, column: 17, scope: !1500) +!1522 = !DILocation(line: 740, column: 33, scope: !1500) +!1523 = !DILocation(line: 740, column: 41, scope: !1500) +!1524 = !DILocation(line: 742, column: 39, scope: !1500) +!1525 = !DILocation(line: 743, column: 39, scope: !1500) +!1526 = !DILocation(line: 744, column: 53, scope: !1500) +!1527 = !DILocation(line: 744, column: 79, scope: !1500) +!1528 = !DILocation(line: 744, column: 67, scope: !1500) +!1529 = !DILocation(line: 744, column: 17, scope: !1500) +!1530 = !DILocation(line: 744, column: 33, scope: !1500) +!1531 = !DILocation(line: 744, column: 41, scope: !1500) +!1532 = !DILocation(line: 745, column: 53, scope: !1500) +!1533 = !DILocation(line: 745, column: 79, scope: !1500) +!1534 = !DILocation(line: 745, column: 67, scope: !1500) +!1535 = !DILocation(line: 745, column: 17, scope: !1500) +!1536 = !DILocation(line: 745, column: 33, scope: !1500) +!1537 = !DILocation(line: 745, column: 41, scope: !1500) +!1538 = !DILocation(line: 746, column: 15, scope: !1500) +!1539 = !DILocation(line: 724, column: 44, scope: !1496) +!1540 = !DILocation(line: 724, column: 15, scope: !1496) +!1541 = distinct !{!1541, !1498, !1542} +!1542 = !DILocation(line: 746, column: 15, scope: !1492) +!1543 = !DILocation(line: 747, column: 13, scope: !1493) +!1544 = !DILocation(line: 723, column: 42, scope: !1488) +!1545 = !DILocation(line: 723, column: 13, scope: !1488) +!1546 = distinct !{!1546, !1490, !1547} +!1547 = !DILocation(line: 747, column: 13, scope: !1485) +!1548 = !DILocation(line: 749, column: 9, scope: !1382) +!1549 = !DILocation(line: 677, column: 34, scope: !1379) +!1550 = !DILocation(line: 677, column: 9, scope: !1379) +!1551 = distinct !{!1551, !1380, !1552} +!1552 = !DILocation(line: 749, column: 9, scope: !1376) +!1553 = !DILocation(line: 752, column: 14, scope: !1554) +!1554 = distinct !DILexicalBlock(scope: !1344, file: !3, line: 752, column: 9) +!1555 = !DILocation(line: 0, scope: !1554) +!1556 = !DILocation(line: 752, column: 23, scope: !1557) +!1557 = distinct !DILexicalBlock(scope: !1554, file: !3, line: 752, column: 9) +!1558 = !DILocation(line: 752, column: 9, scope: !1554) +!1559 = !DILocation(line: 753, column: 49, scope: !1560) +!1560 = distinct !DILexicalBlock(scope: !1557, file: !3, line: 752, column: 34) +!1561 = !DILocation(line: 753, column: 20, scope: !1560) +!1562 = !DILocation(line: 753, column: 27, scope: !1560) +!1563 = !DILocation(line: 753, column: 23, scope: !1560) +!1564 = !DILocation(line: 753, column: 38, scope: !1560) +!1565 = !DILocation(line: 753, column: 34, scope: !1560) +!1566 = !DILocation(line: 753, column: 31, scope: !1560) +!1567 = !DILocation(line: 753, column: 42, scope: !1560) +!1568 = !DILocation(line: 753, column: 11, scope: !1560) +!1569 = !DILocation(line: 753, column: 47, scope: !1560) +!1570 = !DILocation(line: 754, column: 49, scope: !1560) +!1571 = !DILocation(line: 754, column: 20, scope: !1560) +!1572 = !DILocation(line: 754, column: 27, scope: !1560) +!1573 = !DILocation(line: 754, column: 23, scope: !1560) +!1574 = !DILocation(line: 754, column: 38, scope: !1560) +!1575 = !DILocation(line: 754, column: 34, scope: !1560) +!1576 = !DILocation(line: 754, column: 31, scope: !1560) +!1577 = !DILocation(line: 754, column: 42, scope: !1560) +!1578 = !DILocation(line: 754, column: 11, scope: !1560) +!1579 = !DILocation(line: 754, column: 47, scope: !1560) +!1580 = !DILocation(line: 755, column: 9, scope: !1560) +!1581 = !DILocation(line: 752, column: 30, scope: !1557) +!1582 = !DILocation(line: 752, column: 9, scope: !1557) +!1583 = distinct !{!1583, !1558, !1584} +!1584 = !DILocation(line: 755, column: 9, scope: !1554) +!1585 = !DILocation(line: 756, column: 7, scope: !1344) +!1586 = !DILocation(line: 670, column: 28, scope: !1340) +!1587 = !DILocation(line: 670, column: 7, scope: !1340) +!1588 = distinct !{!1588, !1341, !1589} +!1589 = !DILocation(line: 756, column: 7, scope: !1336) +!1590 = !DILocation(line: 757, column: 5, scope: !1337) +!1591 = !DILocation(line: 667, column: 26, scope: !1333) +!1592 = !DILocation(line: 667, column: 5, scope: !1333) +!1593 = distinct !{!1593, !1334, !1594} +!1594 = !DILocation(line: 757, column: 5, scope: !1329) +!1595 = !DILocation(line: 762, column: 1, scope: !1284) +!1596 = distinct !DISubprogram(name: "cffts2_pos", scope: !3, file: !3, line: 893, type: !761, scopeLine: 894, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !1597) +!1597 = !{!1598, !1599, !1600, !1601, !1602, !1603, !1604, !1605, !1606, !1607, !1608, !1609, !1610, !1611, !1612, !1613, !1614, !1615, !1616, !1617, !1618, !1619, !1620, !1621, !1622, !1623, !1624, !1625, !1626, !1627, !1628, !1629, !1630, !1631, !1632, !1633, !1634, !1635} +!1598 = !DILocalVariable(name: "is", arg: 1, scope: !1596, file: !3, line: 893, type: !12) +!1599 = !DILocalVariable(name: "d1", arg: 2, scope: !1596, file: !3, line: 893, type: !12) +!1600 = !DILocalVariable(name: "d2", arg: 3, scope: !1596, file: !3, line: 893, type: !12) +!1601 = !DILocalVariable(name: "d3", arg: 4, scope: !1596, file: !3, line: 893, type: !12) +!1602 = !DILocalVariable(name: "logd2", scope: !1596, file: !3, line: 895, type: !12) +!1603 = !DILocalVariable(name: "i", scope: !1596, file: !3, line: 896, type: !12) +!1604 = !DILocalVariable(name: "j", scope: !1596, file: !3, line: 896, type: !12) +!1605 = !DILocalVariable(name: "k", scope: !1596, file: !3, line: 896, type: !12) +!1606 = !DILocalVariable(name: "ii", scope: !1596, file: !3, line: 896, type: !12) +!1607 = !DILocalVariable(name: "l", scope: !1596, file: !3, line: 897, type: !12) +!1608 = !DILocalVariable(name: "j1", scope: !1596, file: !3, line: 897, type: !12) +!1609 = !DILocalVariable(name: "i1", scope: !1596, file: !3, line: 897, type: !12) +!1610 = !DILocalVariable(name: "k1", scope: !1596, file: !3, line: 897, type: !12) +!1611 = !DILocalVariable(name: "n1", scope: !1596, file: !3, line: 898, type: !12) +!1612 = !DILocalVariable(name: "li", scope: !1596, file: !3, line: 898, type: !12) +!1613 = !DILocalVariable(name: "lj", scope: !1596, file: !3, line: 898, type: !12) +!1614 = !DILocalVariable(name: "lk", scope: !1596, file: !3, line: 898, type: !12) +!1615 = !DILocalVariable(name: "ku", scope: !1596, file: !3, line: 898, type: !12) +!1616 = !DILocalVariable(name: "i11", scope: !1596, file: !3, line: 898, type: !12) +!1617 = !DILocalVariable(name: "i12", scope: !1596, file: !3, line: 898, type: !12) +!1618 = !DILocalVariable(name: "i21", scope: !1596, file: !3, line: 898, type: !12) +!1619 = !DILocalVariable(name: "i22", scope: !1596, file: !3, line: 898, type: !12) +!1620 = !DILocalVariable(name: "uu1_real", scope: !1596, file: !3, line: 899, type: !11) +!1621 = !DILocalVariable(name: "x11_real", scope: !1596, file: !3, line: 899, type: !11) +!1622 = !DILocalVariable(name: "x21_real", scope: !1596, file: !3, line: 899, type: !11) +!1623 = !DILocalVariable(name: "uu1_imag", scope: !1596, file: !3, line: 900, type: !11) +!1624 = !DILocalVariable(name: "x11_imag", scope: !1596, file: !3, line: 900, type: !11) +!1625 = !DILocalVariable(name: "x21_imag", scope: !1596, file: !3, line: 900, type: !11) +!1626 = !DILocalVariable(name: "uu2_real", scope: !1596, file: !3, line: 901, type: !11) +!1627 = !DILocalVariable(name: "x12_real", scope: !1596, file: !3, line: 901, type: !11) +!1628 = !DILocalVariable(name: "x22_real", scope: !1596, file: !3, line: 901, type: !11) +!1629 = !DILocalVariable(name: "uu2_imag", scope: !1596, file: !3, line: 902, type: !11) +!1630 = !DILocalVariable(name: "x12_imag", scope: !1596, file: !3, line: 902, type: !11) +!1631 = !DILocalVariable(name: "x22_imag", scope: !1596, file: !3, line: 902, type: !11) +!1632 = !DILocalVariable(name: "temp_real", scope: !1596, file: !3, line: 903, type: !11) +!1633 = !DILocalVariable(name: "temp2_real", scope: !1596, file: !3, line: 903, type: !11) +!1634 = !DILocalVariable(name: "temp_imag", scope: !1596, file: !3, line: 904, type: !11) +!1635 = !DILocalVariable(name: "temp2_imag", scope: !1596, file: !3, line: 904, type: !11) +!1636 = !DILocation(line: 0, scope: !1596) +!1637 = !DILocation(line: 896, column: 16, scope: !1596) +!1638 = !DILocation(line: 906, column: 11, scope: !1596) +!1639 = !DILocation(line: 924, column: 10, scope: !1640) +!1640 = distinct !DILexicalBlock(scope: !1641, file: !3, line: 924, column: 5) +!1641 = distinct !DILexicalBlock(scope: !1596, file: !3, line: 921, column: 3) +!1642 = !DILocation(line: 0, scope: !1640) +!1643 = !DILocation(line: 924, column: 19, scope: !1644) +!1644 = distinct !DILexicalBlock(scope: !1640, file: !3, line: 924, column: 5) +!1645 = !DILocation(line: 924, column: 5, scope: !1640) +!1646 = !DILocation(line: 927, column: 12, scope: !1647) +!1647 = distinct !DILexicalBlock(scope: !1648, file: !3, line: 927, column: 7) +!1648 = distinct !DILexicalBlock(scope: !1644, file: !3, line: 924, column: 30) +!1649 = !DILocation(line: 0, scope: !1647) +!1650 = !DILocation(line: 927, column: 21, scope: !1651) +!1651 = distinct !DILexicalBlock(scope: !1647, file: !3, line: 927, column: 7) +!1652 = !DILocation(line: 927, column: 7, scope: !1647) +!1653 = !DILocation(line: 929, column: 14, scope: !1654) +!1654 = distinct !DILexicalBlock(scope: !1655, file: !3, line: 929, column: 9) +!1655 = distinct !DILexicalBlock(scope: !1651, file: !3, line: 927, column: 32) +!1656 = !DILocation(line: 0, scope: !1654) +!1657 = !DILocation(line: 929, column: 23, scope: !1658) +!1658 = distinct !DILexicalBlock(scope: !1654, file: !3, line: 929, column: 9) +!1659 = !DILocation(line: 929, column: 9, scope: !1654) +!1660 = !DILocation(line: 930, column: 41, scope: !1661) +!1661 = distinct !DILexicalBlock(scope: !1658, file: !3, line: 929, column: 34) +!1662 = !DILocation(line: 930, column: 48, scope: !1661) +!1663 = !DILocation(line: 930, column: 44, scope: !1661) +!1664 = !DILocation(line: 930, column: 59, scope: !1661) +!1665 = !DILocation(line: 930, column: 55, scope: !1661) +!1666 = !DILocation(line: 930, column: 52, scope: !1661) +!1667 = !DILocation(line: 930, column: 63, scope: !1661) +!1668 = !DILocation(line: 930, column: 32, scope: !1661) +!1669 = !DILocation(line: 930, column: 11, scope: !1661) +!1670 = !DILocation(line: 930, column: 30, scope: !1661) +!1671 = !DILocation(line: 931, column: 41, scope: !1661) +!1672 = !DILocation(line: 931, column: 48, scope: !1661) +!1673 = !DILocation(line: 931, column: 44, scope: !1661) +!1674 = !DILocation(line: 931, column: 59, scope: !1661) +!1675 = !DILocation(line: 931, column: 55, scope: !1661) +!1676 = !DILocation(line: 931, column: 52, scope: !1661) +!1677 = !DILocation(line: 931, column: 63, scope: !1661) +!1678 = !DILocation(line: 931, column: 32, scope: !1661) +!1679 = !DILocation(line: 931, column: 11, scope: !1661) +!1680 = !DILocation(line: 931, column: 30, scope: !1661) +!1681 = !DILocation(line: 932, column: 9, scope: !1661) +!1682 = !DILocation(line: 929, column: 30, scope: !1658) +!1683 = !DILocation(line: 929, column: 9, scope: !1658) +!1684 = distinct !{!1684, !1659, !1685} +!1685 = !DILocation(line: 932, column: 9, scope: !1654) +!1686 = !DILocation(line: 934, column: 13, scope: !1687) +!1687 = distinct !DILexicalBlock(scope: !1655, file: !3, line: 934, column: 9) +!1688 = !DILocation(line: 0, scope: !1687) +!1689 = !DILocation(line: 934, column: 22, scope: !1690) +!1690 = distinct !DILexicalBlock(scope: !1687, file: !3, line: 934, column: 9) +!1691 = !DILocation(line: 934, column: 9, scope: !1687) +!1692 = !DILocation(line: 935, column: 19, scope: !1693) +!1693 = distinct !DILexicalBlock(scope: !1690, file: !3, line: 934, column: 39) +!1694 = !DILocation(line: 936, column: 24, scope: !1693) +!1695 = !DILocation(line: 936, column: 18, scope: !1693) +!1696 = !DILocation(line: 937, column: 28, scope: !1693) +!1697 = !DILocation(line: 937, column: 18, scope: !1693) +!1698 = !DILocation(line: 938, column: 18, scope: !1693) +!1699 = !DILocation(line: 941, column: 16, scope: !1700) +!1700 = distinct !DILexicalBlock(scope: !1693, file: !3, line: 941, column: 11) +!1701 = !DILocation(line: 0, scope: !1700) +!1702 = !DILocation(line: 941, column: 33, scope: !1703) +!1703 = distinct !DILexicalBlock(scope: !1700, file: !3, line: 941, column: 11) +!1704 = !DILocation(line: 941, column: 27, scope: !1703) +!1705 = !DILocation(line: 941, column: 11, scope: !1700) +!1706 = !DILocation(line: 942, column: 18, scope: !1707) +!1707 = distinct !DILexicalBlock(scope: !1708, file: !3, line: 942, column: 13) +!1708 = distinct !DILexicalBlock(scope: !1703, file: !3, line: 941, column: 44) +!1709 = !DILocation(line: 0, scope: !1707) +!1710 = !DILocation(line: 942, column: 35, scope: !1711) +!1711 = distinct !DILexicalBlock(scope: !1707, file: !3, line: 942, column: 13) +!1712 = !DILocation(line: 942, column: 29, scope: !1711) +!1713 = !DILocation(line: 942, column: 13, scope: !1707) +!1714 = !DILocation(line: 943, column: 24, scope: !1715) +!1715 = distinct !DILexicalBlock(scope: !1711, file: !3, line: 942, column: 46) +!1716 = !DILocation(line: 944, column: 25, scope: !1715) +!1717 = !DILocation(line: 945, column: 24, scope: !1715) +!1718 = !DILocation(line: 946, column: 25, scope: !1715) +!1719 = !DILocation(line: 948, column: 35, scope: !1715) +!1720 = !DILocation(line: 948, column: 26, scope: !1715) +!1721 = !DILocation(line: 949, column: 35, scope: !1715) +!1722 = !DILocation(line: 949, column: 26, scope: !1715) +!1723 = !DILocation(line: 951, column: 26, scope: !1715) +!1724 = !DILocation(line: 951, column: 42, scope: !1715) +!1725 = !DILocation(line: 952, column: 26, scope: !1715) +!1726 = !DILocation(line: 952, column: 42, scope: !1715) +!1727 = !DILocation(line: 954, column: 26, scope: !1715) +!1728 = !DILocation(line: 954, column: 42, scope: !1715) +!1729 = !DILocation(line: 955, column: 26, scope: !1715) +!1730 = !DILocation(line: 955, column: 42, scope: !1715) +!1731 = !DILocation(line: 957, column: 50, scope: !1715) +!1732 = !DILocation(line: 957, column: 15, scope: !1715) +!1733 = !DILocation(line: 957, column: 31, scope: !1715) +!1734 = !DILocation(line: 957, column: 39, scope: !1715) +!1735 = !DILocation(line: 958, column: 50, scope: !1715) +!1736 = !DILocation(line: 958, column: 15, scope: !1715) +!1737 = !DILocation(line: 958, column: 31, scope: !1715) +!1738 = !DILocation(line: 958, column: 39, scope: !1715) +!1739 = !DILocation(line: 960, column: 36, scope: !1715) +!1740 = !DILocation(line: 961, column: 36, scope: !1715) +!1741 = !DILocation(line: 962, column: 51, scope: !1715) +!1742 = !DILocation(line: 962, column: 76, scope: !1715) +!1743 = !DILocation(line: 962, column: 64, scope: !1715) +!1744 = !DILocation(line: 962, column: 15, scope: !1715) +!1745 = !DILocation(line: 962, column: 31, scope: !1715) +!1746 = !DILocation(line: 962, column: 39, scope: !1715) +!1747 = !DILocation(line: 963, column: 51, scope: !1715) +!1748 = !DILocation(line: 963, column: 76, scope: !1715) +!1749 = !DILocation(line: 963, column: 64, scope: !1715) +!1750 = !DILocation(line: 963, column: 15, scope: !1715) +!1751 = !DILocation(line: 963, column: 31, scope: !1715) +!1752 = !DILocation(line: 963, column: 39, scope: !1715) +!1753 = !DILocation(line: 965, column: 13, scope: !1715) +!1754 = !DILocation(line: 942, column: 42, scope: !1711) +!1755 = !DILocation(line: 942, column: 13, scope: !1711) +!1756 = distinct !{!1756, !1713, !1757} +!1757 = !DILocation(line: 965, column: 13, scope: !1707) +!1758 = !DILocation(line: 966, column: 11, scope: !1708) +!1759 = !DILocation(line: 941, column: 40, scope: !1703) +!1760 = !DILocation(line: 941, column: 11, scope: !1703) +!1761 = distinct !{!1761, !1705, !1762} +!1762 = !DILocation(line: 966, column: 11, scope: !1700) +!1763 = !DILocation(line: 967, column: 16, scope: !1764) +!1764 = distinct !DILexicalBlock(scope: !1693, file: !3, line: 967, column: 14) +!1765 = !DILocation(line: 967, column: 14, scope: !1693) +!1766 = !DILocation(line: 969, column: 18, scope: !1767) +!1767 = distinct !DILexicalBlock(scope: !1768, file: !3, line: 969, column: 13) +!1768 = distinct !DILexicalBlock(scope: !1764, file: !3, line: 967, column: 25) +!1769 = !DILocation(line: 0, scope: !1767) +!1770 = !DILocation(line: 969, column: 29, scope: !1771) +!1771 = distinct !DILexicalBlock(scope: !1767, file: !3, line: 969, column: 13) +!1772 = !DILocation(line: 969, column: 13, scope: !1767) +!1773 = !DILocation(line: 971, column: 37, scope: !1774) +!1774 = distinct !DILexicalBlock(scope: !1771, file: !3, line: 969, column: 41) +!1775 = !DILocation(line: 971, column: 15, scope: !1774) +!1776 = !DILocation(line: 971, column: 35, scope: !1774) +!1777 = !DILocation(line: 972, column: 37, scope: !1774) +!1778 = !DILocation(line: 972, column: 15, scope: !1774) +!1779 = !DILocation(line: 972, column: 35, scope: !1774) +!1780 = !DILocation(line: 973, column: 13, scope: !1774) +!1781 = !DILocation(line: 969, column: 37, scope: !1771) +!1782 = !DILocation(line: 969, column: 13, scope: !1771) +!1783 = distinct !{!1783, !1772, !1784} +!1784 = !DILocation(line: 973, column: 13, scope: !1767) +!1785 = !DILocation(line: 974, column: 11, scope: !1768) +!1786 = !DILocation(line: 975, column: 21, scope: !1787) +!1787 = distinct !DILexicalBlock(scope: !1764, file: !3, line: 974, column: 16) +!1788 = !DILocation(line: 976, column: 25, scope: !1787) +!1789 = !DILocation(line: 976, column: 28, scope: !1787) +!1790 = !DILocation(line: 976, column: 20, scope: !1787) +!1791 = !DILocation(line: 977, column: 34, scope: !1787) +!1792 = !DILocation(line: 977, column: 30, scope: !1787) +!1793 = !DILocation(line: 977, column: 20, scope: !1787) +!1794 = !DILocation(line: 978, column: 20, scope: !1787) +!1795 = !DILocation(line: 982, column: 18, scope: !1796) +!1796 = distinct !DILexicalBlock(scope: !1787, file: !3, line: 982, column: 13) +!1797 = !DILocation(line: 0, scope: !1796) +!1798 = !DILocation(line: 982, column: 35, scope: !1799) +!1799 = distinct !DILexicalBlock(scope: !1796, file: !3, line: 982, column: 13) +!1800 = !DILocation(line: 982, column: 29, scope: !1799) +!1801 = !DILocation(line: 982, column: 13, scope: !1796) +!1802 = !DILocation(line: 983, column: 20, scope: !1803) +!1803 = distinct !DILexicalBlock(scope: !1804, file: !3, line: 983, column: 15) +!1804 = distinct !DILexicalBlock(scope: !1799, file: !3, line: 982, column: 46) +!1805 = !DILocation(line: 0, scope: !1803) +!1806 = !DILocation(line: 983, column: 37, scope: !1807) +!1807 = distinct !DILexicalBlock(scope: !1803, file: !3, line: 983, column: 15) +!1808 = !DILocation(line: 983, column: 31, scope: !1807) +!1809 = !DILocation(line: 983, column: 15, scope: !1803) +!1810 = !DILocation(line: 984, column: 26, scope: !1811) +!1811 = distinct !DILexicalBlock(scope: !1807, file: !3, line: 983, column: 48) +!1812 = !DILocation(line: 985, column: 27, scope: !1811) +!1813 = !DILocation(line: 986, column: 26, scope: !1811) +!1814 = !DILocation(line: 987, column: 27, scope: !1811) +!1815 = !DILocation(line: 989, column: 37, scope: !1811) +!1816 = !DILocation(line: 989, column: 28, scope: !1811) +!1817 = !DILocation(line: 990, column: 37, scope: !1811) +!1818 = !DILocation(line: 990, column: 28, scope: !1811) +!1819 = !DILocation(line: 992, column: 28, scope: !1811) +!1820 = !DILocation(line: 992, column: 44, scope: !1811) +!1821 = !DILocation(line: 993, column: 28, scope: !1811) +!1822 = !DILocation(line: 993, column: 44, scope: !1811) +!1823 = !DILocation(line: 995, column: 28, scope: !1811) +!1824 = !DILocation(line: 995, column: 44, scope: !1811) +!1825 = !DILocation(line: 996, column: 28, scope: !1811) +!1826 = !DILocation(line: 996, column: 44, scope: !1811) +!1827 = !DILocation(line: 998, column: 52, scope: !1811) +!1828 = !DILocation(line: 998, column: 17, scope: !1811) +!1829 = !DILocation(line: 998, column: 33, scope: !1811) +!1830 = !DILocation(line: 998, column: 41, scope: !1811) +!1831 = !DILocation(line: 999, column: 52, scope: !1811) +!1832 = !DILocation(line: 999, column: 17, scope: !1811) +!1833 = !DILocation(line: 999, column: 33, scope: !1811) +!1834 = !DILocation(line: 999, column: 41, scope: !1811) +!1835 = !DILocation(line: 1001, column: 39, scope: !1811) +!1836 = !DILocation(line: 1002, column: 39, scope: !1811) +!1837 = !DILocation(line: 1003, column: 53, scope: !1811) +!1838 = !DILocation(line: 1003, column: 79, scope: !1811) +!1839 = !DILocation(line: 1003, column: 67, scope: !1811) +!1840 = !DILocation(line: 1003, column: 17, scope: !1811) +!1841 = !DILocation(line: 1003, column: 33, scope: !1811) +!1842 = !DILocation(line: 1003, column: 41, scope: !1811) +!1843 = !DILocation(line: 1004, column: 53, scope: !1811) +!1844 = !DILocation(line: 1004, column: 79, scope: !1811) +!1845 = !DILocation(line: 1004, column: 67, scope: !1811) +!1846 = !DILocation(line: 1004, column: 17, scope: !1811) +!1847 = !DILocation(line: 1004, column: 33, scope: !1811) +!1848 = !DILocation(line: 1004, column: 41, scope: !1811) +!1849 = !DILocation(line: 1005, column: 15, scope: !1811) +!1850 = !DILocation(line: 983, column: 44, scope: !1807) +!1851 = !DILocation(line: 983, column: 15, scope: !1807) +!1852 = distinct !{!1852, !1809, !1853} +!1853 = !DILocation(line: 1005, column: 15, scope: !1803) +!1854 = !DILocation(line: 1006, column: 13, scope: !1804) +!1855 = !DILocation(line: 982, column: 42, scope: !1799) +!1856 = !DILocation(line: 982, column: 13, scope: !1799) +!1857 = distinct !{!1857, !1801, !1858} +!1858 = !DILocation(line: 1006, column: 13, scope: !1796) +!1859 = !DILocation(line: 1008, column: 9, scope: !1693) +!1860 = !DILocation(line: 934, column: 34, scope: !1690) +!1861 = !DILocation(line: 934, column: 9, scope: !1690) +!1862 = distinct !{!1862, !1691, !1863} +!1863 = !DILocation(line: 1008, column: 9, scope: !1687) +!1864 = !DILocation(line: 1011, column: 14, scope: !1865) +!1865 = distinct !DILexicalBlock(scope: !1655, file: !3, line: 1011, column: 9) +!1866 = !DILocation(line: 0, scope: !1865) +!1867 = !DILocation(line: 1011, column: 23, scope: !1868) +!1868 = distinct !DILexicalBlock(scope: !1865, file: !3, line: 1011, column: 9) +!1869 = !DILocation(line: 1011, column: 9, scope: !1865) +!1870 = !DILocation(line: 1012, column: 49, scope: !1871) +!1871 = distinct !DILexicalBlock(scope: !1868, file: !3, line: 1011, column: 34) +!1872 = !DILocation(line: 1012, column: 20, scope: !1871) +!1873 = !DILocation(line: 1012, column: 27, scope: !1871) +!1874 = !DILocation(line: 1012, column: 23, scope: !1871) +!1875 = !DILocation(line: 1012, column: 38, scope: !1871) +!1876 = !DILocation(line: 1012, column: 34, scope: !1871) +!1877 = !DILocation(line: 1012, column: 31, scope: !1871) +!1878 = !DILocation(line: 1012, column: 42, scope: !1871) +!1879 = !DILocation(line: 1012, column: 11, scope: !1871) +!1880 = !DILocation(line: 1012, column: 47, scope: !1871) +!1881 = !DILocation(line: 1013, column: 49, scope: !1871) +!1882 = !DILocation(line: 1013, column: 20, scope: !1871) +!1883 = !DILocation(line: 1013, column: 27, scope: !1871) +!1884 = !DILocation(line: 1013, column: 23, scope: !1871) +!1885 = !DILocation(line: 1013, column: 38, scope: !1871) +!1886 = !DILocation(line: 1013, column: 34, scope: !1871) +!1887 = !DILocation(line: 1013, column: 31, scope: !1871) +!1888 = !DILocation(line: 1013, column: 42, scope: !1871) +!1889 = !DILocation(line: 1013, column: 11, scope: !1871) +!1890 = !DILocation(line: 1013, column: 47, scope: !1871) +!1891 = !DILocation(line: 1014, column: 9, scope: !1871) +!1892 = !DILocation(line: 1011, column: 30, scope: !1868) +!1893 = !DILocation(line: 1011, column: 9, scope: !1868) +!1894 = distinct !{!1894, !1869, !1895} +!1895 = !DILocation(line: 1014, column: 9, scope: !1865) +!1896 = !DILocation(line: 1015, column: 7, scope: !1655) +!1897 = !DILocation(line: 927, column: 28, scope: !1651) +!1898 = !DILocation(line: 927, column: 7, scope: !1651) +!1899 = distinct !{!1899, !1652, !1900} +!1900 = !DILocation(line: 1015, column: 7, scope: !1647) +!1901 = !DILocation(line: 1016, column: 5, scope: !1648) +!1902 = !DILocation(line: 924, column: 26, scope: !1644) +!1903 = !DILocation(line: 924, column: 5, scope: !1644) +!1904 = distinct !{!1904, !1645, !1905} +!1905 = !DILocation(line: 1016, column: 5, scope: !1640) +!1906 = !DILocation(line: 1021, column: 1, scope: !1596) +!1907 = distinct !DISubprogram(name: "cffts3_pos", scope: !3, file: !3, line: 1153, type: !761, scopeLine: 1154, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !1908) +!1908 = !{!1909, !1910, !1911, !1912, !1913, !1914, !1915, !1916, !1917, !1918, !1919, !1920, !1921, !1922, !1923, !1924, !1925, !1926, !1927, !1928, !1929, !1930, !1931, !1932, !1933, !1934, !1935, !1936, !1937, !1938, !1939, !1940, !1941, !1942, !1943, !1944, !1945, !1946} +!1909 = !DILocalVariable(name: "is", arg: 1, scope: !1907, file: !3, line: 1153, type: !12) +!1910 = !DILocalVariable(name: "d1", arg: 2, scope: !1907, file: !3, line: 1153, type: !12) +!1911 = !DILocalVariable(name: "d2", arg: 3, scope: !1907, file: !3, line: 1153, type: !12) +!1912 = !DILocalVariable(name: "d3", arg: 4, scope: !1907, file: !3, line: 1153, type: !12) +!1913 = !DILocalVariable(name: "logd3", scope: !1907, file: !3, line: 1155, type: !12) +!1914 = !DILocalVariable(name: "i", scope: !1907, file: !3, line: 1156, type: !12) +!1915 = !DILocalVariable(name: "j", scope: !1907, file: !3, line: 1156, type: !12) +!1916 = !DILocalVariable(name: "k", scope: !1907, file: !3, line: 1156, type: !12) +!1917 = !DILocalVariable(name: "ii", scope: !1907, file: !3, line: 1156, type: !12) +!1918 = !DILocalVariable(name: "l", scope: !1907, file: !3, line: 1157, type: !12) +!1919 = !DILocalVariable(name: "j1", scope: !1907, file: !3, line: 1157, type: !12) +!1920 = !DILocalVariable(name: "i1", scope: !1907, file: !3, line: 1157, type: !12) +!1921 = !DILocalVariable(name: "k1", scope: !1907, file: !3, line: 1157, type: !12) +!1922 = !DILocalVariable(name: "n1", scope: !1907, file: !3, line: 1158, type: !12) +!1923 = !DILocalVariable(name: "li", scope: !1907, file: !3, line: 1158, type: !12) +!1924 = !DILocalVariable(name: "lj", scope: !1907, file: !3, line: 1158, type: !12) +!1925 = !DILocalVariable(name: "lk", scope: !1907, file: !3, line: 1158, type: !12) +!1926 = !DILocalVariable(name: "ku", scope: !1907, file: !3, line: 1158, type: !12) +!1927 = !DILocalVariable(name: "i11", scope: !1907, file: !3, line: 1158, type: !12) +!1928 = !DILocalVariable(name: "i12", scope: !1907, file: !3, line: 1158, type: !12) +!1929 = !DILocalVariable(name: "i21", scope: !1907, file: !3, line: 1158, type: !12) +!1930 = !DILocalVariable(name: "i22", scope: !1907, file: !3, line: 1158, type: !12) +!1931 = !DILocalVariable(name: "uu1_real", scope: !1907, file: !3, line: 1159, type: !11) +!1932 = !DILocalVariable(name: "x11_real", scope: !1907, file: !3, line: 1159, type: !11) +!1933 = !DILocalVariable(name: "x21_real", scope: !1907, file: !3, line: 1159, type: !11) +!1934 = !DILocalVariable(name: "uu1_imag", scope: !1907, file: !3, line: 1160, type: !11) +!1935 = !DILocalVariable(name: "x11_imag", scope: !1907, file: !3, line: 1160, type: !11) +!1936 = !DILocalVariable(name: "x21_imag", scope: !1907, file: !3, line: 1160, type: !11) +!1937 = !DILocalVariable(name: "uu2_real", scope: !1907, file: !3, line: 1161, type: !11) +!1938 = !DILocalVariable(name: "x12_real", scope: !1907, file: !3, line: 1161, type: !11) +!1939 = !DILocalVariable(name: "x22_real", scope: !1907, file: !3, line: 1161, type: !11) +!1940 = !DILocalVariable(name: "uu2_imag", scope: !1907, file: !3, line: 1162, type: !11) +!1941 = !DILocalVariable(name: "x12_imag", scope: !1907, file: !3, line: 1162, type: !11) +!1942 = !DILocalVariable(name: "x22_imag", scope: !1907, file: !3, line: 1162, type: !11) +!1943 = !DILocalVariable(name: "temp_real", scope: !1907, file: !3, line: 1163, type: !11) +!1944 = !DILocalVariable(name: "temp2_real", scope: !1907, file: !3, line: 1163, type: !11) +!1945 = !DILocalVariable(name: "temp_imag", scope: !1907, file: !3, line: 1164, type: !11) +!1946 = !DILocalVariable(name: "temp2_imag", scope: !1907, file: !3, line: 1164, type: !11) +!1947 = !DILocation(line: 0, scope: !1907) +!1948 = !DILocation(line: 1156, column: 16, scope: !1907) +!1949 = !DILocation(line: 1166, column: 11, scope: !1907) +!1950 = !DILocation(line: 1181, column: 10, scope: !1951) +!1951 = distinct !DILexicalBlock(scope: !1952, file: !3, line: 1181, column: 5) +!1952 = distinct !DILexicalBlock(scope: !1907, file: !3, line: 1178, column: 3) +!1953 = !DILocation(line: 0, scope: !1951) +!1954 = !DILocation(line: 1181, column: 19, scope: !1955) +!1955 = distinct !DILexicalBlock(scope: !1951, file: !3, line: 1181, column: 5) +!1956 = !DILocation(line: 1181, column: 5, scope: !1951) +!1957 = !DILocation(line: 1184, column: 12, scope: !1958) +!1958 = distinct !DILexicalBlock(scope: !1959, file: !3, line: 1184, column: 7) +!1959 = distinct !DILexicalBlock(scope: !1955, file: !3, line: 1181, column: 30) +!1960 = !DILocation(line: 0, scope: !1958) +!1961 = !DILocation(line: 1184, column: 21, scope: !1962) +!1962 = distinct !DILexicalBlock(scope: !1958, file: !3, line: 1184, column: 7) +!1963 = !DILocation(line: 1184, column: 7, scope: !1958) +!1964 = !DILocation(line: 1186, column: 14, scope: !1965) +!1965 = distinct !DILexicalBlock(scope: !1966, file: !3, line: 1186, column: 9) +!1966 = distinct !DILexicalBlock(scope: !1962, file: !3, line: 1184, column: 33) +!1967 = !DILocation(line: 0, scope: !1965) +!1968 = !DILocation(line: 1186, column: 23, scope: !1969) +!1969 = distinct !DILexicalBlock(scope: !1965, file: !3, line: 1186, column: 9) +!1970 = !DILocation(line: 1186, column: 9, scope: !1965) +!1971 = !DILocation(line: 1187, column: 41, scope: !1972) +!1972 = distinct !DILexicalBlock(scope: !1969, file: !3, line: 1186, column: 34) +!1973 = !DILocation(line: 1187, column: 48, scope: !1972) +!1974 = !DILocation(line: 1187, column: 44, scope: !1972) +!1975 = !DILocation(line: 1187, column: 59, scope: !1972) +!1976 = !DILocation(line: 1187, column: 55, scope: !1972) +!1977 = !DILocation(line: 1187, column: 52, scope: !1972) +!1978 = !DILocation(line: 1187, column: 63, scope: !1972) +!1979 = !DILocation(line: 1187, column: 32, scope: !1972) +!1980 = !DILocation(line: 1187, column: 11, scope: !1972) +!1981 = !DILocation(line: 1187, column: 30, scope: !1972) +!1982 = !DILocation(line: 1188, column: 41, scope: !1972) +!1983 = !DILocation(line: 1188, column: 48, scope: !1972) +!1984 = !DILocation(line: 1188, column: 44, scope: !1972) +!1985 = !DILocation(line: 1188, column: 59, scope: !1972) +!1986 = !DILocation(line: 1188, column: 55, scope: !1972) +!1987 = !DILocation(line: 1188, column: 52, scope: !1972) +!1988 = !DILocation(line: 1188, column: 63, scope: !1972) +!1989 = !DILocation(line: 1188, column: 32, scope: !1972) +!1990 = !DILocation(line: 1188, column: 11, scope: !1972) +!1991 = !DILocation(line: 1188, column: 30, scope: !1972) +!1992 = !DILocation(line: 1189, column: 9, scope: !1972) +!1993 = !DILocation(line: 1186, column: 30, scope: !1969) +!1994 = !DILocation(line: 1186, column: 9, scope: !1969) +!1995 = distinct !{!1995, !1970, !1996} +!1996 = !DILocation(line: 1189, column: 9, scope: !1965) +!1997 = !DILocation(line: 1191, column: 13, scope: !1998) +!1998 = distinct !DILexicalBlock(scope: !1966, file: !3, line: 1191, column: 9) +!1999 = !DILocation(line: 0, scope: !1998) +!2000 = !DILocation(line: 1191, column: 22, scope: !2001) +!2001 = distinct !DILexicalBlock(scope: !1998, file: !3, line: 1191, column: 9) +!2002 = !DILocation(line: 1191, column: 9, scope: !1998) +!2003 = !DILocation(line: 1192, column: 19, scope: !2004) +!2004 = distinct !DILexicalBlock(scope: !2001, file: !3, line: 1191, column: 39) +!2005 = !DILocation(line: 1193, column: 24, scope: !2004) +!2006 = !DILocation(line: 1193, column: 18, scope: !2004) +!2007 = !DILocation(line: 1194, column: 28, scope: !2004) +!2008 = !DILocation(line: 1194, column: 18, scope: !2004) +!2009 = !DILocation(line: 1195, column: 18, scope: !2004) +!2010 = !DILocation(line: 1198, column: 16, scope: !2011) +!2011 = distinct !DILexicalBlock(scope: !2004, file: !3, line: 1198, column: 11) +!2012 = !DILocation(line: 0, scope: !2011) +!2013 = !DILocation(line: 1198, column: 33, scope: !2014) +!2014 = distinct !DILexicalBlock(scope: !2011, file: !3, line: 1198, column: 11) +!2015 = !DILocation(line: 1198, column: 27, scope: !2014) +!2016 = !DILocation(line: 1198, column: 11, scope: !2011) +!2017 = !DILocation(line: 1199, column: 18, scope: !2018) +!2018 = distinct !DILexicalBlock(scope: !2019, file: !3, line: 1199, column: 13) +!2019 = distinct !DILexicalBlock(scope: !2014, file: !3, line: 1198, column: 44) +!2020 = !DILocation(line: 0, scope: !2018) +!2021 = !DILocation(line: 1199, column: 35, scope: !2022) +!2022 = distinct !DILexicalBlock(scope: !2018, file: !3, line: 1199, column: 13) +!2023 = !DILocation(line: 1199, column: 29, scope: !2022) +!2024 = !DILocation(line: 1199, column: 13, scope: !2018) +!2025 = !DILocation(line: 1200, column: 24, scope: !2026) +!2026 = distinct !DILexicalBlock(scope: !2022, file: !3, line: 1199, column: 46) +!2027 = !DILocation(line: 1201, column: 25, scope: !2026) +!2028 = !DILocation(line: 1202, column: 24, scope: !2026) +!2029 = !DILocation(line: 1203, column: 25, scope: !2026) +!2030 = !DILocation(line: 1205, column: 35, scope: !2026) +!2031 = !DILocation(line: 1205, column: 26, scope: !2026) +!2032 = !DILocation(line: 1206, column: 35, scope: !2026) +!2033 = !DILocation(line: 1206, column: 26, scope: !2026) +!2034 = !DILocation(line: 1208, column: 26, scope: !2026) +!2035 = !DILocation(line: 1208, column: 42, scope: !2026) +!2036 = !DILocation(line: 1209, column: 26, scope: !2026) +!2037 = !DILocation(line: 1209, column: 42, scope: !2026) +!2038 = !DILocation(line: 1211, column: 26, scope: !2026) +!2039 = !DILocation(line: 1211, column: 42, scope: !2026) +!2040 = !DILocation(line: 1212, column: 26, scope: !2026) +!2041 = !DILocation(line: 1212, column: 42, scope: !2026) +!2042 = !DILocation(line: 1214, column: 50, scope: !2026) +!2043 = !DILocation(line: 1214, column: 15, scope: !2026) +!2044 = !DILocation(line: 1214, column: 31, scope: !2026) +!2045 = !DILocation(line: 1214, column: 39, scope: !2026) +!2046 = !DILocation(line: 1215, column: 50, scope: !2026) +!2047 = !DILocation(line: 1215, column: 15, scope: !2026) +!2048 = !DILocation(line: 1215, column: 31, scope: !2026) +!2049 = !DILocation(line: 1215, column: 39, scope: !2026) +!2050 = !DILocation(line: 1217, column: 36, scope: !2026) +!2051 = !DILocation(line: 1218, column: 36, scope: !2026) +!2052 = !DILocation(line: 1219, column: 51, scope: !2026) +!2053 = !DILocation(line: 1219, column: 76, scope: !2026) +!2054 = !DILocation(line: 1219, column: 64, scope: !2026) +!2055 = !DILocation(line: 1219, column: 15, scope: !2026) +!2056 = !DILocation(line: 1219, column: 31, scope: !2026) +!2057 = !DILocation(line: 1219, column: 39, scope: !2026) +!2058 = !DILocation(line: 1220, column: 51, scope: !2026) +!2059 = !DILocation(line: 1220, column: 76, scope: !2026) +!2060 = !DILocation(line: 1220, column: 64, scope: !2026) +!2061 = !DILocation(line: 1220, column: 15, scope: !2026) +!2062 = !DILocation(line: 1220, column: 31, scope: !2026) +!2063 = !DILocation(line: 1220, column: 39, scope: !2026) +!2064 = !DILocation(line: 1222, column: 13, scope: !2026) +!2065 = !DILocation(line: 1199, column: 42, scope: !2022) +!2066 = !DILocation(line: 1199, column: 13, scope: !2022) +!2067 = distinct !{!2067, !2024, !2068} +!2068 = !DILocation(line: 1222, column: 13, scope: !2018) +!2069 = !DILocation(line: 1223, column: 11, scope: !2019) +!2070 = !DILocation(line: 1198, column: 40, scope: !2014) +!2071 = !DILocation(line: 1198, column: 11, scope: !2014) +!2072 = distinct !{!2072, !2016, !2073} +!2073 = !DILocation(line: 1223, column: 11, scope: !2011) +!2074 = !DILocation(line: 1224, column: 16, scope: !2075) +!2075 = distinct !DILexicalBlock(scope: !2004, file: !3, line: 1224, column: 14) +!2076 = !DILocation(line: 1224, column: 14, scope: !2004) +!2077 = !DILocation(line: 1226, column: 18, scope: !2078) +!2078 = distinct !DILexicalBlock(scope: !2079, file: !3, line: 1226, column: 13) +!2079 = distinct !DILexicalBlock(scope: !2075, file: !3, line: 1224, column: 25) +!2080 = !DILocation(line: 0, scope: !2078) +!2081 = !DILocation(line: 1226, column: 29, scope: !2082) +!2082 = distinct !DILexicalBlock(scope: !2078, file: !3, line: 1226, column: 13) +!2083 = !DILocation(line: 1226, column: 13, scope: !2078) +!2084 = !DILocation(line: 1227, column: 37, scope: !2085) +!2085 = distinct !DILexicalBlock(scope: !2082, file: !3, line: 1226, column: 41) +!2086 = !DILocation(line: 1227, column: 15, scope: !2085) +!2087 = !DILocation(line: 1227, column: 35, scope: !2085) +!2088 = !DILocation(line: 1228, column: 37, scope: !2085) +!2089 = !DILocation(line: 1228, column: 15, scope: !2085) +!2090 = !DILocation(line: 1228, column: 35, scope: !2085) +!2091 = !DILocation(line: 1229, column: 13, scope: !2085) +!2092 = !DILocation(line: 1226, column: 37, scope: !2082) +!2093 = !DILocation(line: 1226, column: 13, scope: !2082) +!2094 = distinct !{!2094, !2083, !2095} +!2095 = !DILocation(line: 1229, column: 13, scope: !2078) +!2096 = !DILocation(line: 1230, column: 11, scope: !2079) +!2097 = !DILocation(line: 1231, column: 21, scope: !2098) +!2098 = distinct !DILexicalBlock(scope: !2075, file: !3, line: 1230, column: 16) +!2099 = !DILocation(line: 1232, column: 25, scope: !2098) +!2100 = !DILocation(line: 1232, column: 28, scope: !2098) +!2101 = !DILocation(line: 1232, column: 20, scope: !2098) +!2102 = !DILocation(line: 1233, column: 34, scope: !2098) +!2103 = !DILocation(line: 1233, column: 30, scope: !2098) +!2104 = !DILocation(line: 1233, column: 20, scope: !2098) +!2105 = !DILocation(line: 1234, column: 20, scope: !2098) +!2106 = !DILocation(line: 1238, column: 18, scope: !2107) +!2107 = distinct !DILexicalBlock(scope: !2098, file: !3, line: 1238, column: 13) +!2108 = !DILocation(line: 0, scope: !2107) +!2109 = !DILocation(line: 1238, column: 35, scope: !2110) +!2110 = distinct !DILexicalBlock(scope: !2107, file: !3, line: 1238, column: 13) +!2111 = !DILocation(line: 1238, column: 29, scope: !2110) +!2112 = !DILocation(line: 1238, column: 13, scope: !2107) +!2113 = !DILocation(line: 1239, column: 20, scope: !2114) +!2114 = distinct !DILexicalBlock(scope: !2115, file: !3, line: 1239, column: 15) +!2115 = distinct !DILexicalBlock(scope: !2110, file: !3, line: 1238, column: 46) +!2116 = !DILocation(line: 0, scope: !2114) +!2117 = !DILocation(line: 1239, column: 37, scope: !2118) +!2118 = distinct !DILexicalBlock(scope: !2114, file: !3, line: 1239, column: 15) +!2119 = !DILocation(line: 1239, column: 31, scope: !2118) +!2120 = !DILocation(line: 1239, column: 15, scope: !2114) +!2121 = !DILocation(line: 1240, column: 26, scope: !2122) +!2122 = distinct !DILexicalBlock(scope: !2118, file: !3, line: 1239, column: 48) +!2123 = !DILocation(line: 1241, column: 27, scope: !2122) +!2124 = !DILocation(line: 1242, column: 26, scope: !2122) +!2125 = !DILocation(line: 1243, column: 27, scope: !2122) +!2126 = !DILocation(line: 1245, column: 37, scope: !2122) +!2127 = !DILocation(line: 1245, column: 28, scope: !2122) +!2128 = !DILocation(line: 1246, column: 37, scope: !2122) +!2129 = !DILocation(line: 1246, column: 28, scope: !2122) +!2130 = !DILocation(line: 1248, column: 28, scope: !2122) +!2131 = !DILocation(line: 1248, column: 44, scope: !2122) +!2132 = !DILocation(line: 1249, column: 28, scope: !2122) +!2133 = !DILocation(line: 1249, column: 44, scope: !2122) +!2134 = !DILocation(line: 1251, column: 28, scope: !2122) +!2135 = !DILocation(line: 1251, column: 44, scope: !2122) +!2136 = !DILocation(line: 1252, column: 28, scope: !2122) +!2137 = !DILocation(line: 1252, column: 44, scope: !2122) +!2138 = !DILocation(line: 1254, column: 52, scope: !2122) +!2139 = !DILocation(line: 1254, column: 17, scope: !2122) +!2140 = !DILocation(line: 1254, column: 33, scope: !2122) +!2141 = !DILocation(line: 1254, column: 41, scope: !2122) +!2142 = !DILocation(line: 1255, column: 52, scope: !2122) +!2143 = !DILocation(line: 1255, column: 17, scope: !2122) +!2144 = !DILocation(line: 1255, column: 33, scope: !2122) +!2145 = !DILocation(line: 1255, column: 41, scope: !2122) +!2146 = !DILocation(line: 1257, column: 39, scope: !2122) +!2147 = !DILocation(line: 1258, column: 39, scope: !2122) +!2148 = !DILocation(line: 1259, column: 53, scope: !2122) +!2149 = !DILocation(line: 1259, column: 79, scope: !2122) +!2150 = !DILocation(line: 1259, column: 67, scope: !2122) +!2151 = !DILocation(line: 1259, column: 17, scope: !2122) +!2152 = !DILocation(line: 1259, column: 33, scope: !2122) +!2153 = !DILocation(line: 1259, column: 41, scope: !2122) +!2154 = !DILocation(line: 1260, column: 53, scope: !2122) +!2155 = !DILocation(line: 1260, column: 79, scope: !2122) +!2156 = !DILocation(line: 1260, column: 67, scope: !2122) +!2157 = !DILocation(line: 1260, column: 17, scope: !2122) +!2158 = !DILocation(line: 1260, column: 33, scope: !2122) +!2159 = !DILocation(line: 1260, column: 41, scope: !2122) +!2160 = !DILocation(line: 1261, column: 15, scope: !2122) +!2161 = !DILocation(line: 1239, column: 44, scope: !2118) +!2162 = !DILocation(line: 1239, column: 15, scope: !2118) +!2163 = distinct !{!2163, !2120, !2164} +!2164 = !DILocation(line: 1261, column: 15, scope: !2114) +!2165 = !DILocation(line: 1262, column: 13, scope: !2115) +!2166 = !DILocation(line: 1238, column: 42, scope: !2110) +!2167 = !DILocation(line: 1238, column: 13, scope: !2110) +!2168 = distinct !{!2168, !2112, !2169} +!2169 = !DILocation(line: 1262, column: 13, scope: !2107) +!2170 = !DILocation(line: 1264, column: 9, scope: !2004) +!2171 = !DILocation(line: 1191, column: 34, scope: !2001) +!2172 = !DILocation(line: 1191, column: 9, scope: !2001) +!2173 = distinct !{!2173, !2002, !2174} +!2174 = !DILocation(line: 1264, column: 9, scope: !1998) +!2175 = !DILocation(line: 1267, column: 14, scope: !2176) +!2176 = distinct !DILexicalBlock(scope: !1966, file: !3, line: 1267, column: 9) +!2177 = !DILocation(line: 0, scope: !2176) +!2178 = !DILocation(line: 1267, column: 23, scope: !2179) +!2179 = distinct !DILexicalBlock(scope: !2176, file: !3, line: 1267, column: 9) +!2180 = !DILocation(line: 1267, column: 9, scope: !2176) +!2181 = !DILocation(line: 1268, column: 49, scope: !2182) +!2182 = distinct !DILexicalBlock(scope: !2179, file: !3, line: 1267, column: 34) +!2183 = !DILocation(line: 1268, column: 20, scope: !2182) +!2184 = !DILocation(line: 1268, column: 27, scope: !2182) +!2185 = !DILocation(line: 1268, column: 23, scope: !2182) +!2186 = !DILocation(line: 1268, column: 38, scope: !2182) +!2187 = !DILocation(line: 1268, column: 34, scope: !2182) +!2188 = !DILocation(line: 1268, column: 31, scope: !2182) +!2189 = !DILocation(line: 1268, column: 42, scope: !2182) +!2190 = !DILocation(line: 1268, column: 11, scope: !2182) +!2191 = !DILocation(line: 1268, column: 47, scope: !2182) +!2192 = !DILocation(line: 1269, column: 49, scope: !2182) +!2193 = !DILocation(line: 1269, column: 20, scope: !2182) +!2194 = !DILocation(line: 1269, column: 27, scope: !2182) +!2195 = !DILocation(line: 1269, column: 23, scope: !2182) +!2196 = !DILocation(line: 1269, column: 38, scope: !2182) +!2197 = !DILocation(line: 1269, column: 34, scope: !2182) +!2198 = !DILocation(line: 1269, column: 31, scope: !2182) +!2199 = !DILocation(line: 1269, column: 42, scope: !2182) +!2200 = !DILocation(line: 1269, column: 11, scope: !2182) +!2201 = !DILocation(line: 1269, column: 47, scope: !2182) +!2202 = !DILocation(line: 1270, column: 9, scope: !2182) +!2203 = !DILocation(line: 1267, column: 30, scope: !2179) +!2204 = !DILocation(line: 1267, column: 9, scope: !2179) +!2205 = distinct !{!2205, !2180, !2206} +!2206 = !DILocation(line: 1270, column: 9, scope: !2176) +!2207 = !DILocation(line: 1271, column: 7, scope: !1966) +!2208 = !DILocation(line: 1184, column: 29, scope: !1962) +!2209 = !DILocation(line: 1184, column: 7, scope: !1962) +!2210 = distinct !{!2210, !1963, !2211} +!2211 = !DILocation(line: 1271, column: 7, scope: !1958) +!2212 = !DILocation(line: 1272, column: 5, scope: !1959) +!2213 = !DILocation(line: 1181, column: 26, scope: !1955) +!2214 = !DILocation(line: 1181, column: 5, scope: !1955) +!2215 = distinct !{!2215, !1956, !2216} +!2216 = !DILocation(line: 1272, column: 5, scope: !1951) +!2217 = !DILocation(line: 1276, column: 1, scope: !1907) +!2218 = distinct !DISubprogram(name: "cffts3_neg", scope: !3, file: !3, line: 1281, type: !761, scopeLine: 1282, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !2219) +!2219 = !{!2220, !2221, !2222, !2223, !2224, !2225, !2226, !2227, !2228, !2229, !2230, !2231, !2232, !2233, !2234, !2235, !2236, !2237, !2238, !2239, !2240, !2241, !2242, !2243, !2244, !2245, !2246, !2247, !2248, !2249, !2250, !2251, !2252, !2253, !2254, !2255, !2256, !2257} +!2220 = !DILocalVariable(name: "is", arg: 1, scope: !2218, file: !3, line: 1281, type: !12) +!2221 = !DILocalVariable(name: "d1", arg: 2, scope: !2218, file: !3, line: 1281, type: !12) +!2222 = !DILocalVariable(name: "d2", arg: 3, scope: !2218, file: !3, line: 1281, type: !12) +!2223 = !DILocalVariable(name: "d3", arg: 4, scope: !2218, file: !3, line: 1281, type: !12) +!2224 = !DILocalVariable(name: "logd3", scope: !2218, file: !3, line: 1283, type: !12) +!2225 = !DILocalVariable(name: "i", scope: !2218, file: !3, line: 1284, type: !12) +!2226 = !DILocalVariable(name: "j", scope: !2218, file: !3, line: 1284, type: !12) +!2227 = !DILocalVariable(name: "k", scope: !2218, file: !3, line: 1284, type: !12) +!2228 = !DILocalVariable(name: "ii", scope: !2218, file: !3, line: 1284, type: !12) +!2229 = !DILocalVariable(name: "l", scope: !2218, file: !3, line: 1285, type: !12) +!2230 = !DILocalVariable(name: "j1", scope: !2218, file: !3, line: 1285, type: !12) +!2231 = !DILocalVariable(name: "i1", scope: !2218, file: !3, line: 1285, type: !12) +!2232 = !DILocalVariable(name: "k1", scope: !2218, file: !3, line: 1285, type: !12) +!2233 = !DILocalVariable(name: "n1", scope: !2218, file: !3, line: 1286, type: !12) +!2234 = !DILocalVariable(name: "li", scope: !2218, file: !3, line: 1286, type: !12) +!2235 = !DILocalVariable(name: "lj", scope: !2218, file: !3, line: 1286, type: !12) +!2236 = !DILocalVariable(name: "lk", scope: !2218, file: !3, line: 1286, type: !12) +!2237 = !DILocalVariable(name: "ku", scope: !2218, file: !3, line: 1286, type: !12) +!2238 = !DILocalVariable(name: "i11", scope: !2218, file: !3, line: 1286, type: !12) +!2239 = !DILocalVariable(name: "i12", scope: !2218, file: !3, line: 1286, type: !12) +!2240 = !DILocalVariable(name: "i21", scope: !2218, file: !3, line: 1286, type: !12) +!2241 = !DILocalVariable(name: "i22", scope: !2218, file: !3, line: 1286, type: !12) +!2242 = !DILocalVariable(name: "uu1_real", scope: !2218, file: !3, line: 1287, type: !11) +!2243 = !DILocalVariable(name: "x11_real", scope: !2218, file: !3, line: 1287, type: !11) +!2244 = !DILocalVariable(name: "x21_real", scope: !2218, file: !3, line: 1287, type: !11) +!2245 = !DILocalVariable(name: "uu1_imag", scope: !2218, file: !3, line: 1288, type: !11) +!2246 = !DILocalVariable(name: "x11_imag", scope: !2218, file: !3, line: 1288, type: !11) +!2247 = !DILocalVariable(name: "x21_imag", scope: !2218, file: !3, line: 1288, type: !11) +!2248 = !DILocalVariable(name: "uu2_real", scope: !2218, file: !3, line: 1289, type: !11) +!2249 = !DILocalVariable(name: "x12_real", scope: !2218, file: !3, line: 1289, type: !11) +!2250 = !DILocalVariable(name: "x22_real", scope: !2218, file: !3, line: 1289, type: !11) +!2251 = !DILocalVariable(name: "uu2_imag", scope: !2218, file: !3, line: 1290, type: !11) +!2252 = !DILocalVariable(name: "x12_imag", scope: !2218, file: !3, line: 1290, type: !11) +!2253 = !DILocalVariable(name: "x22_imag", scope: !2218, file: !3, line: 1290, type: !11) +!2254 = !DILocalVariable(name: "temp_real", scope: !2218, file: !3, line: 1291, type: !11) +!2255 = !DILocalVariable(name: "temp2_real", scope: !2218, file: !3, line: 1291, type: !11) +!2256 = !DILocalVariable(name: "temp_imag", scope: !2218, file: !3, line: 1292, type: !11) +!2257 = !DILocalVariable(name: "temp2_imag", scope: !2218, file: !3, line: 1292, type: !11) +!2258 = !DILocation(line: 0, scope: !2218) +!2259 = !DILocation(line: 1284, column: 16, scope: !2218) +!2260 = !DILocation(line: 1294, column: 11, scope: !2218) +!2261 = !DILocation(line: 1313, column: 10, scope: !2262) +!2262 = distinct !DILexicalBlock(scope: !2263, file: !3, line: 1313, column: 5) +!2263 = distinct !DILexicalBlock(scope: !2218, file: !3, line: 1310, column: 3) +!2264 = !DILocation(line: 0, scope: !2262) +!2265 = !DILocation(line: 1313, column: 19, scope: !2266) +!2266 = distinct !DILexicalBlock(scope: !2262, file: !3, line: 1313, column: 5) +!2267 = !DILocation(line: 1313, column: 5, scope: !2262) +!2268 = !DILocation(line: 1316, column: 12, scope: !2269) +!2269 = distinct !DILexicalBlock(scope: !2270, file: !3, line: 1316, column: 7) +!2270 = distinct !DILexicalBlock(scope: !2266, file: !3, line: 1313, column: 30) +!2271 = !DILocation(line: 0, scope: !2269) +!2272 = !DILocation(line: 1316, column: 21, scope: !2273) +!2273 = distinct !DILexicalBlock(scope: !2269, file: !3, line: 1316, column: 7) +!2274 = !DILocation(line: 1316, column: 7, scope: !2269) +!2275 = !DILocation(line: 1318, column: 14, scope: !2276) +!2276 = distinct !DILexicalBlock(scope: !2277, file: !3, line: 1318, column: 9) +!2277 = distinct !DILexicalBlock(scope: !2273, file: !3, line: 1316, column: 32) +!2278 = !DILocation(line: 0, scope: !2276) +!2279 = !DILocation(line: 1318, column: 23, scope: !2280) +!2280 = distinct !DILexicalBlock(scope: !2276, file: !3, line: 1318, column: 9) +!2281 = !DILocation(line: 1318, column: 9, scope: !2276) +!2282 = !DILocation(line: 1319, column: 41, scope: !2283) +!2283 = distinct !DILexicalBlock(scope: !2280, file: !3, line: 1318, column: 34) +!2284 = !DILocation(line: 1319, column: 48, scope: !2283) +!2285 = !DILocation(line: 1319, column: 44, scope: !2283) +!2286 = !DILocation(line: 1319, column: 59, scope: !2283) +!2287 = !DILocation(line: 1319, column: 55, scope: !2283) +!2288 = !DILocation(line: 1319, column: 52, scope: !2283) +!2289 = !DILocation(line: 1319, column: 63, scope: !2283) +!2290 = !DILocation(line: 1319, column: 32, scope: !2283) +!2291 = !DILocation(line: 1319, column: 11, scope: !2283) +!2292 = !DILocation(line: 1319, column: 30, scope: !2283) +!2293 = !DILocation(line: 1320, column: 41, scope: !2283) +!2294 = !DILocation(line: 1320, column: 48, scope: !2283) +!2295 = !DILocation(line: 1320, column: 44, scope: !2283) +!2296 = !DILocation(line: 1320, column: 59, scope: !2283) +!2297 = !DILocation(line: 1320, column: 55, scope: !2283) +!2298 = !DILocation(line: 1320, column: 52, scope: !2283) +!2299 = !DILocation(line: 1320, column: 63, scope: !2283) +!2300 = !DILocation(line: 1320, column: 32, scope: !2283) +!2301 = !DILocation(line: 1320, column: 11, scope: !2283) +!2302 = !DILocation(line: 1320, column: 30, scope: !2283) +!2303 = !DILocation(line: 1321, column: 9, scope: !2283) +!2304 = !DILocation(line: 1318, column: 30, scope: !2280) +!2305 = !DILocation(line: 1318, column: 9, scope: !2280) +!2306 = distinct !{!2306, !2281, !2307} +!2307 = !DILocation(line: 1321, column: 9, scope: !2276) +!2308 = !DILocation(line: 1324, column: 13, scope: !2309) +!2309 = distinct !DILexicalBlock(scope: !2277, file: !3, line: 1324, column: 9) +!2310 = !DILocation(line: 0, scope: !2309) +!2311 = !DILocation(line: 1324, column: 22, scope: !2312) +!2312 = distinct !DILexicalBlock(scope: !2309, file: !3, line: 1324, column: 9) +!2313 = !DILocation(line: 1324, column: 9, scope: !2309) +!2314 = !DILocation(line: 1325, column: 19, scope: !2315) +!2315 = distinct !DILexicalBlock(scope: !2312, file: !3, line: 1324, column: 39) +!2316 = !DILocation(line: 1326, column: 24, scope: !2315) +!2317 = !DILocation(line: 1326, column: 18, scope: !2315) +!2318 = !DILocation(line: 1327, column: 28, scope: !2315) +!2319 = !DILocation(line: 1327, column: 18, scope: !2315) +!2320 = !DILocation(line: 1328, column: 18, scope: !2315) +!2321 = !DILocation(line: 1331, column: 16, scope: !2322) +!2322 = distinct !DILexicalBlock(scope: !2315, file: !3, line: 1331, column: 11) +!2323 = !DILocation(line: 0, scope: !2322) +!2324 = !DILocation(line: 1331, column: 33, scope: !2325) +!2325 = distinct !DILexicalBlock(scope: !2322, file: !3, line: 1331, column: 11) +!2326 = !DILocation(line: 1331, column: 27, scope: !2325) +!2327 = !DILocation(line: 1331, column: 11, scope: !2322) +!2328 = !DILocation(line: 1332, column: 18, scope: !2329) +!2329 = distinct !DILexicalBlock(scope: !2330, file: !3, line: 1332, column: 13) +!2330 = distinct !DILexicalBlock(scope: !2325, file: !3, line: 1331, column: 44) +!2331 = !DILocation(line: 0, scope: !2329) +!2332 = !DILocation(line: 1332, column: 35, scope: !2333) +!2333 = distinct !DILexicalBlock(scope: !2329, file: !3, line: 1332, column: 13) +!2334 = !DILocation(line: 1332, column: 29, scope: !2333) +!2335 = !DILocation(line: 1332, column: 13, scope: !2329) +!2336 = !DILocation(line: 1333, column: 24, scope: !2337) +!2337 = distinct !DILexicalBlock(scope: !2333, file: !3, line: 1332, column: 46) +!2338 = !DILocation(line: 1334, column: 25, scope: !2337) +!2339 = !DILocation(line: 1335, column: 24, scope: !2337) +!2340 = !DILocation(line: 1336, column: 25, scope: !2337) +!2341 = !DILocation(line: 1338, column: 35, scope: !2337) +!2342 = !DILocation(line: 1338, column: 26, scope: !2337) +!2343 = !DILocation(line: 1339, column: 40, scope: !2337) +!2344 = !DILocation(line: 1339, column: 31, scope: !2337) +!2345 = !DILocation(line: 1339, column: 30, scope: !2337) +!2346 = !DILocation(line: 1341, column: 26, scope: !2337) +!2347 = !DILocation(line: 1341, column: 42, scope: !2337) +!2348 = !DILocation(line: 1342, column: 26, scope: !2337) +!2349 = !DILocation(line: 1342, column: 42, scope: !2337) +!2350 = !DILocation(line: 1344, column: 26, scope: !2337) +!2351 = !DILocation(line: 1344, column: 42, scope: !2337) +!2352 = !DILocation(line: 1345, column: 26, scope: !2337) +!2353 = !DILocation(line: 1345, column: 42, scope: !2337) +!2354 = !DILocation(line: 1347, column: 50, scope: !2337) +!2355 = !DILocation(line: 1347, column: 15, scope: !2337) +!2356 = !DILocation(line: 1347, column: 31, scope: !2337) +!2357 = !DILocation(line: 1347, column: 39, scope: !2337) +!2358 = !DILocation(line: 1348, column: 50, scope: !2337) +!2359 = !DILocation(line: 1348, column: 15, scope: !2337) +!2360 = !DILocation(line: 1348, column: 31, scope: !2337) +!2361 = !DILocation(line: 1348, column: 39, scope: !2337) +!2362 = !DILocation(line: 1350, column: 36, scope: !2337) +!2363 = !DILocation(line: 1351, column: 36, scope: !2337) +!2364 = !DILocation(line: 1352, column: 51, scope: !2337) +!2365 = !DILocation(line: 1352, column: 76, scope: !2337) +!2366 = !DILocation(line: 1352, column: 64, scope: !2337) +!2367 = !DILocation(line: 1352, column: 15, scope: !2337) +!2368 = !DILocation(line: 1352, column: 31, scope: !2337) +!2369 = !DILocation(line: 1352, column: 39, scope: !2337) +!2370 = !DILocation(line: 1353, column: 51, scope: !2337) +!2371 = !DILocation(line: 1353, column: 76, scope: !2337) +!2372 = !DILocation(line: 1353, column: 64, scope: !2337) +!2373 = !DILocation(line: 1353, column: 15, scope: !2337) +!2374 = !DILocation(line: 1353, column: 31, scope: !2337) +!2375 = !DILocation(line: 1353, column: 39, scope: !2337) +!2376 = !DILocation(line: 1355, column: 13, scope: !2337) +!2377 = !DILocation(line: 1332, column: 42, scope: !2333) +!2378 = !DILocation(line: 1332, column: 13, scope: !2333) +!2379 = distinct !{!2379, !2335, !2380} +!2380 = !DILocation(line: 1355, column: 13, scope: !2329) +!2381 = !DILocation(line: 1356, column: 11, scope: !2330) +!2382 = !DILocation(line: 1331, column: 40, scope: !2325) +!2383 = !DILocation(line: 1331, column: 11, scope: !2325) +!2384 = distinct !{!2384, !2327, !2385} +!2385 = !DILocation(line: 1356, column: 11, scope: !2322) +!2386 = !DILocation(line: 1357, column: 16, scope: !2387) +!2387 = distinct !DILexicalBlock(scope: !2315, file: !3, line: 1357, column: 14) +!2388 = !DILocation(line: 1357, column: 14, scope: !2315) +!2389 = !DILocation(line: 1359, column: 18, scope: !2390) +!2390 = distinct !DILexicalBlock(scope: !2391, file: !3, line: 1359, column: 13) +!2391 = distinct !DILexicalBlock(scope: !2387, file: !3, line: 1357, column: 25) +!2392 = !DILocation(line: 0, scope: !2390) +!2393 = !DILocation(line: 1359, column: 29, scope: !2394) +!2394 = distinct !DILexicalBlock(scope: !2390, file: !3, line: 1359, column: 13) +!2395 = !DILocation(line: 1359, column: 13, scope: !2390) +!2396 = !DILocation(line: 1360, column: 37, scope: !2397) +!2397 = distinct !DILexicalBlock(scope: !2394, file: !3, line: 1359, column: 41) +!2398 = !DILocation(line: 1360, column: 15, scope: !2397) +!2399 = !DILocation(line: 1360, column: 35, scope: !2397) +!2400 = !DILocation(line: 1361, column: 37, scope: !2397) +!2401 = !DILocation(line: 1361, column: 15, scope: !2397) +!2402 = !DILocation(line: 1361, column: 35, scope: !2397) +!2403 = !DILocation(line: 1362, column: 13, scope: !2397) +!2404 = !DILocation(line: 1359, column: 37, scope: !2394) +!2405 = !DILocation(line: 1359, column: 13, scope: !2394) +!2406 = distinct !{!2406, !2395, !2407} +!2407 = !DILocation(line: 1362, column: 13, scope: !2390) +!2408 = !DILocation(line: 1363, column: 11, scope: !2391) +!2409 = !DILocation(line: 1364, column: 21, scope: !2410) +!2410 = distinct !DILexicalBlock(scope: !2387, file: !3, line: 1363, column: 16) +!2411 = !DILocation(line: 1365, column: 25, scope: !2410) +!2412 = !DILocation(line: 1365, column: 28, scope: !2410) +!2413 = !DILocation(line: 1365, column: 20, scope: !2410) +!2414 = !DILocation(line: 1366, column: 34, scope: !2410) +!2415 = !DILocation(line: 1366, column: 30, scope: !2410) +!2416 = !DILocation(line: 1366, column: 20, scope: !2410) +!2417 = !DILocation(line: 1367, column: 20, scope: !2410) +!2418 = !DILocation(line: 1371, column: 18, scope: !2419) +!2419 = distinct !DILexicalBlock(scope: !2410, file: !3, line: 1371, column: 13) +!2420 = !DILocation(line: 0, scope: !2419) +!2421 = !DILocation(line: 1371, column: 35, scope: !2422) +!2422 = distinct !DILexicalBlock(scope: !2419, file: !3, line: 1371, column: 13) +!2423 = !DILocation(line: 1371, column: 29, scope: !2422) +!2424 = !DILocation(line: 1371, column: 13, scope: !2419) +!2425 = !DILocation(line: 1372, column: 20, scope: !2426) +!2426 = distinct !DILexicalBlock(scope: !2427, file: !3, line: 1372, column: 15) +!2427 = distinct !DILexicalBlock(scope: !2422, file: !3, line: 1371, column: 46) +!2428 = !DILocation(line: 0, scope: !2426) +!2429 = !DILocation(line: 1372, column: 37, scope: !2430) +!2430 = distinct !DILexicalBlock(scope: !2426, file: !3, line: 1372, column: 15) +!2431 = !DILocation(line: 1372, column: 31, scope: !2430) +!2432 = !DILocation(line: 1372, column: 15, scope: !2426) +!2433 = !DILocation(line: 1373, column: 26, scope: !2434) +!2434 = distinct !DILexicalBlock(scope: !2430, file: !3, line: 1372, column: 48) +!2435 = !DILocation(line: 1374, column: 27, scope: !2434) +!2436 = !DILocation(line: 1375, column: 26, scope: !2434) +!2437 = !DILocation(line: 1376, column: 27, scope: !2434) +!2438 = !DILocation(line: 1378, column: 37, scope: !2434) +!2439 = !DILocation(line: 1378, column: 28, scope: !2434) +!2440 = !DILocation(line: 1379, column: 42, scope: !2434) +!2441 = !DILocation(line: 1379, column: 33, scope: !2434) +!2442 = !DILocation(line: 1379, column: 32, scope: !2434) +!2443 = !DILocation(line: 1381, column: 28, scope: !2434) +!2444 = !DILocation(line: 1381, column: 44, scope: !2434) +!2445 = !DILocation(line: 1382, column: 28, scope: !2434) +!2446 = !DILocation(line: 1382, column: 44, scope: !2434) +!2447 = !DILocation(line: 1384, column: 28, scope: !2434) +!2448 = !DILocation(line: 1384, column: 44, scope: !2434) +!2449 = !DILocation(line: 1385, column: 28, scope: !2434) +!2450 = !DILocation(line: 1385, column: 44, scope: !2434) +!2451 = !DILocation(line: 1387, column: 52, scope: !2434) +!2452 = !DILocation(line: 1387, column: 17, scope: !2434) +!2453 = !DILocation(line: 1387, column: 33, scope: !2434) +!2454 = !DILocation(line: 1387, column: 41, scope: !2434) +!2455 = !DILocation(line: 1388, column: 52, scope: !2434) +!2456 = !DILocation(line: 1388, column: 17, scope: !2434) +!2457 = !DILocation(line: 1388, column: 33, scope: !2434) +!2458 = !DILocation(line: 1388, column: 41, scope: !2434) +!2459 = !DILocation(line: 1390, column: 39, scope: !2434) +!2460 = !DILocation(line: 1391, column: 39, scope: !2434) +!2461 = !DILocation(line: 1392, column: 53, scope: !2434) +!2462 = !DILocation(line: 1392, column: 79, scope: !2434) +!2463 = !DILocation(line: 1392, column: 67, scope: !2434) +!2464 = !DILocation(line: 1392, column: 17, scope: !2434) +!2465 = !DILocation(line: 1392, column: 33, scope: !2434) +!2466 = !DILocation(line: 1392, column: 41, scope: !2434) +!2467 = !DILocation(line: 1393, column: 53, scope: !2434) +!2468 = !DILocation(line: 1393, column: 79, scope: !2434) +!2469 = !DILocation(line: 1393, column: 67, scope: !2434) +!2470 = !DILocation(line: 1393, column: 17, scope: !2434) +!2471 = !DILocation(line: 1393, column: 33, scope: !2434) +!2472 = !DILocation(line: 1393, column: 41, scope: !2434) +!2473 = !DILocation(line: 1394, column: 15, scope: !2434) +!2474 = !DILocation(line: 1372, column: 44, scope: !2430) +!2475 = !DILocation(line: 1372, column: 15, scope: !2430) +!2476 = distinct !{!2476, !2432, !2477} +!2477 = !DILocation(line: 1394, column: 15, scope: !2426) +!2478 = !DILocation(line: 1395, column: 13, scope: !2427) +!2479 = !DILocation(line: 1371, column: 42, scope: !2422) +!2480 = !DILocation(line: 1371, column: 13, scope: !2422) +!2481 = distinct !{!2481, !2424, !2482} +!2482 = !DILocation(line: 1395, column: 13, scope: !2419) +!2483 = !DILocation(line: 1397, column: 9, scope: !2315) +!2484 = !DILocation(line: 1324, column: 34, scope: !2312) +!2485 = !DILocation(line: 1324, column: 9, scope: !2312) +!2486 = distinct !{!2486, !2313, !2487} +!2487 = !DILocation(line: 1397, column: 9, scope: !2309) +!2488 = !DILocation(line: 1400, column: 14, scope: !2489) +!2489 = distinct !DILexicalBlock(scope: !2277, file: !3, line: 1400, column: 9) +!2490 = !DILocation(line: 0, scope: !2489) +!2491 = !DILocation(line: 1400, column: 23, scope: !2492) +!2492 = distinct !DILexicalBlock(scope: !2489, file: !3, line: 1400, column: 9) +!2493 = !DILocation(line: 1400, column: 9, scope: !2489) +!2494 = !DILocation(line: 1401, column: 49, scope: !2495) +!2495 = distinct !DILexicalBlock(scope: !2492, file: !3, line: 1400, column: 34) +!2496 = !DILocation(line: 1401, column: 20, scope: !2495) +!2497 = !DILocation(line: 1401, column: 27, scope: !2495) +!2498 = !DILocation(line: 1401, column: 23, scope: !2495) +!2499 = !DILocation(line: 1401, column: 38, scope: !2495) +!2500 = !DILocation(line: 1401, column: 34, scope: !2495) +!2501 = !DILocation(line: 1401, column: 31, scope: !2495) +!2502 = !DILocation(line: 1401, column: 42, scope: !2495) +!2503 = !DILocation(line: 1401, column: 11, scope: !2495) +!2504 = !DILocation(line: 1401, column: 47, scope: !2495) +!2505 = !DILocation(line: 1402, column: 49, scope: !2495) +!2506 = !DILocation(line: 1402, column: 20, scope: !2495) +!2507 = !DILocation(line: 1402, column: 27, scope: !2495) +!2508 = !DILocation(line: 1402, column: 23, scope: !2495) +!2509 = !DILocation(line: 1402, column: 38, scope: !2495) +!2510 = !DILocation(line: 1402, column: 34, scope: !2495) +!2511 = !DILocation(line: 1402, column: 31, scope: !2495) +!2512 = !DILocation(line: 1402, column: 42, scope: !2495) +!2513 = !DILocation(line: 1402, column: 11, scope: !2495) +!2514 = !DILocation(line: 1402, column: 47, scope: !2495) +!2515 = !DILocation(line: 1403, column: 9, scope: !2495) +!2516 = !DILocation(line: 1400, column: 30, scope: !2492) +!2517 = !DILocation(line: 1400, column: 9, scope: !2492) +!2518 = distinct !{!2518, !2493, !2519} +!2519 = !DILocation(line: 1403, column: 9, scope: !2489) +!2520 = !DILocation(line: 1404, column: 7, scope: !2277) +!2521 = !DILocation(line: 1316, column: 28, scope: !2273) +!2522 = !DILocation(line: 1316, column: 7, scope: !2273) +!2523 = distinct !{!2523, !2274, !2524} +!2524 = !DILocation(line: 1404, column: 7, scope: !2269) +!2525 = !DILocation(line: 1405, column: 5, scope: !2270) +!2526 = !DILocation(line: 1313, column: 26, scope: !2266) +!2527 = !DILocation(line: 1313, column: 5, scope: !2266) +!2528 = distinct !{!2528, !2267, !2529} +!2529 = !DILocation(line: 1405, column: 5, scope: !2262) +!2530 = !DILocation(line: 1410, column: 1, scope: !2218) +!2531 = distinct !DISubprogram(name: "cffts2_neg", scope: !3, file: !3, line: 1023, type: !761, scopeLine: 1024, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !2532) +!2532 = !{!2533, !2534, !2535, !2536, !2537, !2538, !2539, !2540, !2541, !2542, !2543, !2544, !2545, !2546, !2547, !2548, !2549, !2550, !2551, !2552, !2553, !2554, !2555, !2556, !2557, !2558, !2559, !2560, !2561, !2562, !2563, !2564, !2565, !2566, !2567, !2568, !2569, !2570} +!2533 = !DILocalVariable(name: "is", arg: 1, scope: !2531, file: !3, line: 1023, type: !12) +!2534 = !DILocalVariable(name: "d1", arg: 2, scope: !2531, file: !3, line: 1023, type: !12) +!2535 = !DILocalVariable(name: "d2", arg: 3, scope: !2531, file: !3, line: 1023, type: !12) +!2536 = !DILocalVariable(name: "d3", arg: 4, scope: !2531, file: !3, line: 1023, type: !12) +!2537 = !DILocalVariable(name: "logd2", scope: !2531, file: !3, line: 1025, type: !12) +!2538 = !DILocalVariable(name: "i", scope: !2531, file: !3, line: 1026, type: !12) +!2539 = !DILocalVariable(name: "j", scope: !2531, file: !3, line: 1026, type: !12) +!2540 = !DILocalVariable(name: "k", scope: !2531, file: !3, line: 1026, type: !12) +!2541 = !DILocalVariable(name: "ii", scope: !2531, file: !3, line: 1026, type: !12) +!2542 = !DILocalVariable(name: "l", scope: !2531, file: !3, line: 1027, type: !12) +!2543 = !DILocalVariable(name: "j1", scope: !2531, file: !3, line: 1027, type: !12) +!2544 = !DILocalVariable(name: "i1", scope: !2531, file: !3, line: 1027, type: !12) +!2545 = !DILocalVariable(name: "k1", scope: !2531, file: !3, line: 1027, type: !12) +!2546 = !DILocalVariable(name: "n1", scope: !2531, file: !3, line: 1028, type: !12) +!2547 = !DILocalVariable(name: "li", scope: !2531, file: !3, line: 1028, type: !12) +!2548 = !DILocalVariable(name: "lj", scope: !2531, file: !3, line: 1028, type: !12) +!2549 = !DILocalVariable(name: "lk", scope: !2531, file: !3, line: 1028, type: !12) +!2550 = !DILocalVariable(name: "ku", scope: !2531, file: !3, line: 1028, type: !12) +!2551 = !DILocalVariable(name: "i11", scope: !2531, file: !3, line: 1028, type: !12) +!2552 = !DILocalVariable(name: "i12", scope: !2531, file: !3, line: 1028, type: !12) +!2553 = !DILocalVariable(name: "i21", scope: !2531, file: !3, line: 1028, type: !12) +!2554 = !DILocalVariable(name: "i22", scope: !2531, file: !3, line: 1028, type: !12) +!2555 = !DILocalVariable(name: "uu1_real", scope: !2531, file: !3, line: 1029, type: !11) +!2556 = !DILocalVariable(name: "x11_real", scope: !2531, file: !3, line: 1029, type: !11) +!2557 = !DILocalVariable(name: "x21_real", scope: !2531, file: !3, line: 1029, type: !11) +!2558 = !DILocalVariable(name: "uu1_imag", scope: !2531, file: !3, line: 1030, type: !11) +!2559 = !DILocalVariable(name: "x11_imag", scope: !2531, file: !3, line: 1030, type: !11) +!2560 = !DILocalVariable(name: "x21_imag", scope: !2531, file: !3, line: 1030, type: !11) +!2561 = !DILocalVariable(name: "uu2_real", scope: !2531, file: !3, line: 1031, type: !11) +!2562 = !DILocalVariable(name: "x12_real", scope: !2531, file: !3, line: 1031, type: !11) +!2563 = !DILocalVariable(name: "x22_real", scope: !2531, file: !3, line: 1031, type: !11) +!2564 = !DILocalVariable(name: "uu2_imag", scope: !2531, file: !3, line: 1032, type: !11) +!2565 = !DILocalVariable(name: "x12_imag", scope: !2531, file: !3, line: 1032, type: !11) +!2566 = !DILocalVariable(name: "x22_imag", scope: !2531, file: !3, line: 1032, type: !11) +!2567 = !DILocalVariable(name: "temp_real", scope: !2531, file: !3, line: 1033, type: !11) +!2568 = !DILocalVariable(name: "temp2_real", scope: !2531, file: !3, line: 1033, type: !11) +!2569 = !DILocalVariable(name: "temp_imag", scope: !2531, file: !3, line: 1034, type: !11) +!2570 = !DILocalVariable(name: "temp2_imag", scope: !2531, file: !3, line: 1034, type: !11) +!2571 = !DILocation(line: 0, scope: !2531) +!2572 = !DILocation(line: 1026, column: 16, scope: !2531) +!2573 = !DILocation(line: 1036, column: 11, scope: !2531) +!2574 = !DILocation(line: 1055, column: 10, scope: !2575) +!2575 = distinct !DILexicalBlock(scope: !2576, file: !3, line: 1055, column: 5) +!2576 = distinct !DILexicalBlock(scope: !2531, file: !3, line: 1052, column: 3) +!2577 = !DILocation(line: 0, scope: !2575) +!2578 = !DILocation(line: 1055, column: 19, scope: !2579) +!2579 = distinct !DILexicalBlock(scope: !2575, file: !3, line: 1055, column: 5) +!2580 = !DILocation(line: 1055, column: 5, scope: !2575) +!2581 = !DILocation(line: 1058, column: 12, scope: !2582) +!2582 = distinct !DILexicalBlock(scope: !2583, file: !3, line: 1058, column: 7) +!2583 = distinct !DILexicalBlock(scope: !2579, file: !3, line: 1055, column: 30) +!2584 = !DILocation(line: 0, scope: !2582) +!2585 = !DILocation(line: 1058, column: 21, scope: !2586) +!2586 = distinct !DILexicalBlock(scope: !2582, file: !3, line: 1058, column: 7) +!2587 = !DILocation(line: 1058, column: 7, scope: !2582) +!2588 = !DILocation(line: 1060, column: 14, scope: !2589) +!2589 = distinct !DILexicalBlock(scope: !2590, file: !3, line: 1060, column: 9) +!2590 = distinct !DILexicalBlock(scope: !2586, file: !3, line: 1058, column: 33) +!2591 = !DILocation(line: 0, scope: !2589) +!2592 = !DILocation(line: 1060, column: 23, scope: !2593) +!2593 = distinct !DILexicalBlock(scope: !2589, file: !3, line: 1060, column: 9) +!2594 = !DILocation(line: 1060, column: 9, scope: !2589) +!2595 = !DILocation(line: 1061, column: 41, scope: !2596) +!2596 = distinct !DILexicalBlock(scope: !2593, file: !3, line: 1060, column: 34) +!2597 = !DILocation(line: 1061, column: 48, scope: !2596) +!2598 = !DILocation(line: 1061, column: 44, scope: !2596) +!2599 = !DILocation(line: 1061, column: 59, scope: !2596) +!2600 = !DILocation(line: 1061, column: 55, scope: !2596) +!2601 = !DILocation(line: 1061, column: 52, scope: !2596) +!2602 = !DILocation(line: 1061, column: 63, scope: !2596) +!2603 = !DILocation(line: 1061, column: 32, scope: !2596) +!2604 = !DILocation(line: 1061, column: 11, scope: !2596) +!2605 = !DILocation(line: 1061, column: 30, scope: !2596) +!2606 = !DILocation(line: 1062, column: 41, scope: !2596) +!2607 = !DILocation(line: 1062, column: 48, scope: !2596) +!2608 = !DILocation(line: 1062, column: 44, scope: !2596) +!2609 = !DILocation(line: 1062, column: 59, scope: !2596) +!2610 = !DILocation(line: 1062, column: 55, scope: !2596) +!2611 = !DILocation(line: 1062, column: 52, scope: !2596) +!2612 = !DILocation(line: 1062, column: 63, scope: !2596) +!2613 = !DILocation(line: 1062, column: 32, scope: !2596) +!2614 = !DILocation(line: 1062, column: 11, scope: !2596) +!2615 = !DILocation(line: 1062, column: 30, scope: !2596) +!2616 = !DILocation(line: 1063, column: 9, scope: !2596) +!2617 = !DILocation(line: 1060, column: 30, scope: !2593) +!2618 = !DILocation(line: 1060, column: 9, scope: !2593) +!2619 = distinct !{!2619, !2594, !2620} +!2620 = !DILocation(line: 1063, column: 9, scope: !2589) +!2621 = !DILocation(line: 1065, column: 13, scope: !2622) +!2622 = distinct !DILexicalBlock(scope: !2590, file: !3, line: 1065, column: 9) +!2623 = !DILocation(line: 0, scope: !2622) +!2624 = !DILocation(line: 1065, column: 22, scope: !2625) +!2625 = distinct !DILexicalBlock(scope: !2622, file: !3, line: 1065, column: 9) +!2626 = !DILocation(line: 1065, column: 9, scope: !2622) +!2627 = !DILocation(line: 1066, column: 19, scope: !2628) +!2628 = distinct !DILexicalBlock(scope: !2625, file: !3, line: 1065, column: 39) +!2629 = !DILocation(line: 1067, column: 24, scope: !2628) +!2630 = !DILocation(line: 1067, column: 18, scope: !2628) +!2631 = !DILocation(line: 1068, column: 28, scope: !2628) +!2632 = !DILocation(line: 1068, column: 18, scope: !2628) +!2633 = !DILocation(line: 1069, column: 18, scope: !2628) +!2634 = !DILocation(line: 1072, column: 16, scope: !2635) +!2635 = distinct !DILexicalBlock(scope: !2628, file: !3, line: 1072, column: 11) +!2636 = !DILocation(line: 0, scope: !2635) +!2637 = !DILocation(line: 1072, column: 33, scope: !2638) +!2638 = distinct !DILexicalBlock(scope: !2635, file: !3, line: 1072, column: 11) +!2639 = !DILocation(line: 1072, column: 27, scope: !2638) +!2640 = !DILocation(line: 1072, column: 11, scope: !2635) +!2641 = !DILocation(line: 1073, column: 18, scope: !2642) +!2642 = distinct !DILexicalBlock(scope: !2643, file: !3, line: 1073, column: 13) +!2643 = distinct !DILexicalBlock(scope: !2638, file: !3, line: 1072, column: 44) +!2644 = !DILocation(line: 0, scope: !2642) +!2645 = !DILocation(line: 1073, column: 35, scope: !2646) +!2646 = distinct !DILexicalBlock(scope: !2642, file: !3, line: 1073, column: 13) +!2647 = !DILocation(line: 1073, column: 29, scope: !2646) +!2648 = !DILocation(line: 1073, column: 13, scope: !2642) +!2649 = !DILocation(line: 1074, column: 24, scope: !2650) +!2650 = distinct !DILexicalBlock(scope: !2646, file: !3, line: 1073, column: 46) +!2651 = !DILocation(line: 1075, column: 25, scope: !2650) +!2652 = !DILocation(line: 1076, column: 24, scope: !2650) +!2653 = !DILocation(line: 1077, column: 25, scope: !2650) +!2654 = !DILocation(line: 1079, column: 35, scope: !2650) +!2655 = !DILocation(line: 1079, column: 26, scope: !2650) +!2656 = !DILocation(line: 1080, column: 40, scope: !2650) +!2657 = !DILocation(line: 1080, column: 31, scope: !2650) +!2658 = !DILocation(line: 1080, column: 30, scope: !2650) +!2659 = !DILocation(line: 1082, column: 26, scope: !2650) +!2660 = !DILocation(line: 1082, column: 42, scope: !2650) +!2661 = !DILocation(line: 1083, column: 26, scope: !2650) +!2662 = !DILocation(line: 1083, column: 42, scope: !2650) +!2663 = !DILocation(line: 1085, column: 26, scope: !2650) +!2664 = !DILocation(line: 1085, column: 42, scope: !2650) +!2665 = !DILocation(line: 1086, column: 26, scope: !2650) +!2666 = !DILocation(line: 1086, column: 42, scope: !2650) +!2667 = !DILocation(line: 1088, column: 50, scope: !2650) +!2668 = !DILocation(line: 1088, column: 15, scope: !2650) +!2669 = !DILocation(line: 1088, column: 31, scope: !2650) +!2670 = !DILocation(line: 1088, column: 39, scope: !2650) +!2671 = !DILocation(line: 1089, column: 50, scope: !2650) +!2672 = !DILocation(line: 1089, column: 15, scope: !2650) +!2673 = !DILocation(line: 1089, column: 31, scope: !2650) +!2674 = !DILocation(line: 1089, column: 39, scope: !2650) +!2675 = !DILocation(line: 1091, column: 36, scope: !2650) +!2676 = !DILocation(line: 1092, column: 36, scope: !2650) +!2677 = !DILocation(line: 1093, column: 51, scope: !2650) +!2678 = !DILocation(line: 1093, column: 76, scope: !2650) +!2679 = !DILocation(line: 1093, column: 64, scope: !2650) +!2680 = !DILocation(line: 1093, column: 15, scope: !2650) +!2681 = !DILocation(line: 1093, column: 31, scope: !2650) +!2682 = !DILocation(line: 1093, column: 39, scope: !2650) +!2683 = !DILocation(line: 1094, column: 51, scope: !2650) +!2684 = !DILocation(line: 1094, column: 76, scope: !2650) +!2685 = !DILocation(line: 1094, column: 64, scope: !2650) +!2686 = !DILocation(line: 1094, column: 15, scope: !2650) +!2687 = !DILocation(line: 1094, column: 31, scope: !2650) +!2688 = !DILocation(line: 1094, column: 39, scope: !2650) +!2689 = !DILocation(line: 1096, column: 13, scope: !2650) +!2690 = !DILocation(line: 1073, column: 42, scope: !2646) +!2691 = !DILocation(line: 1073, column: 13, scope: !2646) +!2692 = distinct !{!2692, !2648, !2693} +!2693 = !DILocation(line: 1096, column: 13, scope: !2642) +!2694 = !DILocation(line: 1097, column: 11, scope: !2643) +!2695 = !DILocation(line: 1072, column: 40, scope: !2638) +!2696 = !DILocation(line: 1072, column: 11, scope: !2638) +!2697 = distinct !{!2697, !2640, !2698} +!2698 = !DILocation(line: 1097, column: 11, scope: !2635) +!2699 = !DILocation(line: 1098, column: 16, scope: !2700) +!2700 = distinct !DILexicalBlock(scope: !2628, file: !3, line: 1098, column: 14) +!2701 = !DILocation(line: 1098, column: 14, scope: !2628) +!2702 = !DILocation(line: 1100, column: 18, scope: !2703) +!2703 = distinct !DILexicalBlock(scope: !2704, file: !3, line: 1100, column: 13) +!2704 = distinct !DILexicalBlock(scope: !2700, file: !3, line: 1098, column: 25) +!2705 = !DILocation(line: 0, scope: !2703) +!2706 = !DILocation(line: 1100, column: 29, scope: !2707) +!2707 = distinct !DILexicalBlock(scope: !2703, file: !3, line: 1100, column: 13) +!2708 = !DILocation(line: 1100, column: 13, scope: !2703) +!2709 = !DILocation(line: 1101, column: 37, scope: !2710) +!2710 = distinct !DILexicalBlock(scope: !2707, file: !3, line: 1100, column: 41) +!2711 = !DILocation(line: 1101, column: 15, scope: !2710) +!2712 = !DILocation(line: 1101, column: 35, scope: !2710) +!2713 = !DILocation(line: 1102, column: 37, scope: !2710) +!2714 = !DILocation(line: 1102, column: 15, scope: !2710) +!2715 = !DILocation(line: 1102, column: 35, scope: !2710) +!2716 = !DILocation(line: 1103, column: 13, scope: !2710) +!2717 = !DILocation(line: 1100, column: 37, scope: !2707) +!2718 = !DILocation(line: 1100, column: 13, scope: !2707) +!2719 = distinct !{!2719, !2708, !2720} +!2720 = !DILocation(line: 1103, column: 13, scope: !2703) +!2721 = !DILocation(line: 1104, column: 11, scope: !2704) +!2722 = !DILocation(line: 1105, column: 21, scope: !2723) +!2723 = distinct !DILexicalBlock(scope: !2700, file: !3, line: 1104, column: 16) +!2724 = !DILocation(line: 1106, column: 25, scope: !2723) +!2725 = !DILocation(line: 1106, column: 28, scope: !2723) +!2726 = !DILocation(line: 1106, column: 20, scope: !2723) +!2727 = !DILocation(line: 1107, column: 34, scope: !2723) +!2728 = !DILocation(line: 1107, column: 30, scope: !2723) +!2729 = !DILocation(line: 1107, column: 20, scope: !2723) +!2730 = !DILocation(line: 1108, column: 20, scope: !2723) +!2731 = !DILocation(line: 1112, column: 18, scope: !2732) +!2732 = distinct !DILexicalBlock(scope: !2723, file: !3, line: 1112, column: 13) +!2733 = !DILocation(line: 0, scope: !2732) +!2734 = !DILocation(line: 1112, column: 35, scope: !2735) +!2735 = distinct !DILexicalBlock(scope: !2732, file: !3, line: 1112, column: 13) +!2736 = !DILocation(line: 1112, column: 29, scope: !2735) +!2737 = !DILocation(line: 1112, column: 13, scope: !2732) +!2738 = !DILocation(line: 1113, column: 20, scope: !2739) +!2739 = distinct !DILexicalBlock(scope: !2740, file: !3, line: 1113, column: 15) +!2740 = distinct !DILexicalBlock(scope: !2735, file: !3, line: 1112, column: 46) +!2741 = !DILocation(line: 0, scope: !2739) +!2742 = !DILocation(line: 1113, column: 37, scope: !2743) +!2743 = distinct !DILexicalBlock(scope: !2739, file: !3, line: 1113, column: 15) +!2744 = !DILocation(line: 1113, column: 31, scope: !2743) +!2745 = !DILocation(line: 1113, column: 15, scope: !2739) +!2746 = !DILocation(line: 1114, column: 26, scope: !2747) +!2747 = distinct !DILexicalBlock(scope: !2743, file: !3, line: 1113, column: 48) +!2748 = !DILocation(line: 1115, column: 27, scope: !2747) +!2749 = !DILocation(line: 1116, column: 26, scope: !2747) +!2750 = !DILocation(line: 1117, column: 27, scope: !2747) +!2751 = !DILocation(line: 1119, column: 37, scope: !2747) +!2752 = !DILocation(line: 1119, column: 28, scope: !2747) +!2753 = !DILocation(line: 1120, column: 42, scope: !2747) +!2754 = !DILocation(line: 1120, column: 33, scope: !2747) +!2755 = !DILocation(line: 1120, column: 32, scope: !2747) +!2756 = !DILocation(line: 1122, column: 28, scope: !2747) +!2757 = !DILocation(line: 1122, column: 44, scope: !2747) +!2758 = !DILocation(line: 1123, column: 28, scope: !2747) +!2759 = !DILocation(line: 1123, column: 44, scope: !2747) +!2760 = !DILocation(line: 1125, column: 28, scope: !2747) +!2761 = !DILocation(line: 1125, column: 44, scope: !2747) +!2762 = !DILocation(line: 1126, column: 28, scope: !2747) +!2763 = !DILocation(line: 1126, column: 44, scope: !2747) +!2764 = !DILocation(line: 1128, column: 52, scope: !2747) +!2765 = !DILocation(line: 1128, column: 17, scope: !2747) +!2766 = !DILocation(line: 1128, column: 33, scope: !2747) +!2767 = !DILocation(line: 1128, column: 41, scope: !2747) +!2768 = !DILocation(line: 1129, column: 52, scope: !2747) +!2769 = !DILocation(line: 1129, column: 17, scope: !2747) +!2770 = !DILocation(line: 1129, column: 33, scope: !2747) +!2771 = !DILocation(line: 1129, column: 41, scope: !2747) +!2772 = !DILocation(line: 1131, column: 39, scope: !2747) +!2773 = !DILocation(line: 1132, column: 39, scope: !2747) +!2774 = !DILocation(line: 1133, column: 53, scope: !2747) +!2775 = !DILocation(line: 1133, column: 79, scope: !2747) +!2776 = !DILocation(line: 1133, column: 67, scope: !2747) +!2777 = !DILocation(line: 1133, column: 17, scope: !2747) +!2778 = !DILocation(line: 1133, column: 33, scope: !2747) +!2779 = !DILocation(line: 1133, column: 41, scope: !2747) +!2780 = !DILocation(line: 1134, column: 53, scope: !2747) +!2781 = !DILocation(line: 1134, column: 79, scope: !2747) +!2782 = !DILocation(line: 1134, column: 67, scope: !2747) +!2783 = !DILocation(line: 1134, column: 17, scope: !2747) +!2784 = !DILocation(line: 1134, column: 33, scope: !2747) +!2785 = !DILocation(line: 1134, column: 41, scope: !2747) +!2786 = !DILocation(line: 1135, column: 15, scope: !2747) +!2787 = !DILocation(line: 1113, column: 44, scope: !2743) +!2788 = !DILocation(line: 1113, column: 15, scope: !2743) +!2789 = distinct !{!2789, !2745, !2790} +!2790 = !DILocation(line: 1135, column: 15, scope: !2739) +!2791 = !DILocation(line: 1136, column: 13, scope: !2740) +!2792 = !DILocation(line: 1112, column: 42, scope: !2735) +!2793 = !DILocation(line: 1112, column: 13, scope: !2735) +!2794 = distinct !{!2794, !2737, !2795} +!2795 = !DILocation(line: 1136, column: 13, scope: !2732) +!2796 = !DILocation(line: 1138, column: 9, scope: !2628) +!2797 = !DILocation(line: 1065, column: 34, scope: !2625) +!2798 = !DILocation(line: 1065, column: 9, scope: !2625) +!2799 = distinct !{!2799, !2626, !2800} +!2800 = !DILocation(line: 1138, column: 9, scope: !2622) +!2801 = !DILocation(line: 1140, column: 14, scope: !2802) +!2802 = distinct !DILexicalBlock(scope: !2590, file: !3, line: 1140, column: 9) +!2803 = !DILocation(line: 0, scope: !2802) +!2804 = !DILocation(line: 1140, column: 23, scope: !2805) +!2805 = distinct !DILexicalBlock(scope: !2802, file: !3, line: 1140, column: 9) +!2806 = !DILocation(line: 1140, column: 9, scope: !2802) +!2807 = !DILocation(line: 1141, column: 49, scope: !2808) +!2808 = distinct !DILexicalBlock(scope: !2805, file: !3, line: 1140, column: 34) +!2809 = !DILocation(line: 1141, column: 20, scope: !2808) +!2810 = !DILocation(line: 1141, column: 27, scope: !2808) +!2811 = !DILocation(line: 1141, column: 23, scope: !2808) +!2812 = !DILocation(line: 1141, column: 38, scope: !2808) +!2813 = !DILocation(line: 1141, column: 34, scope: !2808) +!2814 = !DILocation(line: 1141, column: 31, scope: !2808) +!2815 = !DILocation(line: 1141, column: 42, scope: !2808) +!2816 = !DILocation(line: 1141, column: 11, scope: !2808) +!2817 = !DILocation(line: 1141, column: 47, scope: !2808) +!2818 = !DILocation(line: 1142, column: 49, scope: !2808) +!2819 = !DILocation(line: 1142, column: 20, scope: !2808) +!2820 = !DILocation(line: 1142, column: 27, scope: !2808) +!2821 = !DILocation(line: 1142, column: 23, scope: !2808) +!2822 = !DILocation(line: 1142, column: 38, scope: !2808) +!2823 = !DILocation(line: 1142, column: 34, scope: !2808) +!2824 = !DILocation(line: 1142, column: 31, scope: !2808) +!2825 = !DILocation(line: 1142, column: 42, scope: !2808) +!2826 = !DILocation(line: 1142, column: 11, scope: !2808) +!2827 = !DILocation(line: 1142, column: 47, scope: !2808) +!2828 = !DILocation(line: 1143, column: 9, scope: !2808) +!2829 = !DILocation(line: 1140, column: 30, scope: !2805) +!2830 = !DILocation(line: 1140, column: 9, scope: !2805) +!2831 = distinct !{!2831, !2806, !2832} +!2832 = !DILocation(line: 1143, column: 9, scope: !2802) +!2833 = !DILocation(line: 1144, column: 7, scope: !2590) +!2834 = !DILocation(line: 1058, column: 29, scope: !2586) +!2835 = !DILocation(line: 1058, column: 7, scope: !2586) +!2836 = distinct !{!2836, !2587, !2837} +!2837 = !DILocation(line: 1144, column: 7, scope: !2582) +!2838 = !DILocation(line: 1145, column: 5, scope: !2583) +!2839 = !DILocation(line: 1055, column: 26, scope: !2579) +!2840 = !DILocation(line: 1055, column: 5, scope: !2579) +!2841 = distinct !{!2841, !2580, !2842} +!2842 = !DILocation(line: 1145, column: 5, scope: !2575) +!2843 = !DILocation(line: 1150, column: 1, scope: !2531) +!2844 = distinct !DISubprogram(name: "cffts1_neg", scope: !3, file: !3, line: 764, type: !761, scopeLine: 765, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !2845) +!2845 = !{!2846, !2847, !2848, !2849, !2850, !2851, !2852, !2853, !2854, !2855, !2856, !2857, !2858, !2859, !2860, !2861, !2862, !2863, !2864, !2865, !2866, !2867, !2868, !2869, !2870, !2871, !2872, !2873, !2874, !2875, !2876, !2877, !2878, !2879, !2880, !2881, !2882, !2883} +!2846 = !DILocalVariable(name: "is", arg: 1, scope: !2844, file: !3, line: 764, type: !12) +!2847 = !DILocalVariable(name: "d1", arg: 2, scope: !2844, file: !3, line: 764, type: !12) +!2848 = !DILocalVariable(name: "d2", arg: 3, scope: !2844, file: !3, line: 764, type: !12) +!2849 = !DILocalVariable(name: "d3", arg: 4, scope: !2844, file: !3, line: 764, type: !12) +!2850 = !DILocalVariable(name: "logd1", scope: !2844, file: !3, line: 766, type: !12) +!2851 = !DILocalVariable(name: "i", scope: !2844, file: !3, line: 767, type: !12) +!2852 = !DILocalVariable(name: "j", scope: !2844, file: !3, line: 767, type: !12) +!2853 = !DILocalVariable(name: "k", scope: !2844, file: !3, line: 767, type: !12) +!2854 = !DILocalVariable(name: "jj", scope: !2844, file: !3, line: 767, type: !12) +!2855 = !DILocalVariable(name: "l", scope: !2844, file: !3, line: 768, type: !12) +!2856 = !DILocalVariable(name: "j1", scope: !2844, file: !3, line: 768, type: !12) +!2857 = !DILocalVariable(name: "i1", scope: !2844, file: !3, line: 768, type: !12) +!2858 = !DILocalVariable(name: "k1", scope: !2844, file: !3, line: 768, type: !12) +!2859 = !DILocalVariable(name: "n1", scope: !2844, file: !3, line: 769, type: !12) +!2860 = !DILocalVariable(name: "li", scope: !2844, file: !3, line: 769, type: !12) +!2861 = !DILocalVariable(name: "lj", scope: !2844, file: !3, line: 769, type: !12) +!2862 = !DILocalVariable(name: "lk", scope: !2844, file: !3, line: 769, type: !12) +!2863 = !DILocalVariable(name: "ku", scope: !2844, file: !3, line: 769, type: !12) +!2864 = !DILocalVariable(name: "i11", scope: !2844, file: !3, line: 769, type: !12) +!2865 = !DILocalVariable(name: "i12", scope: !2844, file: !3, line: 769, type: !12) +!2866 = !DILocalVariable(name: "i21", scope: !2844, file: !3, line: 769, type: !12) +!2867 = !DILocalVariable(name: "i22", scope: !2844, file: !3, line: 769, type: !12) +!2868 = !DILocalVariable(name: "uu1_real", scope: !2844, file: !3, line: 770, type: !11) +!2869 = !DILocalVariable(name: "x11_real", scope: !2844, file: !3, line: 770, type: !11) +!2870 = !DILocalVariable(name: "x21_real", scope: !2844, file: !3, line: 770, type: !11) +!2871 = !DILocalVariable(name: "uu1_imag", scope: !2844, file: !3, line: 771, type: !11) +!2872 = !DILocalVariable(name: "x11_imag", scope: !2844, file: !3, line: 771, type: !11) +!2873 = !DILocalVariable(name: "x21_imag", scope: !2844, file: !3, line: 771, type: !11) +!2874 = !DILocalVariable(name: "uu2_real", scope: !2844, file: !3, line: 772, type: !11) +!2875 = !DILocalVariable(name: "x12_real", scope: !2844, file: !3, line: 772, type: !11) +!2876 = !DILocalVariable(name: "x22_real", scope: !2844, file: !3, line: 772, type: !11) +!2877 = !DILocalVariable(name: "uu2_imag", scope: !2844, file: !3, line: 773, type: !11) +!2878 = !DILocalVariable(name: "x12_imag", scope: !2844, file: !3, line: 773, type: !11) +!2879 = !DILocalVariable(name: "x22_imag", scope: !2844, file: !3, line: 773, type: !11) +!2880 = !DILocalVariable(name: "temp_real", scope: !2844, file: !3, line: 774, type: !11) +!2881 = !DILocalVariable(name: "temp2_real", scope: !2844, file: !3, line: 774, type: !11) +!2882 = !DILocalVariable(name: "temp_imag", scope: !2844, file: !3, line: 775, type: !11) +!2883 = !DILocalVariable(name: "temp2_imag", scope: !2844, file: !3, line: 775, type: !11) +!2884 = !DILocation(line: 0, scope: !2844) +!2885 = !DILocation(line: 767, column: 16, scope: !2844) +!2886 = !DILocation(line: 777, column: 11, scope: !2844) +!2887 = !DILocation(line: 794, column: 10, scope: !2888) +!2888 = distinct !DILexicalBlock(scope: !2889, file: !3, line: 794, column: 5) +!2889 = distinct !DILexicalBlock(scope: !2844, file: !3, line: 791, column: 3) +!2890 = !DILocation(line: 0, scope: !2888) +!2891 = !DILocation(line: 794, column: 19, scope: !2892) +!2892 = distinct !DILexicalBlock(scope: !2888, file: !3, line: 794, column: 5) +!2893 = !DILocation(line: 794, column: 5, scope: !2888) +!2894 = !DILocation(line: 797, column: 12, scope: !2895) +!2895 = distinct !DILexicalBlock(scope: !2896, file: !3, line: 797, column: 7) +!2896 = distinct !DILexicalBlock(scope: !2892, file: !3, line: 794, column: 30) +!2897 = !DILocation(line: 0, scope: !2895) +!2898 = !DILocation(line: 797, column: 21, scope: !2899) +!2899 = distinct !DILexicalBlock(scope: !2895, file: !3, line: 797, column: 7) +!2900 = !DILocation(line: 797, column: 7, scope: !2895) +!2901 = !DILocation(line: 799, column: 14, scope: !2902) +!2902 = distinct !DILexicalBlock(scope: !2903, file: !3, line: 799, column: 9) +!2903 = distinct !DILexicalBlock(scope: !2899, file: !3, line: 797, column: 32) +!2904 = !DILocation(line: 0, scope: !2902) +!2905 = !DILocation(line: 799, column: 23, scope: !2906) +!2906 = distinct !DILexicalBlock(scope: !2902, file: !3, line: 799, column: 9) +!2907 = !DILocation(line: 799, column: 9, scope: !2902) +!2908 = !DILocation(line: 800, column: 41, scope: !2909) +!2909 = distinct !DILexicalBlock(scope: !2906, file: !3, line: 799, column: 34) +!2910 = !DILocation(line: 800, column: 48, scope: !2909) +!2911 = !DILocation(line: 800, column: 44, scope: !2909) +!2912 = !DILocation(line: 800, column: 59, scope: !2909) +!2913 = !DILocation(line: 800, column: 55, scope: !2909) +!2914 = !DILocation(line: 800, column: 52, scope: !2909) +!2915 = !DILocation(line: 800, column: 63, scope: !2909) +!2916 = !DILocation(line: 800, column: 32, scope: !2909) +!2917 = !DILocation(line: 800, column: 11, scope: !2909) +!2918 = !DILocation(line: 800, column: 30, scope: !2909) +!2919 = !DILocation(line: 801, column: 41, scope: !2909) +!2920 = !DILocation(line: 801, column: 48, scope: !2909) +!2921 = !DILocation(line: 801, column: 44, scope: !2909) +!2922 = !DILocation(line: 801, column: 59, scope: !2909) +!2923 = !DILocation(line: 801, column: 55, scope: !2909) +!2924 = !DILocation(line: 801, column: 52, scope: !2909) +!2925 = !DILocation(line: 801, column: 63, scope: !2909) +!2926 = !DILocation(line: 801, column: 32, scope: !2909) +!2927 = !DILocation(line: 801, column: 11, scope: !2909) +!2928 = !DILocation(line: 801, column: 30, scope: !2909) +!2929 = !DILocation(line: 802, column: 9, scope: !2909) +!2930 = !DILocation(line: 799, column: 30, scope: !2906) +!2931 = !DILocation(line: 799, column: 9, scope: !2906) +!2932 = distinct !{!2932, !2907, !2933} +!2933 = !DILocation(line: 802, column: 9, scope: !2902) +!2934 = !DILocation(line: 804, column: 13, scope: !2935) +!2935 = distinct !DILexicalBlock(scope: !2903, file: !3, line: 804, column: 9) +!2936 = !DILocation(line: 0, scope: !2935) +!2937 = !DILocation(line: 804, column: 22, scope: !2938) +!2938 = distinct !DILexicalBlock(scope: !2935, file: !3, line: 804, column: 9) +!2939 = !DILocation(line: 804, column: 9, scope: !2935) +!2940 = !DILocation(line: 805, column: 19, scope: !2941) +!2941 = distinct !DILexicalBlock(scope: !2938, file: !3, line: 804, column: 39) +!2942 = !DILocation(line: 806, column: 24, scope: !2941) +!2943 = !DILocation(line: 806, column: 18, scope: !2941) +!2944 = !DILocation(line: 807, column: 28, scope: !2941) +!2945 = !DILocation(line: 807, column: 18, scope: !2941) +!2946 = !DILocation(line: 808, column: 18, scope: !2941) +!2947 = !DILocation(line: 811, column: 16, scope: !2948) +!2948 = distinct !DILexicalBlock(scope: !2941, file: !3, line: 811, column: 11) +!2949 = !DILocation(line: 0, scope: !2948) +!2950 = !DILocation(line: 811, column: 33, scope: !2951) +!2951 = distinct !DILexicalBlock(scope: !2948, file: !3, line: 811, column: 11) +!2952 = !DILocation(line: 811, column: 27, scope: !2951) +!2953 = !DILocation(line: 811, column: 11, scope: !2948) +!2954 = !DILocation(line: 812, column: 18, scope: !2955) +!2955 = distinct !DILexicalBlock(scope: !2956, file: !3, line: 812, column: 13) +!2956 = distinct !DILexicalBlock(scope: !2951, file: !3, line: 811, column: 44) +!2957 = !DILocation(line: 0, scope: !2955) +!2958 = !DILocation(line: 812, column: 35, scope: !2959) +!2959 = distinct !DILexicalBlock(scope: !2955, file: !3, line: 812, column: 13) +!2960 = !DILocation(line: 812, column: 29, scope: !2959) +!2961 = !DILocation(line: 812, column: 13, scope: !2955) +!2962 = !DILocation(line: 813, column: 24, scope: !2963) +!2963 = distinct !DILexicalBlock(scope: !2959, file: !3, line: 812, column: 46) +!2964 = !DILocation(line: 814, column: 25, scope: !2963) +!2965 = !DILocation(line: 815, column: 24, scope: !2963) +!2966 = !DILocation(line: 816, column: 25, scope: !2963) +!2967 = !DILocation(line: 818, column: 35, scope: !2963) +!2968 = !DILocation(line: 818, column: 26, scope: !2963) +!2969 = !DILocation(line: 819, column: 40, scope: !2963) +!2970 = !DILocation(line: 819, column: 31, scope: !2963) +!2971 = !DILocation(line: 819, column: 30, scope: !2963) +!2972 = !DILocation(line: 821, column: 26, scope: !2963) +!2973 = !DILocation(line: 821, column: 42, scope: !2963) +!2974 = !DILocation(line: 822, column: 26, scope: !2963) +!2975 = !DILocation(line: 822, column: 42, scope: !2963) +!2976 = !DILocation(line: 824, column: 26, scope: !2963) +!2977 = !DILocation(line: 824, column: 42, scope: !2963) +!2978 = !DILocation(line: 825, column: 26, scope: !2963) +!2979 = !DILocation(line: 825, column: 42, scope: !2963) +!2980 = !DILocation(line: 827, column: 50, scope: !2963) +!2981 = !DILocation(line: 827, column: 15, scope: !2963) +!2982 = !DILocation(line: 827, column: 31, scope: !2963) +!2983 = !DILocation(line: 827, column: 39, scope: !2963) +!2984 = !DILocation(line: 828, column: 50, scope: !2963) +!2985 = !DILocation(line: 828, column: 15, scope: !2963) +!2986 = !DILocation(line: 828, column: 31, scope: !2963) +!2987 = !DILocation(line: 828, column: 39, scope: !2963) +!2988 = !DILocation(line: 830, column: 36, scope: !2963) +!2989 = !DILocation(line: 831, column: 36, scope: !2963) +!2990 = !DILocation(line: 832, column: 51, scope: !2963) +!2991 = !DILocation(line: 832, column: 76, scope: !2963) +!2992 = !DILocation(line: 832, column: 64, scope: !2963) +!2993 = !DILocation(line: 832, column: 15, scope: !2963) +!2994 = !DILocation(line: 832, column: 31, scope: !2963) +!2995 = !DILocation(line: 832, column: 39, scope: !2963) +!2996 = !DILocation(line: 833, column: 51, scope: !2963) +!2997 = !DILocation(line: 833, column: 76, scope: !2963) +!2998 = !DILocation(line: 833, column: 64, scope: !2963) +!2999 = !DILocation(line: 833, column: 15, scope: !2963) +!3000 = !DILocation(line: 833, column: 31, scope: !2963) +!3001 = !DILocation(line: 833, column: 39, scope: !2963) +!3002 = !DILocation(line: 835, column: 13, scope: !2963) +!3003 = !DILocation(line: 812, column: 42, scope: !2959) +!3004 = !DILocation(line: 812, column: 13, scope: !2959) +!3005 = distinct !{!3005, !2961, !3006} +!3006 = !DILocation(line: 835, column: 13, scope: !2955) +!3007 = !DILocation(line: 836, column: 11, scope: !2956) +!3008 = !DILocation(line: 811, column: 40, scope: !2951) +!3009 = !DILocation(line: 811, column: 11, scope: !2951) +!3010 = distinct !{!3010, !2953, !3011} +!3011 = !DILocation(line: 836, column: 11, scope: !2948) +!3012 = !DILocation(line: 837, column: 16, scope: !3013) +!3013 = distinct !DILexicalBlock(scope: !2941, file: !3, line: 837, column: 14) +!3014 = !DILocation(line: 837, column: 14, scope: !2941) +!3015 = !DILocation(line: 839, column: 18, scope: !3016) +!3016 = distinct !DILexicalBlock(scope: !3017, file: !3, line: 839, column: 13) +!3017 = distinct !DILexicalBlock(scope: !3013, file: !3, line: 837, column: 25) +!3018 = !DILocation(line: 0, scope: !3016) +!3019 = !DILocation(line: 839, column: 29, scope: !3020) +!3020 = distinct !DILexicalBlock(scope: !3016, file: !3, line: 839, column: 13) +!3021 = !DILocation(line: 839, column: 13, scope: !3016) +!3022 = !DILocation(line: 840, column: 37, scope: !3023) +!3023 = distinct !DILexicalBlock(scope: !3020, file: !3, line: 839, column: 41) +!3024 = !DILocation(line: 840, column: 15, scope: !3023) +!3025 = !DILocation(line: 840, column: 35, scope: !3023) +!3026 = !DILocation(line: 841, column: 37, scope: !3023) +!3027 = !DILocation(line: 841, column: 15, scope: !3023) +!3028 = !DILocation(line: 841, column: 35, scope: !3023) +!3029 = !DILocation(line: 842, column: 13, scope: !3023) +!3030 = !DILocation(line: 839, column: 37, scope: !3020) +!3031 = !DILocation(line: 839, column: 13, scope: !3020) +!3032 = distinct !{!3032, !3021, !3033} +!3033 = !DILocation(line: 842, column: 13, scope: !3016) +!3034 = !DILocation(line: 843, column: 11, scope: !3017) +!3035 = !DILocation(line: 844, column: 21, scope: !3036) +!3036 = distinct !DILexicalBlock(scope: !3013, file: !3, line: 843, column: 16) +!3037 = !DILocation(line: 845, column: 25, scope: !3036) +!3038 = !DILocation(line: 845, column: 28, scope: !3036) +!3039 = !DILocation(line: 845, column: 20, scope: !3036) +!3040 = !DILocation(line: 846, column: 34, scope: !3036) +!3041 = !DILocation(line: 846, column: 30, scope: !3036) +!3042 = !DILocation(line: 846, column: 20, scope: !3036) +!3043 = !DILocation(line: 847, column: 20, scope: !3036) +!3044 = !DILocation(line: 851, column: 18, scope: !3045) +!3045 = distinct !DILexicalBlock(scope: !3036, file: !3, line: 851, column: 13) +!3046 = !DILocation(line: 0, scope: !3045) +!3047 = !DILocation(line: 851, column: 35, scope: !3048) +!3048 = distinct !DILexicalBlock(scope: !3045, file: !3, line: 851, column: 13) +!3049 = !DILocation(line: 851, column: 29, scope: !3048) +!3050 = !DILocation(line: 851, column: 13, scope: !3045) +!3051 = !DILocation(line: 852, column: 20, scope: !3052) +!3052 = distinct !DILexicalBlock(scope: !3053, file: !3, line: 852, column: 15) +!3053 = distinct !DILexicalBlock(scope: !3048, file: !3, line: 851, column: 46) +!3054 = !DILocation(line: 0, scope: !3052) +!3055 = !DILocation(line: 852, column: 37, scope: !3056) +!3056 = distinct !DILexicalBlock(scope: !3052, file: !3, line: 852, column: 15) +!3057 = !DILocation(line: 852, column: 31, scope: !3056) +!3058 = !DILocation(line: 852, column: 15, scope: !3052) +!3059 = !DILocation(line: 853, column: 26, scope: !3060) +!3060 = distinct !DILexicalBlock(scope: !3056, file: !3, line: 852, column: 48) +!3061 = !DILocation(line: 854, column: 27, scope: !3060) +!3062 = !DILocation(line: 855, column: 26, scope: !3060) +!3063 = !DILocation(line: 856, column: 27, scope: !3060) +!3064 = !DILocation(line: 858, column: 37, scope: !3060) +!3065 = !DILocation(line: 858, column: 28, scope: !3060) +!3066 = !DILocation(line: 859, column: 42, scope: !3060) +!3067 = !DILocation(line: 859, column: 33, scope: !3060) +!3068 = !DILocation(line: 859, column: 32, scope: !3060) +!3069 = !DILocation(line: 861, column: 28, scope: !3060) +!3070 = !DILocation(line: 861, column: 44, scope: !3060) +!3071 = !DILocation(line: 862, column: 28, scope: !3060) +!3072 = !DILocation(line: 862, column: 44, scope: !3060) +!3073 = !DILocation(line: 864, column: 28, scope: !3060) +!3074 = !DILocation(line: 864, column: 44, scope: !3060) +!3075 = !DILocation(line: 865, column: 28, scope: !3060) +!3076 = !DILocation(line: 865, column: 44, scope: !3060) +!3077 = !DILocation(line: 867, column: 52, scope: !3060) +!3078 = !DILocation(line: 867, column: 17, scope: !3060) +!3079 = !DILocation(line: 867, column: 33, scope: !3060) +!3080 = !DILocation(line: 867, column: 41, scope: !3060) +!3081 = !DILocation(line: 868, column: 52, scope: !3060) +!3082 = !DILocation(line: 868, column: 17, scope: !3060) +!3083 = !DILocation(line: 868, column: 33, scope: !3060) +!3084 = !DILocation(line: 868, column: 41, scope: !3060) +!3085 = !DILocation(line: 870, column: 39, scope: !3060) +!3086 = !DILocation(line: 871, column: 39, scope: !3060) +!3087 = !DILocation(line: 872, column: 53, scope: !3060) +!3088 = !DILocation(line: 872, column: 79, scope: !3060) +!3089 = !DILocation(line: 872, column: 67, scope: !3060) +!3090 = !DILocation(line: 872, column: 17, scope: !3060) +!3091 = !DILocation(line: 872, column: 33, scope: !3060) +!3092 = !DILocation(line: 872, column: 41, scope: !3060) +!3093 = !DILocation(line: 873, column: 53, scope: !3060) +!3094 = !DILocation(line: 873, column: 79, scope: !3060) +!3095 = !DILocation(line: 873, column: 67, scope: !3060) +!3096 = !DILocation(line: 873, column: 17, scope: !3060) +!3097 = !DILocation(line: 873, column: 33, scope: !3060) +!3098 = !DILocation(line: 873, column: 41, scope: !3060) +!3099 = !DILocation(line: 874, column: 15, scope: !3060) +!3100 = !DILocation(line: 852, column: 44, scope: !3056) +!3101 = !DILocation(line: 852, column: 15, scope: !3056) +!3102 = distinct !{!3102, !3058, !3103} +!3103 = !DILocation(line: 874, column: 15, scope: !3052) +!3104 = !DILocation(line: 875, column: 13, scope: !3053) +!3105 = !DILocation(line: 851, column: 42, scope: !3048) +!3106 = !DILocation(line: 851, column: 13, scope: !3048) +!3107 = distinct !{!3107, !3050, !3108} +!3108 = !DILocation(line: 875, column: 13, scope: !3045) +!3109 = !DILocation(line: 877, column: 9, scope: !2941) +!3110 = !DILocation(line: 804, column: 34, scope: !2938) +!3111 = !DILocation(line: 804, column: 9, scope: !2938) +!3112 = distinct !{!3112, !2939, !3113} +!3113 = !DILocation(line: 877, column: 9, scope: !2935) +!3114 = !DILocation(line: 880, column: 14, scope: !3115) +!3115 = distinct !DILexicalBlock(scope: !2903, file: !3, line: 880, column: 9) +!3116 = !DILocation(line: 0, scope: !3115) +!3117 = !DILocation(line: 880, column: 23, scope: !3118) +!3118 = distinct !DILexicalBlock(scope: !3115, file: !3, line: 880, column: 9) +!3119 = !DILocation(line: 880, column: 9, scope: !3115) +!3120 = !DILocation(line: 881, column: 49, scope: !3121) +!3121 = distinct !DILexicalBlock(scope: !3118, file: !3, line: 880, column: 34) +!3122 = !DILocation(line: 881, column: 20, scope: !3121) +!3123 = !DILocation(line: 881, column: 27, scope: !3121) +!3124 = !DILocation(line: 881, column: 23, scope: !3121) +!3125 = !DILocation(line: 881, column: 38, scope: !3121) +!3126 = !DILocation(line: 881, column: 34, scope: !3121) +!3127 = !DILocation(line: 881, column: 31, scope: !3121) +!3128 = !DILocation(line: 881, column: 42, scope: !3121) +!3129 = !DILocation(line: 881, column: 11, scope: !3121) +!3130 = !DILocation(line: 881, column: 47, scope: !3121) +!3131 = !DILocation(line: 882, column: 49, scope: !3121) +!3132 = !DILocation(line: 882, column: 20, scope: !3121) +!3133 = !DILocation(line: 882, column: 27, scope: !3121) +!3134 = !DILocation(line: 882, column: 23, scope: !3121) +!3135 = !DILocation(line: 882, column: 38, scope: !3121) +!3136 = !DILocation(line: 882, column: 34, scope: !3121) +!3137 = !DILocation(line: 882, column: 31, scope: !3121) +!3138 = !DILocation(line: 882, column: 42, scope: !3121) +!3139 = !DILocation(line: 882, column: 11, scope: !3121) +!3140 = !DILocation(line: 882, column: 47, scope: !3121) +!3141 = !DILocation(line: 883, column: 9, scope: !3121) +!3142 = !DILocation(line: 880, column: 30, scope: !3118) +!3143 = !DILocation(line: 880, column: 9, scope: !3118) +!3144 = distinct !{!3144, !3119, !3145} +!3145 = !DILocation(line: 883, column: 9, scope: !3115) +!3146 = !DILocation(line: 884, column: 7, scope: !2903) +!3147 = !DILocation(line: 797, column: 28, scope: !2899) +!3148 = !DILocation(line: 797, column: 7, scope: !2899) +!3149 = distinct !{!3149, !2900, !3150} +!3150 = !DILocation(line: 884, column: 7, scope: !2895) +!3151 = !DILocation(line: 885, column: 5, scope: !2896) +!3152 = !DILocation(line: 794, column: 26, scope: !2892) +!3153 = !DILocation(line: 794, column: 5, scope: !2892) +!3154 = distinct !{!3154, !2893, !3155} +!3155 = !DILocation(line: 885, column: 5, scope: !2888) +!3156 = !DILocation(line: 890, column: 1, scope: !2844) +!3157 = distinct !DISubprogram(name: "dcmplx_div", scope: !3, file: !3, line: 122, type: !3158, scopeLine: 122, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !3160) +!3158 = !DISubroutineType(types: !3159) +!3159 = !{!56, !56, !56} +!3160 = !{!3161, !3162, !3163, !3164, !3165, !3166, !3167, !3168, !3169, !3170} +!3161 = !DILocalVariable(name: "z1", arg: 1, scope: !3157, file: !3, line: 122, type: !56) +!3162 = !DILocalVariable(name: "z2", arg: 2, scope: !3157, file: !3, line: 122, type: !56) +!3163 = !DILocalVariable(name: "a", scope: !3157, file: !3, line: 123, type: !11) +!3164 = !DILocalVariable(name: "b", scope: !3157, file: !3, line: 124, type: !11) +!3165 = !DILocalVariable(name: "c", scope: !3157, file: !3, line: 125, type: !11) +!3166 = !DILocalVariable(name: "d", scope: !3157, file: !3, line: 126, type: !11) +!3167 = !DILocalVariable(name: "divisor", scope: !3157, file: !3, line: 128, type: !11) +!3168 = !DILocalVariable(name: "real", scope: !3157, file: !3, line: 129, type: !11) +!3169 = !DILocalVariable(name: "imag", scope: !3157, file: !3, line: 130, type: !11) +!3170 = !DILocalVariable(name: "result", scope: !3157, file: !3, line: 131, type: !56) +!3171 = !DILocation(line: 0, scope: !3157) +!3172 = !DILocation(line: 128, column: 21, scope: !3157) +!3173 = !DILocation(line: 128, column: 27, scope: !3157) +!3174 = !DILocation(line: 128, column: 24, scope: !3157) +!3175 = !DILocation(line: 129, column: 19, scope: !3157) +!3176 = !DILocation(line: 129, column: 25, scope: !3157) +!3177 = !DILocation(line: 129, column: 22, scope: !3157) +!3178 = !DILocation(line: 129, column: 29, scope: !3157) +!3179 = !DILocation(line: 130, column: 19, scope: !3157) +!3180 = !DILocation(line: 130, column: 25, scope: !3157) +!3181 = !DILocation(line: 130, column: 22, scope: !3157) +!3182 = !DILocation(line: 130, column: 29, scope: !3157) +!3183 = !DILocation(line: 133, column: 1, scope: !3157) diff --git a/llvm/test/Analysis/MemUseDefAnalysis/LU-HP.ll b/llvm/test/Analysis/MemUseDefAnalysis/LU-HP.ll new file mode 100644 index 0000000000000..b840e0b233e05 --- /dev/null +++ b/llvm/test/Analysis/MemUseDefAnalysis/LU-HP.ll @@ -0,0 +1,876 @@ +; RUN: opt < %s -passes="print" -disable-output 2>&1 | FileCheck %s + +; CHECK-DAG: Use::trecs At:: lu.c:334 Defined at: lu.c:326, +; CHECK-DAG: Use::timeron At:: lu.c:324 Defined at: lu.c:224, lu.c:238, +; CHECK-DAG: Use::trecs At:: lu.c:334 Defined at: lu.c:326, +; CHECK-DAG: Use::trecs At:: lu.c:336 Defined at: lu.c:326, +; CHECK-DAG: Use::trecs At:: lu.c:336 Defined at: lu.c:326, +; CHECK-DAG: Use::trecs At:: lu.c:336 Defined at: lu.c:326, +; CHECK-DAG: Use::trecs At:: lu.c:338 Defined at: lu.c:326, + +; ModuleID = 'omp-host.ll' +source_filename = "lu.c" +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] } +%struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 } + +@.str = private unnamed_addr constant [11 x i8] c"timer.flag\00", align 1 +@.str.1 = private unnamed_addr constant [2 x i8] c"r\00", align 1 +@timeron = common dso_local global i32 0, align 4, !dbg !0 +@.str.2 = private unnamed_addr constant [6 x i8] c"total\00", align 1 +@.str.3 = private unnamed_addr constant [5 x i8] c"rhsx\00", align 1 +@.str.4 = private unnamed_addr constant [5 x i8] c"rhsy\00", align 1 +@.str.5 = private unnamed_addr constant [5 x i8] c"rhsz\00", align 1 +@.str.6 = private unnamed_addr constant [4 x i8] c"rhs\00", align 1 +@.str.7 = private unnamed_addr constant [6 x i8] c"jacld\00", align 1 +@.str.8 = private unnamed_addr constant [5 x i8] c"blts\00", align 1 +@.str.9 = private unnamed_addr constant [5 x i8] c"jacu\00", align 1 +@.str.10 = private unnamed_addr constant [5 x i8] c"buts\00", align 1 +@.str.11 = private unnamed_addr constant [4 x i8] c"add\00", align 1 +@.str.12 = private unnamed_addr constant [7 x i8] c"l2norm\00", align 1 +@itmax = common dso_local global i32 0, align 4, !dbg !145 +@rsdnm = common dso_local global [5 x double] zeroinitializer, align 16, !dbg !137 +@errnm = common dso_local global [5 x double] zeroinitializer, align 16, !dbg !139 +@frc = common dso_local global double 0.000000e+00, align 8, !dbg !141 +@nx0 = common dso_local global i32 0, align 4, !dbg !46 +@ny0 = common dso_local global i32 0, align 4, !dbg !48 +@nz0 = common dso_local global i32 0, align 4, !dbg !50 +@maxtime = common dso_local global double 0.000000e+00, align 8, !dbg !192 +@.str.13 = private unnamed_addr constant [3 x i8] c"LU\00", align 1 +@.str.14 = private unnamed_addr constant [25 x i8] c" floating point\00", align 1 +@.str.15 = private unnamed_addr constant [6 x i8] c"3.3.1\00", align 1 +@.str.16 = private unnamed_addr constant [12 x i8] c"29 Jan 2019\00", align 1 +@.str.17 = private unnamed_addr constant [7 x i8] c"(none)\00", align 1 +@.str.18 = private unnamed_addr constant [4 x i8] c"-lm\00", align 1 +@.str.19 = private unnamed_addr constant [12 x i8] c"-I../common\00", align 1 +@.str.20 = private unnamed_addr constant [27 x i8] c" SECTION Time (secs)\0A\00", align 1 +@.str.21 = private unnamed_addr constant [25 x i8] c" %-8s:%9.3f (%6.2f%%)\0A\00", align 1 +@.str.22 = private unnamed_addr constant [31 x i8] c" --> %8s:%9.3f (%6.2f%%)\0A\00", align 1 +@.str.23 = private unnamed_addr constant [8 x i8] c"sub-rhs\00", align 1 +@.str.24 = private unnamed_addr constant [9 x i8] c"rest-rhs\00", align 1 +@dxi = common dso_local global double 0.000000e+00, align 8, !dbg !15 +@deta = common dso_local global double 0.000000e+00, align 8, !dbg !17 +@dzeta = common dso_local global double 0.000000e+00, align 8, !dbg !19 +@tx1 = common dso_local global double 0.000000e+00, align 8, !dbg !21 +@tx2 = common dso_local global double 0.000000e+00, align 8, !dbg !23 +@tx3 = common dso_local global double 0.000000e+00, align 8, !dbg !25 +@ty1 = common dso_local global double 0.000000e+00, align 8, !dbg !27 +@ty2 = common dso_local global double 0.000000e+00, align 8, !dbg !29 +@ty3 = common dso_local global double 0.000000e+00, align 8, !dbg !31 +@tz1 = common dso_local global double 0.000000e+00, align 8, !dbg !33 +@tz2 = common dso_local global double 0.000000e+00, align 8, !dbg !35 +@tz3 = common dso_local global double 0.000000e+00, align 8, !dbg !37 +@nx = common dso_local global i32 0, align 4, !dbg !39 +@ny = common dso_local global i32 0, align 4, !dbg !42 +@nz = common dso_local global i32 0, align 4, !dbg !44 +@ist = common dso_local global i32 0, align 4, !dbg !52 +@iend = common dso_local global i32 0, align 4, !dbg !54 +@jst = common dso_local global i32 0, align 4, !dbg !56 +@jend = common dso_local global i32 0, align 4, !dbg !58 +@ii1 = common dso_local global i32 0, align 4, !dbg !60 +@ii2 = common dso_local global i32 0, align 4, !dbg !62 +@ji1 = common dso_local global i32 0, align 4, !dbg !64 +@ji2 = common dso_local global i32 0, align 4, !dbg !66 +@ki1 = common dso_local global i32 0, align 4, !dbg !68 +@ki2 = common dso_local global i32 0, align 4, !dbg !70 +@dx1 = common dso_local global double 0.000000e+00, align 8, !dbg !72 +@dx2 = common dso_local global double 0.000000e+00, align 8, !dbg !74 +@dx3 = common dso_local global double 0.000000e+00, align 8, !dbg !76 +@dx4 = common dso_local global double 0.000000e+00, align 8, !dbg !78 +@dx5 = common dso_local global double 0.000000e+00, align 8, !dbg !80 +@dy1 = common dso_local global double 0.000000e+00, align 8, !dbg !82 +@dy2 = common dso_local global double 0.000000e+00, align 8, !dbg !84 +@dy3 = common dso_local global double 0.000000e+00, align 8, !dbg !86 +@dy4 = common dso_local global double 0.000000e+00, align 8, !dbg !88 +@dy5 = common dso_local global double 0.000000e+00, align 8, !dbg !90 +@dz1 = common dso_local global double 0.000000e+00, align 8, !dbg !92 +@dz2 = common dso_local global double 0.000000e+00, align 8, !dbg !94 +@dz3 = common dso_local global double 0.000000e+00, align 8, !dbg !96 +@dz4 = common dso_local global double 0.000000e+00, align 8, !dbg !98 +@dz5 = common dso_local global double 0.000000e+00, align 8, !dbg !100 +@dssp = common dso_local global double 0.000000e+00, align 8, !dbg !102 +@u = common dso_local global [5 x [64 x [65 x [65 x double]]]] zeroinitializer, align 16, !dbg !104 +@rsd = common dso_local global [5 x [64 x [65 x [65 x double]]]] zeroinitializer, align 16, !dbg !111 +@frct = common dso_local global [5 x [64 x [65 x [65 x double]]]] zeroinitializer, align 16, !dbg !113 +@flux_G = common dso_local global [5 x [64 x [64 x [64 x double]]]] zeroinitializer, align 16, !dbg !115 +@qs = common dso_local global [64 x [65 x [65 x double]]] zeroinitializer, align 16, !dbg !119 +@rho_i = common dso_local global [64 x [65 x [65 x double]]] zeroinitializer, align 16, !dbg !123 +@ipr = common dso_local global i32 0, align 4, !dbg !125 +@inorm = common dso_local global i32 0, align 4, !dbg !127 +@dt = common dso_local global double 0.000000e+00, align 8, !dbg !129 +@omega = common dso_local global double 0.000000e+00, align 8, !dbg !131 +@tolrsd = common dso_local global [5 x double] zeroinitializer, align 16, !dbg !133 +@ttotal = common dso_local global double 0.000000e+00, align 8, !dbg !143 +@invert = common dso_local global i32 0, align 4, !dbg !147 +@a = common dso_local global [5 x [5 x [4096 x double]]] zeroinitializer, align 16, !dbg !149 +@b = common dso_local global [5 x [5 x [4096 x double]]] zeroinitializer, align 16, !dbg !154 +@c = common dso_local global [5 x [5 x [4096 x double]]] zeroinitializer, align 16, !dbg !156 +@d = common dso_local global [5 x [5 x [4096 x double]]] zeroinitializer, align 16, !dbg !158 +@np = common dso_local global [187 x i32] zeroinitializer, align 16, !dbg !160 +@indxp = common dso_local global [187 x [3072 x i32]] zeroinitializer, align 16, !dbg !165 +@jndxp = common dso_local global [187 x [3072 x i32]] zeroinitializer, align 16, !dbg !170 +@tmat = common dso_local global [5 x [5 x [3072 x double]]] zeroinitializer, align 16, !dbg !172 +@tv = common dso_local global [5 x [3072 x double]] zeroinitializer, align 16, !dbg !176 +@utmp_G = common dso_local global [6 x [64 x [64 x [64 x double]]]] zeroinitializer, align 16, !dbg !180 +@rtmp_G = common dso_local global [5 x [64 x [64 x [64 x double]]]] zeroinitializer, align 16, !dbg !185 +@ce = common dso_local global [5 x [13 x double]] zeroinitializer, align 16, !dbg !187 + +; Function Attrs: nounwind uwtable +define dso_local void @omp_device_mem_init() #0 !dbg !199 { +entry: + ret void, !dbg !203 +} + +; Function Attrs: nounwind uwtable +define dso_local void @omp_device_mem_delete() #0 !dbg !204 { +entry: + ret void, !dbg !205 +} + +; Function Attrs: nounwind uwtable +define dso_local i32 @main(i32 %argc, i8** %argv) #0 !dbg !206 { +entry: + %Class = alloca i8, align 1 + %verified = alloca i32, align 4 + %trecs = alloca [12 x double], align 16 + %t_names = alloca [12 x i8*], align 16 + call void @llvm.dbg.value(metadata i32 %argc, metadata !213, metadata !DIExpression()), !dbg !287 + call void @llvm.dbg.value(metadata i8** %argv, metadata !214, metadata !DIExpression()), !dbg !287 + call void @llvm.lifetime.start.p0i8(i64 1, i8* %Class) #5, !dbg !288 + call void @llvm.dbg.declare(metadata i8* %Class, metadata !215, metadata !DIExpression()), !dbg !289 + %0 = bitcast i32* %verified to i8*, !dbg !290 + call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #5, !dbg !290 + call void @llvm.dbg.declare(metadata i32* %verified, metadata !216, metadata !DIExpression()), !dbg !291 + %1 = bitcast [12 x double]* %trecs to i8*, !dbg !292 + call void @llvm.lifetime.start.p0i8(i64 96, i8* %1) #5, !dbg !292 + call void @llvm.dbg.declare(metadata [12 x double]* %trecs, metadata !220, metadata !DIExpression()), !dbg !293 + %2 = bitcast [12 x i8*]* %t_names to i8*, !dbg !294 + call void @llvm.lifetime.start.p0i8(i64 96, i8* %2) #5, !dbg !294 + call void @llvm.dbg.declare(metadata [12 x i8*]* %t_names, metadata !225, metadata !DIExpression()), !dbg !295 + %call = call %struct._IO_FILE* @fopen(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0)), !dbg !296 + call void @llvm.dbg.value(metadata %struct._IO_FILE* %call, metadata !227, metadata !DIExpression()), !dbg !287 + %cmp = icmp ne %struct._IO_FILE* %call, null, !dbg !298 + br i1 %cmp, label %if.then, label %if.else, !dbg !299 + +if.then: ; preds = %entry + store i32 1, i32* @timeron, align 4, !dbg !300, !tbaa !302 + %arrayidx = getelementptr inbounds [12 x i8*], [12 x i8*]* %t_names, i64 0, i64 1, !dbg !305 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8** %arrayidx, align 8, !dbg !306, !tbaa !307 + %arrayidx1 = getelementptr inbounds [12 x i8*], [12 x i8*]* %t_names, i64 0, i64 2, !dbg !309 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8** %arrayidx1, align 16, !dbg !310, !tbaa !307 + %arrayidx2 = getelementptr inbounds [12 x i8*], [12 x i8*]* %t_names, i64 0, i64 3, !dbg !311 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0), i8** %arrayidx2, align 8, !dbg !312, !tbaa !307 + %arrayidx3 = getelementptr inbounds [12 x i8*], [12 x i8*]* %t_names, i64 0, i64 4, !dbg !313 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i8** %arrayidx3, align 16, !dbg !314, !tbaa !307 + %arrayidx4 = getelementptr inbounds [12 x i8*], [12 x i8*]* %t_names, i64 0, i64 5, !dbg !315 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0), i8** %arrayidx4, align 8, !dbg !316, !tbaa !307 + %arrayidx5 = getelementptr inbounds [12 x i8*], [12 x i8*]* %t_names, i64 0, i64 6, !dbg !317 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i8** %arrayidx5, align 16, !dbg !318, !tbaa !307 + %arrayidx6 = getelementptr inbounds [12 x i8*], [12 x i8*]* %t_names, i64 0, i64 7, !dbg !319 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i8** %arrayidx6, align 8, !dbg !320, !tbaa !307 + %arrayidx7 = getelementptr inbounds [12 x i8*], [12 x i8*]* %t_names, i64 0, i64 8, !dbg !321 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i64 0, i64 0), i8** %arrayidx7, align 16, !dbg !322, !tbaa !307 + %arrayidx8 = getelementptr inbounds [12 x i8*], [12 x i8*]* %t_names, i64 0, i64 9, !dbg !323 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i8** %arrayidx8, align 8, !dbg !324, !tbaa !307 + %arrayidx9 = getelementptr inbounds [12 x i8*], [12 x i8*]* %t_names, i64 0, i64 10, !dbg !325 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i8** %arrayidx9, align 16, !dbg !326, !tbaa !307 + %arrayidx10 = getelementptr inbounds [12 x i8*], [12 x i8*]* %t_names, i64 0, i64 11, !dbg !327 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.12, i64 0, i64 0), i8** %arrayidx10, align 8, !dbg !328, !tbaa !307 + %call11 = call i32 @fclose(%struct._IO_FILE* %call), !dbg !329 + br label %if.end, !dbg !330 + +if.else: ; preds = %entry + store i32 0, i32* @timeron, align 4, !dbg !331, !tbaa !302 + br label %if.end + +if.end: ; preds = %if.else, %if.then + call void (...) @read_input(), !dbg !333 + call void (...) @domain(), !dbg !334 + call void (...) @setcoeff(), !dbg !335 + call void @omp_device_mem_init(), !dbg !336 + call void (...) @setbv(), !dbg !337 + call void (...) @setiv(), !dbg !338 + call void (...) @erhs(), !dbg !339 + call void @ssor(i32 1), !dbg !340 + call void (...) @setbv(), !dbg !341 + call void (...) @setiv(), !dbg !342 + %3 = load i32, i32* @itmax, align 4, !dbg !343, !tbaa !344 + call void @ssor(i32 %3), !dbg !346 + call void (...) @error(), !dbg !347 + call void (...) @pintgr(), !dbg !348 + call void @omp_device_mem_delete(), !dbg !349 + %4 = load double, double* @frc, align 8, !dbg !350, !tbaa !351 + call void @verify(double* getelementptr inbounds ([5 x double], [5 x double]* @rsdnm, i64 0, i64 0), double* getelementptr inbounds ([5 x double], [5 x double]* @errnm, i64 0, i64 0), double %4, i8* %Class, i32* %verified), !dbg !353 + %5 = load i32, i32* @itmax, align 4, !dbg !354, !tbaa !344 + %conv = sitofp i32 %5 to double, !dbg !355 + %6 = load i32, i32* @nx0, align 4, !dbg !356, !tbaa !344 + %conv12 = sitofp i32 %6 to double, !dbg !357 + %mul = fmul double 1.984770e+03, %conv12, !dbg !358 + %7 = load i32, i32* @ny0, align 4, !dbg !359, !tbaa !344 + %conv13 = sitofp i32 %7 to double, !dbg !360 + %mul14 = fmul double %mul, %conv13, !dbg !361 + %8 = load i32, i32* @nz0, align 4, !dbg !362, !tbaa !344 + %conv15 = sitofp i32 %8 to double, !dbg !363 + %mul16 = fmul double %mul14, %conv15, !dbg !364 + %9 = load i32, i32* @nx0, align 4, !dbg !365, !tbaa !344 + %10 = load i32, i32* @ny0, align 4, !dbg !366, !tbaa !344 + %add = add nsw i32 %9, %10, !dbg !367 + %11 = load i32, i32* @nz0, align 4, !dbg !368, !tbaa !344 + %add17 = add nsw i32 %add, %11, !dbg !369 + %conv18 = sitofp i32 %add17 to double, !dbg !370 + %div = fdiv double %conv18, 3.000000e+00, !dbg !371 + %call19 = call double @pow(double %div, double 2.000000e+00) #5, !dbg !372 + %mul20 = fmul double 1.092330e+04, %call19, !dbg !373 + %sub = fsub double %mul16, %mul20, !dbg !374 + %12 = load i32, i32* @nx0, align 4, !dbg !375, !tbaa !344 + %13 = load i32, i32* @ny0, align 4, !dbg !376, !tbaa !344 + %add21 = add nsw i32 %12, %13, !dbg !377 + %14 = load i32, i32* @nz0, align 4, !dbg !378, !tbaa !344 + %add22 = add nsw i32 %add21, %14, !dbg !379 + %conv23 = sitofp i32 %add22 to double, !dbg !380 + %mul24 = fmul double 2.777090e+04, %conv23, !dbg !381 + %div25 = fdiv double %mul24, 3.000000e+00, !dbg !382 + %add26 = fadd double %sub, %div25, !dbg !383 + %sub27 = fsub double %add26, 1.440100e+05, !dbg !384 + %mul28 = fmul double %conv, %sub27, !dbg !385 + %15 = load double, double* @maxtime, align 8, !dbg !386, !tbaa !351 + %mul29 = fmul double %15, 1.000000e+06, !dbg !387 + %div30 = fdiv double %mul28, %mul29, !dbg !388 + call void @llvm.dbg.value(metadata double %div30, metadata !217, metadata !DIExpression()), !dbg !287 + %16 = load i8, i8* %Class, align 1, !dbg !389, !tbaa !302 + %17 = load i32, i32* @nx0, align 4, !dbg !390, !tbaa !344 + %18 = load i32, i32* @ny0, align 4, !dbg !391, !tbaa !344 + %19 = load i32, i32* @nz0, align 4, !dbg !392, !tbaa !344 + %20 = load i32, i32* @itmax, align 4, !dbg !393, !tbaa !344 + %21 = load double, double* @maxtime, align 8, !dbg !394, !tbaa !351 + %22 = load i32, i32* %verified, align 4, !dbg !395, !tbaa !302 + call void @print_results(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.13, i64 0, i64 0), i8 signext %16, i32 %17, i32 %18, i32 %19, i32 %20, double %21, double %div30, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.14, i64 0, i64 0), i32 %22, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.16, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.18, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.19, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0)), !dbg !396 + %23 = load i32, i32* @timeron, align 4, !dbg !397, !tbaa !302 + %tobool = icmp ne i32 %23, 0, !dbg !397 + br i1 %tobool, label %if.then31, label %if.end75, !dbg !399 + +if.then31: ; preds = %if.end + call void @llvm.dbg.value(metadata i32 1, metadata !224, metadata !DIExpression()), !dbg !287 + br label %for.cond, !dbg !400 + +for.cond: ; preds = %for.inc, %if.then31 + %i.0 = phi i32 [ 1, %if.then31 ], [ %inc, %for.inc ], !dbg !403 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !224, metadata !DIExpression()), !dbg !287 + %cmp32 = icmp sle i32 %i.0, 11, !dbg !404 + br i1 %cmp32, label %for.body, label %for.end, !dbg !406 + +for.body: ; preds = %for.cond + %call34 = call double @timer_read(i32 %i.0), !dbg !407 + %idxprom = sext i32 %i.0 to i64, !dbg !409 + %arrayidx35 = getelementptr inbounds [12 x double], [12 x double]* %trecs, i64 0, i64 %idxprom, !dbg !409 + store double %call34, double* %arrayidx35, align 8, !dbg !410, !tbaa !351 + br label %for.inc, !dbg !411 + +for.inc: ; preds = %for.body + %inc = add nsw i32 %i.0, 1, !dbg !412 + call void @llvm.dbg.value(metadata i32 %inc, metadata !224, metadata !DIExpression()), !dbg !287 + br label %for.cond, !dbg !413, !llvm.loop !414 + +for.end: ; preds = %for.cond + %24 = load double, double* @maxtime, align 8, !dbg !416, !tbaa !351 + call void @llvm.dbg.value(metadata double %24, metadata !219, metadata !DIExpression()), !dbg !287 + %cmp36 = fcmp oeq double %24, 0.000000e+00, !dbg !417 + br i1 %cmp36, label %if.then38, label %if.end39, !dbg !419 + +if.then38: ; preds = %for.end + call void @llvm.dbg.value(metadata double 1.000000e+00, metadata !219, metadata !DIExpression()), !dbg !287 + br label %if.end39, !dbg !420 + +if.end39: ; preds = %if.then38, %for.end + %tmax.0 = phi double [ 1.000000e+00, %if.then38 ], [ %24, %for.end ], !dbg !421 + call void @llvm.dbg.value(metadata double %tmax.0, metadata !219, metadata !DIExpression()), !dbg !287 + %call40 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.20, i64 0, i64 0)), !dbg !422 + call void @llvm.dbg.value(metadata i32 1, metadata !224, metadata !DIExpression()), !dbg !287 + br label %for.cond41, !dbg !423 + +for.cond41: ; preds = %for.inc72, %if.end39 + %i.1 = phi i32 [ 1, %if.end39 ], [ %inc73, %for.inc72 ], !dbg !425 + call void @llvm.dbg.value(metadata i32 %i.1, metadata !224, metadata !DIExpression()), !dbg !287 + %cmp42 = icmp sle i32 %i.1, 11, !dbg !426 + br i1 %cmp42, label %for.body44, label %for.end74, !dbg !428 + +for.body44: ; preds = %for.cond41 + %idxprom45 = sext i32 %i.1 to i64, !dbg !429 + %arrayidx46 = getelementptr inbounds [12 x i8*], [12 x i8*]* %t_names, i64 0, i64 %idxprom45, !dbg !429 + %25 = load i8*, i8** %arrayidx46, align 8, !dbg !429, !tbaa !307 + %idxprom47 = sext i32 %i.1 to i64, !dbg !431 + %arrayidx48 = getelementptr inbounds [12 x double], [12 x double]* %trecs, i64 0, i64 %idxprom47, !dbg !431 + %26 = load double, double* %arrayidx48, align 8, !dbg !431, !tbaa !351 + %idxprom49 = sext i32 %i.1 to i64, !dbg !432 + %arrayidx50 = getelementptr inbounds [12 x double], [12 x double]* %trecs, i64 0, i64 %idxprom49, !dbg !432 + %27 = load double, double* %arrayidx50, align 8, !dbg !432, !tbaa !351 + %mul51 = fmul double %27, 1.000000e+02, !dbg !433 + %div52 = fdiv double %mul51, %tmax.0, !dbg !434 + %call53 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.21, i64 0, i64 0), i8* %25, double %26, double %div52), !dbg !435 + %cmp54 = icmp eq i32 %i.1, 5, !dbg !436 + br i1 %cmp54, label %if.then56, label %if.end71, !dbg !438 + +if.then56: ; preds = %for.body44 + %arrayidx57 = getelementptr inbounds [12 x double], [12 x double]* %trecs, i64 0, i64 2, !dbg !439 + %28 = load double, double* %arrayidx57, align 16, !dbg !439, !tbaa !351 + %arrayidx58 = getelementptr inbounds [12 x double], [12 x double]* %trecs, i64 0, i64 3, !dbg !441 + %29 = load double, double* %arrayidx58, align 8, !dbg !441, !tbaa !351 + %add59 = fadd double %28, %29, !dbg !442 + %arrayidx60 = getelementptr inbounds [12 x double], [12 x double]* %trecs, i64 0, i64 4, !dbg !443 + %30 = load double, double* %arrayidx60, align 16, !dbg !443, !tbaa !351 + %add61 = fadd double %add59, %30, !dbg !444 + call void @llvm.dbg.value(metadata double %add61, metadata !218, metadata !DIExpression()), !dbg !287 + %mul62 = fmul double %add61, 1.000000e+02, !dbg !445 + %div63 = fdiv double %mul62, %tmax.0, !dbg !446 + %call64 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.22, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.23, i64 0, i64 0), double %add61, double %div63), !dbg !447 + %idxprom65 = sext i32 %i.1 to i64, !dbg !448 + %arrayidx66 = getelementptr inbounds [12 x double], [12 x double]* %trecs, i64 0, i64 %idxprom65, !dbg !448 + %31 = load double, double* %arrayidx66, align 8, !dbg !448, !tbaa !351 + %sub67 = fsub double %31, %add61, !dbg !449 + call void @llvm.dbg.value(metadata double %sub67, metadata !218, metadata !DIExpression()), !dbg !287 + %mul68 = fmul double %sub67, 1.000000e+02, !dbg !450 + %div69 = fdiv double %mul68, %tmax.0, !dbg !451 + %call70 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.22, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.24, i64 0, i64 0), double %sub67, double %div69), !dbg !452 + br label %if.end71, !dbg !453 + +if.end71: ; preds = %if.then56, %for.body44 + br label %for.inc72, !dbg !454 + +for.inc72: ; preds = %if.end71 + %inc73 = add nsw i32 %i.1, 1, !dbg !455 + call void @llvm.dbg.value(metadata i32 %inc73, metadata !224, metadata !DIExpression()), !dbg !287 + br label %for.cond41, !dbg !456, !llvm.loop !457 + +for.end74: ; preds = %for.cond41 + br label %if.end75, !dbg !459 + +if.end75: ; preds = %for.end74, %if.end + %32 = bitcast [12 x i8*]* %t_names to i8*, !dbg !460 + call void @llvm.lifetime.end.p0i8(i64 96, i8* %32) #5, !dbg !460 + %33 = bitcast [12 x double]* %trecs to i8*, !dbg !460 + call void @llvm.lifetime.end.p0i8(i64 96, i8* %33) #5, !dbg !460 + %34 = bitcast i32* %verified to i8*, !dbg !460 + call void @llvm.lifetime.end.p0i8(i64 4, i8* %34) #5, !dbg !460 + call void @llvm.lifetime.end.p0i8(i64 1, i8* %Class) #5, !dbg !460 + ret i32 0, !dbg !460 +} + +; Function Attrs: nounwind readnone speculatable +declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 + +; Function Attrs: argmemonly nounwind +declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #2 + +declare dso_local %struct._IO_FILE* @fopen(i8*, i8*) #3 + +declare dso_local i32 @fclose(%struct._IO_FILE*) #3 + +declare dso_local void @read_input(...) #3 + +declare dso_local void @domain(...) #3 + +declare dso_local void @setcoeff(...) #3 + +declare dso_local void @setbv(...) #3 + +declare dso_local void @setiv(...) #3 + +declare dso_local void @erhs(...) #3 + +declare dso_local void @ssor(i32) #3 + +declare dso_local void @error(...) #3 + +declare dso_local void @pintgr(...) #3 + +declare dso_local void @verify(double*, double*, double, i8*, i32*) #3 + +; Function Attrs: nounwind +declare dso_local double @pow(double, double) #4 + +declare dso_local void @print_results(i8*, i8 signext, i32, i32, i32, i32, double, double, i8*, i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*) #3 + +declare dso_local double @timer_read(i32) #3 + +declare dso_local i32 @printf(i8*, ...) #3 + +; Function Attrs: argmemonly nounwind +declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #2 + +; Function Attrs: nounwind readnone speculatable +declare void @llvm.dbg.value(metadata, metadata, metadata) #1 + +attributes #0 = { nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #1 = { nounwind readnone speculatable } +attributes #2 = { argmemonly nounwind } +attributes #3 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #4 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #5 = { nounwind } + +!llvm.dbg.cu = !{!2} +!llvm.module.flags = !{!195, !196, !197} +!llvm.ident = !{!198} + +!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) +!1 = distinct !DIGlobalVariable(name: "timeron", scope: !2, file: !3, line: 159, type: !194, isLocal: false, isDefinition: true) +!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 9.0.0 (git@github.com:prithayan/llvm-project.git 9683f06d0ed55984d96f430331d28b1437b7dd07)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, retainedTypes: !11, globals: !14, nameTableKind: None) +!3 = !DIFile(filename: "lu.c", directory: "/home/prithayan/project/openmp_benchmark/schandra_udel/NAS_SHOC_OpenACC_2.5/NAS-OMP-OFFLOADING/LU-HP") +!4 = !{!5} +!5 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !6, line: 4, baseType: !7, size: 32, elements: !8) +!6 = !DIFile(filename: "./type.h", directory: "/home/prithayan/project/openmp_benchmark/schandra_udel/NAS_SHOC_OpenACC_2.5/NAS-OMP-OFFLOADING/LU-HP") +!7 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) +!8 = !{!9, !10} +!9 = !DIEnumerator(name: "false", value: 0, isUnsigned: true) +!10 = !DIEnumerator(name: "true", value: 1, isUnsigned: true) +!11 = !{!12, !13} +!12 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) +!13 = !DIBasicType(name: "double", size: 64, encoding: DW_ATE_float) +!14 = !{!15, !17, !19, !21, !23, !25, !27, !29, !31, !33, !35, !37, !39, !42, !44, !46, !48, !50, !52, !54, !56, !58, !60, !62, !64, !66, !68, !70, !72, !74, !76, !78, !80, !82, !84, !86, !88, !90, !92, !94, !96, !98, !100, !102, !104, !111, !113, !115, !119, !123, !125, !127, !129, !131, !133, !137, !139, !141, !143, !145, !147, !149, !154, !156, !158, !160, !165, !170, !172, !176, !180, !185, !187, !192, !0} +!15 = !DIGlobalVariableExpression(var: !16, expr: !DIExpression()) +!16 = distinct !DIGlobalVariable(name: "dxi", scope: !2, file: !3, line: 84, type: !13, isLocal: false, isDefinition: true) +!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) +!18 = distinct !DIGlobalVariable(name: "deta", scope: !2, file: !3, line: 84, type: !13, isLocal: false, isDefinition: true) +!19 = !DIGlobalVariableExpression(var: !20, expr: !DIExpression()) +!20 = distinct !DIGlobalVariable(name: "dzeta", scope: !2, file: !3, line: 84, type: !13, isLocal: false, isDefinition: true) +!21 = !DIGlobalVariableExpression(var: !22, expr: !DIExpression()) +!22 = distinct !DIGlobalVariable(name: "tx1", scope: !2, file: !3, line: 85, type: !13, isLocal: false, isDefinition: true) +!23 = !DIGlobalVariableExpression(var: !24, expr: !DIExpression()) +!24 = distinct !DIGlobalVariable(name: "tx2", scope: !2, file: !3, line: 85, type: !13, isLocal: false, isDefinition: true) +!25 = !DIGlobalVariableExpression(var: !26, expr: !DIExpression()) +!26 = distinct !DIGlobalVariable(name: "tx3", scope: !2, file: !3, line: 85, type: !13, isLocal: false, isDefinition: true) +!27 = !DIGlobalVariableExpression(var: !28, expr: !DIExpression()) +!28 = distinct !DIGlobalVariable(name: "ty1", scope: !2, file: !3, line: 86, type: !13, isLocal: false, isDefinition: true) +!29 = !DIGlobalVariableExpression(var: !30, expr: !DIExpression()) +!30 = distinct !DIGlobalVariable(name: "ty2", scope: !2, file: !3, line: 86, type: !13, isLocal: false, isDefinition: true) +!31 = !DIGlobalVariableExpression(var: !32, expr: !DIExpression()) +!32 = distinct !DIGlobalVariable(name: "ty3", scope: !2, file: !3, line: 86, type: !13, isLocal: false, isDefinition: true) +!33 = !DIGlobalVariableExpression(var: !34, expr: !DIExpression()) +!34 = distinct !DIGlobalVariable(name: "tz1", scope: !2, file: !3, line: 87, type: !13, isLocal: false, isDefinition: true) +!35 = !DIGlobalVariableExpression(var: !36, expr: !DIExpression()) +!36 = distinct !DIGlobalVariable(name: "tz2", scope: !2, file: !3, line: 87, type: !13, isLocal: false, isDefinition: true) +!37 = !DIGlobalVariableExpression(var: !38, expr: !DIExpression()) +!38 = distinct !DIGlobalVariable(name: "tz3", scope: !2, file: !3, line: 87, type: !13, isLocal: false, isDefinition: true) +!39 = !DIGlobalVariableExpression(var: !40, expr: !DIExpression()) +!40 = distinct !DIGlobalVariable(name: "nx", scope: !2, file: !3, line: 88, type: !41, isLocal: false, isDefinition: true) +!41 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!42 = !DIGlobalVariableExpression(var: !43, expr: !DIExpression()) +!43 = distinct !DIGlobalVariable(name: "ny", scope: !2, file: !3, line: 88, type: !41, isLocal: false, isDefinition: true) +!44 = !DIGlobalVariableExpression(var: !45, expr: !DIExpression()) +!45 = distinct !DIGlobalVariable(name: "nz", scope: !2, file: !3, line: 88, type: !41, isLocal: false, isDefinition: true) +!46 = !DIGlobalVariableExpression(var: !47, expr: !DIExpression()) +!47 = distinct !DIGlobalVariable(name: "nx0", scope: !2, file: !3, line: 89, type: !41, isLocal: false, isDefinition: true) +!48 = !DIGlobalVariableExpression(var: !49, expr: !DIExpression()) +!49 = distinct !DIGlobalVariable(name: "ny0", scope: !2, file: !3, line: 89, type: !41, isLocal: false, isDefinition: true) +!50 = !DIGlobalVariableExpression(var: !51, expr: !DIExpression()) +!51 = distinct !DIGlobalVariable(name: "nz0", scope: !2, file: !3, line: 89, type: !41, isLocal: false, isDefinition: true) +!52 = !DIGlobalVariableExpression(var: !53, expr: !DIExpression()) +!53 = distinct !DIGlobalVariable(name: "ist", scope: !2, file: !3, line: 90, type: !41, isLocal: false, isDefinition: true) +!54 = !DIGlobalVariableExpression(var: !55, expr: !DIExpression()) +!55 = distinct !DIGlobalVariable(name: "iend", scope: !2, file: !3, line: 90, type: !41, isLocal: false, isDefinition: true) +!56 = !DIGlobalVariableExpression(var: !57, expr: !DIExpression()) +!57 = distinct !DIGlobalVariable(name: "jst", scope: !2, file: !3, line: 91, type: !41, isLocal: false, isDefinition: true) +!58 = !DIGlobalVariableExpression(var: !59, expr: !DIExpression()) +!59 = distinct !DIGlobalVariable(name: "jend", scope: !2, file: !3, line: 91, type: !41, isLocal: false, isDefinition: true) +!60 = !DIGlobalVariableExpression(var: !61, expr: !DIExpression()) +!61 = distinct !DIGlobalVariable(name: "ii1", scope: !2, file: !3, line: 92, type: !41, isLocal: false, isDefinition: true) +!62 = !DIGlobalVariableExpression(var: !63, expr: !DIExpression()) +!63 = distinct !DIGlobalVariable(name: "ii2", scope: !2, file: !3, line: 92, type: !41, isLocal: false, isDefinition: true) +!64 = !DIGlobalVariableExpression(var: !65, expr: !DIExpression()) +!65 = distinct !DIGlobalVariable(name: "ji1", scope: !2, file: !3, line: 93, type: !41, isLocal: false, isDefinition: true) +!66 = !DIGlobalVariableExpression(var: !67, expr: !DIExpression()) +!67 = distinct !DIGlobalVariable(name: "ji2", scope: !2, file: !3, line: 93, type: !41, isLocal: false, isDefinition: true) +!68 = !DIGlobalVariableExpression(var: !69, expr: !DIExpression()) +!69 = distinct !DIGlobalVariable(name: "ki1", scope: !2, file: !3, line: 94, type: !41, isLocal: false, isDefinition: true) +!70 = !DIGlobalVariableExpression(var: !71, expr: !DIExpression()) +!71 = distinct !DIGlobalVariable(name: "ki2", scope: !2, file: !3, line: 94, type: !41, isLocal: false, isDefinition: true) +!72 = !DIGlobalVariableExpression(var: !73, expr: !DIExpression()) +!73 = distinct !DIGlobalVariable(name: "dx1", scope: !2, file: !3, line: 100, type: !13, isLocal: false, isDefinition: true) +!74 = !DIGlobalVariableExpression(var: !75, expr: !DIExpression()) +!75 = distinct !DIGlobalVariable(name: "dx2", scope: !2, file: !3, line: 100, type: !13, isLocal: false, isDefinition: true) +!76 = !DIGlobalVariableExpression(var: !77, expr: !DIExpression()) +!77 = distinct !DIGlobalVariable(name: "dx3", scope: !2, file: !3, line: 100, type: !13, isLocal: false, isDefinition: true) +!78 = !DIGlobalVariableExpression(var: !79, expr: !DIExpression()) +!79 = distinct !DIGlobalVariable(name: "dx4", scope: !2, file: !3, line: 100, type: !13, isLocal: false, isDefinition: true) +!80 = !DIGlobalVariableExpression(var: !81, expr: !DIExpression()) +!81 = distinct !DIGlobalVariable(name: "dx5", scope: !2, file: !3, line: 100, type: !13, isLocal: false, isDefinition: true) +!82 = !DIGlobalVariableExpression(var: !83, expr: !DIExpression()) +!83 = distinct !DIGlobalVariable(name: "dy1", scope: !2, file: !3, line: 101, type: !13, isLocal: false, isDefinition: true) +!84 = !DIGlobalVariableExpression(var: !85, expr: !DIExpression()) +!85 = distinct !DIGlobalVariable(name: "dy2", scope: !2, file: !3, line: 101, type: !13, isLocal: false, isDefinition: true) +!86 = !DIGlobalVariableExpression(var: !87, expr: !DIExpression()) +!87 = distinct !DIGlobalVariable(name: "dy3", scope: !2, file: !3, line: 101, type: !13, isLocal: false, isDefinition: true) +!88 = !DIGlobalVariableExpression(var: !89, expr: !DIExpression()) +!89 = distinct !DIGlobalVariable(name: "dy4", scope: !2, file: !3, line: 101, type: !13, isLocal: false, isDefinition: true) +!90 = !DIGlobalVariableExpression(var: !91, expr: !DIExpression()) +!91 = distinct !DIGlobalVariable(name: "dy5", scope: !2, file: !3, line: 101, type: !13, isLocal: false, isDefinition: true) +!92 = !DIGlobalVariableExpression(var: !93, expr: !DIExpression()) +!93 = distinct !DIGlobalVariable(name: "dz1", scope: !2, file: !3, line: 102, type: !13, isLocal: false, isDefinition: true) +!94 = !DIGlobalVariableExpression(var: !95, expr: !DIExpression()) +!95 = distinct !DIGlobalVariable(name: "dz2", scope: !2, file: !3, line: 102, type: !13, isLocal: false, isDefinition: true) +!96 = !DIGlobalVariableExpression(var: !97, expr: !DIExpression()) +!97 = distinct !DIGlobalVariable(name: "dz3", scope: !2, file: !3, line: 102, type: !13, isLocal: false, isDefinition: true) +!98 = !DIGlobalVariableExpression(var: !99, expr: !DIExpression()) +!99 = distinct !DIGlobalVariable(name: "dz4", scope: !2, file: !3, line: 102, type: !13, isLocal: false, isDefinition: true) +!100 = !DIGlobalVariableExpression(var: !101, expr: !DIExpression()) +!101 = distinct !DIGlobalVariable(name: "dz5", scope: !2, file: !3, line: 102, type: !13, isLocal: false, isDefinition: true) +!102 = !DIGlobalVariableExpression(var: !103, expr: !DIExpression()) +!103 = distinct !DIGlobalVariable(name: "dssp", scope: !2, file: !3, line: 103, type: !13, isLocal: false, isDefinition: true) +!104 = !DIGlobalVariableExpression(var: !105, expr: !DIExpression()) +!105 = distinct !DIGlobalVariable(name: "u", scope: !2, file: !3, line: 113, type: !106, isLocal: false, isDefinition: true) +!106 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 86528000, elements: !107) +!107 = !{!108, !109, !110, !110} +!108 = !DISubrange(count: 5) +!109 = !DISubrange(count: 64) +!110 = !DISubrange(count: 65) +!111 = !DIGlobalVariableExpression(var: !112, expr: !DIExpression()) +!112 = distinct !DIGlobalVariable(name: "rsd", scope: !2, file: !3, line: 114, type: !106, isLocal: false, isDefinition: true) +!113 = !DIGlobalVariableExpression(var: !114, expr: !DIExpression()) +!114 = distinct !DIGlobalVariable(name: "frct", scope: !2, file: !3, line: 115, type: !106, isLocal: false, isDefinition: true) +!115 = !DIGlobalVariableExpression(var: !116, expr: !DIExpression()) +!116 = distinct !DIGlobalVariable(name: "flux_G", scope: !2, file: !3, line: 116, type: !117, isLocal: false, isDefinition: true) +!117 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 83886080, elements: !118) +!118 = !{!108, !109, !109, !109} +!119 = !DIGlobalVariableExpression(var: !120, expr: !DIExpression()) +!120 = distinct !DIGlobalVariable(name: "qs", scope: !2, file: !3, line: 117, type: !121, isLocal: false, isDefinition: true) +!121 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 17305600, elements: !122) +!122 = !{!109, !110, !110} +!123 = !DIGlobalVariableExpression(var: !124, expr: !DIExpression()) +!124 = distinct !DIGlobalVariable(name: "rho_i", scope: !2, file: !3, line: 118, type: !121, isLocal: false, isDefinition: true) +!125 = !DIGlobalVariableExpression(var: !126, expr: !DIExpression()) +!126 = distinct !DIGlobalVariable(name: "ipr", scope: !2, file: !3, line: 124, type: !41, isLocal: false, isDefinition: true) +!127 = !DIGlobalVariableExpression(var: !128, expr: !DIExpression()) +!128 = distinct !DIGlobalVariable(name: "inorm", scope: !2, file: !3, line: 124, type: !41, isLocal: false, isDefinition: true) +!129 = !DIGlobalVariableExpression(var: !130, expr: !DIExpression()) +!130 = distinct !DIGlobalVariable(name: "dt", scope: !2, file: !3, line: 130, type: !13, isLocal: false, isDefinition: true) +!131 = !DIGlobalVariableExpression(var: !132, expr: !DIExpression()) +!132 = distinct !DIGlobalVariable(name: "omega", scope: !2, file: !3, line: 130, type: !13, isLocal: false, isDefinition: true) +!133 = !DIGlobalVariableExpression(var: !134, expr: !DIExpression()) +!134 = distinct !DIGlobalVariable(name: "tolrsd", scope: !2, file: !3, line: 130, type: !135, isLocal: false, isDefinition: true) +!135 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 320, elements: !136) +!136 = !{!108} +!137 = !DIGlobalVariableExpression(var: !138, expr: !DIExpression()) +!138 = distinct !DIGlobalVariable(name: "rsdnm", scope: !2, file: !3, line: 130, type: !135, isLocal: false, isDefinition: true) +!139 = !DIGlobalVariableExpression(var: !140, expr: !DIExpression()) +!140 = distinct !DIGlobalVariable(name: "errnm", scope: !2, file: !3, line: 130, type: !135, isLocal: false, isDefinition: true) +!141 = !DIGlobalVariableExpression(var: !142, expr: !DIExpression()) +!142 = distinct !DIGlobalVariable(name: "frc", scope: !2, file: !3, line: 130, type: !13, isLocal: false, isDefinition: true) +!143 = !DIGlobalVariableExpression(var: !144, expr: !DIExpression()) +!144 = distinct !DIGlobalVariable(name: "ttotal", scope: !2, file: !3, line: 130, type: !13, isLocal: false, isDefinition: true) +!145 = !DIGlobalVariableExpression(var: !146, expr: !DIExpression()) +!146 = distinct !DIGlobalVariable(name: "itmax", scope: !2, file: !3, line: 131, type: !41, isLocal: false, isDefinition: true) +!147 = !DIGlobalVariableExpression(var: !148, expr: !DIExpression()) +!148 = distinct !DIGlobalVariable(name: "invert", scope: !2, file: !3, line: 131, type: !41, isLocal: false, isDefinition: true) +!149 = !DIGlobalVariableExpression(var: !150, expr: !DIExpression()) +!150 = distinct !DIGlobalVariable(name: "a", scope: !2, file: !3, line: 134, type: !151, isLocal: false, isDefinition: true) +!151 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 6553600, elements: !152) +!152 = !{!108, !108, !153} +!153 = !DISubrange(count: 4096) +!154 = !DIGlobalVariableExpression(var: !155, expr: !DIExpression()) +!155 = distinct !DIGlobalVariable(name: "b", scope: !2, file: !3, line: 135, type: !151, isLocal: false, isDefinition: true) +!156 = !DIGlobalVariableExpression(var: !157, expr: !DIExpression()) +!157 = distinct !DIGlobalVariable(name: "c", scope: !2, file: !3, line: 136, type: !151, isLocal: false, isDefinition: true) +!158 = !DIGlobalVariableExpression(var: !159, expr: !DIExpression()) +!159 = distinct !DIGlobalVariable(name: "d", scope: !2, file: !3, line: 137, type: !151, isLocal: false, isDefinition: true) +!160 = !DIGlobalVariableExpression(var: !161, expr: !DIExpression()) +!161 = distinct !DIGlobalVariable(name: "np", scope: !2, file: !3, line: 139, type: !162, isLocal: false, isDefinition: true) +!162 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 5984, elements: !163) +!163 = !{!164} +!164 = !DISubrange(count: 187) +!165 = !DIGlobalVariableExpression(var: !166, expr: !DIExpression()) +!166 = distinct !DIGlobalVariable(name: "indxp", scope: !2, file: !3, line: 140, type: !167, isLocal: false, isDefinition: true) +!167 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 18382848, elements: !168) +!168 = !{!164, !169} +!169 = !DISubrange(count: 3072) +!170 = !DIGlobalVariableExpression(var: !171, expr: !DIExpression()) +!171 = distinct !DIGlobalVariable(name: "jndxp", scope: !2, file: !3, line: 141, type: !167, isLocal: false, isDefinition: true) +!172 = !DIGlobalVariableExpression(var: !173, expr: !DIExpression()) +!173 = distinct !DIGlobalVariable(name: "tmat", scope: !2, file: !3, line: 142, type: !174, isLocal: false, isDefinition: true) +!174 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 4915200, elements: !175) +!175 = !{!108, !108, !169} +!176 = !DIGlobalVariableExpression(var: !177, expr: !DIExpression()) +!177 = distinct !DIGlobalVariable(name: "tv", scope: !2, file: !3, line: 143, type: !178, isLocal: false, isDefinition: true) +!178 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 983040, elements: !179) +!179 = !{!108, !169} +!180 = !DIGlobalVariableExpression(var: !181, expr: !DIExpression()) +!181 = distinct !DIGlobalVariable(name: "utmp_G", scope: !2, file: !3, line: 144, type: !182, isLocal: false, isDefinition: true) +!182 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 100663296, elements: !183) +!183 = !{!184, !109, !109, !109} +!184 = !DISubrange(count: 6) +!185 = !DIGlobalVariableExpression(var: !186, expr: !DIExpression()) +!186 = distinct !DIGlobalVariable(name: "rtmp_G", scope: !2, file: !3, line: 145, type: !117, isLocal: false, isDefinition: true) +!187 = !DIGlobalVariableExpression(var: !188, expr: !DIExpression()) +!188 = distinct !DIGlobalVariable(name: "ce", scope: !2, file: !3, line: 151, type: !189, isLocal: false, isDefinition: true) +!189 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 4160, elements: !190) +!190 = !{!108, !191} +!191 = !DISubrange(count: 13) +!192 = !DIGlobalVariableExpression(var: !193, expr: !DIExpression()) +!193 = distinct !DIGlobalVariable(name: "maxtime", scope: !2, file: !3, line: 158, type: !13, isLocal: false, isDefinition: true) +!194 = !DIDerivedType(tag: DW_TAG_typedef, name: "logical", file: !6, line: 4, baseType: !5) +!195 = !{i32 2, !"Dwarf Version", i32 4} +!196 = !{i32 2, !"Debug Info Version", i32 3} +!197 = !{i32 1, !"wchar_size", i32 4} +!198 = !{!"clang version 9.0.0 (git@github.com:prithayan/llvm-project.git 9683f06d0ed55984d96f430331d28b1437b7dd07)"} +!199 = distinct !DISubprogram(name: "omp_device_mem_init", scope: !3, file: !3, line: 165, type: !200, scopeLine: 165, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !202) +!200 = !DISubroutineType(types: !201) +!201 = !{null} +!202 = !{} +!203 = !DILocation(line: 185, column: 1, scope: !199) +!204 = distinct !DISubprogram(name: "omp_device_mem_delete", scope: !3, file: !3, line: 187, type: !200, scopeLine: 187, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !202) +!205 = !DILocation(line: 207, column: 1, scope: !204) +!206 = distinct !DISubprogram(name: "main", scope: !3, file: !3, line: 209, type: !207, scopeLine: 210, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !212) +!207 = !DISubroutineType(types: !208) +!208 = !{!41, !41, !209} +!209 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !210, size: 64) +!210 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !211, size: 64) +!211 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) +!212 = !{!213, !214, !215, !216, !217, !218, !219, !220, !224, !225, !227} +!213 = !DILocalVariable(name: "argc", arg: 1, scope: !206, file: !3, line: 209, type: !41) +!214 = !DILocalVariable(name: "argv", arg: 2, scope: !206, file: !3, line: 209, type: !209) +!215 = !DILocalVariable(name: "Class", scope: !206, file: !3, line: 211, type: !211) +!216 = !DILocalVariable(name: "verified", scope: !206, file: !3, line: 212, type: !194) +!217 = !DILocalVariable(name: "mflops", scope: !206, file: !3, line: 213, type: !13) +!218 = !DILocalVariable(name: "t", scope: !206, file: !3, line: 215, type: !13) +!219 = !DILocalVariable(name: "tmax", scope: !206, file: !3, line: 215, type: !13) +!220 = !DILocalVariable(name: "trecs", scope: !206, file: !3, line: 215, type: !221) +!221 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 768, elements: !222) +!222 = !{!223} +!223 = !DISubrange(count: 12) +!224 = !DILocalVariable(name: "i", scope: !206, file: !3, line: 216, type: !41) +!225 = !DILocalVariable(name: "t_names", scope: !206, file: !3, line: 217, type: !226) +!226 = !DICompositeType(tag: DW_TAG_array_type, baseType: !210, size: 768, elements: !222) +!227 = !DILocalVariable(name: "fp", scope: !206, file: !3, line: 222, type: !228) +!228 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !229, size: 64) +!229 = !DIDerivedType(tag: DW_TAG_typedef, name: "FILE", file: !230, line: 48, baseType: !231) +!230 = !DIFile(filename: "/usr/include/stdio.h", directory: "") +!231 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_IO_FILE", file: !232, line: 241, size: 1728, elements: !233) +!232 = !DIFile(filename: "/usr/include/libio.h", directory: "") +!233 = !{!234, !235, !236, !237, !238, !239, !240, !241, !242, !243, !244, !245, !246, !254, !255, !256, !257, !261, !263, !265, !269, !272, !274, !275, !276, !277, !278, !282, !283} +!234 = !DIDerivedType(tag: DW_TAG_member, name: "_flags", scope: !231, file: !232, line: 242, baseType: !41, size: 32) +!235 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_read_ptr", scope: !231, file: !232, line: 247, baseType: !210, size: 64, offset: 64) +!236 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_read_end", scope: !231, file: !232, line: 248, baseType: !210, size: 64, offset: 128) +!237 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_read_base", scope: !231, file: !232, line: 249, baseType: !210, size: 64, offset: 192) +!238 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_write_base", scope: !231, file: !232, line: 250, baseType: !210, size: 64, offset: 256) +!239 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_write_ptr", scope: !231, file: !232, line: 251, baseType: !210, size: 64, offset: 320) +!240 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_write_end", scope: !231, file: !232, line: 252, baseType: !210, size: 64, offset: 384) +!241 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_buf_base", scope: !231, file: !232, line: 253, baseType: !210, size: 64, offset: 448) +!242 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_buf_end", scope: !231, file: !232, line: 254, baseType: !210, size: 64, offset: 512) +!243 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_save_base", scope: !231, file: !232, line: 256, baseType: !210, size: 64, offset: 576) +!244 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_backup_base", scope: !231, file: !232, line: 257, baseType: !210, size: 64, offset: 640) +!245 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_save_end", scope: !231, file: !232, line: 258, baseType: !210, size: 64, offset: 704) +!246 = !DIDerivedType(tag: DW_TAG_member, name: "_markers", scope: !231, file: !232, line: 260, baseType: !247, size: 64, offset: 768) +!247 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !248, size: 64) +!248 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_IO_marker", file: !232, line: 156, size: 192, elements: !249) +!249 = !{!250, !251, !253} +!250 = !DIDerivedType(tag: DW_TAG_member, name: "_next", scope: !248, file: !232, line: 157, baseType: !247, size: 64) +!251 = !DIDerivedType(tag: DW_TAG_member, name: "_sbuf", scope: !248, file: !232, line: 158, baseType: !252, size: 64, offset: 64) +!252 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !231, size: 64) +!253 = !DIDerivedType(tag: DW_TAG_member, name: "_pos", scope: !248, file: !232, line: 162, baseType: !41, size: 32, offset: 128) +!254 = !DIDerivedType(tag: DW_TAG_member, name: "_chain", scope: !231, file: !232, line: 262, baseType: !252, size: 64, offset: 832) +!255 = !DIDerivedType(tag: DW_TAG_member, name: "_fileno", scope: !231, file: !232, line: 264, baseType: !41, size: 32, offset: 896) +!256 = !DIDerivedType(tag: DW_TAG_member, name: "_flags2", scope: !231, file: !232, line: 268, baseType: !41, size: 32, offset: 928) +!257 = !DIDerivedType(tag: DW_TAG_member, name: "_old_offset", scope: !231, file: !232, line: 270, baseType: !258, size: 64, offset: 960) +!258 = !DIDerivedType(tag: DW_TAG_typedef, name: "__off_t", file: !259, line: 131, baseType: !260) +!259 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "") +!260 = !DIBasicType(name: "long int", size: 64, encoding: DW_ATE_signed) +!261 = !DIDerivedType(tag: DW_TAG_member, name: "_cur_column", scope: !231, file: !232, line: 274, baseType: !262, size: 16, offset: 1024) +!262 = !DIBasicType(name: "unsigned short", size: 16, encoding: DW_ATE_unsigned) +!263 = !DIDerivedType(tag: DW_TAG_member, name: "_vtable_offset", scope: !231, file: !232, line: 275, baseType: !264, size: 8, offset: 1040) +!264 = !DIBasicType(name: "signed char", size: 8, encoding: DW_ATE_signed_char) +!265 = !DIDerivedType(tag: DW_TAG_member, name: "_shortbuf", scope: !231, file: !232, line: 276, baseType: !266, size: 8, offset: 1048) +!266 = !DICompositeType(tag: DW_TAG_array_type, baseType: !211, size: 8, elements: !267) +!267 = !{!268} +!268 = !DISubrange(count: 1) +!269 = !DIDerivedType(tag: DW_TAG_member, name: "_lock", scope: !231, file: !232, line: 280, baseType: !270, size: 64, offset: 1088) +!270 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !271, size: 64) +!271 = !DIDerivedType(tag: DW_TAG_typedef, name: "_IO_lock_t", file: !232, line: 150, baseType: null) +!272 = !DIDerivedType(tag: DW_TAG_member, name: "_offset", scope: !231, file: !232, line: 289, baseType: !273, size: 64, offset: 1152) +!273 = !DIDerivedType(tag: DW_TAG_typedef, name: "__off64_t", file: !259, line: 132, baseType: !260) +!274 = !DIDerivedType(tag: DW_TAG_member, name: "__pad1", scope: !231, file: !232, line: 297, baseType: !12, size: 64, offset: 1216) +!275 = !DIDerivedType(tag: DW_TAG_member, name: "__pad2", scope: !231, file: !232, line: 298, baseType: !12, size: 64, offset: 1280) +!276 = !DIDerivedType(tag: DW_TAG_member, name: "__pad3", scope: !231, file: !232, line: 299, baseType: !12, size: 64, offset: 1344) +!277 = !DIDerivedType(tag: DW_TAG_member, name: "__pad4", scope: !231, file: !232, line: 300, baseType: !12, size: 64, offset: 1408) +!278 = !DIDerivedType(tag: DW_TAG_member, name: "__pad5", scope: !231, file: !232, line: 302, baseType: !279, size: 64, offset: 1472) +!279 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !280, line: 46, baseType: !281) +!280 = !DIFile(filename: "/usr/lib/llvm-9/lib/clang/9.0.0/include/stddef.h", directory: "") +!281 = !DIBasicType(name: "long unsigned int", size: 64, encoding: DW_ATE_unsigned) +!282 = !DIDerivedType(tag: DW_TAG_member, name: "_mode", scope: !231, file: !232, line: 303, baseType: !41, size: 32, offset: 1536) +!283 = !DIDerivedType(tag: DW_TAG_member, name: "_unused2", scope: !231, file: !232, line: 305, baseType: !284, size: 160, offset: 1568) +!284 = !DICompositeType(tag: DW_TAG_array_type, baseType: !211, size: 160, elements: !285) +!285 = !{!286} +!286 = !DISubrange(count: 20) +!287 = !DILocation(line: 0, scope: !206) +!288 = !DILocation(line: 211, column: 3, scope: !206) +!289 = !DILocation(line: 211, column: 8, scope: !206) +!290 = !DILocation(line: 212, column: 3, scope: !206) +!291 = !DILocation(line: 212, column: 11, scope: !206) +!292 = !DILocation(line: 215, column: 3, scope: !206) +!293 = !DILocation(line: 215, column: 19, scope: !206) +!294 = !DILocation(line: 217, column: 3, scope: !206) +!295 = !DILocation(line: 217, column: 9, scope: !206) +!296 = !DILocation(line: 223, column: 13, scope: !297) +!297 = distinct !DILexicalBlock(scope: !206, file: !3, line: 223, column: 7) +!298 = !DILocation(line: 223, column: 39, scope: !297) +!299 = !DILocation(line: 223, column: 7, scope: !206) +!300 = !DILocation(line: 224, column: 13, scope: !301) +!301 = distinct !DILexicalBlock(scope: !297, file: !3, line: 223, column: 48) +!302 = !{!303, !303, i64 0} +!303 = !{!"omnipotent char", !304, i64 0} +!304 = !{!"Simple C/C++ TBAA"} +!305 = !DILocation(line: 225, column: 5, scope: !301) +!306 = !DILocation(line: 225, column: 22, scope: !301) +!307 = !{!308, !308, i64 0} +!308 = !{!"any pointer", !303, i64 0} +!309 = !DILocation(line: 226, column: 5, scope: !301) +!310 = !DILocation(line: 226, column: 21, scope: !301) +!311 = !DILocation(line: 227, column: 5, scope: !301) +!312 = !DILocation(line: 227, column: 21, scope: !301) +!313 = !DILocation(line: 228, column: 5, scope: !301) +!314 = !DILocation(line: 228, column: 21, scope: !301) +!315 = !DILocation(line: 229, column: 5, scope: !301) +!316 = !DILocation(line: 229, column: 20, scope: !301) +!317 = !DILocation(line: 230, column: 5, scope: !301) +!318 = !DILocation(line: 230, column: 22, scope: !301) +!319 = !DILocation(line: 231, column: 5, scope: !301) +!320 = !DILocation(line: 231, column: 21, scope: !301) +!321 = !DILocation(line: 232, column: 5, scope: !301) +!322 = !DILocation(line: 232, column: 21, scope: !301) +!323 = !DILocation(line: 233, column: 5, scope: !301) +!324 = !DILocation(line: 233, column: 21, scope: !301) +!325 = !DILocation(line: 234, column: 5, scope: !301) +!326 = !DILocation(line: 234, column: 20, scope: !301) +!327 = !DILocation(line: 235, column: 5, scope: !301) +!328 = !DILocation(line: 235, column: 23, scope: !301) +!329 = !DILocation(line: 236, column: 5, scope: !301) +!330 = !DILocation(line: 237, column: 3, scope: !301) +!331 = !DILocation(line: 238, column: 13, scope: !332) +!332 = distinct !DILexicalBlock(scope: !297, file: !3, line: 237, column: 10) +!333 = !DILocation(line: 244, column: 3, scope: !206) +!334 = !DILocation(line: 248, column: 3, scope: !206) +!335 = !DILocation(line: 253, column: 3, scope: !206) +!336 = !DILocation(line: 255, column: 3, scope: !206) +!337 = !DILocation(line: 260, column: 3, scope: !206) +!338 = !DILocation(line: 265, column: 3, scope: !206) +!339 = !DILocation(line: 270, column: 3, scope: !206) +!340 = !DILocation(line: 275, column: 3, scope: !206) +!341 = !DILocation(line: 280, column: 3, scope: !206) +!342 = !DILocation(line: 281, column: 3, scope: !206) +!343 = !DILocation(line: 287, column: 8, scope: !206) +!344 = !{!345, !345, i64 0} +!345 = !{!"int", !303, i64 0} +!346 = !DILocation(line: 287, column: 3, scope: !206) +!347 = !DILocation(line: 294, column: 3, scope: !206) +!348 = !DILocation(line: 299, column: 3, scope: !206) +!349 = !DILocation(line: 301, column: 3, scope: !206) +!350 = !DILocation(line: 306, column: 26, scope: !206) +!351 = !{!352, !352, i64 0} +!352 = !{!"double", !303, i64 0} +!353 = !DILocation(line: 306, column: 3, scope: !206) +!354 = !DILocation(line: 307, column: 20, scope: !206) +!355 = !DILocation(line: 307, column: 12, scope: !206) +!356 = !DILocation(line: 307, column: 47, scope: !206) +!357 = !DILocation(line: 307, column: 39, scope: !206) +!358 = !DILocation(line: 307, column: 37, scope: !206) +!359 = !DILocation(line: 308, column: 17, scope: !206) +!360 = !DILocation(line: 308, column: 9, scope: !206) +!361 = !DILocation(line: 308, column: 7, scope: !206) +!362 = !DILocation(line: 309, column: 17, scope: !206) +!363 = !DILocation(line: 309, column: 9, scope: !206) +!364 = !DILocation(line: 309, column: 7, scope: !206) +!365 = !DILocation(line: 310, column: 33, scope: !206) +!366 = !DILocation(line: 310, column: 37, scope: !206) +!367 = !DILocation(line: 310, column: 36, scope: !206) +!368 = !DILocation(line: 310, column: 41, scope: !206) +!369 = !DILocation(line: 310, column: 40, scope: !206) +!370 = !DILocation(line: 310, column: 24, scope: !206) +!371 = !DILocation(line: 310, column: 45, scope: !206) +!372 = !DILocation(line: 310, column: 19, scope: !206) +!373 = !DILocation(line: 310, column: 17, scope: !206) +!374 = !DILocation(line: 310, column: 7, scope: !206) +!375 = !DILocation(line: 311, column: 28, scope: !206) +!376 = !DILocation(line: 311, column: 32, scope: !206) +!377 = !DILocation(line: 311, column: 31, scope: !206) +!378 = !DILocation(line: 311, column: 36, scope: !206) +!379 = !DILocation(line: 311, column: 35, scope: !206) +!380 = !DILocation(line: 311, column: 19, scope: !206) +!381 = !DILocation(line: 311, column: 17, scope: !206) +!382 = !DILocation(line: 311, column: 40, scope: !206) +!383 = !DILocation(line: 311, column: 7, scope: !206) +!384 = !DILocation(line: 312, column: 7, scope: !206) +!385 = !DILocation(line: 307, column: 26, scope: !206) +!386 = !DILocation(line: 313, column: 8, scope: !206) +!387 = !DILocation(line: 313, column: 15, scope: !206) +!388 = !DILocation(line: 313, column: 5, scope: !206) +!389 = !DILocation(line: 315, column: 23, scope: !206) +!390 = !DILocation(line: 315, column: 30, scope: !206) +!391 = !DILocation(line: 316, column: 17, scope: !206) +!392 = !DILocation(line: 316, column: 22, scope: !206) +!393 = !DILocation(line: 316, column: 27, scope: !206) +!394 = !DILocation(line: 317, column: 17, scope: !206) +!395 = !DILocation(line: 317, column: 62, scope: !206) +!396 = !DILocation(line: 315, column: 3, scope: !206) +!397 = !DILocation(line: 324, column: 7, scope: !398) +!398 = distinct !DILexicalBlock(scope: !206, file: !3, line: 324, column: 7) +!399 = !DILocation(line: 324, column: 7, scope: !206) +!400 = !DILocation(line: 325, column: 10, scope: !401) +!401 = distinct !DILexicalBlock(scope: !402, file: !3, line: 325, column: 5) +!402 = distinct !DILexicalBlock(scope: !398, file: !3, line: 324, column: 16) +!403 = !DILocation(line: 0, scope: !401) +!404 = !DILocation(line: 325, column: 19, scope: !405) +!405 = distinct !DILexicalBlock(scope: !401, file: !3, line: 325, column: 5) +!406 = !DILocation(line: 325, column: 5, scope: !401) +!407 = !DILocation(line: 326, column: 18, scope: !408) +!408 = distinct !DILexicalBlock(scope: !405, file: !3, line: 325, column: 35) +!409 = !DILocation(line: 326, column: 7, scope: !408) +!410 = !DILocation(line: 326, column: 16, scope: !408) +!411 = !DILocation(line: 327, column: 5, scope: !408) +!412 = !DILocation(line: 325, column: 31, scope: !405) +!413 = !DILocation(line: 325, column: 5, scope: !405) +!414 = distinct !{!414, !406, !415} +!415 = !DILocation(line: 327, column: 5, scope: !401) +!416 = !DILocation(line: 328, column: 12, scope: !402) +!417 = !DILocation(line: 329, column: 14, scope: !418) +!418 = distinct !DILexicalBlock(scope: !402, file: !3, line: 329, column: 9) +!419 = !DILocation(line: 329, column: 9, scope: !402) +!420 = !DILocation(line: 329, column: 22, scope: !418) +!421 = !DILocation(line: 0, scope: !402) +!422 = !DILocation(line: 331, column: 5, scope: !402) +!423 = !DILocation(line: 332, column: 10, scope: !424) +!424 = distinct !DILexicalBlock(scope: !402, file: !3, line: 332, column: 5) +!425 = !DILocation(line: 0, scope: !424) +!426 = !DILocation(line: 332, column: 19, scope: !427) +!427 = distinct !DILexicalBlock(scope: !424, file: !3, line: 332, column: 5) +!428 = !DILocation(line: 332, column: 5, scope: !424) +!429 = !DILocation(line: 334, column: 11, scope: !430) +!430 = distinct !DILexicalBlock(scope: !427, file: !3, line: 332, column: 35) +!431 = !DILocation(line: 334, column: 23, scope: !430) +!432 = !DILocation(line: 334, column: 33, scope: !430) +!433 = !DILocation(line: 334, column: 41, scope: !430) +!434 = !DILocation(line: 334, column: 46, scope: !430) +!435 = !DILocation(line: 333, column: 7, scope: !430) +!436 = !DILocation(line: 335, column: 13, scope: !437) +!437 = distinct !DILexicalBlock(scope: !430, file: !3, line: 335, column: 11) +!438 = !DILocation(line: 335, column: 11, scope: !430) +!439 = !DILocation(line: 336, column: 13, scope: !440) +!440 = distinct !DILexicalBlock(scope: !437, file: !3, line: 335, column: 23) +!441 = !DILocation(line: 336, column: 29, scope: !440) +!442 = !DILocation(line: 336, column: 27, scope: !440) +!443 = !DILocation(line: 336, column: 45, scope: !440) +!444 = !DILocation(line: 336, column: 43, scope: !440) +!445 = !DILocation(line: 337, column: 66, scope: !440) +!446 = !DILocation(line: 337, column: 71, scope: !440) +!447 = !DILocation(line: 337, column: 9, scope: !440) +!448 = !DILocation(line: 338, column: 13, scope: !440) +!449 = !DILocation(line: 338, column: 22, scope: !440) +!450 = !DILocation(line: 339, column: 67, scope: !440) +!451 = !DILocation(line: 339, column: 72, scope: !440) +!452 = !DILocation(line: 339, column: 9, scope: !440) +!453 = !DILocation(line: 340, column: 7, scope: !440) +!454 = !DILocation(line: 341, column: 5, scope: !430) +!455 = !DILocation(line: 332, column: 31, scope: !427) +!456 = !DILocation(line: 332, column: 5, scope: !427) +!457 = distinct !{!457, !428, !458} +!458 = !DILocation(line: 341, column: 5, scope: !424) +!459 = !DILocation(line: 342, column: 3, scope: !402) +!460 = !DILocation(line: 345, column: 1, scope: !206) diff --git a/llvm/test/Analysis/MemUseDefAnalysis/MG.ll b/llvm/test/Analysis/MemUseDefAnalysis/MG.ll new file mode 100644 index 0000000000000..aa15f269fd3d4 --- /dev/null +++ b/llvm/test/Analysis/MemUseDefAnalysis/MG.ll @@ -0,0 +1,10309 @@ +; RUN: opt < %s -passes="print" -disable-output 2>&1 | FileCheck %s + +; CHECK-DAG: Use::nx At:: mg.c:199 Defined at: mg.c:190, +; CHECK-DAG: Use::lt At:: mg.c:199 Defined at: mg.c:188, +; CHECK-DAG: Use::nz At:: mg.c:199 Defined at: mg.c:192, +; CHECK-DAG: Use::lt At:: mg.c:264 Defined at: mg.c:188, +; CHECK-DAG: Use::nx At:: mg.c:205 Defined at: mg.c:190, +; CHECK-DAG: Use::lt At:: mg.c:190 Defined at: mg.c:188, +; CHECK-DAG: Use::ny At:: mg.c:199 Defined at: mg.c:191, +; CHECK-DAG: Use::lt At:: mg.c:199 Defined at: mg.c:188, +; CHECK-DAG: Use::lt At:: mg.c:199 Defined at: mg.c:188, +; CHECK-DAG: Use::lt At:: mg.c:191 Defined at: mg.c:188, +; CHECK-DAG: Use::lt At:: mg.c:192 Defined at: mg.c:188, +; CHECK-DAG: Use::nx At:: mg.c:199 Defined at: mg.c:190, +; CHECK-DAG: Use::lt At:: mg.c:199 Defined at: mg.c:188, +; CHECK-DAG: Use::ny At:: mg.c:264 Defined at: mg.c:191, +; CHECK-DAG: Use::lt At:: mg.c:264 Defined at: mg.c:188, +; CHECK-DAG: Use::nz At:: mg.c:264 Defined at: mg.c:192, +; CHECK-DAG: Use::Class At:: mg.c:327 Defined at: mg.c:204, mg.c:200, mg.c:202, mg.c:206, mg.c:208, mg.c:210, mg.c:212, mg.c:214, mg.c:216, +; CHECK-DAG: Use::Class At:: mg.c:329 Defined at: mg.c:204, mg.c:200, mg.c:202, mg.c:206, mg.c:208, mg.c:210, mg.c:212, mg.c:214, mg.c:216, +; CHECK-DAG: Use::lt At:: mg.c:201 Defined at: mg.c:188, +; CHECK-DAG: Use::nx At:: mg.c:201 Defined at: mg.c:190, +; CHECK-DAG: Use::nit At:: mg.c:201 Defined at: mg.c:189, +; CHECK-DAG: Use::lt At:: mg.c:203 Defined at: mg.c:188, +; CHECK-DAG: Use::nx At:: mg.c:203 Defined at: mg.c:190, +; CHECK-DAG: Use::nit At:: mg.c:203 Defined at: mg.c:189, +; CHECK-DAG: Use::lt At:: mg.c:205 Defined at: mg.c:188, +; CHECK-DAG: Use::v At:: mg.c:264 Defined at: mg.c:123, +; CHECK-DAG: Use::nit At:: mg.c:205 Defined at: mg.c:189, +; CHECK-DAG: Use::lt At:: mg.c:207 Defined at: mg.c:188, +; CHECK-DAG: Use::nx At:: mg.c:207 Defined at: mg.c:190, +; CHECK-DAG: Use::nit At:: mg.c:207 Defined at: mg.c:189, +; CHECK-DAG: Use::lt At:: mg.c:209 Defined at: mg.c:188, +; CHECK-DAG: Use::nx At:: mg.c:209 Defined at: mg.c:190, +; CHECK-DAG: Use::nit At:: mg.c:209 Defined at: mg.c:189, +; CHECK-DAG: Use::lt At:: mg.c:211 Defined at: mg.c:188, +; CHECK-DAG: Use::nx At:: mg.c:211 Defined at: mg.c:190, +; CHECK-DAG: Use::nit At:: mg.c:211 Defined at: mg.c:189, +; CHECK-DAG: Use::lt At:: mg.c:213 Defined at: mg.c:188, +; CHECK-DAG: Use::nx At:: mg.c:213 Defined at: mg.c:190, +; CHECK-DAG: Use::nit At:: mg.c:213 Defined at: mg.c:189, +; CHECK-DAG: Use::v At:: mg.c:278 Defined at: mg.c:123, +; CHECK-DAG: Use::r At:: mg.c:278 Defined at: mg.c:124, +; CHECK-DAG: Use::Class At:: mg.c:237 Defined at: mg.c:204, mg.c:200, mg.c:202, mg.c:206, mg.c:208, mg.c:210, mg.c:212, mg.c:214, mg.c:216, +; CHECK-DAG: Use::lt At:: mg.c:255 Defined at: mg.c:188, +; CHECK-DAG: Use::Class At:: mg.c:237 Defined at: mg.c:204, mg.c:200, mg.c:202, mg.c:206, mg.c:208, mg.c:210, mg.c:212, mg.c:214, mg.c:216, +; CHECK-DAG: Use::Class At:: mg.c:237 Defined at: mg.c:204, mg.c:200, mg.c:202, mg.c:206, mg.c:208, mg.c:210, mg.c:212, mg.c:214, mg.c:216, +; CHECK-DAG: Use::u At:: mg.c:261 Defined at: mg.c:122, +; CHECK-DAG: Use::lt At:: mg.c:262 Defined at: mg.c:188, +; CHECK-DAG: Use::nx At:: mg.c:262 Defined at: mg.c:190, +; CHECK-DAG: Use::lt At:: mg.c:262 Defined at: mg.c:188, +; CHECK-DAG: Use::u At:: mg.c:281 Defined at: mg.c:122, +; CHECK-DAG: Use::lt At:: mg.c:308 Defined at: mg.c:188, +; CHECK-DAG: Use::nx At:: mg.c:308 Defined at: mg.c:190, +; CHECK-DAG: Use::lt At:: mg.c:308 Defined at: mg.c:188, +; CHECK-DAG: Use::ny At:: mg.c:308 Defined at: mg.c:191, +; CHECK-DAG: Use::lt At:: mg.c:308 Defined at: mg.c:188, +; CHECK-DAG: Use::nz At:: mg.c:308 Defined at: mg.c:192, +; CHECK-DAG: Use::nx At:: mg.c:264 Defined at: mg.c:190, +; CHECK-DAG: Use::lt At:: mg.c:264 Defined at: mg.c:188, +; CHECK-DAG: Use::lt At:: mg.c:266 Defined at: mg.c:188, +; CHECK-DAG: Use::nx At:: mg.c:266 Defined at: mg.c:190, +; CHECK-DAG: Use::lt At:: mg.c:266 Defined at: mg.c:188, +; CHECK-DAG: Use::ny At:: mg.c:266 Defined at: mg.c:191, +; CHECK-DAG: Use::lt At:: mg.c:266 Defined at: mg.c:188, +; CHECK-DAG: Use::nz At:: mg.c:266 Defined at: mg.c:192, +; CHECK-DAG: Use::Class At:: mg.c:266 Defined at: mg.c:204, mg.c:200, mg.c:202, mg.c:206, mg.c:208, mg.c:210, mg.c:212, mg.c:214, mg.c:216, +; CHECK-DAG: Use::nit At:: mg.c:267 Defined at: mg.c:189, +; CHECK-DAG: Use::u At:: mg.c:270 Defined at: mg.c:122, +; CHECK-DAG: Use::v At:: mg.c:270 Defined at: mg.c:123, +; CHECK-DAG: Use::r At:: mg.c:270 Defined at: mg.c:124, +; CHECK-DAG: Use::r At:: mg.c:271 Defined at: mg.c:124, +; CHECK-DAG: Use::lt At:: mg.c:271 Defined at: mg.c:188, +; CHECK-DAG: Use::nx At:: mg.c:271 Defined at: mg.c:190, +; CHECK-DAG: Use::lt At:: mg.c:271 Defined at: mg.c:188, +; CHECK-DAG: Use::ny At:: mg.c:271 Defined at: mg.c:191, +; CHECK-DAG: Use::lt At:: mg.c:271 Defined at: mg.c:188, +; CHECK-DAG: Use::nz At:: mg.c:271 Defined at: mg.c:192, +; CHECK-DAG: Use::u At:: mg.c:278 Defined at: mg.c:122, +; CHECK-DAG: Use::u At:: mg.c:279 Defined at: mg.c:122, +; CHECK-DAG: Use::v At:: mg.c:279 Defined at: mg.c:123, +; CHECK-DAG: Use::r At:: mg.c:279 Defined at: mg.c:124, +; CHECK-DAG: Use::lt At:: mg.c:282 Defined at: mg.c:188, +; CHECK-DAG: Use::ny At:: mg.c:282 Defined at: mg.c:191, +; CHECK-DAG: Use::v At:: mg.c:282 Defined at: mg.c:123, +; CHECK-DAG: Use::lt At:: mg.c:282 Defined at: mg.c:188, +; CHECK-DAG: Use::nx At:: mg.c:282 Defined at: mg.c:190, +; CHECK-DAG: Use::v At:: mg.c:295 Defined at: mg.c:123, +; CHECK-DAG: Use::u At:: mg.c:295 Defined at: mg.c:122, +; CHECK-DAG: Use::r At:: mg.c:295 Defined at: mg.c:124, +; CHECK-DAG: Use::r At:: mg.c:296 Defined at: mg.c:124, +; CHECK-DAG: Use::lt At:: mg.c:296 Defined at: mg.c:188, +; CHECK-DAG: Use::nx At:: mg.c:296 Defined at: mg.c:190, +; CHECK-DAG: Use::lt At:: mg.c:296 Defined at: mg.c:188, +; CHECK-DAG: Use::ny At:: mg.c:296 Defined at: mg.c:191, +; CHECK-DAG: Use::lt At:: mg.c:296 Defined at: mg.c:188, +; CHECK-DAG: Use::nz At:: mg.c:296 Defined at: mg.c:192, +; CHECK-DAG: Use::nit At:: mg.c:300 Defined at: mg.c:189, +; CHECK-DAG: Use::r At:: mg.c:308 Defined at: mg.c:124, +; CHECK-DAG: Use::nit At:: mg.c:301 Defined at: mg.c:189, +; CHECK-DAG: Use::u At:: mg.c:304 Defined at: mg.c:122, +; CHECK-DAG: Use::v At:: mg.c:304 Defined at: mg.c:123, +; CHECK-DAG: Use::r At:: mg.c:304 Defined at: mg.c:124, +; CHECK-DAG: Use::u At:: mg.c:305 Defined at: mg.c:122, +; CHECK-DAG: Use::v At:: mg.c:305 Defined at: mg.c:123, +; CHECK-DAG: Use::r At:: mg.c:305 Defined at: mg.c:124, +; CHECK-DAG: Use::Class At:: mg.c:320 Defined at: mg.c:204, mg.c:200, mg.c:202, mg.c:206, mg.c:208, mg.c:210, mg.c:212, mg.c:214, mg.c:216, +; CHECK-DAG: Use::Class At:: mg.c:321 Defined at: mg.c:204, mg.c:200, mg.c:202, mg.c:206, mg.c:208, mg.c:210, mg.c:212, mg.c:214, mg.c:216, +; CHECK-DAG: Use::Class At:: mg.c:323 Defined at: mg.c:204, mg.c:200, mg.c:202, mg.c:206, mg.c:208, mg.c:210, mg.c:212, mg.c:214, mg.c:216, +; CHECK-DAG: Use::Class At:: mg.c:325 Defined at: mg.c:204, mg.c:200, mg.c:202, mg.c:206, mg.c:208, mg.c:210, mg.c:212, mg.c:214, mg.c:216, +; CHECK-DAG: Use::Class At:: mg.c:331 Defined at: mg.c:204, mg.c:200, mg.c:202, mg.c:206, mg.c:208, mg.c:210, mg.c:212, mg.c:214, mg.c:216, +; CHECK-DAG: Use::Class At:: mg.c:333 Defined at: mg.c:204, mg.c:200, mg.c:202, mg.c:206, mg.c:208, mg.c:210, mg.c:212, mg.c:214, mg.c:216, +; CHECK-DAG: Use::lt At:: mg.c:359 Defined at: mg.c:188, +; CHECK-DAG: Use::nx At:: mg.c:359 Defined at: mg.c:190, +; CHECK-DAG: Use::lt At:: mg.c:359 Defined at: mg.c:188, +; CHECK-DAG: Use::ny At:: mg.c:359 Defined at: mg.c:191, +; CHECK-DAG: Use::lt At:: mg.c:359 Defined at: mg.c:188, +; CHECK-DAG: Use::nz At:: mg.c:359 Defined at: mg.c:192, +; CHECK-DAG: Use::nit At:: mg.c:362 Defined at: mg.c:189, +; CHECK-DAG: Use::Class At:: mg.c:367 Defined at: mg.c:204, mg.c:200, mg.c:202, mg.c:206, mg.c:208, mg.c:210, mg.c:212, mg.c:214, mg.c:216, +; CHECK-DAG: Use::lt At:: mg.c:367 Defined at: mg.c:188, +; CHECK-DAG: Use::nx At:: mg.c:367 Defined at: mg.c:190, +; CHECK-DAG: Use::lt At:: mg.c:367 Defined at: mg.c:188, +; CHECK-DAG: Use::ny At:: mg.c:367 Defined at: mg.c:191, +; CHECK-DAG: Use::lt At:: mg.c:367 Defined at: mg.c:188, +; CHECK-DAG: Use::nz At:: mg.c:367 Defined at: mg.c:192, +; CHECK-DAG: Use::nit At:: mg.c:368 Defined at: mg.c:189, +; CHECK-DAG: Use::timeron At:: mg.c:376 Defined at: mg.c:156, mg.c:168, +; CHECK-DAG: Use::t_names At:: mg.c:387 Defined at: mg.c:165, + +; CHECK-DAG: Use::ng At:: mg.c:431 Defined at: mg.c:407, mg.c:410, +; CHECK-DAG: Use::is2 At:: mg.c:435 Defined at: mg.c:433, +; CHECK-DAG: Use::ng At:: mg.c:436 Defined at: mg.c:407, mg.c:410, +; CHECK-DAG: Use::ng At:: mg.c:436 Defined at: mg.c:407, mg.c:410, +; CHECK-DAG: Use::ng At:: mg.c:410 Defined at: mg.c:407, mg.c:410, +; CHECK-DAG: Use::mi At:: mg.c:425 Defined at: mg.c:421, +; CHECK-DAG: Use::ng At:: mg.c:414 Defined at: mg.c:407, mg.c:410, +; CHECK-DAG: Use::ng At:: mg.c:415 Defined at: mg.c:407, mg.c:410, +; CHECK-DAG: Use::ng At:: mg.c:416 Defined at: mg.c:407, mg.c:410, +; CHECK-DAG: Use::ng At:: mg.c:421 Defined at: mg.c:407, mg.c:410, +; CHECK-DAG: Use::mi At:: mg.c:424 Defined at: mg.c:421, +; CHECK-DAG: Use::mi At:: mg.c:426 Defined at: mg.c:421, +; CHECK-DAG: Use::ng At:: mg.c:430 Defined at: mg.c:407, mg.c:410, +; CHECK-DAG: Use::ng At:: mg.c:430 Defined at: mg.c:407, mg.c:410, +; CHECK-DAG: Use::ie1 At:: mg.c:432 Defined at: mg.c:431, +; CHECK-DAG: Use::is1 At:: mg.c:432 Defined at: mg.c:430, +; CHECK-DAG: Use::ng At:: mg.c:433 Defined at: mg.c:407, mg.c:410, +; CHECK-DAG: Use::ng At:: mg.c:433 Defined at: mg.c:407, mg.c:410, +; CHECK-DAG: Use::ng At:: mg.c:434 Defined at: mg.c:407, mg.c:410, +; CHECK-DAG: Use::ie2 At:: mg.c:435 Defined at: mg.c:434, +; CHECK-DAG: Use::ng At:: mg.c:437 Defined at: mg.c:407, mg.c:410, +; CHECK-DAG: Use::ie3 At:: mg.c:438 Defined at: mg.c:437, +; CHECK-DAG: Use::is3 At:: mg.c:438 Defined at: mg.c:436, +; CHECK-DAG: Use::ir At:: mg.c:442 Defined at: mg.c:440, mg.c:442, +; CHECK-DAG: Use::m1 At:: mg.c:442 Defined at: mg.c:424, +; CHECK-DAG: Use::m2 At:: mg.c:442 Defined at: mg.c:425, +; CHECK-DAG: Use::m3 At:: mg.c:442 Defined at: mg.c:426, +; CHECK-DAG: Use::ng At:: mg.c:449 Defined at: mg.c:407, mg.c:410, +; CHECK-DAG: Use::ng At:: mg.c:449 Defined at: mg.c:407, mg.c:410, +; CHECK-DAG: Use::ng At:: mg.c:449 Defined at: mg.c:407, mg.c:410, +; CHECK-DAG: Use::is1 At:: mg.c:449 Defined at: mg.c:430, +; CHECK-DAG: Use::is2 At:: mg.c:449 Defined at: mg.c:433, +; CHECK-DAG: Use::is3 At:: mg.c:449 Defined at: mg.c:436, +; CHECK-DAG: Use::ie1 At:: mg.c:449 Defined at: mg.c:431, +; CHECK-DAG: Use::ie2 At:: mg.c:449 Defined at: mg.c:434, +; CHECK-DAG: Use::ie3 At:: mg.c:449 Defined at: mg.c:437, + + +; CHECK-DAG: Use::ten At:: mg.c:1597 Defined at: mg.c:1544, mg.c:1556, mg.c:1565, +; CHECK-DAG: Use::j1 At:: mg.c:1599 Defined at: mg.c:1545, mg.c:1557, mg.c:1566, +; CHECK-DAG: Use::j2 At:: mg.c:1600 Defined at: mg.c:1546, mg.c:1558, mg.c:1567, +; CHECK-DAG: Use::j3 At:: mg.c:1601 Defined at: mg.c:1547, mg.c:1559, mg.c:1568, +; CHECK-DAG: Use::x1 At:: mg.c:1523 Defined at: mg.c:1521, +; CHECK-DAG: Use::x0 At:: mg.c:1521 Defined at: mg.c:1517, +; CHECK-DAG: Use::j1 At:: mg.c:1585 Defined at: mg.c:1545, mg.c:1557, mg.c:1566, +; CHECK-DAG: Use::ten At:: mg.c:1554 Defined at: mg.c:1544, mg.c:1556, mg.c:1565, +; CHECK-DAG: Use::ten At:: mg.c:1563 Defined at: mg.c:1544, mg.c:1556, mg.c:1565, +; CHECK-DAG: Use::ten At:: mg.c:1583 Defined at: mg.c:1544, mg.c:1556, mg.c:1565, +; CHECK-DAG: Use::j2 At:: mg.c:1586 Defined at: mg.c:1546, mg.c:1558, mg.c:1567, +; CHECK-DAG: Use::j3 At:: mg.c:1587 Defined at: mg.c:1547, mg.c:1559, mg.c:1568, +; CHECK-DAG: Use::jg At:: mg.c:1639 Defined at: mg.c:1601, mg.c:1607, +; CHECK-DAG: Use::jg At:: mg.c:1640 Defined at: mg.c:1601, mg.c:1607, +; CHECK-DAG: Use::jg At:: mg.c:1641 Defined at: mg.c:1601, mg.c:1607, +; CHECK-DAG: Use::jg At:: mg.c:1648 Defined at: mg.c:1601, mg.c:1607, +; CHECK-DAG: Use::jg At:: mg.c:1649 Defined at: mg.c:1601, mg.c:1607, +; CHECK-DAG: Use::jg At:: mg.c:1650 Defined at: mg.c:1601, mg.c:1607, + + + + + + +; CHECK-DAG: Use::interp.z1 At:: mg.c:1260 Defined at: mg.c:924, mg.c:951, +; CHECK-DAG: Use::interp.z1 At:: mg.c:1002 Defined at: mg.c:924, mg.c:951, +; CHECK-DAG: Use::interp.z2 At:: mg.c:1028 Defined at: mg.c:953, +; CHECK-DAG: Use::interp.z2 At:: mg.c:1028 Defined at: mg.c:925, mg.c:953, +; CHECK-DAG: Use::interp.z2 At:: mg.c:1029 Defined at: mg.c:925, mg.c:953, +; CHECK-DAG: Use::interp.z1 At:: mg.c:1002 Defined at: mg.c:924, mg.c:951, +; CHECK-DAG: Use::interp.z1 At:: mg.c:1004 Defined at: mg.c:924, mg.c:951, +; CHECK-DAG: Use::interp.z1 At:: mg.c:1004 Defined at: mg.c:924, mg.c:951, +; CHECK-DAG: Use::interp.z1 At:: mg.c:1005 Defined at: mg.c:924, mg.c:951, +; CHECK-DAG: Use::interp.z1 At:: mg.c:1005 Defined at: mg.c:924, mg.c:951, +; CHECK-DAG: Use::interp.z2 At:: mg.c:1026 Defined at: mg.c:925, mg.c:953, +; CHECK-DAG: Use::interp.z2 At:: mg.c:1026 Defined at: mg.c:925, mg.c:953, +; CHECK-DAG: Use::interp.z2 At:: mg.c:1029 Defined at: mg.c:925, mg.c:953, +; CHECK-DAG: Use::interp.z3 At:: mg.c:1050 Defined at: mg.c:926, mg.c:955, +; CHECK-DAG: Use::interp.z3 At:: mg.c:1050 Defined at: mg.c:926, mg.c:955, +; CHECK-DAG: Use::interp.z3 At:: mg.c:1052 Defined at: mg.c:926, mg.c:955, +; CHECK-DAG: Use::interp.z3 At:: mg.c:1052 Defined at: mg.c:926, mg.c:955, +; CHECK-DAG: Use::interp.z3 At:: mg.c:1053 Defined at: mg.c:926, mg.c:955, +; CHECK-DAG: Use::interp.z3 At:: mg.c:1053 Defined at: mg.c:926, mg.c:955, +; CHECK-DAG: Use::interp.z2 At:: mg.c:1261 Defined at: mg.c:925, mg.c:953, +; CHECK-DAG: Use::interp.z3 At:: mg.c:1262 Defined at: mg.c:926, mg.c:955, + + + + +; CHECK-DAG: Use::aj At:: mg.c:1708 Defined at: mg.c:1704, +; CHECK-DAG: Use::aj At:: mg.c:1707 Defined at: mg.c:1704, +; CHECK-DAG: Use::power At:: mg.c:1712 Defined at: mg.c:1702, + + + +; ModuleID = 'omp-host.ll' +source_filename = "mg.c" +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] } +%struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 } + +@gnr = dso_local global i32 19704488, align 4, !dbg !0 +@u = internal global double* null, align 8, !dbg !42 +@v = internal global double* null, align 8, !dbg !44 +@r = internal global double* null, align 8, !dbg !46 +@.str = private unnamed_addr constant [11 x i8] c"timer.flag\00", align 1 +@.str.1 = private unnamed_addr constant [2 x i8] c"r\00", align 1 +@timeron = internal global i32 0, align 4, !dbg !39 +@.str.2 = private unnamed_addr constant [5 x i8] c"init\00", align 1 +@.str.3 = private unnamed_addr constant [8 x i8] c"benchmk\00", align 1 +@.str.4 = private unnamed_addr constant [5 x i8] c"mg3P\00", align 1 +@.str.5 = private unnamed_addr constant [6 x i8] c"psinv\00", align 1 +@.str.6 = private unnamed_addr constant [6 x i8] c"resid\00", align 1 +@.str.7 = private unnamed_addr constant [6 x i8] c"rprj3\00", align 1 +@.str.8 = private unnamed_addr constant [7 x i8] c"interp\00", align 1 +@.str.9 = private unnamed_addr constant [6 x i8] c"norm2\00", align 1 +@.str.10 = private unnamed_addr constant [6 x i8] c"comm3\00", align 1 +@.str.11 = private unnamed_addr constant [59 x i8] c"\0A\0A NAS Parallel Benchmarks (NPB3.3-ACC-C) - MG Benchmark\0A\0A\00", align 1 +@.str.12 = private unnamed_addr constant [9 x i8] c"mg.input\00", align 1 +@.str.13 = private unnamed_addr constant [35 x i8] c" Reading from input file mg.input\0A\00", align 1 +@.str.14 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1 +@lt = internal global i32 0, align 4, !dbg !35 +@.str.15 = private unnamed_addr constant [7 x i8] c"%d%d%d\00", align 1 +@nx = internal global [10 x i32] zeroinitializer, align 16, !dbg !17 +@ny = internal global [10 x i32] zeroinitializer, align 16, !dbg !23 +@nz = internal global [10 x i32] zeroinitializer, align 16, !dbg !25 +@.str.16 = private unnamed_addr constant [3 x i8] c"%d\00", align 1 +@debug_vec = internal global [8 x i32] zeroinitializer, align 16, !dbg !30 +@.str.17 = private unnamed_addr constant [42 x i8] c" No input file. Using compiled defaults \0A\00", align 1 +@Class = internal global i8 0, align 1, !dbg !27 +@lb = internal global i32 0, align 4, !dbg !37 +@.str.18 = private unnamed_addr constant [32 x i8] c" Size: %4dx%4dx%4d (class %c)\0A\00", align 1 +@.str.19 = private unnamed_addr constant [18 x i8] c" Iterations: %3d\0A\00", align 1 +@.str.20 = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 +@.str.21 = private unnamed_addr constant [39 x i8] c" Initialization time: %15.3f seconds\0A\0A\00", align 1 +@.str.22 = private unnamed_addr constant [12 x i8] c" iter %3d\0A\00", align 1 +@.str.23 = private unnamed_addr constant [23 x i8] c"\0A Benchmark completed\0A\00", align 1 +@.str.24 = private unnamed_addr constant [13 x i8] c"EPSILON: %g\0A\00", align 1 +@.str.25 = private unnamed_addr constant [37 x i8] c"err: %g, rnm2: %g, verify_value: %g\0A\00", align 1 +@.str.26 = private unnamed_addr constant [26 x i8] c" VERIFICATION SUCCESSFUL\0A\00", align 1 +@.str.27 = private unnamed_addr constant [21 x i8] c" L2 Norm is %20.13E\0A\00", align 1 +@.str.28 = private unnamed_addr constant [21 x i8] c" Error is %20.13E\0A\00", align 1 +@.str.29 = private unnamed_addr constant [22 x i8] c" VERIFICATION FAILED\0A\00", align 1 +@.str.30 = private unnamed_addr constant [33 x i8] c" L2 Norm is %20.13E\0A\00", align 1 +@.str.31 = private unnamed_addr constant [33 x i8] c" The correct L2 Norm is %20.13E\0A\00", align 1 +@.str.32 = private unnamed_addr constant [23 x i8] c" Problem size unknown\0A\00", align 1 +@.str.33 = private unnamed_addr constant [28 x i8] c" NO VERIFICATION PERFORMED\0A\00", align 1 +@.str.34 = private unnamed_addr constant [3 x i8] c"MG\00", align 1 +@.str.35 = private unnamed_addr constant [25 x i8] c" floating point\00", align 1 +@.str.36 = private unnamed_addr constant [6 x i8] c"3.3.1\00", align 1 +@.str.37 = private unnamed_addr constant [12 x i8] c"29 Jan 2019\00", align 1 +@.str.38 = private unnamed_addr constant [7 x i8] c"(none)\00", align 1 +@.str.39 = private unnamed_addr constant [4 x i8] c"-lm\00", align 1 +@.str.40 = private unnamed_addr constant [12 x i8] c"-I../common\00", align 1 +@.str.41 = private unnamed_addr constant [7 x i8] c"randdp\00", align 1 +@.str.42 = private unnamed_addr constant [25 x i8] c" SECTION Time (secs)\0A\00", align 1 +@.str.43 = private unnamed_addr constant [30 x i8] c" --> %8s:%9.3f (%6.2f%%)\0A\00", align 1 +@.str.44 = private unnamed_addr constant [9 x i8] c"mg-resid\00", align 1 +@.str.45 = private unnamed_addr constant [25 x i8] c" %-8s:%9.3f (%6.2f%%)\0A\00", align 1 +@m1 = internal global [10 x i32] zeroinitializer, align 16, !dbg !48 +@m2 = internal global [10 x i32] zeroinitializer, align 16, !dbg !50 +@m3 = internal global [10 x i32] zeroinitializer, align 16, !dbg !52 +@is1 = internal global i32 0, align 4, !dbg !54 +@ie1 = internal global i32 0, align 4, !dbg !56 +@is2 = internal global i32 0, align 4, !dbg !58 +@ie2 = internal global i32 0, align 4, !dbg !60 +@is3 = internal global i32 0, align 4, !dbg !62 +@ie3 = internal global i32 0, align 4, !dbg !64 +@ir = internal global [10 x i32] zeroinitializer, align 16, !dbg !66 +@.str.46 = private unnamed_addr constant [13 x i8] c" in setup, \0A\00", align 1 +@.str.47 = private unnamed_addr constant [56 x i8] c" k lt nx ny nz n1 n2 n3 is1 is2 is3 ie1 ie2 ie3\0A\00", align 1 +@.str.48 = private unnamed_addr constant [44 x i8] c"%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d\0A\00", align 1 +@.str.49 = private unnamed_addr constant [9 x i8] c" rprj3\00", align 1 +@.str.50 = private unnamed_addr constant [41 x i8] c" Level%2d in %8s: norms =%21.14E%21.14E\0A\00", align 1 +@.str.51 = private unnamed_addr constant [5 x i8] c" \0A\00", align 1 +@.str.52 = private unnamed_addr constant [6 x i8] c"%6.3f\00", align 1 +@.str.53 = private unnamed_addr constant [18 x i8] c" - - - - - - - \0A\00", align 1 +@.str.54 = private unnamed_addr constant [9 x i8] c" psinv\00", align 1 +@interp.z1 = internal global double* null, align 8, !dbg !68 +@interp.z2 = internal global double* null, align 8, !dbg !92 +@interp.z3 = internal global double* null, align 8, !dbg !94 +@.str.55 = private unnamed_addr constant [9 x i8] c"z: inter\00", align 1 +@.str.56 = private unnamed_addr constant [9 x i8] c"u: inter\00", align 1 +@.str.57 = private unnamed_addr constant [9 x i8] c" resid\00", align 1 + +; Function Attrs: nounwind uwtable +define dso_local i32 @main() #0 !dbg !100 { +entry: + %a = alloca [4 x double], align 16 + %c = alloca [4 x double], align 16 + %rnm2 = alloca double, align 8 + %rnmu = alloca double, align 8 + %n1 = alloca i32, align 4 + %n2 = alloca i32, align 4 + %n3 = alloca i32, align 4 + %nit = alloca i32, align 4 + %t_names = alloca [10 x i8*], align 16 + %call = call noalias i8* @malloc(i64 157635904) #6, !dbg !195 + %0 = bitcast i8* %call to double*, !dbg !196 + store double* %0, double** @u, align 8, !dbg !197, !tbaa !198 + %call1 = call noalias i8* @malloc(i64 157635904) #6, !dbg !202 + %1 = bitcast i8* %call1 to double*, !dbg !203 + store double* %1, double** @v, align 8, !dbg !204, !tbaa !198 + %call2 = call noalias i8* @malloc(i64 157635904) #6, !dbg !205 + %2 = bitcast i8* %call2 to double*, !dbg !206 + store double* %2, double** @r, align 8, !dbg !207, !tbaa !198 + %3 = bitcast [4 x double]* %a to i8*, !dbg !208 + call void @llvm.lifetime.start.p0i8(i64 32, i8* %3) #6, !dbg !208 + call void @llvm.dbg.declare(metadata [4 x double]* %a, metadata !109, metadata !DIExpression()), !dbg !209 + %4 = bitcast [4 x double]* %c to i8*, !dbg !208 + call void @llvm.lifetime.start.p0i8(i64 32, i8* %4) #6, !dbg !208 + call void @llvm.dbg.declare(metadata [4 x double]* %c, metadata !113, metadata !DIExpression()), !dbg !210 + %5 = bitcast double* %rnm2 to i8*, !dbg !211 + call void @llvm.lifetime.start.p0i8(i64 8, i8* %5) #6, !dbg !211 + call void @llvm.dbg.declare(metadata double* %rnm2, metadata !114, metadata !DIExpression()), !dbg !212 + %6 = bitcast double* %rnmu to i8*, !dbg !211 + call void @llvm.lifetime.start.p0i8(i64 8, i8* %6) #6, !dbg !211 + call void @llvm.dbg.declare(metadata double* %rnmu, metadata !115, metadata !DIExpression()), !dbg !213 + %7 = bitcast i32* %n1 to i8*, !dbg !214 + call void @llvm.lifetime.start.p0i8(i64 4, i8* %7) #6, !dbg !214 + call void @llvm.dbg.declare(metadata i32* %n1, metadata !119, metadata !DIExpression()), !dbg !215 + %8 = bitcast i32* %n2 to i8*, !dbg !214 + call void @llvm.lifetime.start.p0i8(i64 4, i8* %8) #6, !dbg !214 + call void @llvm.dbg.declare(metadata i32* %n2, metadata !120, metadata !DIExpression()), !dbg !216 + %9 = bitcast i32* %n3 to i8*, !dbg !214 + call void @llvm.lifetime.start.p0i8(i64 4, i8* %9) #6, !dbg !214 + call void @llvm.dbg.declare(metadata i32* %n3, metadata !121, metadata !DIExpression()), !dbg !217 + %10 = bitcast i32* %nit to i8*, !dbg !214 + call void @llvm.lifetime.start.p0i8(i64 4, i8* %10) #6, !dbg !214 + call void @llvm.dbg.declare(metadata i32* %nit, metadata !122, metadata !DIExpression()), !dbg !218 + %11 = bitcast [10 x i8*]* %t_names to i8*, !dbg !219 + call void @llvm.lifetime.start.p0i8(i64 80, i8* %11) #6, !dbg !219 + call void @llvm.dbg.declare(metadata [10 x i8*]* %t_names, metadata !128, metadata !DIExpression()), !dbg !220 + call void @llvm.dbg.value(metadata i32 0, metadata !127, metadata !DIExpression()), !dbg !221 + br label %for.cond, !dbg !222 + +for.cond: ; preds = %for.inc, %entry + %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.inc ], !dbg !224 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !127, metadata !DIExpression()), !dbg !221 + %cmp = icmp slt i32 %i.0, 10, !dbg !225 + br i1 %cmp, label %for.body, label %for.end, !dbg !227 + +for.body: ; preds = %for.cond + call void @timer_clear(i32 %i.0), !dbg !228 + br label %for.inc, !dbg !230 + +for.inc: ; preds = %for.body + %inc = add nsw i32 %i.0, 1, !dbg !231 + call void @llvm.dbg.value(metadata i32 %inc, metadata !127, metadata !DIExpression()), !dbg !221 + br label %for.cond, !dbg !232, !llvm.loop !233 + +for.end: ; preds = %for.cond + call void @timer_start(i32 0), !dbg !235 + %call3 = call %struct._IO_FILE* @fopen(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0)), !dbg !236 + call void @llvm.dbg.value(metadata %struct._IO_FILE* %call3, metadata !132, metadata !DIExpression()), !dbg !221 + %cmp4 = icmp ne %struct._IO_FILE* %call3, null, !dbg !238 + br i1 %cmp4, label %if.then, label %if.else, !dbg !239 + +if.then: ; preds = %for.end + store i32 1, i32* @timeron, align 4, !dbg !240, !tbaa !242 + %arrayidx = getelementptr inbounds [10 x i8*], [10 x i8*]* %t_names, i64 0, i64 0, !dbg !243 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i8** %arrayidx, align 16, !dbg !244, !tbaa !198 + %arrayidx5 = getelementptr inbounds [10 x i8*], [10 x i8*]* %t_names, i64 0, i64 1, !dbg !245 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i64 0, i64 0), i8** %arrayidx5, align 8, !dbg !246, !tbaa !198 + %arrayidx6 = getelementptr inbounds [10 x i8*], [10 x i8*]* %t_names, i64 0, i64 2, !dbg !247 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0), i8** %arrayidx6, align 16, !dbg !248, !tbaa !198 + %arrayidx7 = getelementptr inbounds [10 x i8*], [10 x i8*]* %t_names, i64 0, i64 3, !dbg !249 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0), i8** %arrayidx7, align 8, !dbg !250, !tbaa !198 + %arrayidx8 = getelementptr inbounds [10 x i8*], [10 x i8*]* %t_names, i64 0, i64 4, !dbg !251 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0), i8** %arrayidx8, align 16, !dbg !252, !tbaa !198 + %arrayidx9 = getelementptr inbounds [10 x i8*], [10 x i8*]* %t_names, i64 0, i64 6, !dbg !253 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i8** %arrayidx9, align 16, !dbg !254, !tbaa !198 + %arrayidx10 = getelementptr inbounds [10 x i8*], [10 x i8*]* %t_names, i64 0, i64 7, !dbg !255 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i8** %arrayidx10, align 8, !dbg !256, !tbaa !198 + %arrayidx11 = getelementptr inbounds [10 x i8*], [10 x i8*]* %t_names, i64 0, i64 8, !dbg !257 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.9, i64 0, i64 0), i8** %arrayidx11, align 16, !dbg !258, !tbaa !198 + %arrayidx12 = getelementptr inbounds [10 x i8*], [10 x i8*]* %t_names, i64 0, i64 9, !dbg !259 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.10, i64 0, i64 0), i8** %arrayidx12, align 8, !dbg !260, !tbaa !198 + %call13 = call i32 @fclose(%struct._IO_FILE* %call3), !dbg !261 + br label %if.end, !dbg !262 + +if.else: ; preds = %for.end + store i32 0, i32* @timeron, align 4, !dbg !263, !tbaa !242 + br label %if.end + +if.end: ; preds = %if.else, %if.then + %call14 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.11, i64 0, i64 0)), !dbg !265 + %call15 = call %struct._IO_FILE* @fopen(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.12, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0)), !dbg !266 + call void @llvm.dbg.value(metadata %struct._IO_FILE* %call15, metadata !132, metadata !DIExpression()), !dbg !221 + %cmp16 = icmp ne %struct._IO_FILE* %call15, null, !dbg !267 + br i1 %cmp16, label %if.then17, label %if.else49, !dbg !268 + +if.then17: ; preds = %if.end + %call18 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.13, i64 0, i64 0)), !dbg !269 + %call19 = call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %call15, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.14, i64 0, i64 0), i32* @lt), !dbg !270 + call void @llvm.dbg.value(metadata i32 %call19, metadata !192, metadata !DIExpression()), !dbg !271 + br label %while.cond, !dbg !272 + +while.cond: ; preds = %while.body, %if.then17 + %call20 = call i32 @fgetc(%struct._IO_FILE* %call15), !dbg !273 + %cmp21 = icmp ne i32 %call20, 10, !dbg !274 + br i1 %cmp21, label %while.body, label %while.end, !dbg !272 + +while.body: ; preds = %while.cond + br label %while.cond, !dbg !272, !llvm.loop !275 + +while.end: ; preds = %while.cond + %12 = load i32, i32* @lt, align 4, !dbg !277, !tbaa !278 + %idxprom = sext i32 %12 to i64, !dbg !280 + %arrayidx22 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom, !dbg !280 + %13 = load i32, i32* @lt, align 4, !dbg !281, !tbaa !278 + %idxprom23 = sext i32 %13 to i64, !dbg !282 + %arrayidx24 = getelementptr inbounds [10 x i32], [10 x i32]* @ny, i64 0, i64 %idxprom23, !dbg !282 + %14 = load i32, i32* @lt, align 4, !dbg !283, !tbaa !278 + %idxprom25 = sext i32 %14 to i64, !dbg !284 + %arrayidx26 = getelementptr inbounds [10 x i32], [10 x i32]* @nz, i64 0, i64 %idxprom25, !dbg !284 + %call27 = call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %call15, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.15, i64 0, i64 0), i32* %arrayidx22, i32* %arrayidx24, i32* %arrayidx26), !dbg !285 + call void @llvm.dbg.value(metadata i32 %call27, metadata !192, metadata !DIExpression()), !dbg !271 + br label %while.cond28, !dbg !286 + +while.cond28: ; preds = %while.body31, %while.end + %call29 = call i32 @fgetc(%struct._IO_FILE* %call15), !dbg !287 + %cmp30 = icmp ne i32 %call29, 10, !dbg !288 + br i1 %cmp30, label %while.body31, label %while.end32, !dbg !286 + +while.body31: ; preds = %while.cond28 + br label %while.cond28, !dbg !286, !llvm.loop !289 + +while.end32: ; preds = %while.cond28 + %call33 = call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %call15, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0), i32* %nit), !dbg !291 + call void @llvm.dbg.value(metadata i32 %call33, metadata !192, metadata !DIExpression()), !dbg !271 + br label %while.cond34, !dbg !292 + +while.cond34: ; preds = %while.body37, %while.end32 + %call35 = call i32 @fgetc(%struct._IO_FILE* %call15), !dbg !293 + %cmp36 = icmp ne i32 %call35, 10, !dbg !294 + br i1 %cmp36, label %while.body37, label %while.end38, !dbg !292 + +while.body37: ; preds = %while.cond34 + br label %while.cond34, !dbg !292, !llvm.loop !295 + +while.end38: ; preds = %while.cond34 + call void @llvm.dbg.value(metadata i32 0, metadata !127, metadata !DIExpression()), !dbg !221 + br label %for.cond39, !dbg !297 + +for.cond39: ; preds = %for.inc45, %while.end38 + %i.1 = phi i32 [ 0, %while.end38 ], [ %inc46, %for.inc45 ], !dbg !299 + call void @llvm.dbg.value(metadata i32 %i.1, metadata !127, metadata !DIExpression()), !dbg !221 + %cmp40 = icmp sle i32 %i.1, 7, !dbg !300 + br i1 %cmp40, label %for.body41, label %for.end47, !dbg !302 + +for.body41: ; preds = %for.cond39 + %idxprom42 = sext i32 %i.1 to i64, !dbg !303 + %arrayidx43 = getelementptr inbounds [8 x i32], [8 x i32]* @debug_vec, i64 0, i64 %idxprom42, !dbg !303 + %call44 = call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %call15, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0), i32* %arrayidx43), !dbg !305 + call void @llvm.dbg.value(metadata i32 %call44, metadata !192, metadata !DIExpression()), !dbg !271 + br label %for.inc45, !dbg !306 + +for.inc45: ; preds = %for.body41 + %inc46 = add nsw i32 %i.1, 1, !dbg !307 + call void @llvm.dbg.value(metadata i32 %inc46, metadata !127, metadata !DIExpression()), !dbg !221 + br label %for.cond39, !dbg !308, !llvm.loop !309 + +for.end47: ; preds = %for.cond39 + %call48 = call i32 @fclose(%struct._IO_FILE* %call15), !dbg !311 + br label %if.end65, !dbg !312 + +if.else49: ; preds = %if.end + %call50 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.17, i64 0, i64 0)), !dbg !313 + store i32 8, i32* @lt, align 4, !dbg !315, !tbaa !278 + store i32 4, i32* %nit, align 4, !dbg !316, !tbaa !278 + %15 = load i32, i32* @lt, align 4, !dbg !317, !tbaa !278 + %idxprom51 = sext i32 %15 to i64, !dbg !318 + %arrayidx52 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom51, !dbg !318 + store i32 256, i32* %arrayidx52, align 4, !dbg !319, !tbaa !278 + %16 = load i32, i32* @lt, align 4, !dbg !320, !tbaa !278 + %idxprom53 = sext i32 %16 to i64, !dbg !321 + %arrayidx54 = getelementptr inbounds [10 x i32], [10 x i32]* @ny, i64 0, i64 %idxprom53, !dbg !321 + store i32 256, i32* %arrayidx54, align 4, !dbg !322, !tbaa !278 + %17 = load i32, i32* @lt, align 4, !dbg !323, !tbaa !278 + %idxprom55 = sext i32 %17 to i64, !dbg !324 + %arrayidx56 = getelementptr inbounds [10 x i32], [10 x i32]* @nz, i64 0, i64 %idxprom55, !dbg !324 + store i32 256, i32* %arrayidx56, align 4, !dbg !325, !tbaa !278 + call void @llvm.dbg.value(metadata i32 0, metadata !127, metadata !DIExpression()), !dbg !221 + br label %for.cond57, !dbg !326 + +for.cond57: ; preds = %for.inc62, %if.else49 + %i.2 = phi i32 [ 0, %if.else49 ], [ %inc63, %for.inc62 ], !dbg !328 + call void @llvm.dbg.value(metadata i32 %i.2, metadata !127, metadata !DIExpression()), !dbg !221 + %cmp58 = icmp sle i32 %i.2, 7, !dbg !329 + br i1 %cmp58, label %for.body59, label %for.end64, !dbg !331 + +for.body59: ; preds = %for.cond57 + %idxprom60 = sext i32 %i.2 to i64, !dbg !332 + %arrayidx61 = getelementptr inbounds [8 x i32], [8 x i32]* @debug_vec, i64 0, i64 %idxprom60, !dbg !332 + store i32 0, i32* %arrayidx61, align 4, !dbg !334, !tbaa !278 + br label %for.inc62, !dbg !335 + +for.inc62: ; preds = %for.body59 + %inc63 = add nsw i32 %i.2, 1, !dbg !336 + call void @llvm.dbg.value(metadata i32 %inc63, metadata !127, metadata !DIExpression()), !dbg !221 + br label %for.cond57, !dbg !337, !llvm.loop !338 + +for.end64: ; preds = %for.cond57 + br label %if.end65 + +if.end65: ; preds = %for.end64, %for.end47 + %18 = load i32, i32* @lt, align 4, !dbg !340, !tbaa !278 + %idxprom66 = sext i32 %18 to i64, !dbg !342 + %arrayidx67 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom66, !dbg !342 + %19 = load i32, i32* %arrayidx67, align 4, !dbg !342, !tbaa !278 + %20 = load i32, i32* @lt, align 4, !dbg !343, !tbaa !278 + %idxprom68 = sext i32 %20 to i64, !dbg !344 + %arrayidx69 = getelementptr inbounds [10 x i32], [10 x i32]* @ny, i64 0, i64 %idxprom68, !dbg !344 + %21 = load i32, i32* %arrayidx69, align 4, !dbg !344, !tbaa !278 + %cmp70 = icmp ne i32 %19, %21, !dbg !345 + br i1 %cmp70, label %if.then76, label %lor.lhs.false, !dbg !346 + +lor.lhs.false: ; preds = %if.end65 + %22 = load i32, i32* @lt, align 4, !dbg !347, !tbaa !278 + %idxprom71 = sext i32 %22 to i64, !dbg !348 + %arrayidx72 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom71, !dbg !348 + %23 = load i32, i32* %arrayidx72, align 4, !dbg !348, !tbaa !278 + %24 = load i32, i32* @lt, align 4, !dbg !349, !tbaa !278 + %idxprom73 = sext i32 %24 to i64, !dbg !350 + %arrayidx74 = getelementptr inbounds [10 x i32], [10 x i32]* @nz, i64 0, i64 %idxprom73, !dbg !350 + %25 = load i32, i32* %arrayidx74, align 4, !dbg !350, !tbaa !278 + %cmp75 = icmp ne i32 %23, %25, !dbg !351 + br i1 %cmp75, label %if.then76, label %if.else77, !dbg !352 + +if.then76: ; preds = %lor.lhs.false, %if.end65 + store i8 85, i8* @Class, align 1, !dbg !353, !tbaa !242 + br label %if.end133, !dbg !355 + +if.else77: ; preds = %lor.lhs.false + %26 = load i32, i32* @lt, align 4, !dbg !356, !tbaa !278 + %idxprom78 = sext i32 %26 to i64, !dbg !358 + %arrayidx79 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom78, !dbg !358 + %27 = load i32, i32* %arrayidx79, align 4, !dbg !358, !tbaa !278 + %cmp80 = icmp eq i32 %27, 32, !dbg !359 + br i1 %cmp80, label %land.lhs.true, label %if.else83, !dbg !360 + +land.lhs.true: ; preds = %if.else77 + %28 = load i32, i32* %nit, align 4, !dbg !361, !tbaa !278 + %cmp81 = icmp eq i32 %28, 4, !dbg !362 + br i1 %cmp81, label %if.then82, label %if.else83, !dbg !363 + +if.then82: ; preds = %land.lhs.true + store i8 83, i8* @Class, align 1, !dbg !364, !tbaa !242 + br label %if.end132, !dbg !366 + +if.else83: ; preds = %land.lhs.true, %if.else77 + %29 = load i32, i32* @lt, align 4, !dbg !367, !tbaa !278 + %idxprom84 = sext i32 %29 to i64, !dbg !369 + %arrayidx85 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom84, !dbg !369 + %30 = load i32, i32* %arrayidx85, align 4, !dbg !369, !tbaa !278 + %cmp86 = icmp eq i32 %30, 128, !dbg !370 + br i1 %cmp86, label %land.lhs.true87, label %if.else90, !dbg !371 + +land.lhs.true87: ; preds = %if.else83 + %31 = load i32, i32* %nit, align 4, !dbg !372, !tbaa !278 + %cmp88 = icmp eq i32 %31, 4, !dbg !373 + br i1 %cmp88, label %if.then89, label %if.else90, !dbg !374 + +if.then89: ; preds = %land.lhs.true87 + store i8 87, i8* @Class, align 1, !dbg !375, !tbaa !242 + br label %if.end131, !dbg !377 + +if.else90: ; preds = %land.lhs.true87, %if.else83 + %32 = load i32, i32* @lt, align 4, !dbg !378, !tbaa !278 + %idxprom91 = sext i32 %32 to i64, !dbg !380 + %arrayidx92 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom91, !dbg !380 + %33 = load i32, i32* %arrayidx92, align 4, !dbg !380, !tbaa !278 + %cmp93 = icmp eq i32 %33, 256, !dbg !381 + br i1 %cmp93, label %land.lhs.true94, label %if.else97, !dbg !382 + +land.lhs.true94: ; preds = %if.else90 + %34 = load i32, i32* %nit, align 4, !dbg !383, !tbaa !278 + %cmp95 = icmp eq i32 %34, 4, !dbg !384 + br i1 %cmp95, label %if.then96, label %if.else97, !dbg !385 + +if.then96: ; preds = %land.lhs.true94 + store i8 65, i8* @Class, align 1, !dbg !386, !tbaa !242 + br label %if.end130, !dbg !388 + +if.else97: ; preds = %land.lhs.true94, %if.else90 + %35 = load i32, i32* @lt, align 4, !dbg !389, !tbaa !278 + %idxprom98 = sext i32 %35 to i64, !dbg !391 + %arrayidx99 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom98, !dbg !391 + %36 = load i32, i32* %arrayidx99, align 4, !dbg !391, !tbaa !278 + %cmp100 = icmp eq i32 %36, 256, !dbg !392 + br i1 %cmp100, label %land.lhs.true101, label %if.else104, !dbg !393 + +land.lhs.true101: ; preds = %if.else97 + %37 = load i32, i32* %nit, align 4, !dbg !394, !tbaa !278 + %cmp102 = icmp eq i32 %37, 20, !dbg !395 + br i1 %cmp102, label %if.then103, label %if.else104, !dbg !396 + +if.then103: ; preds = %land.lhs.true101 + store i8 66, i8* @Class, align 1, !dbg !397, !tbaa !242 + br label %if.end129, !dbg !399 + +if.else104: ; preds = %land.lhs.true101, %if.else97 + %38 = load i32, i32* @lt, align 4, !dbg !400, !tbaa !278 + %idxprom105 = sext i32 %38 to i64, !dbg !402 + %arrayidx106 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom105, !dbg !402 + %39 = load i32, i32* %arrayidx106, align 4, !dbg !402, !tbaa !278 + %cmp107 = icmp eq i32 %39, 512, !dbg !403 + br i1 %cmp107, label %land.lhs.true108, label %if.else111, !dbg !404 + +land.lhs.true108: ; preds = %if.else104 + %40 = load i32, i32* %nit, align 4, !dbg !405, !tbaa !278 + %cmp109 = icmp eq i32 %40, 20, !dbg !406 + br i1 %cmp109, label %if.then110, label %if.else111, !dbg !407 + +if.then110: ; preds = %land.lhs.true108 + store i8 67, i8* @Class, align 1, !dbg !408, !tbaa !242 + br label %if.end128, !dbg !410 + +if.else111: ; preds = %land.lhs.true108, %if.else104 + %41 = load i32, i32* @lt, align 4, !dbg !411, !tbaa !278 + %idxprom112 = sext i32 %41 to i64, !dbg !413 + %arrayidx113 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom112, !dbg !413 + %42 = load i32, i32* %arrayidx113, align 4, !dbg !413, !tbaa !278 + %cmp114 = icmp eq i32 %42, 1024, !dbg !414 + br i1 %cmp114, label %land.lhs.true115, label %if.else118, !dbg !415 + +land.lhs.true115: ; preds = %if.else111 + %43 = load i32, i32* %nit, align 4, !dbg !416, !tbaa !278 + %cmp116 = icmp eq i32 %43, 50, !dbg !417 + br i1 %cmp116, label %if.then117, label %if.else118, !dbg !418 + +if.then117: ; preds = %land.lhs.true115 + store i8 68, i8* @Class, align 1, !dbg !419, !tbaa !242 + br label %if.end127, !dbg !421 + +if.else118: ; preds = %land.lhs.true115, %if.else111 + %44 = load i32, i32* @lt, align 4, !dbg !422, !tbaa !278 + %idxprom119 = sext i32 %44 to i64, !dbg !424 + %arrayidx120 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom119, !dbg !424 + %45 = load i32, i32* %arrayidx120, align 4, !dbg !424, !tbaa !278 + %cmp121 = icmp eq i32 %45, 2048, !dbg !425 + br i1 %cmp121, label %land.lhs.true122, label %if.else125, !dbg !426 + +land.lhs.true122: ; preds = %if.else118 + %46 = load i32, i32* %nit, align 4, !dbg !427, !tbaa !278 + %cmp123 = icmp eq i32 %46, 50, !dbg !428 + br i1 %cmp123, label %if.then124, label %if.else125, !dbg !429 + +if.then124: ; preds = %land.lhs.true122 + store i8 69, i8* @Class, align 1, !dbg !430, !tbaa !242 + br label %if.end126, !dbg !432 + +if.else125: ; preds = %land.lhs.true122, %if.else118 + store i8 85, i8* @Class, align 1, !dbg !433, !tbaa !242 + br label %if.end126 + +if.end126: ; preds = %if.else125, %if.then124 + br label %if.end127 + +if.end127: ; preds = %if.end126, %if.then117 + br label %if.end128 + +if.end128: ; preds = %if.end127, %if.then110 + br label %if.end129 + +if.end129: ; preds = %if.end128, %if.then103 + br label %if.end130 + +if.end130: ; preds = %if.end129, %if.then96 + br label %if.end131 + +if.end131: ; preds = %if.end130, %if.then89 + br label %if.end132 + +if.end132: ; preds = %if.end131, %if.then82 + br label %if.end133 + +if.end133: ; preds = %if.end132, %if.then76 + %arrayidx134 = getelementptr inbounds [4 x double], [4 x double]* %a, i64 0, i64 0, !dbg !435 + store double 0xC005555555555555, double* %arrayidx134, align 16, !dbg !436, !tbaa !437 + %arrayidx135 = getelementptr inbounds [4 x double], [4 x double]* %a, i64 0, i64 1, !dbg !439 + store double 0.000000e+00, double* %arrayidx135, align 8, !dbg !440, !tbaa !437 + %arrayidx136 = getelementptr inbounds [4 x double], [4 x double]* %a, i64 0, i64 2, !dbg !441 + store double 0x3FC5555555555555, double* %arrayidx136, align 16, !dbg !442, !tbaa !437 + %arrayidx137 = getelementptr inbounds [4 x double], [4 x double]* %a, i64 0, i64 3, !dbg !443 + store double 0x3FB5555555555555, double* %arrayidx137, align 8, !dbg !444, !tbaa !437 + %47 = load i8, i8* @Class, align 1, !dbg !445, !tbaa !242 + %conv = sext i8 %47 to i32, !dbg !445 + %cmp138 = icmp eq i32 %conv, 65, !dbg !447 + br i1 %cmp138, label %if.then148, label %lor.lhs.false140, !dbg !448 + +lor.lhs.false140: ; preds = %if.end133 + %48 = load i8, i8* @Class, align 1, !dbg !449, !tbaa !242 + %conv141 = sext i8 %48 to i32, !dbg !449 + %cmp142 = icmp eq i32 %conv141, 83, !dbg !450 + br i1 %cmp142, label %if.then148, label %lor.lhs.false144, !dbg !451 + +lor.lhs.false144: ; preds = %lor.lhs.false140 + %49 = load i8, i8* @Class, align 1, !dbg !452, !tbaa !242 + %conv145 = sext i8 %49 to i32, !dbg !452 + %cmp146 = icmp eq i32 %conv145, 87, !dbg !453 + br i1 %cmp146, label %if.then148, label %if.else153, !dbg !454 + +if.then148: ; preds = %lor.lhs.false144, %lor.lhs.false140, %if.end133 + %arrayidx149 = getelementptr inbounds [4 x double], [4 x double]* %c, i64 0, i64 0, !dbg !455 + store double -3.750000e-01, double* %arrayidx149, align 16, !dbg !457, !tbaa !437 + %arrayidx150 = getelementptr inbounds [4 x double], [4 x double]* %c, i64 0, i64 1, !dbg !458 + store double 3.125000e-02, double* %arrayidx150, align 8, !dbg !459, !tbaa !437 + %arrayidx151 = getelementptr inbounds [4 x double], [4 x double]* %c, i64 0, i64 2, !dbg !460 + store double -1.562500e-02, double* %arrayidx151, align 16, !dbg !461, !tbaa !437 + %arrayidx152 = getelementptr inbounds [4 x double], [4 x double]* %c, i64 0, i64 3, !dbg !462 + store double 0.000000e+00, double* %arrayidx152, align 8, !dbg !463, !tbaa !437 + br label %if.end158, !dbg !464 + +if.else153: ; preds = %lor.lhs.false144 + %arrayidx154 = getelementptr inbounds [4 x double], [4 x double]* %c, i64 0, i64 0, !dbg !465 + store double 0xBFC6969696969697, double* %arrayidx154, align 16, !dbg !467, !tbaa !437 + %arrayidx155 = getelementptr inbounds [4 x double], [4 x double]* %c, i64 0, i64 1, !dbg !468 + store double 0x3F9F07C1F07C1F08, double* %arrayidx155, align 8, !dbg !469, !tbaa !437 + %arrayidx156 = getelementptr inbounds [4 x double], [4 x double]* %c, i64 0, i64 2, !dbg !470 + store double 0xBF90C9714FBCDA3B, double* %arrayidx156, align 16, !dbg !471, !tbaa !437 + %arrayidx157 = getelementptr inbounds [4 x double], [4 x double]* %c, i64 0, i64 3, !dbg !472 + store double 0.000000e+00, double* %arrayidx157, align 8, !dbg !473, !tbaa !437 + br label %if.end158 + +if.end158: ; preds = %if.else153, %if.then148 + store i32 1, i32* @lb, align 4, !dbg !474, !tbaa !278 + %50 = load i32, i32* @lt, align 4, !dbg !475, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %50, metadata !104, metadata !DIExpression()), !dbg !221 + call void @setup(i32* %n1, i32* %n2, i32* %n3), !dbg !476 + %51 = load double*, double** @u, align 8, !dbg !478, !tbaa !198 + %52 = load i32, i32* %n1, align 4, !dbg !479, !tbaa !278 + %53 = load i32, i32* %n2, align 4, !dbg !480, !tbaa !278 + %54 = load i32, i32* %n3, align 4, !dbg !481, !tbaa !278 + call void @zero3(double* %51, i32 %52, i32 %53, i32 %54), !dbg !482 + %55 = load double*, double** @v, align 8, !dbg !483, !tbaa !198 + %56 = load i32, i32* %n1, align 4, !dbg !484, !tbaa !278 + %57 = load i32, i32* %n2, align 4, !dbg !485, !tbaa !278 + %58 = load i32, i32* %n3, align 4, !dbg !486, !tbaa !278 + %59 = load i32, i32* @lt, align 4, !dbg !487, !tbaa !278 + %idxprom159 = sext i32 %59 to i64, !dbg !488 + %arrayidx160 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom159, !dbg !488 + %60 = load i32, i32* %arrayidx160, align 4, !dbg !488, !tbaa !278 + %61 = load i32, i32* @lt, align 4, !dbg !489, !tbaa !278 + %idxprom161 = sext i32 %61 to i64, !dbg !490 + %arrayidx162 = getelementptr inbounds [10 x i32], [10 x i32]* @ny, i64 0, i64 %idxprom161, !dbg !490 + %62 = load i32, i32* %arrayidx162, align 4, !dbg !490, !tbaa !278 + call void @zran3(double* %55, i32 %56, i32 %57, i32 %58, i32 %60, i32 %62, i32 %50), !dbg !491 + %63 = load double*, double** @v, align 8, !dbg !492, !tbaa !198 + %64 = load i32, i32* %n1, align 4, !dbg !493, !tbaa !278 + %65 = load i32, i32* %n2, align 4, !dbg !494, !tbaa !278 + %66 = load i32, i32* %n3, align 4, !dbg !495, !tbaa !278 + %67 = load i32, i32* @lt, align 4, !dbg !496, !tbaa !278 + %idxprom163 = sext i32 %67 to i64, !dbg !497 + %arrayidx164 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom163, !dbg !497 + %68 = load i32, i32* %arrayidx164, align 4, !dbg !497, !tbaa !278 + %69 = load i32, i32* @lt, align 4, !dbg !498, !tbaa !278 + %idxprom165 = sext i32 %69 to i64, !dbg !499 + %arrayidx166 = getelementptr inbounds [10 x i32], [10 x i32]* @ny, i64 0, i64 %idxprom165, !dbg !499 + %70 = load i32, i32* %arrayidx166, align 4, !dbg !499, !tbaa !278 + %71 = load i32, i32* @lt, align 4, !dbg !500, !tbaa !278 + %idxprom167 = sext i32 %71 to i64, !dbg !501 + %arrayidx168 = getelementptr inbounds [10 x i32], [10 x i32]* @nz, i64 0, i64 %idxprom167, !dbg !501 + %72 = load i32, i32* %arrayidx168, align 4, !dbg !501, !tbaa !278 + call void @norm2u3(double* %63, i32 %64, i32 %65, i32 %66, double* %rnm2, double* %rnmu, i32 %68, i32 %70, i32 %72), !dbg !502 + %73 = load i32, i32* @lt, align 4, !dbg !503, !tbaa !278 + %idxprom169 = sext i32 %73 to i64, !dbg !504 + %arrayidx170 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom169, !dbg !504 + %74 = load i32, i32* %arrayidx170, align 4, !dbg !504, !tbaa !278 + %75 = load i32, i32* @lt, align 4, !dbg !505, !tbaa !278 + %idxprom171 = sext i32 %75 to i64, !dbg !506 + %arrayidx172 = getelementptr inbounds [10 x i32], [10 x i32]* @ny, i64 0, i64 %idxprom171, !dbg !506 + %76 = load i32, i32* %arrayidx172, align 4, !dbg !506, !tbaa !278 + %77 = load i32, i32* @lt, align 4, !dbg !507, !tbaa !278 + %idxprom173 = sext i32 %77 to i64, !dbg !508 + %arrayidx174 = getelementptr inbounds [10 x i32], [10 x i32]* @nz, i64 0, i64 %idxprom173, !dbg !508 + %78 = load i32, i32* %arrayidx174, align 4, !dbg !508, !tbaa !278 + %79 = load i8, i8* @Class, align 1, !dbg !509, !tbaa !242 + %conv175 = sext i8 %79 to i32, !dbg !509 + %call176 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.18, i64 0, i64 0), i32 %74, i32 %76, i32 %78, i32 %conv175), !dbg !510 + %80 = load i32, i32* %nit, align 4, !dbg !511, !tbaa !278 + %call177 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.19, i64 0, i64 0), i32 %80), !dbg !512 + %call178 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.20, i64 0, i64 0)), !dbg !513 + %81 = load double*, double** @u, align 8, !dbg !514, !tbaa !198 + %82 = load double*, double** @v, align 8, !dbg !515, !tbaa !198 + %83 = load double*, double** @r, align 8, !dbg !516, !tbaa !198 + %84 = load i32, i32* %n1, align 4, !dbg !517, !tbaa !278 + %85 = load i32, i32* %n2, align 4, !dbg !518, !tbaa !278 + %86 = load i32, i32* %n3, align 4, !dbg !519, !tbaa !278 + %arraydecay = getelementptr inbounds [4 x double], [4 x double]* %a, i64 0, i64 0, !dbg !520 + call void @resid(double* %81, double* %82, double* %83, i32 %84, i32 %85, i32 %86, double* %arraydecay, i32 %50), !dbg !521 + %87 = load double*, double** @r, align 8, !dbg !522, !tbaa !198 + %88 = load i32, i32* %n1, align 4, !dbg !523, !tbaa !278 + %89 = load i32, i32* %n2, align 4, !dbg !524, !tbaa !278 + %90 = load i32, i32* %n3, align 4, !dbg !525, !tbaa !278 + %91 = load i32, i32* @lt, align 4, !dbg !526, !tbaa !278 + %idxprom179 = sext i32 %91 to i64, !dbg !527 + %arrayidx180 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom179, !dbg !527 + %92 = load i32, i32* %arrayidx180, align 4, !dbg !527, !tbaa !278 + %93 = load i32, i32* @lt, align 4, !dbg !528, !tbaa !278 + %idxprom181 = sext i32 %93 to i64, !dbg !529 + %arrayidx182 = getelementptr inbounds [10 x i32], [10 x i32]* @ny, i64 0, i64 %idxprom181, !dbg !529 + %94 = load i32, i32* %arrayidx182, align 4, !dbg !529, !tbaa !278 + %95 = load i32, i32* @lt, align 4, !dbg !530, !tbaa !278 + %idxprom183 = sext i32 %95 to i64, !dbg !531 + %arrayidx184 = getelementptr inbounds [10 x i32], [10 x i32]* @nz, i64 0, i64 %idxprom183, !dbg !531 + %96 = load i32, i32* %arrayidx184, align 4, !dbg !531, !tbaa !278 + call void @norm2u3(double* %87, i32 %88, i32 %89, i32 %90, double* %rnm2, double* %rnmu, i32 %92, i32 %94, i32 %96), !dbg !532 + %97 = load double, double* %rnm2, align 8, !dbg !533, !tbaa !437 + call void @llvm.dbg.value(metadata double %97, metadata !116, metadata !DIExpression()), !dbg !221 + %98 = load double, double* %rnmu, align 8, !dbg !534, !tbaa !437 + call void @llvm.dbg.value(metadata double %98, metadata !117, metadata !DIExpression()), !dbg !221 + %99 = load double*, double** @u, align 8, !dbg !535, !tbaa !198 + %100 = load double*, double** @v, align 8, !dbg !536, !tbaa !198 + %101 = load double*, double** @r, align 8, !dbg !537, !tbaa !198 + %arraydecay185 = getelementptr inbounds [4 x double], [4 x double]* %a, i64 0, i64 0, !dbg !538 + %arraydecay186 = getelementptr inbounds [4 x double], [4 x double]* %c, i64 0, i64 0, !dbg !539 + %102 = load i32, i32* %n1, align 4, !dbg !540, !tbaa !278 + %103 = load i32, i32* %n2, align 4, !dbg !541, !tbaa !278 + %104 = load i32, i32* %n3, align 4, !dbg !542, !tbaa !278 + call void @mg3P(double* %99, double* %100, double* %101, double* %arraydecay185, double* %arraydecay186, i32 %102, i32 %103, i32 %104), !dbg !543 + %105 = load double*, double** @u, align 8, !dbg !544, !tbaa !198 + %106 = load double*, double** @v, align 8, !dbg !545, !tbaa !198 + %107 = load double*, double** @r, align 8, !dbg !546, !tbaa !198 + %108 = load i32, i32* %n1, align 4, !dbg !547, !tbaa !278 + %109 = load i32, i32* %n2, align 4, !dbg !548, !tbaa !278 + %110 = load i32, i32* %n3, align 4, !dbg !549, !tbaa !278 + %arraydecay187 = getelementptr inbounds [4 x double], [4 x double]* %a, i64 0, i64 0, !dbg !550 + call void @resid(double* %105, double* %106, double* %107, i32 %108, i32 %109, i32 %110, double* %arraydecay187, i32 %50), !dbg !551 + call void @setup(i32* %n1, i32* %n2, i32* %n3), !dbg !552 + %111 = load double*, double** @u, align 8, !dbg !553, !tbaa !198 + %112 = load i32, i32* %n1, align 4, !dbg !554, !tbaa !278 + %113 = load i32, i32* %n2, align 4, !dbg !555, !tbaa !278 + %114 = load i32, i32* %n3, align 4, !dbg !556, !tbaa !278 + call void @zero3(double* %111, i32 %112, i32 %113, i32 %114), !dbg !557 + %115 = load double*, double** @v, align 8, !dbg !558, !tbaa !198 + %116 = load i32, i32* %n1, align 4, !dbg !559, !tbaa !278 + %117 = load i32, i32* %n2, align 4, !dbg !560, !tbaa !278 + %118 = load i32, i32* %n3, align 4, !dbg !561, !tbaa !278 + %119 = load i32, i32* @lt, align 4, !dbg !562, !tbaa !278 + %idxprom188 = sext i32 %119 to i64, !dbg !563 + %arrayidx189 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom188, !dbg !563 + %120 = load i32, i32* %arrayidx189, align 4, !dbg !563, !tbaa !278 + %121 = load i32, i32* @lt, align 4, !dbg !564, !tbaa !278 + %idxprom190 = sext i32 %121 to i64, !dbg !565 + %arrayidx191 = getelementptr inbounds [10 x i32], [10 x i32]* @ny, i64 0, i64 %idxprom190, !dbg !565 + %122 = load i32, i32* %arrayidx191, align 4, !dbg !565, !tbaa !278 + call void @zran3(double* %115, i32 %116, i32 %117, i32 %118, i32 %120, i32 %122, i32 %50), !dbg !566 + call void @timer_stop(i32 0), !dbg !567 + %call192 = call double @timer_read(i32 0), !dbg !568 + call void @llvm.dbg.value(metadata double %call192, metadata !107, metadata !DIExpression()), !dbg !221 + %call193 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.21, i64 0, i64 0), double %call192), !dbg !569 + call void @llvm.dbg.value(metadata i32 1, metadata !127, metadata !DIExpression()), !dbg !221 + br label %for.cond194, !dbg !570 + +for.cond194: ; preds = %for.inc198, %if.end158 + %i.3 = phi i32 [ 1, %if.end158 ], [ %inc199, %for.inc198 ], !dbg !572 + call void @llvm.dbg.value(metadata i32 %i.3, metadata !127, metadata !DIExpression()), !dbg !221 + %cmp195 = icmp slt i32 %i.3, 10, !dbg !573 + br i1 %cmp195, label %for.body197, label %for.end200, !dbg !575 + +for.body197: ; preds = %for.cond194 + call void @timer_clear(i32 %i.3), !dbg !576 + br label %for.inc198, !dbg !578 + +for.inc198: ; preds = %for.body197 + %inc199 = add nsw i32 %i.3, 1, !dbg !579 + call void @llvm.dbg.value(metadata i32 %inc199, metadata !127, metadata !DIExpression()), !dbg !221 + br label %for.cond194, !dbg !580, !llvm.loop !581 + +for.end200: ; preds = %for.cond194 + call void @timer_start(i32 1), !dbg !583 + %123 = load double*, double** @u, align 8, !dbg !584, !tbaa !198 + %124 = load double*, double** @v, align 8, !dbg !585, !tbaa !198 + %125 = load double*, double** @r, align 8, !dbg !586, !tbaa !198 + %126 = load i32, i32* %n1, align 4, !dbg !587, !tbaa !278 + %127 = load i32, i32* %n2, align 4, !dbg !588, !tbaa !278 + %128 = load i32, i32* %n3, align 4, !dbg !589, !tbaa !278 + %arraydecay201 = getelementptr inbounds [4 x double], [4 x double]* %a, i64 0, i64 0, !dbg !590 + call void @resid(double* %123, double* %124, double* %125, i32 %126, i32 %127, i32 %128, double* %arraydecay201, i32 %50), !dbg !591 + %129 = load double*, double** @r, align 8, !dbg !592, !tbaa !198 + %130 = load i32, i32* %n1, align 4, !dbg !593, !tbaa !278 + %131 = load i32, i32* %n2, align 4, !dbg !594, !tbaa !278 + %132 = load i32, i32* %n3, align 4, !dbg !595, !tbaa !278 + %133 = load i32, i32* @lt, align 4, !dbg !596, !tbaa !278 + %idxprom202 = sext i32 %133 to i64, !dbg !597 + %arrayidx203 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom202, !dbg !597 + %134 = load i32, i32* %arrayidx203, align 4, !dbg !597, !tbaa !278 + %135 = load i32, i32* @lt, align 4, !dbg !598, !tbaa !278 + %idxprom204 = sext i32 %135 to i64, !dbg !599 + %arrayidx205 = getelementptr inbounds [10 x i32], [10 x i32]* @ny, i64 0, i64 %idxprom204, !dbg !599 + %136 = load i32, i32* %arrayidx205, align 4, !dbg !599, !tbaa !278 + %137 = load i32, i32* @lt, align 4, !dbg !600, !tbaa !278 + %idxprom206 = sext i32 %137 to i64, !dbg !601 + %arrayidx207 = getelementptr inbounds [10 x i32], [10 x i32]* @nz, i64 0, i64 %idxprom206, !dbg !601 + %138 = load i32, i32* %arrayidx207, align 4, !dbg !601, !tbaa !278 + call void @norm2u3(double* %129, i32 %130, i32 %131, i32 %132, double* %rnm2, double* %rnmu, i32 %134, i32 %136, i32 %138), !dbg !602 + %139 = load double, double* %rnm2, align 8, !dbg !603, !tbaa !437 + call void @llvm.dbg.value(metadata double %139, metadata !116, metadata !DIExpression()), !dbg !221 + %140 = load double, double* %rnmu, align 8, !dbg !604, !tbaa !437 + call void @llvm.dbg.value(metadata double %140, metadata !117, metadata !DIExpression()), !dbg !221 + call void @llvm.dbg.value(metadata i32 1, metadata !105, metadata !DIExpression()), !dbg !221 + br label %for.cond208, !dbg !605 + +for.cond208: ; preds = %for.inc226, %for.end200 + %it.0 = phi i32 [ 1, %for.end200 ], [ %inc227, %for.inc226 ], !dbg !607 + call void @llvm.dbg.value(metadata i32 %it.0, metadata !105, metadata !DIExpression()), !dbg !221 + %141 = load i32, i32* %nit, align 4, !dbg !608, !tbaa !278 + %cmp209 = icmp sle i32 %it.0, %141, !dbg !610 + br i1 %cmp209, label %for.body211, label %for.end228, !dbg !611 + +for.body211: ; preds = %for.cond208 + %cmp212 = icmp eq i32 %it.0, 1, !dbg !612 + br i1 %cmp212, label %if.then220, label %lor.lhs.false214, !dbg !615 + +lor.lhs.false214: ; preds = %for.body211 + %142 = load i32, i32* %nit, align 4, !dbg !616, !tbaa !278 + %cmp215 = icmp eq i32 %it.0, %142, !dbg !617 + br i1 %cmp215, label %if.then220, label %lor.lhs.false217, !dbg !618 + +lor.lhs.false217: ; preds = %lor.lhs.false214 + %rem = srem i32 %it.0, 100, !dbg !619 + %cmp218 = icmp eq i32 %rem, 0, !dbg !620 + br i1 %cmp218, label %if.then220, label %if.end222, !dbg !621 + +if.then220: ; preds = %lor.lhs.false217, %lor.lhs.false214, %for.body211 + %call221 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.22, i64 0, i64 0), i32 %it.0), !dbg !622 + br label %if.end222, !dbg !624 + +if.end222: ; preds = %if.then220, %lor.lhs.false217 + %143 = load double*, double** @u, align 8, !dbg !625, !tbaa !198 + %144 = load double*, double** @v, align 8, !dbg !626, !tbaa !198 + %145 = load double*, double** @r, align 8, !dbg !627, !tbaa !198 + %arraydecay223 = getelementptr inbounds [4 x double], [4 x double]* %a, i64 0, i64 0, !dbg !628 + %arraydecay224 = getelementptr inbounds [4 x double], [4 x double]* %c, i64 0, i64 0, !dbg !629 + %146 = load i32, i32* %n1, align 4, !dbg !630, !tbaa !278 + %147 = load i32, i32* %n2, align 4, !dbg !631, !tbaa !278 + %148 = load i32, i32* %n3, align 4, !dbg !632, !tbaa !278 + call void @mg3P(double* %143, double* %144, double* %145, double* %arraydecay223, double* %arraydecay224, i32 %146, i32 %147, i32 %148), !dbg !633 + %149 = load double*, double** @u, align 8, !dbg !634, !tbaa !198 + %150 = load double*, double** @v, align 8, !dbg !635, !tbaa !198 + %151 = load double*, double** @r, align 8, !dbg !636, !tbaa !198 + %152 = load i32, i32* %n1, align 4, !dbg !637, !tbaa !278 + %153 = load i32, i32* %n2, align 4, !dbg !638, !tbaa !278 + %154 = load i32, i32* %n3, align 4, !dbg !639, !tbaa !278 + %arraydecay225 = getelementptr inbounds [4 x double], [4 x double]* %a, i64 0, i64 0, !dbg !640 + call void @resid(double* %149, double* %150, double* %151, i32 %152, i32 %153, i32 %154, double* %arraydecay225, i32 %50), !dbg !641 + br label %for.inc226, !dbg !642 + +for.inc226: ; preds = %if.end222 + %inc227 = add nsw i32 %it.0, 1, !dbg !643 + call void @llvm.dbg.value(metadata i32 %inc227, metadata !105, metadata !DIExpression()), !dbg !221 + br label %for.cond208, !dbg !644, !llvm.loop !645 + +for.end228: ; preds = %for.cond208 + %155 = load double*, double** @r, align 8, !dbg !647, !tbaa !198 + %156 = load i32, i32* %n1, align 4, !dbg !648, !tbaa !278 + %157 = load i32, i32* %n2, align 4, !dbg !649, !tbaa !278 + %158 = load i32, i32* %n3, align 4, !dbg !650, !tbaa !278 + %159 = load i32, i32* @lt, align 4, !dbg !651, !tbaa !278 + %idxprom229 = sext i32 %159 to i64, !dbg !652 + %arrayidx230 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom229, !dbg !652 + %160 = load i32, i32* %arrayidx230, align 4, !dbg !652, !tbaa !278 + %161 = load i32, i32* @lt, align 4, !dbg !653, !tbaa !278 + %idxprom231 = sext i32 %161 to i64, !dbg !654 + %arrayidx232 = getelementptr inbounds [10 x i32], [10 x i32]* @ny, i64 0, i64 %idxprom231, !dbg !654 + %162 = load i32, i32* %arrayidx232, align 4, !dbg !654, !tbaa !278 + %163 = load i32, i32* @lt, align 4, !dbg !655, !tbaa !278 + %idxprom233 = sext i32 %163 to i64, !dbg !656 + %arrayidx234 = getelementptr inbounds [10 x i32], [10 x i32]* @nz, i64 0, i64 %idxprom233, !dbg !656 + %164 = load i32, i32* %arrayidx234, align 4, !dbg !656, !tbaa !278 + call void @norm2u3(double* %155, i32 %156, i32 %157, i32 %158, double* %rnm2, double* %rnmu, i32 %160, i32 %162, i32 %164), !dbg !657 + call void @timer_stop(i32 1), !dbg !658 + %call235 = call double @timer_read(i32 1), !dbg !659 + call void @llvm.dbg.value(metadata double %call235, metadata !106, metadata !DIExpression()), !dbg !221 + call void @llvm.dbg.value(metadata i32 0, metadata !126, metadata !DIExpression()), !dbg !221 + call void @llvm.dbg.value(metadata double 0.000000e+00, metadata !124, metadata !DIExpression()), !dbg !221 + %call236 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.23, i64 0, i64 0)), !dbg !660 + call void @llvm.dbg.value(metadata double 1.000000e-08, metadata !118, metadata !DIExpression()), !dbg !221 + %165 = load i8, i8* @Class, align 1, !dbg !661, !tbaa !242 + %conv237 = sext i8 %165 to i32, !dbg !661 + %cmp238 = icmp ne i32 %conv237, 85, !dbg !663 + br i1 %cmp238, label %if.then240, label %if.else295, !dbg !664 + +if.then240: ; preds = %for.end228 + %166 = load i8, i8* @Class, align 1, !dbg !665, !tbaa !242 + %conv241 = sext i8 %166 to i32, !dbg !665 + %cmp242 = icmp eq i32 %conv241, 83, !dbg !668 + br i1 %cmp242, label %if.then244, label %if.else245, !dbg !669 + +if.then244: ; preds = %if.then240 + call void @llvm.dbg.value(metadata double 0x3F0BD3E23D9213BB, metadata !124, metadata !DIExpression()), !dbg !221 + br label %if.end281, !dbg !670 + +if.else245: ; preds = %if.then240 + %167 = load i8, i8* @Class, align 1, !dbg !672, !tbaa !242 + %conv246 = sext i8 %167 to i32, !dbg !672 + %cmp247 = icmp eq i32 %conv246, 87, !dbg !674 + br i1 %cmp247, label %if.then249, label %if.else250, !dbg !675 + +if.then249: ; preds = %if.else245 + call void @llvm.dbg.value(metadata double 0x3EDB203DF6536F99, metadata !124, metadata !DIExpression()), !dbg !221 + br label %if.end280, !dbg !676 + +if.else250: ; preds = %if.else245 + %168 = load i8, i8* @Class, align 1, !dbg !678, !tbaa !242 + %conv251 = sext i8 %168 to i32, !dbg !678 + %cmp252 = icmp eq i32 %conv251, 65, !dbg !680 + br i1 %cmp252, label %if.then254, label %if.else255, !dbg !681 + +if.then254: ; preds = %if.else250 + call void @llvm.dbg.value(metadata double 0x3EC4699CB9D96F7E, metadata !124, metadata !DIExpression()), !dbg !221 + br label %if.end279, !dbg !682 + +if.else255: ; preds = %if.else250 + %169 = load i8, i8* @Class, align 1, !dbg !684, !tbaa !242 + %conv256 = sext i8 %169 to i32, !dbg !684 + %cmp257 = icmp eq i32 %conv256, 66, !dbg !686 + br i1 %cmp257, label %if.then259, label %if.else260, !dbg !687 + +if.then259: ; preds = %if.else255 + call void @llvm.dbg.value(metadata double 0x3EBE355D7EEFFBBC, metadata !124, metadata !DIExpression()), !dbg !221 + br label %if.end278, !dbg !688 + +if.else260: ; preds = %if.else255 + %170 = load i8, i8* @Class, align 1, !dbg !690, !tbaa !242 + %conv261 = sext i8 %170 to i32, !dbg !690 + %cmp262 = icmp eq i32 %conv261, 67, !dbg !692 + br i1 %cmp262, label %if.then264, label %if.else265, !dbg !693 + +if.then264: ; preds = %if.else260 + call void @llvm.dbg.value(metadata double 0x3EA3260BB371CC43, metadata !124, metadata !DIExpression()), !dbg !221 + br label %if.end277, !dbg !694 + +if.else265: ; preds = %if.else260 + %171 = load i8, i8* @Class, align 1, !dbg !696, !tbaa !242 + %conv266 = sext i8 %171 to i32, !dbg !696 + %cmp267 = icmp eq i32 %conv266, 68, !dbg !698 + br i1 %cmp267, label %if.then269, label %if.else270, !dbg !699 + +if.then269: ; preds = %if.else265 + call void @llvm.dbg.value(metadata double 0x3DE5C2A764FA50DB, metadata !124, metadata !DIExpression()), !dbg !221 + br label %if.end276, !dbg !700 + +if.else270: ; preds = %if.else265 + %172 = load i8, i8* @Class, align 1, !dbg !702, !tbaa !242 + %conv271 = sext i8 %172 to i32, !dbg !702 + %cmp272 = icmp eq i32 %conv271, 69, !dbg !704 + br i1 %cmp272, label %if.then274, label %if.end275, !dbg !705 + +if.then274: ; preds = %if.else270 + call void @llvm.dbg.value(metadata double 0x3DD66C65322FCBAA, metadata !124, metadata !DIExpression()), !dbg !221 + br label %if.end275, !dbg !706 + +if.end275: ; preds = %if.then274, %if.else270 + %verify_value.0 = phi double [ 0x3DD66C65322FCBAA, %if.then274 ], [ 0.000000e+00, %if.else270 ], !dbg !221 + call void @llvm.dbg.value(metadata double %verify_value.0, metadata !124, metadata !DIExpression()), !dbg !221 + br label %if.end276 + +if.end276: ; preds = %if.end275, %if.then269 + %verify_value.1 = phi double [ 0x3DE5C2A764FA50DB, %if.then269 ], [ %verify_value.0, %if.end275 ], !dbg !708 + call void @llvm.dbg.value(metadata double %verify_value.1, metadata !124, metadata !DIExpression()), !dbg !221 + br label %if.end277 + +if.end277: ; preds = %if.end276, %if.then264 + %verify_value.2 = phi double [ 0x3EA3260BB371CC43, %if.then264 ], [ %verify_value.1, %if.end276 ], !dbg !709 + call void @llvm.dbg.value(metadata double %verify_value.2, metadata !124, metadata !DIExpression()), !dbg !221 + br label %if.end278 + +if.end278: ; preds = %if.end277, %if.then259 + %verify_value.3 = phi double [ 0x3EBE355D7EEFFBBC, %if.then259 ], [ %verify_value.2, %if.end277 ], !dbg !710 + call void @llvm.dbg.value(metadata double %verify_value.3, metadata !124, metadata !DIExpression()), !dbg !221 + br label %if.end279 + +if.end279: ; preds = %if.end278, %if.then254 + %verify_value.4 = phi double [ 0x3EC4699CB9D96F7E, %if.then254 ], [ %verify_value.3, %if.end278 ], !dbg !711 + call void @llvm.dbg.value(metadata double %verify_value.4, metadata !124, metadata !DIExpression()), !dbg !221 + br label %if.end280 + +if.end280: ; preds = %if.end279, %if.then249 + %verify_value.5 = phi double [ 0x3EDB203DF6536F99, %if.then249 ], [ %verify_value.4, %if.end279 ], !dbg !712 + call void @llvm.dbg.value(metadata double %verify_value.5, metadata !124, metadata !DIExpression()), !dbg !221 + br label %if.end281 + +if.end281: ; preds = %if.end280, %if.then244 + %verify_value.6 = phi double [ 0x3F0BD3E23D9213BB, %if.then244 ], [ %verify_value.5, %if.end280 ], !dbg !713 + call void @llvm.dbg.value(metadata double %verify_value.6, metadata !124, metadata !DIExpression()), !dbg !221 + %173 = load double, double* %rnm2, align 8, !dbg !714, !tbaa !437 + %sub = fsub double %173, %verify_value.6, !dbg !715 + %174 = call double @llvm.fabs.f64(double %sub), !dbg !716 + %div = fdiv double %174, %verify_value.6, !dbg !717 + call void @llvm.dbg.value(metadata double %div, metadata !125, metadata !DIExpression()), !dbg !221 + %call282 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.24, i64 0, i64 0), double 1.000000e-08), !dbg !718 + %175 = load double, double* %rnm2, align 8, !dbg !719, !tbaa !437 + %call283 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.25, i64 0, i64 0), double %div, double %175, double %verify_value.6), !dbg !720 + %cmp284 = fcmp ole double %div, 1.000000e-08, !dbg !721 + br i1 %cmp284, label %if.then286, label %if.else290, !dbg !723 + +if.then286: ; preds = %if.end281 + call void @llvm.dbg.value(metadata i32 1, metadata !126, metadata !DIExpression()), !dbg !221 + %call287 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.26, i64 0, i64 0)), !dbg !724 + %176 = load double, double* %rnm2, align 8, !dbg !726, !tbaa !437 + %call288 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.27, i64 0, i64 0), double %176), !dbg !727 + %call289 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.28, i64 0, i64 0), double %div), !dbg !728 + br label %if.end294, !dbg !729 + +if.else290: ; preds = %if.end281 + call void @llvm.dbg.value(metadata i32 0, metadata !126, metadata !DIExpression()), !dbg !221 + %call291 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.29, i64 0, i64 0)), !dbg !730 + %177 = load double, double* %rnm2, align 8, !dbg !732, !tbaa !437 + %call292 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.30, i64 0, i64 0), double %177), !dbg !733 + %call293 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.31, i64 0, i64 0), double %verify_value.6), !dbg !734 + br label %if.end294 + +if.end294: ; preds = %if.else290, %if.then286 + %verified.0 = phi i32 [ 1, %if.then286 ], [ 0, %if.else290 ], !dbg !735 + call void @llvm.dbg.value(metadata i32 %verified.0, metadata !126, metadata !DIExpression()), !dbg !221 + br label %if.end299, !dbg !736 + +if.else295: ; preds = %for.end228 + call void @llvm.dbg.value(metadata i32 0, metadata !126, metadata !DIExpression()), !dbg !221 + %call296 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.32, i64 0, i64 0)), !dbg !737 + %call297 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.33, i64 0, i64 0)), !dbg !739 + %178 = load double, double* %rnm2, align 8, !dbg !740, !tbaa !437 + %call298 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.27, i64 0, i64 0), double %178), !dbg !741 + br label %if.end299 + +if.end299: ; preds = %if.else295, %if.end294 + %verified.1 = phi i32 [ %verified.0, %if.end294 ], [ 0, %if.else295 ], !dbg !742 + call void @llvm.dbg.value(metadata i32 %verified.1, metadata !126, metadata !DIExpression()), !dbg !221 + %179 = load i32, i32* @lt, align 4, !dbg !743, !tbaa !278 + %idxprom300 = sext i32 %179 to i64, !dbg !744 + %arrayidx301 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom300, !dbg !744 + %180 = load i32, i32* %arrayidx301, align 4, !dbg !744, !tbaa !278 + %conv302 = sitofp i32 %180 to double, !dbg !744 + %mul = fmul double 1.000000e+00, %conv302, !dbg !745 + %181 = load i32, i32* @lt, align 4, !dbg !746, !tbaa !278 + %idxprom303 = sext i32 %181 to i64, !dbg !747 + %arrayidx304 = getelementptr inbounds [10 x i32], [10 x i32]* @ny, i64 0, i64 %idxprom303, !dbg !747 + %182 = load i32, i32* %arrayidx304, align 4, !dbg !747, !tbaa !278 + %conv305 = sitofp i32 %182 to double, !dbg !747 + %mul306 = fmul double %mul, %conv305, !dbg !748 + %183 = load i32, i32* @lt, align 4, !dbg !749, !tbaa !278 + %idxprom307 = sext i32 %183 to i64, !dbg !750 + %arrayidx308 = getelementptr inbounds [10 x i32], [10 x i32]* @nz, i64 0, i64 %idxprom307, !dbg !750 + %184 = load i32, i32* %arrayidx308, align 4, !dbg !750, !tbaa !278 + %conv309 = sitofp i32 %184 to double, !dbg !750 + %mul310 = fmul double %mul306, %conv309, !dbg !751 + call void @llvm.dbg.value(metadata double %mul310, metadata !123, metadata !DIExpression()), !dbg !221 + %cmp311 = fcmp une double %call235, 0.000000e+00, !dbg !752 + br i1 %cmp311, label %if.then313, label %if.else319, !dbg !754 + +if.then313: ; preds = %if.end299 + %185 = load i32, i32* %nit, align 4, !dbg !755, !tbaa !278 + %conv314 = sitofp i32 %185 to double, !dbg !755 + %mul315 = fmul double 5.800000e+01, %conv314, !dbg !757 + %mul316 = fmul double %mul315, %mul310, !dbg !758 + %mul317 = fmul double %mul316, 0x3EB0C6F7A0B5ED8D, !dbg !759 + %div318 = fdiv double %mul317, %call235, !dbg !760 + call void @llvm.dbg.value(metadata double %div318, metadata !108, metadata !DIExpression()), !dbg !221 + br label %if.end320, !dbg !761 + +if.else319: ; preds = %if.end299 + call void @llvm.dbg.value(metadata double 0.000000e+00, metadata !108, metadata !DIExpression()), !dbg !221 + br label %if.end320 + +if.end320: ; preds = %if.else319, %if.then313 + %mflops.0 = phi double [ %div318, %if.then313 ], [ 0.000000e+00, %if.else319 ], !dbg !762 + call void @llvm.dbg.value(metadata double %mflops.0, metadata !108, metadata !DIExpression()), !dbg !221 + %186 = load i8, i8* @Class, align 1, !dbg !763, !tbaa !242 + %187 = load i32, i32* @lt, align 4, !dbg !764, !tbaa !278 + %idxprom321 = sext i32 %187 to i64, !dbg !765 + %arrayidx322 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom321, !dbg !765 + %188 = load i32, i32* %arrayidx322, align 4, !dbg !765, !tbaa !278 + %189 = load i32, i32* @lt, align 4, !dbg !766, !tbaa !278 + %idxprom323 = sext i32 %189 to i64, !dbg !767 + %arrayidx324 = getelementptr inbounds [10 x i32], [10 x i32]* @ny, i64 0, i64 %idxprom323, !dbg !767 + %190 = load i32, i32* %arrayidx324, align 4, !dbg !767, !tbaa !278 + %191 = load i32, i32* @lt, align 4, !dbg !768, !tbaa !278 + %idxprom325 = sext i32 %191 to i64, !dbg !769 + %arrayidx326 = getelementptr inbounds [10 x i32], [10 x i32]* @nz, i64 0, i64 %idxprom325, !dbg !769 + %192 = load i32, i32* %arrayidx326, align 4, !dbg !769, !tbaa !278 + %193 = load i32, i32* %nit, align 4, !dbg !770, !tbaa !278 + call void @print_results(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.34, i64 0, i64 0), i8 signext %186, i32 %188, i32 %190, i32 %192, i32 %193, double %call235, double %mflops.0, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.35, i64 0, i64 0), i32 %verified.1, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.37, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.38, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.38, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.39, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.40, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.38, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.38, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.41, i64 0, i64 0)), !dbg !771 + %194 = load i32, i32* @timeron, align 4, !dbg !772, !tbaa !242 + %tobool = icmp ne i32 %194, 0, !dbg !772 + br i1 %tobool, label %if.then327, label %if.end357, !dbg !774 + +if.then327: ; preds = %if.end320 + %call328 = call double @timer_read(i32 1), !dbg !775 + call void @llvm.dbg.value(metadata double %call328, metadata !131, metadata !DIExpression()), !dbg !221 + %cmp329 = fcmp oeq double %call328, 0.000000e+00, !dbg !777 + br i1 %cmp329, label %if.then331, label %if.end332, !dbg !779 + +if.then331: ; preds = %if.then327 + call void @llvm.dbg.value(metadata double 1.000000e+00, metadata !131, metadata !DIExpression()), !dbg !221 + br label %if.end332, !dbg !780 + +if.end332: ; preds = %if.then331, %if.then327 + %tmax.0 = phi double [ 1.000000e+00, %if.then331 ], [ %call328, %if.then327 ], !dbg !781 + call void @llvm.dbg.value(metadata double %tmax.0, metadata !131, metadata !DIExpression()), !dbg !221 + %call333 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.42, i64 0, i64 0)), !dbg !782 + call void @llvm.dbg.value(metadata i32 1, metadata !127, metadata !DIExpression()), !dbg !221 + br label %for.cond334, !dbg !783 + +for.cond334: ; preds = %for.inc354, %if.end332 + %i.4 = phi i32 [ 1, %if.end332 ], [ %inc355, %for.inc354 ], !dbg !785 + call void @llvm.dbg.value(metadata i32 %i.4, metadata !127, metadata !DIExpression()), !dbg !221 + %cmp335 = icmp slt i32 %i.4, 10, !dbg !786 + br i1 %cmp335, label %for.body337, label %for.end356, !dbg !788 + +for.body337: ; preds = %for.cond334 + %call338 = call double @timer_read(i32 %i.4), !dbg !789 + call void @llvm.dbg.value(metadata double %call338, metadata !106, metadata !DIExpression()), !dbg !221 + %cmp339 = icmp eq i32 %i.4, 5, !dbg !791 + br i1 %cmp339, label %if.then341, label %if.else347, !dbg !793 + +if.then341: ; preds = %for.body337 + %call342 = call double @timer_read(i32 4), !dbg !794 + %sub343 = fsub double %call342, %call338, !dbg !796 + call void @llvm.dbg.value(metadata double %sub343, metadata !106, metadata !DIExpression()), !dbg !221 + %mul344 = fmul double %sub343, 1.000000e+02, !dbg !797 + %div345 = fdiv double %mul344, %tmax.0, !dbg !798 + %call346 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.43, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.44, i64 0, i64 0), double %sub343, double %div345), !dbg !799 + br label %if.end353, !dbg !800 + +if.else347: ; preds = %for.body337 + %idxprom348 = sext i32 %i.4 to i64, !dbg !801 + %arrayidx349 = getelementptr inbounds [10 x i8*], [10 x i8*]* %t_names, i64 0, i64 %idxprom348, !dbg !801 + %195 = load i8*, i8** %arrayidx349, align 8, !dbg !801, !tbaa !198 + %mul350 = fmul double %call338, 1.000000e+02, !dbg !803 + %div351 = fdiv double %mul350, %tmax.0, !dbg !804 + %call352 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.45, i64 0, i64 0), i8* %195, double %call338, double %div351), !dbg !805 + br label %if.end353 + +if.end353: ; preds = %if.else347, %if.then341 + br label %for.inc354, !dbg !806 + +for.inc354: ; preds = %if.end353 + %inc355 = add nsw i32 %i.4, 1, !dbg !807 + call void @llvm.dbg.value(metadata i32 %inc355, metadata !127, metadata !DIExpression()), !dbg !221 + br label %for.cond334, !dbg !808, !llvm.loop !809 + +for.end356: ; preds = %for.cond334 + br label %if.end357, !dbg !811 + +if.end357: ; preds = %for.end356, %if.end320 + %196 = bitcast [10 x i8*]* %t_names to i8*, !dbg !812 + call void @llvm.lifetime.end.p0i8(i64 80, i8* %196) #6, !dbg !812 + %197 = bitcast i32* %nit to i8*, !dbg !812 + call void @llvm.lifetime.end.p0i8(i64 4, i8* %197) #6, !dbg !812 + %198 = bitcast i32* %n3 to i8*, !dbg !812 + call void @llvm.lifetime.end.p0i8(i64 4, i8* %198) #6, !dbg !812 + %199 = bitcast i32* %n2 to i8*, !dbg !812 + call void @llvm.lifetime.end.p0i8(i64 4, i8* %199) #6, !dbg !812 + %200 = bitcast i32* %n1 to i8*, !dbg !812 + call void @llvm.lifetime.end.p0i8(i64 4, i8* %200) #6, !dbg !812 + %201 = bitcast double* %rnmu to i8*, !dbg !812 + call void @llvm.lifetime.end.p0i8(i64 8, i8* %201) #6, !dbg !812 + %202 = bitcast double* %rnm2 to i8*, !dbg !812 + call void @llvm.lifetime.end.p0i8(i64 8, i8* %202) #6, !dbg !812 + %203 = bitcast [4 x double]* %c to i8*, !dbg !812 + call void @llvm.lifetime.end.p0i8(i64 32, i8* %203) #6, !dbg !812 + %204 = bitcast [4 x double]* %a to i8*, !dbg !812 + call void @llvm.lifetime.end.p0i8(i64 32, i8* %204) #6, !dbg !812 + ret i32 0, !dbg !813 +} + +; Function Attrs: nounwind +declare dso_local noalias i8* @malloc(i64) #1 + +; Function Attrs: argmemonly nounwind +declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #2 + +; Function Attrs: nounwind readnone speculatable +declare void @llvm.dbg.declare(metadata, metadata, metadata) #3 + +declare dso_local void @timer_clear(i32) #4 + +declare dso_local void @timer_start(i32) #4 + +declare dso_local %struct._IO_FILE* @fopen(i8*, i8*) #4 + +declare dso_local i32 @fclose(%struct._IO_FILE*) #4 + +declare dso_local i32 @printf(i8*, ...) #4 + +declare dso_local i32 @__isoc99_fscanf(%struct._IO_FILE*, i8*, ...) #4 + +declare dso_local i32 @fgetc(%struct._IO_FILE*) #4 + +; Function Attrs: argmemonly nounwind +declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #2 + +; Function Attrs: nounwind uwtable +define internal void @setup(i32* %n1, i32* %n2, i32* %n3) #0 !dbg !814 { +entry: + %mi = alloca [10 x [3 x i32]], align 16 + %ng = alloca [10 x [3 x i32]], align 16 + call void @llvm.dbg.value(metadata i32* %n1, metadata !819, metadata !DIExpression()), !dbg !830 + call void @llvm.dbg.value(metadata i32* %n2, metadata !820, metadata !DIExpression()), !dbg !830 + call void @llvm.dbg.value(metadata i32* %n3, metadata !821, metadata !DIExpression()), !dbg !830 + %0 = bitcast [10 x [3 x i32]]* %mi to i8*, !dbg !831 + call void @llvm.lifetime.start.p0i8(i64 120, i8* %0) #6, !dbg !831 + call void @llvm.dbg.declare(metadata [10 x [3 x i32]]* %mi, metadata !825, metadata !DIExpression()), !dbg !832 + %1 = bitcast [10 x [3 x i32]]* %ng to i8*, !dbg !833 + call void @llvm.lifetime.start.p0i8(i64 120, i8* %1) #6, !dbg !833 + call void @llvm.dbg.declare(metadata [10 x [3 x i32]]* %ng, metadata !829, metadata !DIExpression()), !dbg !834 + %2 = load i32, i32* @lt, align 4, !dbg !835, !tbaa !278 + %idxprom = sext i32 %2 to i64, !dbg !836 + %arrayidx = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom, !dbg !836 + %3 = load i32, i32* %arrayidx, align 4, !dbg !836, !tbaa !278 + %4 = load i32, i32* @lt, align 4, !dbg !837, !tbaa !278 + %idxprom1 = sext i32 %4 to i64, !dbg !838 + %arrayidx2 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom1, !dbg !838 + %arrayidx3 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx2, i64 0, i64 0, !dbg !838 + store i32 %3, i32* %arrayidx3, align 4, !dbg !839, !tbaa !278 + %5 = load i32, i32* @lt, align 4, !dbg !840, !tbaa !278 + %idxprom4 = sext i32 %5 to i64, !dbg !841 + %arrayidx5 = getelementptr inbounds [10 x i32], [10 x i32]* @ny, i64 0, i64 %idxprom4, !dbg !841 + %6 = load i32, i32* %arrayidx5, align 4, !dbg !841, !tbaa !278 + %7 = load i32, i32* @lt, align 4, !dbg !842, !tbaa !278 + %idxprom6 = sext i32 %7 to i64, !dbg !843 + %arrayidx7 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom6, !dbg !843 + %arrayidx8 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx7, i64 0, i64 1, !dbg !843 + store i32 %6, i32* %arrayidx8, align 4, !dbg !844, !tbaa !278 + %8 = load i32, i32* @lt, align 4, !dbg !845, !tbaa !278 + %idxprom9 = sext i32 %8 to i64, !dbg !846 + %arrayidx10 = getelementptr inbounds [10 x i32], [10 x i32]* @nz, i64 0, i64 %idxprom9, !dbg !846 + %9 = load i32, i32* %arrayidx10, align 4, !dbg !846, !tbaa !278 + %10 = load i32, i32* @lt, align 4, !dbg !847, !tbaa !278 + %idxprom11 = sext i32 %10 to i64, !dbg !848 + %arrayidx12 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom11, !dbg !848 + %arrayidx13 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx12, i64 0, i64 2, !dbg !848 + store i32 %9, i32* %arrayidx13, align 4, !dbg !849, !tbaa !278 + %11 = load i32, i32* @lt, align 4, !dbg !850, !tbaa !278 + %sub = sub nsw i32 %11, 1, !dbg !852 + call void @llvm.dbg.value(metadata i32 %sub, metadata !822, metadata !DIExpression()), !dbg !830 + br label %for.cond, !dbg !853 + +for.cond: ; preds = %for.inc25, %entry + %k.0 = phi i32 [ %sub, %entry ], [ %dec, %for.inc25 ], !dbg !854 + call void @llvm.dbg.value(metadata i32 %k.0, metadata !822, metadata !DIExpression()), !dbg !830 + %cmp = icmp sge i32 %k.0, 1, !dbg !855 + br i1 %cmp, label %for.body, label %for.end26, !dbg !857 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 0, metadata !824, metadata !DIExpression()), !dbg !830 + br label %for.cond14, !dbg !858 + +for.cond14: ; preds = %for.inc, %for.body + %ax.0 = phi i32 [ 0, %for.body ], [ %inc, %for.inc ], !dbg !861 + call void @llvm.dbg.value(metadata i32 %ax.0, metadata !824, metadata !DIExpression()), !dbg !830 + %cmp15 = icmp slt i32 %ax.0, 3, !dbg !862 + br i1 %cmp15, label %for.body16, label %for.end, !dbg !864 + +for.body16: ; preds = %for.cond14 + %add = add nsw i32 %k.0, 1, !dbg !865 + %idxprom17 = sext i32 %add to i64, !dbg !867 + %arrayidx18 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom17, !dbg !867 + %idxprom19 = sext i32 %ax.0 to i64, !dbg !867 + %arrayidx20 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx18, i64 0, i64 %idxprom19, !dbg !867 + %12 = load i32, i32* %arrayidx20, align 4, !dbg !867, !tbaa !278 + %div = sdiv i32 %12, 2, !dbg !868 + %idxprom21 = sext i32 %k.0 to i64, !dbg !869 + %arrayidx22 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom21, !dbg !869 + %idxprom23 = sext i32 %ax.0 to i64, !dbg !869 + %arrayidx24 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx22, i64 0, i64 %idxprom23, !dbg !869 + store i32 %div, i32* %arrayidx24, align 4, !dbg !870, !tbaa !278 + br label %for.inc, !dbg !871 + +for.inc: ; preds = %for.body16 + %inc = add nsw i32 %ax.0, 1, !dbg !872 + call void @llvm.dbg.value(metadata i32 %inc, metadata !824, metadata !DIExpression()), !dbg !830 + br label %for.cond14, !dbg !873, !llvm.loop !874 + +for.end: ; preds = %for.cond14 + br label %for.inc25, !dbg !876 + +for.inc25: ; preds = %for.end + %dec = add nsw i32 %k.0, -1, !dbg !877 + call void @llvm.dbg.value(metadata i32 %dec, metadata !822, metadata !DIExpression()), !dbg !830 + br label %for.cond, !dbg !878, !llvm.loop !879 + +for.end26: ; preds = %for.cond + %13 = load i32, i32* @lt, align 4, !dbg !881, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %13, metadata !822, metadata !DIExpression()), !dbg !830 + br label %for.cond27, !dbg !883 + +for.cond27: ; preds = %for.inc45, %for.end26 + %k.1 = phi i32 [ %13, %for.end26 ], [ %dec46, %for.inc45 ], !dbg !884 + call void @llvm.dbg.value(metadata i32 %k.1, metadata !822, metadata !DIExpression()), !dbg !830 + %cmp28 = icmp sge i32 %k.1, 1, !dbg !885 + br i1 %cmp28, label %for.body29, label %for.end47, !dbg !887 + +for.body29: ; preds = %for.cond27 + %idxprom30 = sext i32 %k.1 to i64, !dbg !888 + %arrayidx31 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom30, !dbg !888 + %arrayidx32 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx31, i64 0, i64 0, !dbg !888 + %14 = load i32, i32* %arrayidx32, align 4, !dbg !888, !tbaa !278 + %idxprom33 = sext i32 %k.1 to i64, !dbg !890 + %arrayidx34 = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom33, !dbg !890 + store i32 %14, i32* %arrayidx34, align 4, !dbg !891, !tbaa !278 + %idxprom35 = sext i32 %k.1 to i64, !dbg !892 + %arrayidx36 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom35, !dbg !892 + %arrayidx37 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx36, i64 0, i64 1, !dbg !892 + %15 = load i32, i32* %arrayidx37, align 4, !dbg !892, !tbaa !278 + %idxprom38 = sext i32 %k.1 to i64, !dbg !893 + %arrayidx39 = getelementptr inbounds [10 x i32], [10 x i32]* @ny, i64 0, i64 %idxprom38, !dbg !893 + store i32 %15, i32* %arrayidx39, align 4, !dbg !894, !tbaa !278 + %idxprom40 = sext i32 %k.1 to i64, !dbg !895 + %arrayidx41 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom40, !dbg !895 + %arrayidx42 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx41, i64 0, i64 2, !dbg !895 + %16 = load i32, i32* %arrayidx42, align 4, !dbg !895, !tbaa !278 + %idxprom43 = sext i32 %k.1 to i64, !dbg !896 + %arrayidx44 = getelementptr inbounds [10 x i32], [10 x i32]* @nz, i64 0, i64 %idxprom43, !dbg !896 + store i32 %16, i32* %arrayidx44, align 4, !dbg !897, !tbaa !278 + br label %for.inc45, !dbg !898 + +for.inc45: ; preds = %for.body29 + %dec46 = add nsw i32 %k.1, -1, !dbg !899 + call void @llvm.dbg.value(metadata i32 %dec46, metadata !822, metadata !DIExpression()), !dbg !830 + br label %for.cond27, !dbg !900, !llvm.loop !901 + +for.end47: ; preds = %for.cond27 + %17 = load i32, i32* @lt, align 4, !dbg !903, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %17, metadata !822, metadata !DIExpression()), !dbg !830 + br label %for.cond48, !dbg !905 + +for.cond48: ; preds = %for.inc81, %for.end47 + %k.2 = phi i32 [ %17, %for.end47 ], [ %dec82, %for.inc81 ], !dbg !906 + call void @llvm.dbg.value(metadata i32 %k.2, metadata !822, metadata !DIExpression()), !dbg !830 + %cmp49 = icmp sge i32 %k.2, 1, !dbg !907 + br i1 %cmp49, label %for.body50, label %for.end83, !dbg !909 + +for.body50: ; preds = %for.cond48 + call void @llvm.dbg.value(metadata i32 0, metadata !824, metadata !DIExpression()), !dbg !830 + br label %for.cond51, !dbg !910 + +for.cond51: ; preds = %for.inc63, %for.body50 + %ax.1 = phi i32 [ 0, %for.body50 ], [ %inc64, %for.inc63 ], !dbg !913 + call void @llvm.dbg.value(metadata i32 %ax.1, metadata !824, metadata !DIExpression()), !dbg !830 + %cmp52 = icmp slt i32 %ax.1, 3, !dbg !914 + br i1 %cmp52, label %for.body53, label %for.end65, !dbg !916 + +for.body53: ; preds = %for.cond51 + %idxprom54 = sext i32 %k.2 to i64, !dbg !917 + %arrayidx55 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom54, !dbg !917 + %idxprom56 = sext i32 %ax.1 to i64, !dbg !917 + %arrayidx57 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx55, i64 0, i64 %idxprom56, !dbg !917 + %18 = load i32, i32* %arrayidx57, align 4, !dbg !917, !tbaa !278 + %add58 = add nsw i32 2, %18, !dbg !919 + %idxprom59 = sext i32 %k.2 to i64, !dbg !920 + %arrayidx60 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %mi, i64 0, i64 %idxprom59, !dbg !920 + %idxprom61 = sext i32 %ax.1 to i64, !dbg !920 + %arrayidx62 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx60, i64 0, i64 %idxprom61, !dbg !920 + store i32 %add58, i32* %arrayidx62, align 4, !dbg !921, !tbaa !278 + br label %for.inc63, !dbg !922 + +for.inc63: ; preds = %for.body53 + %inc64 = add nsw i32 %ax.1, 1, !dbg !923 + call void @llvm.dbg.value(metadata i32 %inc64, metadata !824, metadata !DIExpression()), !dbg !830 + br label %for.cond51, !dbg !924, !llvm.loop !925 + +for.end65: ; preds = %for.cond51 + %idxprom66 = sext i32 %k.2 to i64, !dbg !927 + %arrayidx67 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %mi, i64 0, i64 %idxprom66, !dbg !927 + %arrayidx68 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx67, i64 0, i64 0, !dbg !927 + %19 = load i32, i32* %arrayidx68, align 4, !dbg !927, !tbaa !278 + %idxprom69 = sext i32 %k.2 to i64, !dbg !928 + %arrayidx70 = getelementptr inbounds [10 x i32], [10 x i32]* @m1, i64 0, i64 %idxprom69, !dbg !928 + store i32 %19, i32* %arrayidx70, align 4, !dbg !929, !tbaa !278 + %idxprom71 = sext i32 %k.2 to i64, !dbg !930 + %arrayidx72 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %mi, i64 0, i64 %idxprom71, !dbg !930 + %arrayidx73 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx72, i64 0, i64 1, !dbg !930 + %20 = load i32, i32* %arrayidx73, align 4, !dbg !930, !tbaa !278 + %idxprom74 = sext i32 %k.2 to i64, !dbg !931 + %arrayidx75 = getelementptr inbounds [10 x i32], [10 x i32]* @m2, i64 0, i64 %idxprom74, !dbg !931 + store i32 %20, i32* %arrayidx75, align 4, !dbg !932, !tbaa !278 + %idxprom76 = sext i32 %k.2 to i64, !dbg !933 + %arrayidx77 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %mi, i64 0, i64 %idxprom76, !dbg !933 + %arrayidx78 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx77, i64 0, i64 2, !dbg !933 + %21 = load i32, i32* %arrayidx78, align 4, !dbg !933, !tbaa !278 + %idxprom79 = sext i32 %k.2 to i64, !dbg !934 + %arrayidx80 = getelementptr inbounds [10 x i32], [10 x i32]* @m3, i64 0, i64 %idxprom79, !dbg !934 + store i32 %21, i32* %arrayidx80, align 4, !dbg !935, !tbaa !278 + br label %for.inc81, !dbg !936 + +for.inc81: ; preds = %for.end65 + %dec82 = add nsw i32 %k.2, -1, !dbg !937 + call void @llvm.dbg.value(metadata i32 %dec82, metadata !822, metadata !DIExpression()), !dbg !830 + br label %for.cond48, !dbg !938, !llvm.loop !939 + +for.end83: ; preds = %for.cond48 + %22 = load i32, i32* @lt, align 4, !dbg !941, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %22, metadata !822, metadata !DIExpression()), !dbg !830 + %idxprom84 = sext i32 %22 to i64, !dbg !942 + %arrayidx85 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom84, !dbg !942 + %arrayidx86 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx85, i64 0, i64 0, !dbg !942 + %23 = load i32, i32* %arrayidx86, align 4, !dbg !942, !tbaa !278 + %add87 = add nsw i32 2, %23, !dbg !943 + %24 = load i32, i32* @lt, align 4, !dbg !944, !tbaa !278 + %idxprom88 = sext i32 %24 to i64, !dbg !945 + %arrayidx89 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom88, !dbg !945 + %arrayidx90 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx89, i64 0, i64 0, !dbg !945 + %25 = load i32, i32* %arrayidx90, align 4, !dbg !945, !tbaa !278 + %sub91 = sub nsw i32 %add87, %25, !dbg !946 + store i32 %sub91, i32* @is1, align 4, !dbg !947, !tbaa !278 + %idxprom92 = sext i32 %22 to i64, !dbg !948 + %arrayidx93 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom92, !dbg !948 + %arrayidx94 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx93, i64 0, i64 0, !dbg !948 + %26 = load i32, i32* %arrayidx94, align 4, !dbg !948, !tbaa !278 + %add95 = add nsw i32 1, %26, !dbg !949 + store i32 %add95, i32* @ie1, align 4, !dbg !950, !tbaa !278 + %27 = load i32, i32* @ie1, align 4, !dbg !951, !tbaa !278 + %add96 = add nsw i32 3, %27, !dbg !952 + %28 = load i32, i32* @is1, align 4, !dbg !953, !tbaa !278 + %sub97 = sub nsw i32 %add96, %28, !dbg !954 + store i32 %sub97, i32* %n1, align 4, !dbg !955, !tbaa !278 + %idxprom98 = sext i32 %22 to i64, !dbg !956 + %arrayidx99 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom98, !dbg !956 + %arrayidx100 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx99, i64 0, i64 1, !dbg !956 + %29 = load i32, i32* %arrayidx100, align 4, !dbg !956, !tbaa !278 + %add101 = add nsw i32 2, %29, !dbg !957 + %30 = load i32, i32* @lt, align 4, !dbg !958, !tbaa !278 + %idxprom102 = sext i32 %30 to i64, !dbg !959 + %arrayidx103 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom102, !dbg !959 + %arrayidx104 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx103, i64 0, i64 1, !dbg !959 + %31 = load i32, i32* %arrayidx104, align 4, !dbg !959, !tbaa !278 + %sub105 = sub nsw i32 %add101, %31, !dbg !960 + store i32 %sub105, i32* @is2, align 4, !dbg !961, !tbaa !278 + %idxprom106 = sext i32 %22 to i64, !dbg !962 + %arrayidx107 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom106, !dbg !962 + %arrayidx108 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx107, i64 0, i64 1, !dbg !962 + %32 = load i32, i32* %arrayidx108, align 4, !dbg !962, !tbaa !278 + %add109 = add nsw i32 1, %32, !dbg !963 + store i32 %add109, i32* @ie2, align 4, !dbg !964, !tbaa !278 + %33 = load i32, i32* @ie2, align 4, !dbg !965, !tbaa !278 + %add110 = add nsw i32 3, %33, !dbg !966 + %34 = load i32, i32* @is2, align 4, !dbg !967, !tbaa !278 + %sub111 = sub nsw i32 %add110, %34, !dbg !968 + store i32 %sub111, i32* %n2, align 4, !dbg !969, !tbaa !278 + %idxprom112 = sext i32 %22 to i64, !dbg !970 + %arrayidx113 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom112, !dbg !970 + %arrayidx114 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx113, i64 0, i64 2, !dbg !970 + %35 = load i32, i32* %arrayidx114, align 4, !dbg !970, !tbaa !278 + %add115 = add nsw i32 2, %35, !dbg !971 + %36 = load i32, i32* @lt, align 4, !dbg !972, !tbaa !278 + %idxprom116 = sext i32 %36 to i64, !dbg !973 + %arrayidx117 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom116, !dbg !973 + %arrayidx118 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx117, i64 0, i64 2, !dbg !973 + %37 = load i32, i32* %arrayidx118, align 4, !dbg !973, !tbaa !278 + %sub119 = sub nsw i32 %add115, %37, !dbg !974 + store i32 %sub119, i32* @is3, align 4, !dbg !975, !tbaa !278 + %idxprom120 = sext i32 %22 to i64, !dbg !976 + %arrayidx121 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom120, !dbg !976 + %arrayidx122 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx121, i64 0, i64 2, !dbg !976 + %38 = load i32, i32* %arrayidx122, align 4, !dbg !976, !tbaa !278 + %add123 = add nsw i32 1, %38, !dbg !977 + store i32 %add123, i32* @ie3, align 4, !dbg !978, !tbaa !278 + %39 = load i32, i32* @ie3, align 4, !dbg !979, !tbaa !278 + %add124 = add nsw i32 3, %39, !dbg !980 + %40 = load i32, i32* @is3, align 4, !dbg !981, !tbaa !278 + %sub125 = sub nsw i32 %add124, %40, !dbg !982 + store i32 %sub125, i32* %n3, align 4, !dbg !983, !tbaa !278 + %41 = load i32, i32* @lt, align 4, !dbg !984, !tbaa !278 + %idxprom126 = sext i32 %41 to i64, !dbg !985 + %arrayidx127 = getelementptr inbounds [10 x i32], [10 x i32]* @ir, i64 0, i64 %idxprom126, !dbg !985 + store i32 0, i32* %arrayidx127, align 4, !dbg !986, !tbaa !278 + %42 = load i32, i32* @lt, align 4, !dbg !987, !tbaa !278 + %sub128 = sub nsw i32 %42, 1, !dbg !989 + call void @llvm.dbg.value(metadata i32 %sub128, metadata !823, metadata !DIExpression()), !dbg !830 + br label %for.cond129, !dbg !990 + +for.cond129: ; preds = %for.inc149, %for.end83 + %j.0 = phi i32 [ %sub128, %for.end83 ], [ %dec150, %for.inc149 ], !dbg !991 + call void @llvm.dbg.value(metadata i32 %j.0, metadata !823, metadata !DIExpression()), !dbg !830 + %cmp130 = icmp sge i32 %j.0, 1, !dbg !992 + br i1 %cmp130, label %for.body131, label %for.end151, !dbg !994 + +for.body131: ; preds = %for.cond129 + %add132 = add nsw i32 %j.0, 1, !dbg !995 + %idxprom133 = sext i32 %add132 to i64, !dbg !997 + %arrayidx134 = getelementptr inbounds [10 x i32], [10 x i32]* @ir, i64 0, i64 %idxprom133, !dbg !997 + %43 = load i32, i32* %arrayidx134, align 4, !dbg !997, !tbaa !278 + %add135 = add nsw i32 %j.0, 1, !dbg !998 + %idxprom136 = sext i32 %add135 to i64, !dbg !999 + %arrayidx137 = getelementptr inbounds [10 x i32], [10 x i32]* @m1, i64 0, i64 %idxprom136, !dbg !999 + %44 = load i32, i32* %arrayidx137, align 4, !dbg !999, !tbaa !278 + %mul = mul nsw i32 1, %44, !dbg !1000 + %add138 = add nsw i32 %j.0, 1, !dbg !1001 + %idxprom139 = sext i32 %add138 to i64, !dbg !1002 + %arrayidx140 = getelementptr inbounds [10 x i32], [10 x i32]* @m2, i64 0, i64 %idxprom139, !dbg !1002 + %45 = load i32, i32* %arrayidx140, align 4, !dbg !1002, !tbaa !278 + %mul141 = mul nsw i32 %mul, %45, !dbg !1003 + %add142 = add nsw i32 %j.0, 1, !dbg !1004 + %idxprom143 = sext i32 %add142 to i64, !dbg !1005 + %arrayidx144 = getelementptr inbounds [10 x i32], [10 x i32]* @m3, i64 0, i64 %idxprom143, !dbg !1005 + %46 = load i32, i32* %arrayidx144, align 4, !dbg !1005, !tbaa !278 + %mul145 = mul nsw i32 %mul141, %46, !dbg !1006 + %add146 = add nsw i32 %43, %mul145, !dbg !1007 + %idxprom147 = sext i32 %j.0 to i64, !dbg !1008 + %arrayidx148 = getelementptr inbounds [10 x i32], [10 x i32]* @ir, i64 0, i64 %idxprom147, !dbg !1008 + store i32 %add146, i32* %arrayidx148, align 4, !dbg !1009, !tbaa !278 + br label %for.inc149, !dbg !1010 + +for.inc149: ; preds = %for.body131 + %dec150 = add nsw i32 %j.0, -1, !dbg !1011 + call void @llvm.dbg.value(metadata i32 %dec150, metadata !823, metadata !DIExpression()), !dbg !830 + br label %for.cond129, !dbg !1012, !llvm.loop !1013 + +for.end151: ; preds = %for.cond129 + %47 = load i32, i32* getelementptr inbounds ([8 x i32], [8 x i32]* @debug_vec, i64 0, i64 1), align 4, !dbg !1015, !tbaa !278 + %cmp152 = icmp sge i32 %47, 1, !dbg !1017 + br i1 %cmp152, label %if.then, label %if.end, !dbg !1018 + +if.then: ; preds = %for.end151 + %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.46, i64 0, i64 0)), !dbg !1019 + %call153 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.47, i64 0, i64 0)), !dbg !1021 + %48 = load i32, i32* @lt, align 4, !dbg !1022, !tbaa !278 + %idxprom154 = sext i32 %22 to i64, !dbg !1023 + %arrayidx155 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom154, !dbg !1023 + %arrayidx156 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx155, i64 0, i64 0, !dbg !1023 + %49 = load i32, i32* %arrayidx156, align 4, !dbg !1023, !tbaa !278 + %idxprom157 = sext i32 %22 to i64, !dbg !1024 + %arrayidx158 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom157, !dbg !1024 + %arrayidx159 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx158, i64 0, i64 1, !dbg !1024 + %50 = load i32, i32* %arrayidx159, align 4, !dbg !1024, !tbaa !278 + %idxprom160 = sext i32 %22 to i64, !dbg !1025 + %arrayidx161 = getelementptr inbounds [10 x [3 x i32]], [10 x [3 x i32]]* %ng, i64 0, i64 %idxprom160, !dbg !1025 + %arrayidx162 = getelementptr inbounds [3 x i32], [3 x i32]* %arrayidx161, i64 0, i64 2, !dbg !1025 + %51 = load i32, i32* %arrayidx162, align 4, !dbg !1025, !tbaa !278 + %52 = load i32, i32* %n1, align 4, !dbg !1026, !tbaa !278 + %53 = load i32, i32* %n2, align 4, !dbg !1027, !tbaa !278 + %54 = load i32, i32* %n3, align 4, !dbg !1028, !tbaa !278 + %55 = load i32, i32* @is1, align 4, !dbg !1029, !tbaa !278 + %56 = load i32, i32* @is2, align 4, !dbg !1030, !tbaa !278 + %57 = load i32, i32* @is3, align 4, !dbg !1031, !tbaa !278 + %58 = load i32, i32* @ie1, align 4, !dbg !1032, !tbaa !278 + %59 = load i32, i32* @ie2, align 4, !dbg !1033, !tbaa !278 + %60 = load i32, i32* @ie3, align 4, !dbg !1034, !tbaa !278 + %call163 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.48, i64 0, i64 0), i32 %22, i32 %48, i32 %49, i32 %50, i32 %51, i32 %52, i32 %53, i32 %54, i32 %55, i32 %56, i32 %57, i32 %58, i32 %59, i32 %60), !dbg !1035 + br label %if.end, !dbg !1036 + +if.end: ; preds = %if.then, %for.end151 + %61 = bitcast [10 x [3 x i32]]* %ng to i8*, !dbg !1037 + call void @llvm.lifetime.end.p0i8(i64 120, i8* %61) #6, !dbg !1037 + %62 = bitcast [10 x [3 x i32]]* %mi to i8*, !dbg !1037 + call void @llvm.lifetime.end.p0i8(i64 120, i8* %62) #6, !dbg !1037 + ret void, !dbg !1037 +} + +; Function Attrs: nounwind uwtable +define internal void @zero3(double* %oz, i32 %n1, i32 %n2, i32 %n3) #0 !dbg !1038 { +entry: + call void @llvm.dbg.value(metadata double* %oz, metadata !1042, metadata !DIExpression()), !dbg !1049 + call void @llvm.dbg.value(metadata i32 %n1, metadata !1043, metadata !DIExpression()), !dbg !1049 + call void @llvm.dbg.value(metadata i32 %n2, metadata !1044, metadata !DIExpression()), !dbg !1049 + call void @llvm.dbg.value(metadata i32 %n3, metadata !1045, metadata !DIExpression()), !dbg !1049 + call void @llvm.dbg.value(metadata i32 0, metadata !1048, metadata !DIExpression()), !dbg !1049 + br label %for.cond, !dbg !1050 + +for.cond: ; preds = %for.inc13, %entry + %i3.0 = phi i32 [ 0, %entry ], [ %inc14, %for.inc13 ], !dbg !1052 + call void @llvm.dbg.value(metadata i32 %i3.0, metadata !1048, metadata !DIExpression()), !dbg !1049 + %cmp = icmp slt i32 %i3.0, %n3, !dbg !1053 + br i1 %cmp, label %for.body, label %for.end15, !dbg !1055 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 0, metadata !1047, metadata !DIExpression()), !dbg !1049 + br label %for.cond1, !dbg !1056 + +for.cond1: ; preds = %for.inc10, %for.body + %i2.0 = phi i32 [ 0, %for.body ], [ %inc11, %for.inc10 ], !dbg !1059 + call void @llvm.dbg.value(metadata i32 %i2.0, metadata !1047, metadata !DIExpression()), !dbg !1049 + %cmp2 = icmp slt i32 %i2.0, %n2, !dbg !1060 + br i1 %cmp2, label %for.body3, label %for.end12, !dbg !1062 + +for.body3: ; preds = %for.cond1 + call void @llvm.dbg.value(metadata i32 0, metadata !1046, metadata !DIExpression()), !dbg !1049 + br label %for.cond4, !dbg !1063 + +for.cond4: ; preds = %for.inc, %for.body3 + %i1.0 = phi i32 [ 0, %for.body3 ], [ %inc, %for.inc ], !dbg !1066 + call void @llvm.dbg.value(metadata i32 %i1.0, metadata !1046, metadata !DIExpression()), !dbg !1049 + %cmp5 = icmp slt i32 %i1.0, %n1, !dbg !1067 + br i1 %cmp5, label %for.body6, label %for.end, !dbg !1069 + +for.body6: ; preds = %for.cond4 + %mul = mul nsw i32 %i3.0, %n2, !dbg !1070 + %mul7 = mul nsw i32 %mul, %n1, !dbg !1070 + %mul8 = mul nsw i32 %i2.0, %n1, !dbg !1070 + %add = add nsw i32 %mul7, %mul8, !dbg !1070 + %add9 = add nsw i32 %add, %i1.0, !dbg !1070 + %idxprom = sext i32 %add9 to i64, !dbg !1070 + %arrayidx = getelementptr inbounds double, double* %oz, i64 %idxprom, !dbg !1070 + store double 0.000000e+00, double* %arrayidx, align 8, !dbg !1072, !tbaa !437 + br label %for.inc, !dbg !1073 + +for.inc: ; preds = %for.body6 + %inc = add nsw i32 %i1.0, 1, !dbg !1074 + call void @llvm.dbg.value(metadata i32 %inc, metadata !1046, metadata !DIExpression()), !dbg !1049 + br label %for.cond4, !dbg !1075, !llvm.loop !1076 + +for.end: ; preds = %for.cond4 + br label %for.inc10, !dbg !1078 + +for.inc10: ; preds = %for.end + %inc11 = add nsw i32 %i2.0, 1, !dbg !1079 + call void @llvm.dbg.value(metadata i32 %inc11, metadata !1047, metadata !DIExpression()), !dbg !1049 + br label %for.cond1, !dbg !1080, !llvm.loop !1081 + +for.end12: ; preds = %for.cond1 + br label %for.inc13, !dbg !1083 + +for.inc13: ; preds = %for.end12 + %inc14 = add nsw i32 %i3.0, 1, !dbg !1084 + call void @llvm.dbg.value(metadata i32 %inc14, metadata !1048, metadata !DIExpression()), !dbg !1049 + br label %for.cond, !dbg !1085, !llvm.loop !1086 + +for.end15: ; preds = %for.cond + ret void, !dbg !1088 +} + +; Function Attrs: nounwind uwtable +define internal void @zran3(double* %oz, i32 %n1, i32 %n2, i32 %n3, i32 %nx, i32 %ny, i32 %k) #0 !dbg !1089 { +entry: + %xx = alloca double, align 8 + %x0 = alloca double, align 8 + %x1 = alloca double, align 8 + %ten = alloca [10 x [2 x double]], align 16 + %j1 = alloca [10 x [2 x i32]], align 16 + %j2 = alloca [10 x [2 x i32]], align 16 + %j3 = alloca [10 x [2 x i32]], align 16 + %jg = alloca [4 x [10 x [2 x i32]]], align 16 + call void @llvm.dbg.value(metadata double* %oz, metadata !1093, metadata !DIExpression()), !dbg !1135 + call void @llvm.dbg.value(metadata i32 %n1, metadata !1094, metadata !DIExpression()), !dbg !1135 + call void @llvm.dbg.value(metadata i32 %n2, metadata !1095, metadata !DIExpression()), !dbg !1135 + call void @llvm.dbg.value(metadata i32 %n3, metadata !1096, metadata !DIExpression()), !dbg !1135 + call void @llvm.dbg.value(metadata i32 %nx, metadata !1097, metadata !DIExpression()), !dbg !1135 + call void @llvm.dbg.value(metadata i32 %ny, metadata !1098, metadata !DIExpression()), !dbg !1135 + call void @llvm.dbg.value(metadata i32 %k, metadata !1099, metadata !DIExpression()), !dbg !1135 + %0 = bitcast double* %xx to i8*, !dbg !1136 + call void @llvm.lifetime.start.p0i8(i64 8, i8* %0) #6, !dbg !1136 + call void @llvm.dbg.declare(metadata double* %xx, metadata !1110, metadata !DIExpression()), !dbg !1137 + %1 = bitcast double* %x0 to i8*, !dbg !1136 + call void @llvm.lifetime.start.p0i8(i64 8, i8* %1) #6, !dbg !1136 + call void @llvm.dbg.declare(metadata double* %x0, metadata !1111, metadata !DIExpression()), !dbg !1138 + %2 = bitcast double* %x1 to i8*, !dbg !1136 + call void @llvm.lifetime.start.p0i8(i64 8, i8* %2) #6, !dbg !1136 + call void @llvm.dbg.declare(metadata double* %x1, metadata !1112, metadata !DIExpression()), !dbg !1139 + call void @llvm.dbg.value(metadata i32 10, metadata !1116, metadata !DIExpression()), !dbg !1135 + %call = call double @pow(double 5.000000e+00, double 1.300000e+01) #6, !dbg !1140 + call void @llvm.dbg.value(metadata double %call, metadata !1118, metadata !DIExpression()), !dbg !1135 + call void @llvm.dbg.value(metadata double 0x41B2B9B0A1000000, metadata !1120, metadata !DIExpression()), !dbg !1135 + %3 = bitcast [10 x [2 x double]]* %ten to i8*, !dbg !1141 + call void @llvm.lifetime.start.p0i8(i64 160, i8* %3) #6, !dbg !1141 + call void @llvm.dbg.declare(metadata [10 x [2 x double]]* %ten, metadata !1121, metadata !DIExpression()), !dbg !1142 + %4 = bitcast [10 x [2 x i32]]* %j1 to i8*, !dbg !1143 + call void @llvm.lifetime.start.p0i8(i64 80, i8* %4) #6, !dbg !1143 + call void @llvm.dbg.declare(metadata [10 x [2 x i32]]* %j1, metadata !1127, metadata !DIExpression()), !dbg !1144 + %5 = bitcast [10 x [2 x i32]]* %j2 to i8*, !dbg !1143 + call void @llvm.lifetime.start.p0i8(i64 80, i8* %5) #6, !dbg !1143 + call void @llvm.dbg.declare(metadata [10 x [2 x i32]]* %j2, metadata !1129, metadata !DIExpression()), !dbg !1145 + %6 = bitcast [10 x [2 x i32]]* %j3 to i8*, !dbg !1143 + call void @llvm.lifetime.start.p0i8(i64 80, i8* %6) #6, !dbg !1143 + call void @llvm.dbg.declare(metadata [10 x [2 x i32]]* %j3, metadata !1130, metadata !DIExpression()), !dbg !1146 + %7 = bitcast [4 x [10 x [2 x i32]]]* %jg to i8*, !dbg !1147 + call void @llvm.lifetime.start.p0i8(i64 320, i8* %7) #6, !dbg !1147 + call void @llvm.dbg.declare(metadata [4 x [10 x [2 x i32]]]* %jg, metadata !1131, metadata !DIExpression()), !dbg !1148 + %call1 = call double @power(double %call, i32 %nx), !dbg !1149 + call void @llvm.dbg.value(metadata double %call1, metadata !1113, metadata !DIExpression()), !dbg !1135 + %mul = mul nsw i32 %nx, %ny, !dbg !1150 + %call2 = call double @power(double %call, i32 %mul), !dbg !1151 + call void @llvm.dbg.value(metadata double %call2, metadata !1114, metadata !DIExpression()), !dbg !1135 + call void @zero3(double* %oz, i32 %n1, i32 %n2, i32 %n3), !dbg !1152 + %8 = load i32, i32* @is1, align 4, !dbg !1153, !tbaa !278 + %sub = sub nsw i32 %8, 2, !dbg !1154 + %9 = load i32, i32* @is2, align 4, !dbg !1155, !tbaa !278 + %sub3 = sub nsw i32 %9, 2, !dbg !1156 + %10 = load i32, i32* @is3, align 4, !dbg !1157, !tbaa !278 + %sub4 = sub nsw i32 %10, 2, !dbg !1158 + %mul5 = mul nsw i32 %ny, %sub4, !dbg !1159 + %add = add nsw i32 %sub3, %mul5, !dbg !1160 + %mul6 = mul nsw i32 %nx, %add, !dbg !1161 + %add7 = add nsw i32 %sub, %mul6, !dbg !1162 + call void @llvm.dbg.value(metadata i32 %add7, metadata !1126, metadata !DIExpression()), !dbg !1135 + %call8 = call double @power(double %call, i32 %add7), !dbg !1163 + call void @llvm.dbg.value(metadata double %call8, metadata !1115, metadata !DIExpression()), !dbg !1135 + %11 = load i32, i32* @ie1, align 4, !dbg !1164, !tbaa !278 + %12 = load i32, i32* @is1, align 4, !dbg !1165, !tbaa !278 + %sub9 = sub nsw i32 %11, %12, !dbg !1166 + %add10 = add nsw i32 %sub9, 1, !dbg !1167 + call void @llvm.dbg.value(metadata i32 %add10, metadata !1106, metadata !DIExpression()), !dbg !1135 + %13 = load i32, i32* @ie1, align 4, !dbg !1168, !tbaa !278 + %14 = load i32, i32* @is1, align 4, !dbg !1169, !tbaa !278 + %sub11 = sub nsw i32 %13, %14, !dbg !1170 + %add12 = add nsw i32 %sub11, 2, !dbg !1171 + call void @llvm.dbg.value(metadata i32 %add12, metadata !1107, metadata !DIExpression()), !dbg !1135 + %15 = load i32, i32* @ie2, align 4, !dbg !1172, !tbaa !278 + %16 = load i32, i32* @is2, align 4, !dbg !1173, !tbaa !278 + %sub13 = sub nsw i32 %15, %16, !dbg !1174 + %add14 = add nsw i32 %sub13, 2, !dbg !1175 + call void @llvm.dbg.value(metadata i32 %add14, metadata !1108, metadata !DIExpression()), !dbg !1135 + %17 = load i32, i32* @ie3, align 4, !dbg !1176, !tbaa !278 + %18 = load i32, i32* @is3, align 4, !dbg !1177, !tbaa !278 + %sub15 = sub nsw i32 %17, %18, !dbg !1178 + %add16 = add nsw i32 %sub15, 2, !dbg !1179 + call void @llvm.dbg.value(metadata i32 %add16, metadata !1109, metadata !DIExpression()), !dbg !1135 + store double 0x41B2B9B0A1000000, double* %x0, align 8, !dbg !1180, !tbaa !437 + %call17 = call double @randlc(double* %x0, double %call8), !dbg !1181 + call void @llvm.dbg.value(metadata double %call17, metadata !1134, metadata !DIExpression()), !dbg !1135 + call void @llvm.dbg.value(metadata i32 1, metadata !1105, metadata !DIExpression()), !dbg !1135 + br label %for.cond, !dbg !1182 + +for.cond: ; preds = %for.inc28, %entry + %i3.0 = phi i32 [ 1, %entry ], [ %inc29, %for.inc28 ], !dbg !1184 + call void @llvm.dbg.value(metadata i32 %i3.0, metadata !1105, metadata !DIExpression()), !dbg !1135 + %cmp = icmp slt i32 %i3.0, %add16, !dbg !1185 + br i1 %cmp, label %for.body, label %for.end30, !dbg !1187 + +for.body: ; preds = %for.cond + %19 = load double, double* %x0, align 8, !dbg !1188, !tbaa !437 + store double %19, double* %x1, align 8, !dbg !1190, !tbaa !437 + call void @llvm.dbg.value(metadata i32 1, metadata !1104, metadata !DIExpression()), !dbg !1135 + br label %for.cond18, !dbg !1191 + +for.cond18: ; preds = %for.inc, %for.body + %i2.0 = phi i32 [ 1, %for.body ], [ %inc, %for.inc ], !dbg !1193 + call void @llvm.dbg.value(metadata i32 %i2.0, metadata !1104, metadata !DIExpression()), !dbg !1135 + %cmp19 = icmp slt i32 %i2.0, %add14, !dbg !1194 + br i1 %cmp19, label %for.body20, label %for.end, !dbg !1196 + +for.body20: ; preds = %for.cond18 + %20 = load double, double* %x1, align 8, !dbg !1197, !tbaa !437 + store double %20, double* %xx, align 8, !dbg !1199, !tbaa !437 + %mul21 = mul nsw i32 %i3.0, %n2, !dbg !1200 + %mul22 = mul nsw i32 %mul21, %n1, !dbg !1200 + %mul23 = mul nsw i32 %i2.0, %n1, !dbg !1200 + %add24 = add nsw i32 %mul22, %mul23, !dbg !1200 + %add25 = add nsw i32 %add24, 1, !dbg !1200 + %idxprom = sext i32 %add25 to i64, !dbg !1200 + %arrayidx = getelementptr inbounds double, double* %oz, i64 %idxprom, !dbg !1200 + call void @vranlc(i32 %add10, double* %xx, double %call, double* %arrayidx), !dbg !1201 + %call26 = call double @randlc(double* %x1, double %call1), !dbg !1202 + call void @llvm.dbg.value(metadata double %call26, metadata !1134, metadata !DIExpression()), !dbg !1135 + br label %for.inc, !dbg !1203 + +for.inc: ; preds = %for.body20 + %inc = add nsw i32 %i2.0, 1, !dbg !1204 + call void @llvm.dbg.value(metadata i32 %inc, metadata !1104, metadata !DIExpression()), !dbg !1135 + br label %for.cond18, !dbg !1205, !llvm.loop !1206 + +for.end: ; preds = %for.cond18 + %call27 = call double @randlc(double* %x0, double %call2), !dbg !1208 + call void @llvm.dbg.value(metadata double %call27, metadata !1134, metadata !DIExpression()), !dbg !1135 + br label %for.inc28, !dbg !1209 + +for.inc28: ; preds = %for.end + %inc29 = add nsw i32 %i3.0, 1, !dbg !1210 + call void @llvm.dbg.value(metadata i32 %inc29, metadata !1105, metadata !DIExpression()), !dbg !1135 + br label %for.cond, !dbg !1211, !llvm.loop !1212 + +for.end30: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 0, metadata !1126, metadata !DIExpression()), !dbg !1135 + br label %for.cond31, !dbg !1214 + +for.cond31: ; preds = %for.inc58, %for.end30 + %i.0 = phi i32 [ 0, %for.end30 ], [ %inc59, %for.inc58 ], !dbg !1216 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !1126, metadata !DIExpression()), !dbg !1135 + %cmp32 = icmp slt i32 %i.0, 10, !dbg !1217 + br i1 %cmp32, label %for.body33, label %for.end60, !dbg !1219 + +for.body33: ; preds = %for.cond31 + %idxprom34 = sext i32 %i.0 to i64, !dbg !1220 + %arrayidx35 = getelementptr inbounds [10 x [2 x double]], [10 x [2 x double]]* %ten, i64 0, i64 %idxprom34, !dbg !1220 + %arrayidx36 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx35, i64 0, i64 1, !dbg !1220 + store double 0.000000e+00, double* %arrayidx36, align 8, !dbg !1222, !tbaa !437 + %idxprom37 = sext i32 %i.0 to i64, !dbg !1223 + %arrayidx38 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j1, i64 0, i64 %idxprom37, !dbg !1223 + %arrayidx39 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx38, i64 0, i64 1, !dbg !1223 + store i32 0, i32* %arrayidx39, align 4, !dbg !1224, !tbaa !278 + %idxprom40 = sext i32 %i.0 to i64, !dbg !1225 + %arrayidx41 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j2, i64 0, i64 %idxprom40, !dbg !1225 + %arrayidx42 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx41, i64 0, i64 1, !dbg !1225 + store i32 0, i32* %arrayidx42, align 4, !dbg !1226, !tbaa !278 + %idxprom43 = sext i32 %i.0 to i64, !dbg !1227 + %arrayidx44 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j3, i64 0, i64 %idxprom43, !dbg !1227 + %arrayidx45 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx44, i64 0, i64 1, !dbg !1227 + store i32 0, i32* %arrayidx45, align 4, !dbg !1228, !tbaa !278 + %idxprom46 = sext i32 %i.0 to i64, !dbg !1229 + %arrayidx47 = getelementptr inbounds [10 x [2 x double]], [10 x [2 x double]]* %ten, i64 0, i64 %idxprom46, !dbg !1229 + %arrayidx48 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx47, i64 0, i64 0, !dbg !1229 + store double 1.000000e+00, double* %arrayidx48, align 16, !dbg !1230, !tbaa !437 + %idxprom49 = sext i32 %i.0 to i64, !dbg !1231 + %arrayidx50 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j1, i64 0, i64 %idxprom49, !dbg !1231 + %arrayidx51 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx50, i64 0, i64 0, !dbg !1231 + store i32 0, i32* %arrayidx51, align 8, !dbg !1232, !tbaa !278 + %idxprom52 = sext i32 %i.0 to i64, !dbg !1233 + %arrayidx53 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j2, i64 0, i64 %idxprom52, !dbg !1233 + %arrayidx54 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx53, i64 0, i64 0, !dbg !1233 + store i32 0, i32* %arrayidx54, align 8, !dbg !1234, !tbaa !278 + %idxprom55 = sext i32 %i.0 to i64, !dbg !1235 + %arrayidx56 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j3, i64 0, i64 %idxprom55, !dbg !1235 + %arrayidx57 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx56, i64 0, i64 0, !dbg !1235 + store i32 0, i32* %arrayidx57, align 8, !dbg !1236, !tbaa !278 + br label %for.inc58, !dbg !1237 + +for.inc58: ; preds = %for.body33 + %inc59 = add nsw i32 %i.0, 1, !dbg !1238 + call void @llvm.dbg.value(metadata i32 %inc59, metadata !1126, metadata !DIExpression()), !dbg !1135 + br label %for.cond31, !dbg !1239, !llvm.loop !1240 + +for.end60: ; preds = %for.cond31 + call void @llvm.dbg.value(metadata i32 1, metadata !1105, metadata !DIExpression()), !dbg !1135 + br label %for.cond61, !dbg !1242 + +for.cond61: ; preds = %for.inc138, %for.end60 + %i3.1 = phi i32 [ 1, %for.end60 ], [ %inc139, %for.inc138 ], !dbg !1244 + call void @llvm.dbg.value(metadata i32 %i3.1, metadata !1105, metadata !DIExpression()), !dbg !1135 + %sub62 = sub nsw i32 %n3, 1, !dbg !1245 + %cmp63 = icmp slt i32 %i3.1, %sub62, !dbg !1247 + br i1 %cmp63, label %for.body64, label %for.end140, !dbg !1248 + +for.body64: ; preds = %for.cond61 + call void @llvm.dbg.value(metadata i32 1, metadata !1104, metadata !DIExpression()), !dbg !1135 + br label %for.cond65, !dbg !1249 + +for.cond65: ; preds = %for.inc135, %for.body64 + %i2.1 = phi i32 [ 1, %for.body64 ], [ %inc136, %for.inc135 ], !dbg !1252 + call void @llvm.dbg.value(metadata i32 %i2.1, metadata !1104, metadata !DIExpression()), !dbg !1135 + %sub66 = sub nsw i32 %n2, 1, !dbg !1253 + %cmp67 = icmp slt i32 %i2.1, %sub66, !dbg !1255 + br i1 %cmp67, label %for.body68, label %for.end137, !dbg !1256 + +for.body68: ; preds = %for.cond65 + call void @llvm.dbg.value(metadata i32 1, metadata !1103, metadata !DIExpression()), !dbg !1135 + br label %for.cond69, !dbg !1257 + +for.cond69: ; preds = %for.inc132, %for.body68 + %i1.0 = phi i32 [ 1, %for.body68 ], [ %inc133, %for.inc132 ], !dbg !1260 + call void @llvm.dbg.value(metadata i32 %i1.0, metadata !1103, metadata !DIExpression()), !dbg !1135 + %sub70 = sub nsw i32 %n1, 1, !dbg !1261 + %cmp71 = icmp slt i32 %i1.0, %sub70, !dbg !1263 + br i1 %cmp71, label %for.body72, label %for.end134, !dbg !1264 + +for.body72: ; preds = %for.cond69 + %mul73 = mul nsw i32 %i3.1, %n2, !dbg !1265 + %mul74 = mul nsw i32 %mul73, %n1, !dbg !1265 + %mul75 = mul nsw i32 %i2.1, %n1, !dbg !1265 + %add76 = add nsw i32 %mul74, %mul75, !dbg !1265 + %add77 = add nsw i32 %add76, %i1.0, !dbg !1265 + %idxprom78 = sext i32 %add77 to i64, !dbg !1265 + %arrayidx79 = getelementptr inbounds double, double* %oz, i64 %idxprom78, !dbg !1265 + %21 = load double, double* %arrayidx79, align 8, !dbg !1265, !tbaa !437 + %arrayidx80 = getelementptr inbounds [10 x [2 x double]], [10 x [2 x double]]* %ten, i64 0, i64 0, !dbg !1268 + %arrayidx81 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx80, i64 0, i64 1, !dbg !1268 + %22 = load double, double* %arrayidx81, align 8, !dbg !1268, !tbaa !437 + %cmp82 = fcmp ogt double %21, %22, !dbg !1269 + br i1 %cmp82, label %if.then, label %if.end, !dbg !1270 + +if.then: ; preds = %for.body72 + %mul83 = mul nsw i32 %i3.1, %n2, !dbg !1271 + %mul84 = mul nsw i32 %mul83, %n1, !dbg !1271 + %mul85 = mul nsw i32 %i2.1, %n1, !dbg !1271 + %add86 = add nsw i32 %mul84, %mul85, !dbg !1271 + %add87 = add nsw i32 %add86, %i1.0, !dbg !1271 + %idxprom88 = sext i32 %add87 to i64, !dbg !1271 + %arrayidx89 = getelementptr inbounds double, double* %oz, i64 %idxprom88, !dbg !1271 + %23 = load double, double* %arrayidx89, align 8, !dbg !1271, !tbaa !437 + %arrayidx90 = getelementptr inbounds [10 x [2 x double]], [10 x [2 x double]]* %ten, i64 0, i64 0, !dbg !1273 + %arrayidx91 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx90, i64 0, i64 1, !dbg !1273 + store double %23, double* %arrayidx91, align 8, !dbg !1274, !tbaa !437 + %arrayidx92 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j1, i64 0, i64 0, !dbg !1275 + %arrayidx93 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx92, i64 0, i64 1, !dbg !1275 + store i32 %i1.0, i32* %arrayidx93, align 4, !dbg !1276, !tbaa !278 + %arrayidx94 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j2, i64 0, i64 0, !dbg !1277 + %arrayidx95 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx94, i64 0, i64 1, !dbg !1277 + store i32 %i2.1, i32* %arrayidx95, align 4, !dbg !1278, !tbaa !278 + %arrayidx96 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j3, i64 0, i64 0, !dbg !1279 + %arrayidx97 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx96, i64 0, i64 1, !dbg !1279 + store i32 %i3.1, i32* %arrayidx97, align 4, !dbg !1280, !tbaa !278 + %arraydecay = getelementptr inbounds [10 x [2 x double]], [10 x [2 x double]]* %ten, i64 0, i64 0, !dbg !1281 + %arraydecay98 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j1, i64 0, i64 0, !dbg !1282 + %arraydecay99 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j2, i64 0, i64 0, !dbg !1283 + %arraydecay100 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j3, i64 0, i64 0, !dbg !1284 + call void @bubble([2 x double]* %arraydecay, [2 x i32]* %arraydecay98, [2 x i32]* %arraydecay99, [2 x i32]* %arraydecay100, i32 10, i32 1), !dbg !1285 + br label %if.end, !dbg !1286 + +if.end: ; preds = %if.then, %for.body72 + %mul101 = mul nsw i32 %i3.1, %n2, !dbg !1287 + %mul102 = mul nsw i32 %mul101, %n1, !dbg !1287 + %mul103 = mul nsw i32 %i2.1, %n1, !dbg !1287 + %add104 = add nsw i32 %mul102, %mul103, !dbg !1287 + %add105 = add nsw i32 %add104, %i1.0, !dbg !1287 + %idxprom106 = sext i32 %add105 to i64, !dbg !1287 + %arrayidx107 = getelementptr inbounds double, double* %oz, i64 %idxprom106, !dbg !1287 + %24 = load double, double* %arrayidx107, align 8, !dbg !1287, !tbaa !437 + %arrayidx108 = getelementptr inbounds [10 x [2 x double]], [10 x [2 x double]]* %ten, i64 0, i64 0, !dbg !1289 + %arrayidx109 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx108, i64 0, i64 0, !dbg !1289 + %25 = load double, double* %arrayidx109, align 16, !dbg !1289, !tbaa !437 + %cmp110 = fcmp olt double %24, %25, !dbg !1290 + br i1 %cmp110, label %if.then111, label %if.end131, !dbg !1291 + +if.then111: ; preds = %if.end + %mul112 = mul nsw i32 %i3.1, %n2, !dbg !1292 + %mul113 = mul nsw i32 %mul112, %n1, !dbg !1292 + %mul114 = mul nsw i32 %i2.1, %n1, !dbg !1292 + %add115 = add nsw i32 %mul113, %mul114, !dbg !1292 + %add116 = add nsw i32 %add115, %i1.0, !dbg !1292 + %idxprom117 = sext i32 %add116 to i64, !dbg !1292 + %arrayidx118 = getelementptr inbounds double, double* %oz, i64 %idxprom117, !dbg !1292 + %26 = load double, double* %arrayidx118, align 8, !dbg !1292, !tbaa !437 + %arrayidx119 = getelementptr inbounds [10 x [2 x double]], [10 x [2 x double]]* %ten, i64 0, i64 0, !dbg !1294 + %arrayidx120 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx119, i64 0, i64 0, !dbg !1294 + store double %26, double* %arrayidx120, align 16, !dbg !1295, !tbaa !437 + %arrayidx121 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j1, i64 0, i64 0, !dbg !1296 + %arrayidx122 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx121, i64 0, i64 0, !dbg !1296 + store i32 %i1.0, i32* %arrayidx122, align 16, !dbg !1297, !tbaa !278 + %arrayidx123 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j2, i64 0, i64 0, !dbg !1298 + %arrayidx124 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx123, i64 0, i64 0, !dbg !1298 + store i32 %i2.1, i32* %arrayidx124, align 16, !dbg !1299, !tbaa !278 + %arrayidx125 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j3, i64 0, i64 0, !dbg !1300 + %arrayidx126 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx125, i64 0, i64 0, !dbg !1300 + store i32 %i3.1, i32* %arrayidx126, align 16, !dbg !1301, !tbaa !278 + %arraydecay127 = getelementptr inbounds [10 x [2 x double]], [10 x [2 x double]]* %ten, i64 0, i64 0, !dbg !1302 + %arraydecay128 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j1, i64 0, i64 0, !dbg !1303 + %arraydecay129 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j2, i64 0, i64 0, !dbg !1304 + %arraydecay130 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j3, i64 0, i64 0, !dbg !1305 + call void @bubble([2 x double]* %arraydecay127, [2 x i32]* %arraydecay128, [2 x i32]* %arraydecay129, [2 x i32]* %arraydecay130, i32 10, i32 0), !dbg !1306 + br label %if.end131, !dbg !1307 + +if.end131: ; preds = %if.then111, %if.end + br label %for.inc132, !dbg !1308 + +for.inc132: ; preds = %if.end131 + %inc133 = add nsw i32 %i1.0, 1, !dbg !1309 + call void @llvm.dbg.value(metadata i32 %inc133, metadata !1103, metadata !DIExpression()), !dbg !1135 + br label %for.cond69, !dbg !1310, !llvm.loop !1311 + +for.end134: ; preds = %for.cond69 + br label %for.inc135, !dbg !1313 + +for.inc135: ; preds = %for.end134 + %inc136 = add nsw i32 %i2.1, 1, !dbg !1314 + call void @llvm.dbg.value(metadata i32 %inc136, metadata !1104, metadata !DIExpression()), !dbg !1135 + br label %for.cond65, !dbg !1315, !llvm.loop !1316 + +for.end137: ; preds = %for.cond65 + br label %for.inc138, !dbg !1318 + +for.inc138: ; preds = %for.end137 + %inc139 = add nsw i32 %i3.1, 1, !dbg !1319 + call void @llvm.dbg.value(metadata i32 %inc139, metadata !1105, metadata !DIExpression()), !dbg !1135 + br label %for.cond61, !dbg !1320, !llvm.loop !1321 + +for.end140: ; preds = %for.cond61 + call void @llvm.dbg.value(metadata i32 9, metadata !1103, metadata !DIExpression()), !dbg !1135 + call void @llvm.dbg.value(metadata i32 9, metadata !1100, metadata !DIExpression()), !dbg !1135 + call void @llvm.dbg.value(metadata i32 9, metadata !1126, metadata !DIExpression()), !dbg !1135 + br label %for.cond141, !dbg !1323 + +for.cond141: ; preds = %for.inc253, %for.end140 + %i1.1 = phi i32 [ 9, %for.end140 ], [ %i1.2, %for.inc253 ], !dbg !1135 + %i0.0 = phi i32 [ 9, %for.end140 ], [ %i0.1, %for.inc253 ], !dbg !1135 + %i.1 = phi i32 [ 9, %for.end140 ], [ %dec, %for.inc253 ], !dbg !1325 + call void @llvm.dbg.value(metadata i32 %i.1, metadata !1126, metadata !DIExpression()), !dbg !1135 + call void @llvm.dbg.value(metadata i32 %i0.0, metadata !1100, metadata !DIExpression()), !dbg !1135 + call void @llvm.dbg.value(metadata i32 %i1.1, metadata !1103, metadata !DIExpression()), !dbg !1135 + %cmp142 = icmp sge i32 %i.1, 0, !dbg !1326 + br i1 %cmp142, label %for.body143, label %for.end254, !dbg !1328 + +for.body143: ; preds = %for.cond141 + call void @llvm.dbg.value(metadata double 0.000000e+00, metadata !1125, metadata !DIExpression()), !dbg !1135 + %idxprom144 = sext i32 %i1.1 to i64, !dbg !1329 + %arrayidx145 = getelementptr inbounds [10 x [2 x double]], [10 x [2 x double]]* %ten, i64 0, i64 %idxprom144, !dbg !1329 + %arrayidx146 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx145, i64 0, i64 1, !dbg !1329 + %27 = load double, double* %arrayidx146, align 8, !dbg !1329, !tbaa !437 + %cmp147 = fcmp olt double 0.000000e+00, %27, !dbg !1332 + br i1 %cmp147, label %if.then148, label %if.else, !dbg !1333 + +if.then148: ; preds = %for.body143 + %arrayidx149 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 0, !dbg !1334 + %idxprom150 = sext i32 %i.1 to i64, !dbg !1334 + %arrayidx151 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx149, i64 0, i64 %idxprom150, !dbg !1334 + %arrayidx152 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx151, i64 0, i64 1, !dbg !1334 + store i32 0, i32* %arrayidx152, align 4, !dbg !1336, !tbaa !278 + %28 = load i32, i32* @is1, align 4, !dbg !1337, !tbaa !278 + %sub153 = sub nsw i32 %28, 2, !dbg !1338 + %idxprom154 = sext i32 %i1.1 to i64, !dbg !1339 + %arrayidx155 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j1, i64 0, i64 %idxprom154, !dbg !1339 + %arrayidx156 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx155, i64 0, i64 1, !dbg !1339 + %29 = load i32, i32* %arrayidx156, align 4, !dbg !1339, !tbaa !278 + %add157 = add nsw i32 %sub153, %29, !dbg !1340 + %arrayidx158 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 1, !dbg !1341 + %idxprom159 = sext i32 %i.1 to i64, !dbg !1341 + %arrayidx160 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx158, i64 0, i64 %idxprom159, !dbg !1341 + %arrayidx161 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx160, i64 0, i64 1, !dbg !1341 + store i32 %add157, i32* %arrayidx161, align 4, !dbg !1342, !tbaa !278 + %30 = load i32, i32* @is2, align 4, !dbg !1343, !tbaa !278 + %sub162 = sub nsw i32 %30, 2, !dbg !1344 + %idxprom163 = sext i32 %i1.1 to i64, !dbg !1345 + %arrayidx164 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j2, i64 0, i64 %idxprom163, !dbg !1345 + %arrayidx165 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx164, i64 0, i64 1, !dbg !1345 + %31 = load i32, i32* %arrayidx165, align 4, !dbg !1345, !tbaa !278 + %add166 = add nsw i32 %sub162, %31, !dbg !1346 + %arrayidx167 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 2, !dbg !1347 + %idxprom168 = sext i32 %i.1 to i64, !dbg !1347 + %arrayidx169 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx167, i64 0, i64 %idxprom168, !dbg !1347 + %arrayidx170 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx169, i64 0, i64 1, !dbg !1347 + store i32 %add166, i32* %arrayidx170, align 4, !dbg !1348, !tbaa !278 + %32 = load i32, i32* @is3, align 4, !dbg !1349, !tbaa !278 + %sub171 = sub nsw i32 %32, 2, !dbg !1350 + %idxprom172 = sext i32 %i1.1 to i64, !dbg !1351 + %arrayidx173 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j3, i64 0, i64 %idxprom172, !dbg !1351 + %arrayidx174 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx173, i64 0, i64 1, !dbg !1351 + %33 = load i32, i32* %arrayidx174, align 4, !dbg !1351, !tbaa !278 + %add175 = add nsw i32 %sub171, %33, !dbg !1352 + %arrayidx176 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 3, !dbg !1353 + %idxprom177 = sext i32 %i.1 to i64, !dbg !1353 + %arrayidx178 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx176, i64 0, i64 %idxprom177, !dbg !1353 + %arrayidx179 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx178, i64 0, i64 1, !dbg !1353 + store i32 %add175, i32* %arrayidx179, align 4, !dbg !1354, !tbaa !278 + %sub180 = sub nsw i32 %i1.1, 1, !dbg !1355 + call void @llvm.dbg.value(metadata i32 %sub180, metadata !1103, metadata !DIExpression()), !dbg !1135 + br label %if.end197, !dbg !1356 + +if.else: ; preds = %for.body143 + %arrayidx181 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 0, !dbg !1357 + %idxprom182 = sext i32 %i.1 to i64, !dbg !1357 + %arrayidx183 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx181, i64 0, i64 %idxprom182, !dbg !1357 + %arrayidx184 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx183, i64 0, i64 1, !dbg !1357 + store i32 0, i32* %arrayidx184, align 4, !dbg !1359, !tbaa !278 + %arrayidx185 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 1, !dbg !1360 + %idxprom186 = sext i32 %i.1 to i64, !dbg !1360 + %arrayidx187 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx185, i64 0, i64 %idxprom186, !dbg !1360 + %arrayidx188 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx187, i64 0, i64 1, !dbg !1360 + store i32 0, i32* %arrayidx188, align 4, !dbg !1361, !tbaa !278 + %arrayidx189 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 2, !dbg !1362 + %idxprom190 = sext i32 %i.1 to i64, !dbg !1362 + %arrayidx191 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx189, i64 0, i64 %idxprom190, !dbg !1362 + %arrayidx192 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx191, i64 0, i64 1, !dbg !1362 + store i32 0, i32* %arrayidx192, align 4, !dbg !1363, !tbaa !278 + %arrayidx193 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 3, !dbg !1364 + %idxprom194 = sext i32 %i.1 to i64, !dbg !1364 + %arrayidx195 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx193, i64 0, i64 %idxprom194, !dbg !1364 + %arrayidx196 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx195, i64 0, i64 1, !dbg !1364 + store i32 0, i32* %arrayidx196, align 4, !dbg !1365, !tbaa !278 + br label %if.end197 + +if.end197: ; preds = %if.else, %if.then148 + %i1.2 = phi i32 [ %sub180, %if.then148 ], [ %i1.1, %if.else ], !dbg !1135 + call void @llvm.dbg.value(metadata i32 %i1.2, metadata !1103, metadata !DIExpression()), !dbg !1135 + call void @llvm.dbg.value(metadata double 1.000000e+00, metadata !1125, metadata !DIExpression()), !dbg !1135 + %idxprom198 = sext i32 %i0.0 to i64, !dbg !1366 + %arrayidx199 = getelementptr inbounds [10 x [2 x double]], [10 x [2 x double]]* %ten, i64 0, i64 %idxprom198, !dbg !1366 + %arrayidx200 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx199, i64 0, i64 0, !dbg !1366 + %34 = load double, double* %arrayidx200, align 16, !dbg !1366, !tbaa !437 + %cmp201 = fcmp ogt double 1.000000e+00, %34, !dbg !1368 + br i1 %cmp201, label %if.then202, label %if.else235, !dbg !1369 + +if.then202: ; preds = %if.end197 + %arrayidx203 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 0, !dbg !1370 + %idxprom204 = sext i32 %i.1 to i64, !dbg !1370 + %arrayidx205 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx203, i64 0, i64 %idxprom204, !dbg !1370 + %arrayidx206 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx205, i64 0, i64 0, !dbg !1370 + store i32 0, i32* %arrayidx206, align 8, !dbg !1372, !tbaa !278 + %35 = load i32, i32* @is1, align 4, !dbg !1373, !tbaa !278 + %sub207 = sub nsw i32 %35, 2, !dbg !1374 + %idxprom208 = sext i32 %i0.0 to i64, !dbg !1375 + %arrayidx209 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j1, i64 0, i64 %idxprom208, !dbg !1375 + %arrayidx210 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx209, i64 0, i64 0, !dbg !1375 + %36 = load i32, i32* %arrayidx210, align 8, !dbg !1375, !tbaa !278 + %add211 = add nsw i32 %sub207, %36, !dbg !1376 + %arrayidx212 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 1, !dbg !1377 + %idxprom213 = sext i32 %i.1 to i64, !dbg !1377 + %arrayidx214 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx212, i64 0, i64 %idxprom213, !dbg !1377 + %arrayidx215 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx214, i64 0, i64 0, !dbg !1377 + store i32 %add211, i32* %arrayidx215, align 8, !dbg !1378, !tbaa !278 + %37 = load i32, i32* @is2, align 4, !dbg !1379, !tbaa !278 + %sub216 = sub nsw i32 %37, 2, !dbg !1380 + %idxprom217 = sext i32 %i0.0 to i64, !dbg !1381 + %arrayidx218 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j2, i64 0, i64 %idxprom217, !dbg !1381 + %arrayidx219 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx218, i64 0, i64 0, !dbg !1381 + %38 = load i32, i32* %arrayidx219, align 8, !dbg !1381, !tbaa !278 + %add220 = add nsw i32 %sub216, %38, !dbg !1382 + %arrayidx221 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 2, !dbg !1383 + %idxprom222 = sext i32 %i.1 to i64, !dbg !1383 + %arrayidx223 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx221, i64 0, i64 %idxprom222, !dbg !1383 + %arrayidx224 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx223, i64 0, i64 0, !dbg !1383 + store i32 %add220, i32* %arrayidx224, align 8, !dbg !1384, !tbaa !278 + %39 = load i32, i32* @is3, align 4, !dbg !1385, !tbaa !278 + %sub225 = sub nsw i32 %39, 2, !dbg !1386 + %idxprom226 = sext i32 %i0.0 to i64, !dbg !1387 + %arrayidx227 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %j3, i64 0, i64 %idxprom226, !dbg !1387 + %arrayidx228 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx227, i64 0, i64 0, !dbg !1387 + %40 = load i32, i32* %arrayidx228, align 8, !dbg !1387, !tbaa !278 + %add229 = add nsw i32 %sub225, %40, !dbg !1388 + %arrayidx230 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 3, !dbg !1389 + %idxprom231 = sext i32 %i.1 to i64, !dbg !1389 + %arrayidx232 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx230, i64 0, i64 %idxprom231, !dbg !1389 + %arrayidx233 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx232, i64 0, i64 0, !dbg !1389 + store i32 %add229, i32* %arrayidx233, align 8, !dbg !1390, !tbaa !278 + %sub234 = sub nsw i32 %i0.0, 1, !dbg !1391 + call void @llvm.dbg.value(metadata i32 %sub234, metadata !1100, metadata !DIExpression()), !dbg !1135 + br label %if.end252, !dbg !1392 + +if.else235: ; preds = %if.end197 + %arrayidx236 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 0, !dbg !1393 + %idxprom237 = sext i32 %i.1 to i64, !dbg !1393 + %arrayidx238 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx236, i64 0, i64 %idxprom237, !dbg !1393 + %arrayidx239 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx238, i64 0, i64 0, !dbg !1393 + store i32 0, i32* %arrayidx239, align 8, !dbg !1395, !tbaa !278 + %arrayidx240 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 1, !dbg !1396 + %idxprom241 = sext i32 %i.1 to i64, !dbg !1396 + %arrayidx242 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx240, i64 0, i64 %idxprom241, !dbg !1396 + %arrayidx243 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx242, i64 0, i64 0, !dbg !1396 + store i32 0, i32* %arrayidx243, align 8, !dbg !1397, !tbaa !278 + %arrayidx244 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 2, !dbg !1398 + %idxprom245 = sext i32 %i.1 to i64, !dbg !1398 + %arrayidx246 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx244, i64 0, i64 %idxprom245, !dbg !1398 + %arrayidx247 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx246, i64 0, i64 0, !dbg !1398 + store i32 0, i32* %arrayidx247, align 8, !dbg !1399, !tbaa !278 + %arrayidx248 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 3, !dbg !1400 + %idxprom249 = sext i32 %i.1 to i64, !dbg !1400 + %arrayidx250 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx248, i64 0, i64 %idxprom249, !dbg !1400 + %arrayidx251 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx250, i64 0, i64 0, !dbg !1400 + store i32 0, i32* %arrayidx251, align 8, !dbg !1401, !tbaa !278 + br label %if.end252 + +if.end252: ; preds = %if.else235, %if.then202 + %i0.1 = phi i32 [ %sub234, %if.then202 ], [ %i0.0, %if.else235 ], !dbg !1135 + call void @llvm.dbg.value(metadata i32 %i0.1, metadata !1100, metadata !DIExpression()), !dbg !1135 + br label %for.inc253, !dbg !1402 + +for.inc253: ; preds = %if.end252 + %dec = add nsw i32 %i.1, -1, !dbg !1403 + call void @llvm.dbg.value(metadata i32 %dec, metadata !1126, metadata !DIExpression()), !dbg !1135 + br label %for.cond141, !dbg !1404, !llvm.loop !1405 + +for.end254: ; preds = %for.cond141 + call void @llvm.dbg.value(metadata i32 0, metadata !1102, metadata !DIExpression()), !dbg !1135 + call void @llvm.dbg.value(metadata i32 0, metadata !1101, metadata !DIExpression()), !dbg !1135 + call void @llvm.dbg.value(metadata i32 0, metadata !1105, metadata !DIExpression()), !dbg !1135 + br label %for.cond255, !dbg !1407 + +for.cond255: ; preds = %for.inc277, %for.end254 + %i3.2 = phi i32 [ 0, %for.end254 ], [ %inc278, %for.inc277 ], !dbg !1409 + call void @llvm.dbg.value(metadata i32 %i3.2, metadata !1105, metadata !DIExpression()), !dbg !1135 + %cmp256 = icmp slt i32 %i3.2, %n3, !dbg !1410 + br i1 %cmp256, label %for.body257, label %for.end279, !dbg !1412 + +for.body257: ; preds = %for.cond255 + call void @llvm.dbg.value(metadata i32 0, metadata !1104, metadata !DIExpression()), !dbg !1135 + br label %for.cond258, !dbg !1413 + +for.cond258: ; preds = %for.inc274, %for.body257 + %i2.2 = phi i32 [ 0, %for.body257 ], [ %inc275, %for.inc274 ], !dbg !1416 + call void @llvm.dbg.value(metadata i32 %i2.2, metadata !1104, metadata !DIExpression()), !dbg !1135 + %cmp259 = icmp slt i32 %i2.2, %n2, !dbg !1417 + br i1 %cmp259, label %for.body260, label %for.end276, !dbg !1419 + +for.body260: ; preds = %for.cond258 + call void @llvm.dbg.value(metadata i32 0, metadata !1103, metadata !DIExpression()), !dbg !1135 + br label %for.cond261, !dbg !1420 + +for.cond261: ; preds = %for.inc271, %for.body260 + %i1.3 = phi i32 [ 0, %for.body260 ], [ %inc272, %for.inc271 ], !dbg !1423 + call void @llvm.dbg.value(metadata i32 %i1.3, metadata !1103, metadata !DIExpression()), !dbg !1135 + %cmp262 = icmp slt i32 %i1.3, %n1, !dbg !1424 + br i1 %cmp262, label %for.body263, label %for.end273, !dbg !1426 + +for.body263: ; preds = %for.cond261 + %mul264 = mul nsw i32 %i3.2, %n2, !dbg !1427 + %mul265 = mul nsw i32 %mul264, %n1, !dbg !1427 + %mul266 = mul nsw i32 %i2.2, %n1, !dbg !1427 + %add267 = add nsw i32 %mul265, %mul266, !dbg !1427 + %add268 = add nsw i32 %add267, %i1.3, !dbg !1427 + %idxprom269 = sext i32 %add268 to i64, !dbg !1427 + %arrayidx270 = getelementptr inbounds double, double* %oz, i64 %idxprom269, !dbg !1427 + store double 0.000000e+00, double* %arrayidx270, align 8, !dbg !1429, !tbaa !437 + br label %for.inc271, !dbg !1430 + +for.inc271: ; preds = %for.body263 + %inc272 = add nsw i32 %i1.3, 1, !dbg !1431 + call void @llvm.dbg.value(metadata i32 %inc272, metadata !1103, metadata !DIExpression()), !dbg !1135 + br label %for.cond261, !dbg !1432, !llvm.loop !1433 + +for.end273: ; preds = %for.cond261 + br label %for.inc274, !dbg !1435 + +for.inc274: ; preds = %for.end273 + %inc275 = add nsw i32 %i2.2, 1, !dbg !1436 + call void @llvm.dbg.value(metadata i32 %inc275, metadata !1104, metadata !DIExpression()), !dbg !1135 + br label %for.cond258, !dbg !1437, !llvm.loop !1438 + +for.end276: ; preds = %for.cond258 + br label %for.inc277, !dbg !1440 + +for.inc277: ; preds = %for.end276 + %inc278 = add nsw i32 %i3.2, 1, !dbg !1441 + call void @llvm.dbg.value(metadata i32 %inc278, metadata !1105, metadata !DIExpression()), !dbg !1135 + br label %for.cond255, !dbg !1442, !llvm.loop !1443 + +for.end279: ; preds = %for.cond255 + call void @llvm.dbg.value(metadata i32 9, metadata !1126, metadata !DIExpression()), !dbg !1135 + br label %for.cond280, !dbg !1445 + +for.cond280: ; preds = %for.inc302, %for.end279 + %i.2 = phi i32 [ 9, %for.end279 ], [ %dec303, %for.inc302 ], !dbg !1448 + call void @llvm.dbg.value(metadata i32 %i.2, metadata !1126, metadata !DIExpression()), !dbg !1135 + %cmp281 = icmp sge i32 %i.2, 0, !dbg !1449 + br i1 %cmp281, label %for.body282, label %for.end304, !dbg !1451 + +for.body282: ; preds = %for.cond280 + %arrayidx283 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 3, !dbg !1452 + %idxprom284 = sext i32 %i.2 to i64, !dbg !1452 + %arrayidx285 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx283, i64 0, i64 %idxprom284, !dbg !1452 + %arrayidx286 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx285, i64 0, i64 0, !dbg !1452 + %41 = load i32, i32* %arrayidx286, align 8, !dbg !1452, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %41, metadata !1105, metadata !DIExpression()), !dbg !1135 + %arrayidx287 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 2, !dbg !1454 + %idxprom288 = sext i32 %i.2 to i64, !dbg !1454 + %arrayidx289 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx287, i64 0, i64 %idxprom288, !dbg !1454 + %arrayidx290 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx289, i64 0, i64 0, !dbg !1454 + %42 = load i32, i32* %arrayidx290, align 8, !dbg !1454, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %42, metadata !1104, metadata !DIExpression()), !dbg !1135 + %arrayidx291 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 1, !dbg !1455 + %idxprom292 = sext i32 %i.2 to i64, !dbg !1455 + %arrayidx293 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx291, i64 0, i64 %idxprom292, !dbg !1455 + %arrayidx294 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx293, i64 0, i64 0, !dbg !1455 + %43 = load i32, i32* %arrayidx294, align 8, !dbg !1455, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %43, metadata !1103, metadata !DIExpression()), !dbg !1135 + %mul295 = mul nsw i32 %41, %n2, !dbg !1456 + %mul296 = mul nsw i32 %mul295, %n1, !dbg !1456 + %mul297 = mul nsw i32 %42, %n1, !dbg !1456 + %add298 = add nsw i32 %mul296, %mul297, !dbg !1456 + %add299 = add nsw i32 %add298, %43, !dbg !1456 + %idxprom300 = sext i32 %add299 to i64, !dbg !1456 + %arrayidx301 = getelementptr inbounds double, double* %oz, i64 %idxprom300, !dbg !1456 + store double -1.000000e+00, double* %arrayidx301, align 8, !dbg !1457, !tbaa !437 + br label %for.inc302, !dbg !1458 + +for.inc302: ; preds = %for.body282 + %dec303 = add nsw i32 %i.2, -1, !dbg !1459 + call void @llvm.dbg.value(metadata i32 %dec303, metadata !1126, metadata !DIExpression()), !dbg !1135 + br label %for.cond280, !dbg !1460, !llvm.loop !1461 + +for.end304: ; preds = %for.cond280 + call void @llvm.dbg.value(metadata i32 9, metadata !1126, metadata !DIExpression()), !dbg !1135 + br label %for.cond305, !dbg !1463 + +for.cond305: ; preds = %for.inc327, %for.end304 + %i.3 = phi i32 [ 9, %for.end304 ], [ %dec328, %for.inc327 ], !dbg !1465 + call void @llvm.dbg.value(metadata i32 %i.3, metadata !1126, metadata !DIExpression()), !dbg !1135 + %cmp306 = icmp sge i32 %i.3, 0, !dbg !1466 + br i1 %cmp306, label %for.body307, label %for.end329, !dbg !1468 + +for.body307: ; preds = %for.cond305 + %arrayidx308 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 3, !dbg !1469 + %idxprom309 = sext i32 %i.3 to i64, !dbg !1469 + %arrayidx310 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx308, i64 0, i64 %idxprom309, !dbg !1469 + %arrayidx311 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx310, i64 0, i64 1, !dbg !1469 + %44 = load i32, i32* %arrayidx311, align 4, !dbg !1469, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %44, metadata !1105, metadata !DIExpression()), !dbg !1135 + %arrayidx312 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 2, !dbg !1471 + %idxprom313 = sext i32 %i.3 to i64, !dbg !1471 + %arrayidx314 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx312, i64 0, i64 %idxprom313, !dbg !1471 + %arrayidx315 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx314, i64 0, i64 1, !dbg !1471 + %45 = load i32, i32* %arrayidx315, align 4, !dbg !1471, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %45, metadata !1104, metadata !DIExpression()), !dbg !1135 + %arrayidx316 = getelementptr inbounds [4 x [10 x [2 x i32]]], [4 x [10 x [2 x i32]]]* %jg, i64 0, i64 1, !dbg !1472 + %idxprom317 = sext i32 %i.3 to i64, !dbg !1472 + %arrayidx318 = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* %arrayidx316, i64 0, i64 %idxprom317, !dbg !1472 + %arrayidx319 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx318, i64 0, i64 1, !dbg !1472 + %46 = load i32, i32* %arrayidx319, align 4, !dbg !1472, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %46, metadata !1103, metadata !DIExpression()), !dbg !1135 + %mul320 = mul nsw i32 %44, %n2, !dbg !1473 + %mul321 = mul nsw i32 %mul320, %n1, !dbg !1473 + %mul322 = mul nsw i32 %45, %n1, !dbg !1473 + %add323 = add nsw i32 %mul321, %mul322, !dbg !1473 + %add324 = add nsw i32 %add323, %46, !dbg !1473 + %idxprom325 = sext i32 %add324 to i64, !dbg !1473 + %arrayidx326 = getelementptr inbounds double, double* %oz, i64 %idxprom325, !dbg !1473 + store double 1.000000e+00, double* %arrayidx326, align 8, !dbg !1474, !tbaa !437 + br label %for.inc327, !dbg !1475 + +for.inc327: ; preds = %for.body307 + %dec328 = add nsw i32 %i.3, -1, !dbg !1476 + call void @llvm.dbg.value(metadata i32 %dec328, metadata !1126, metadata !DIExpression()), !dbg !1135 + br label %for.cond305, !dbg !1477, !llvm.loop !1478 + +for.end329: ; preds = %for.cond305 + call void @comm3(double* %oz, i32 %n1, i32 %n2, i32 %n3, i32 %k), !dbg !1480 + %47 = bitcast [4 x [10 x [2 x i32]]]* %jg to i8*, !dbg !1481 + call void @llvm.lifetime.end.p0i8(i64 320, i8* %47) #6, !dbg !1481 + %48 = bitcast [10 x [2 x i32]]* %j3 to i8*, !dbg !1481 + call void @llvm.lifetime.end.p0i8(i64 80, i8* %48) #6, !dbg !1481 + %49 = bitcast [10 x [2 x i32]]* %j2 to i8*, !dbg !1481 + call void @llvm.lifetime.end.p0i8(i64 80, i8* %49) #6, !dbg !1481 + %50 = bitcast [10 x [2 x i32]]* %j1 to i8*, !dbg !1481 + call void @llvm.lifetime.end.p0i8(i64 80, i8* %50) #6, !dbg !1481 + %51 = bitcast [10 x [2 x double]]* %ten to i8*, !dbg !1481 + call void @llvm.lifetime.end.p0i8(i64 160, i8* %51) #6, !dbg !1481 + %52 = bitcast double* %x1 to i8*, !dbg !1481 + call void @llvm.lifetime.end.p0i8(i64 8, i8* %52) #6, !dbg !1481 + %53 = bitcast double* %x0 to i8*, !dbg !1481 + call void @llvm.lifetime.end.p0i8(i64 8, i8* %53) #6, !dbg !1481 + %54 = bitcast double* %xx to i8*, !dbg !1481 + call void @llvm.lifetime.end.p0i8(i64 8, i8* %54) #6, !dbg !1481 + ret void, !dbg !1481 +} + +; Function Attrs: nounwind uwtable +define internal void @norm2u3(double* %or, i32 %n1, i32 %n2, i32 %n3, double* %rnm2, double* %rnmu, i32 %nx, i32 %ny, i32 %nz) #0 !dbg !1482 { +entry: + call void @llvm.dbg.value(metadata double* %or, metadata !1486, metadata !DIExpression()), !dbg !1502 + call void @llvm.dbg.value(metadata i32 %n1, metadata !1487, metadata !DIExpression()), !dbg !1502 + call void @llvm.dbg.value(metadata i32 %n2, metadata !1488, metadata !DIExpression()), !dbg !1502 + call void @llvm.dbg.value(metadata i32 %n3, metadata !1489, metadata !DIExpression()), !dbg !1502 + call void @llvm.dbg.value(metadata double* %rnm2, metadata !1490, metadata !DIExpression()), !dbg !1502 + call void @llvm.dbg.value(metadata double* %rnmu, metadata !1491, metadata !DIExpression()), !dbg !1502 + call void @llvm.dbg.value(metadata i32 %nx, metadata !1492, metadata !DIExpression()), !dbg !1502 + call void @llvm.dbg.value(metadata i32 %ny, metadata !1493, metadata !DIExpression()), !dbg !1502 + call void @llvm.dbg.value(metadata i32 %nz, metadata !1494, metadata !DIExpression()), !dbg !1502 + %0 = load i32, i32* @timeron, align 4, !dbg !1503, !tbaa !242 + %tobool = icmp ne i32 %0, 0, !dbg !1503 + br i1 %tobool, label %if.then, label %if.end, !dbg !1505 + +if.then: ; preds = %entry + call void @timer_start(i32 8), !dbg !1506 + br label %if.end, !dbg !1506 + +if.end: ; preds = %if.then, %entry + %conv = sitofp i32 %nx to double, !dbg !1507 + %mul = fmul double 1.000000e+00, %conv, !dbg !1508 + %conv1 = sitofp i32 %ny to double, !dbg !1509 + %mul2 = fmul double %mul, %conv1, !dbg !1510 + %conv3 = sitofp i32 %nz to double, !dbg !1511 + %mul4 = fmul double %mul2, %conv3, !dbg !1512 + call void @llvm.dbg.value(metadata double %mul4, metadata !1501, metadata !DIExpression()), !dbg !1502 + call void @llvm.dbg.value(metadata double 0.000000e+00, metadata !1495, metadata !DIExpression()), !dbg !1502 + store double 0.000000e+00, double* %rnmu, align 8, !dbg !1513, !tbaa !437 + %1 = load double, double* %rnmu, align 8, !dbg !1514, !tbaa !437 + call void @llvm.dbg.value(metadata double %1, metadata !1497, metadata !DIExpression()), !dbg !1502 + call void @llvm.dbg.value(metadata i32 1, metadata !1498, metadata !DIExpression()), !dbg !1502 + br label %for.cond, !dbg !1515 + +for.cond: ; preds = %for.inc33, %if.end + %temp.0 = phi double [ %1, %if.end ], [ %temp.1, %for.inc33 ], !dbg !1518 + %i3.0 = phi i32 [ 1, %if.end ], [ %inc34, %for.inc33 ], !dbg !1519 + %s.0 = phi double [ 0.000000e+00, %if.end ], [ %s.1, %for.inc33 ], !dbg !1520 + call void @llvm.dbg.value(metadata double %s.0, metadata !1495, metadata !DIExpression()), !dbg !1502 + call void @llvm.dbg.value(metadata i32 %i3.0, metadata !1498, metadata !DIExpression()), !dbg !1502 + call void @llvm.dbg.value(metadata double %temp.0, metadata !1497, metadata !DIExpression()), !dbg !1502 + %sub = sub nsw i32 %n3, 1, !dbg !1521 + %cmp = icmp slt i32 %i3.0, %sub, !dbg !1523 + br i1 %cmp, label %for.body, label %for.end35, !dbg !1524 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 1, metadata !1499, metadata !DIExpression()), !dbg !1502 + br label %for.cond6, !dbg !1525 + +for.cond6: ; preds = %for.inc30, %for.body + %temp.1 = phi double [ %temp.0, %for.body ], [ %temp.2, %for.inc30 ], !dbg !1518 + %i2.0 = phi i32 [ 1, %for.body ], [ %inc31, %for.inc30 ], !dbg !1528 + %s.1 = phi double [ %s.0, %for.body ], [ %s.2, %for.inc30 ], !dbg !1520 + call void @llvm.dbg.value(metadata double %s.1, metadata !1495, metadata !DIExpression()), !dbg !1502 + call void @llvm.dbg.value(metadata i32 %i2.0, metadata !1499, metadata !DIExpression()), !dbg !1502 + call void @llvm.dbg.value(metadata double %temp.1, metadata !1497, metadata !DIExpression()), !dbg !1502 + %sub7 = sub nsw i32 %n2, 1, !dbg !1529 + %cmp8 = icmp slt i32 %i2.0, %sub7, !dbg !1531 + br i1 %cmp8, label %for.body10, label %for.end32, !dbg !1532 + +for.body10: ; preds = %for.cond6 + call void @llvm.dbg.value(metadata i32 1, metadata !1500, metadata !DIExpression()), !dbg !1502 + br label %for.cond11, !dbg !1533 + +for.cond11: ; preds = %for.inc, %for.body10 + %temp.2 = phi double [ %temp.1, %for.body10 ], [ %cond, %for.inc ], !dbg !1502 + %i1.0 = phi i32 [ 1, %for.body10 ], [ %inc, %for.inc ], !dbg !1536 + %s.2 = phi double [ %s.1, %for.body10 ], [ %add20, %for.inc ], !dbg !1502 + call void @llvm.dbg.value(metadata double %s.2, metadata !1495, metadata !DIExpression()), !dbg !1502 + call void @llvm.dbg.value(metadata i32 %i1.0, metadata !1500, metadata !DIExpression()), !dbg !1502 + call void @llvm.dbg.value(metadata double %temp.2, metadata !1497, metadata !DIExpression()), !dbg !1502 + %sub12 = sub nsw i32 %n1, 1, !dbg !1537 + %cmp13 = icmp slt i32 %i1.0, %sub12, !dbg !1539 + br i1 %cmp13, label %for.body15, label %for.end, !dbg !1540 + +for.body15: ; preds = %for.cond11 + %mul16 = mul nsw i32 %i3.0, %n2, !dbg !1541 + %mul17 = mul nsw i32 %mul16, %n1, !dbg !1541 + %mul18 = mul nsw i32 %i2.0, %n1, !dbg !1541 + %add = add nsw i32 %mul17, %mul18, !dbg !1541 + %add19 = add nsw i32 %add, %i1.0, !dbg !1541 + %idxprom = sext i32 %add19 to i64, !dbg !1541 + %arrayidx = getelementptr inbounds double, double* %or, i64 %idxprom, !dbg !1541 + %2 = load double, double* %arrayidx, align 8, !dbg !1541, !tbaa !437 + %call = call double @pow(double %2, double 2.000000e+00) #6, !dbg !1543 + %add20 = fadd double %s.2, %call, !dbg !1544 + call void @llvm.dbg.value(metadata double %add20, metadata !1495, metadata !DIExpression()), !dbg !1502 + %mul21 = mul nsw i32 %i3.0, %n2, !dbg !1545 + %mul22 = mul nsw i32 %mul21, %n1, !dbg !1545 + %mul23 = mul nsw i32 %i2.0, %n1, !dbg !1545 + %add24 = add nsw i32 %mul22, %mul23, !dbg !1545 + %add25 = add nsw i32 %add24, %i1.0, !dbg !1545 + %idxprom26 = sext i32 %add25 to i64, !dbg !1545 + %arrayidx27 = getelementptr inbounds double, double* %or, i64 %idxprom26, !dbg !1545 + %3 = load double, double* %arrayidx27, align 8, !dbg !1545, !tbaa !437 + %4 = call double @llvm.fabs.f64(double %3), !dbg !1546 + call void @llvm.dbg.value(metadata double %4, metadata !1496, metadata !DIExpression()), !dbg !1502 + %cmp28 = fcmp ogt double %temp.2, %4, !dbg !1547 + br i1 %cmp28, label %cond.true, label %cond.false, !dbg !1547 + +cond.true: ; preds = %for.body15 + br label %cond.end, !dbg !1547 + +cond.false: ; preds = %for.body15 + br label %cond.end, !dbg !1547 + +cond.end: ; preds = %cond.false, %cond.true + %cond = phi double [ %temp.2, %cond.true ], [ %4, %cond.false ], !dbg !1547 + call void @llvm.dbg.value(metadata double %cond, metadata !1497, metadata !DIExpression()), !dbg !1502 + br label %for.inc, !dbg !1548 + +for.inc: ; preds = %cond.end + %inc = add nsw i32 %i1.0, 1, !dbg !1549 + call void @llvm.dbg.value(metadata i32 %inc, metadata !1500, metadata !DIExpression()), !dbg !1502 + br label %for.cond11, !dbg !1550, !llvm.loop !1551 + +for.end: ; preds = %for.cond11 + br label %for.inc30, !dbg !1553 + +for.inc30: ; preds = %for.end + %inc31 = add nsw i32 %i2.0, 1, !dbg !1554 + call void @llvm.dbg.value(metadata i32 %inc31, metadata !1499, metadata !DIExpression()), !dbg !1502 + br label %for.cond6, !dbg !1555, !llvm.loop !1556 + +for.end32: ; preds = %for.cond6 + br label %for.inc33, !dbg !1558 + +for.inc33: ; preds = %for.end32 + %inc34 = add nsw i32 %i3.0, 1, !dbg !1559 + call void @llvm.dbg.value(metadata i32 %inc34, metadata !1498, metadata !DIExpression()), !dbg !1502 + br label %for.cond, !dbg !1560, !llvm.loop !1561 + +for.end35: ; preds = %for.cond + store double %temp.0, double* %rnmu, align 8, !dbg !1563, !tbaa !437 + %div = fdiv double %s.0, %mul4, !dbg !1564 + %call36 = call double @sqrt(double %div) #6, !dbg !1565 + store double %call36, double* %rnm2, align 8, !dbg !1566, !tbaa !437 + %5 = load i32, i32* @timeron, align 4, !dbg !1567, !tbaa !242 + %tobool37 = icmp ne i32 %5, 0, !dbg !1567 + br i1 %tobool37, label %if.then38, label %if.end39, !dbg !1569 + +if.then38: ; preds = %for.end35 + call void @timer_stop(i32 8), !dbg !1570 + br label %if.end39, !dbg !1570 + +if.end39: ; preds = %if.then38, %for.end35 + ret void, !dbg !1571 +} + +; Function Attrs: nounwind uwtable +define internal void @resid(double* %ou, double* %ov, double* %or, i32 %n1, i32 %n2, i32 %n3, double* %a, i32 %k) #0 !dbg !1572 { +entry: + call void @llvm.dbg.value(metadata double* %ou, metadata !1576, metadata !DIExpression()), !dbg !1593 + call void @llvm.dbg.value(metadata double* %ov, metadata !1577, metadata !DIExpression()), !dbg !1593 + call void @llvm.dbg.value(metadata double* %or, metadata !1578, metadata !DIExpression()), !dbg !1593 + call void @llvm.dbg.value(metadata i32 %n1, metadata !1579, metadata !DIExpression()), !dbg !1593 + call void @llvm.dbg.value(metadata i32 %n2, metadata !1580, metadata !DIExpression()), !dbg !1593 + call void @llvm.dbg.value(metadata i32 %n3, metadata !1581, metadata !DIExpression()), !dbg !1593 + call void @llvm.dbg.value(metadata double* %a, metadata !1582, metadata !DIExpression()), !dbg !1593 + call void @llvm.dbg.value(metadata i32 %k, metadata !1583, metadata !DIExpression()), !dbg !1593 + %arrayidx = getelementptr inbounds double, double* %a, i64 0, !dbg !1594 + %0 = load double, double* %arrayidx, align 8, !dbg !1594, !tbaa !437 + call void @llvm.dbg.value(metadata double %0, metadata !1587, metadata !DIExpression()), !dbg !1593 + %arrayidx1 = getelementptr inbounds double, double* %a, i64 2, !dbg !1595 + %1 = load double, double* %arrayidx1, align 8, !dbg !1595, !tbaa !437 + call void @llvm.dbg.value(metadata double %1, metadata !1588, metadata !DIExpression()), !dbg !1593 + %arrayidx2 = getelementptr inbounds double, double* %a, i64 3, !dbg !1596 + %2 = load double, double* %arrayidx2, align 8, !dbg !1596, !tbaa !437 + call void @llvm.dbg.value(metadata double %2, metadata !1589, metadata !DIExpression()), !dbg !1593 + %3 = load i32, i32* @timeron, align 4, !dbg !1597, !tbaa !242 + %tobool = icmp ne i32 %3, 0, !dbg !1597 + br i1 %tobool, label %if.then, label %if.end, !dbg !1599 + +if.then: ; preds = %entry + call void @timer_start(i32 4), !dbg !1600 + br label %if.end, !dbg !1600 + +if.end: ; preds = %if.then, %entry + %mul = mul nsw i32 %n3, %n2, !dbg !1601 + %mul3 = mul nsw i32 %mul, %n1, !dbg !1602 + %conv = sext i32 %mul3 to i64, !dbg !1603 + %mul4 = mul i64 %conv, 8, !dbg !1604 + %call = call i32 @omp_get_default_device(), !dbg !1605 + %call5 = call i8* @omp_target_alloc(i64 %mul4, i32 %call), !dbg !1606 + %4 = bitcast i8* %call5 to double*, !dbg !1607 + call void @llvm.dbg.value(metadata double* %4, metadata !1590, metadata !DIExpression()), !dbg !1593 + %mul6 = mul nsw i32 %n3, %n2, !dbg !1608 + %mul7 = mul nsw i32 %mul6, %n1, !dbg !1609 + %conv8 = sext i32 %mul7 to i64, !dbg !1610 + %mul9 = mul i64 %conv8, 8, !dbg !1611 + %call10 = call i32 @omp_get_default_device(), !dbg !1612 + %call11 = call i8* @omp_target_alloc(i64 %mul9, i32 %call10), !dbg !1613 + %5 = bitcast i8* %call11 to double*, !dbg !1614 + call void @llvm.dbg.value(metadata double* %5, metadata !1592, metadata !DIExpression()), !dbg !1593 + call void @llvm.dbg.value(metadata i32 1, metadata !1584, metadata !DIExpression()), !dbg !1593 + br label %for.cond, !dbg !1615 + +for.cond: ; preds = %for.inc111, %if.end + %i3.0 = phi i32 [ 1, %if.end ], [ %inc112, %for.inc111 ], !dbg !1617 + call void @llvm.dbg.value(metadata i32 %i3.0, metadata !1584, metadata !DIExpression()), !dbg !1593 + %sub = sub nsw i32 %n3, 1, !dbg !1618 + %cmp = icmp slt i32 %i3.0, %sub, !dbg !1620 + br i1 %cmp, label %for.body, label %for.end113, !dbg !1621 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 1, metadata !1585, metadata !DIExpression()), !dbg !1593 + br label %for.cond13, !dbg !1622 + +for.cond13: ; preds = %for.inc108, %for.body + %i2.0 = phi i32 [ 1, %for.body ], [ %inc109, %for.inc108 ], !dbg !1625 + call void @llvm.dbg.value(metadata i32 %i2.0, metadata !1585, metadata !DIExpression()), !dbg !1593 + %sub14 = sub nsw i32 %n2, 1, !dbg !1626 + %cmp15 = icmp slt i32 %i2.0, %sub14, !dbg !1628 + br i1 %cmp15, label %for.body17, label %for.end110, !dbg !1629 + +for.body17: ; preds = %for.cond13 + call void @llvm.dbg.value(metadata i32 0, metadata !1586, metadata !DIExpression()), !dbg !1593 + br label %for.cond18, !dbg !1630 + +for.cond18: ; preds = %for.inc, %for.body17 + %i1.0 = phi i32 [ 0, %for.body17 ], [ %inc, %for.inc ], !dbg !1633 + call void @llvm.dbg.value(metadata i32 %i1.0, metadata !1586, metadata !DIExpression()), !dbg !1593 + %cmp19 = icmp slt i32 %i1.0, %n1, !dbg !1634 + br i1 %cmp19, label %for.body21, label %for.end, !dbg !1636 + +for.body21: ; preds = %for.cond18 + %mul22 = mul nsw i32 %i3.0, %n2, !dbg !1637 + %mul23 = mul nsw i32 %mul22, %n1, !dbg !1637 + %sub24 = sub nsw i32 %i2.0, 1, !dbg !1637 + %mul25 = mul nsw i32 %sub24, %n1, !dbg !1637 + %add = add nsw i32 %mul23, %mul25, !dbg !1637 + %add26 = add nsw i32 %add, %i1.0, !dbg !1637 + %idxprom = sext i32 %add26 to i64, !dbg !1637 + %arrayidx27 = getelementptr inbounds double, double* %ou, i64 %idxprom, !dbg !1637 + %6 = load double, double* %arrayidx27, align 8, !dbg !1637, !tbaa !437 + %mul28 = mul nsw i32 %i3.0, %n2, !dbg !1639 + %mul29 = mul nsw i32 %mul28, %n1, !dbg !1639 + %add30 = add nsw i32 %i2.0, 1, !dbg !1639 + %mul31 = mul nsw i32 %add30, %n1, !dbg !1639 + %add32 = add nsw i32 %mul29, %mul31, !dbg !1639 + %add33 = add nsw i32 %add32, %i1.0, !dbg !1639 + %idxprom34 = sext i32 %add33 to i64, !dbg !1639 + %arrayidx35 = getelementptr inbounds double, double* %ou, i64 %idxprom34, !dbg !1639 + %7 = load double, double* %arrayidx35, align 8, !dbg !1639, !tbaa !437 + %add36 = fadd double %6, %7, !dbg !1640 + %sub37 = sub nsw i32 %i3.0, 1, !dbg !1641 + %mul38 = mul nsw i32 %sub37, %n2, !dbg !1641 + %mul39 = mul nsw i32 %mul38, %n1, !dbg !1641 + %mul40 = mul nsw i32 %i2.0, %n1, !dbg !1641 + %add41 = add nsw i32 %mul39, %mul40, !dbg !1641 + %add42 = add nsw i32 %add41, %i1.0, !dbg !1641 + %idxprom43 = sext i32 %add42 to i64, !dbg !1641 + %arrayidx44 = getelementptr inbounds double, double* %ou, i64 %idxprom43, !dbg !1641 + %8 = load double, double* %arrayidx44, align 8, !dbg !1641, !tbaa !437 + %add45 = fadd double %add36, %8, !dbg !1642 + %add46 = add nsw i32 %i3.0, 1, !dbg !1643 + %mul47 = mul nsw i32 %add46, %n2, !dbg !1643 + %mul48 = mul nsw i32 %mul47, %n1, !dbg !1643 + %mul49 = mul nsw i32 %i2.0, %n1, !dbg !1643 + %add50 = add nsw i32 %mul48, %mul49, !dbg !1643 + %add51 = add nsw i32 %add50, %i1.0, !dbg !1643 + %idxprom52 = sext i32 %add51 to i64, !dbg !1643 + %arrayidx53 = getelementptr inbounds double, double* %ou, i64 %idxprom52, !dbg !1643 + %9 = load double, double* %arrayidx53, align 8, !dbg !1643, !tbaa !437 + %add54 = fadd double %add45, %9, !dbg !1644 + %mul55 = mul nsw i32 %i3.0, %n2, !dbg !1645 + %mul56 = mul nsw i32 %mul55, %n1, !dbg !1645 + %mul57 = mul nsw i32 %i2.0, %n1, !dbg !1645 + %add58 = add nsw i32 %mul56, %mul57, !dbg !1645 + %add59 = add nsw i32 %add58, %i1.0, !dbg !1645 + %idxprom60 = sext i32 %add59 to i64, !dbg !1645 + %arrayidx61 = getelementptr inbounds double, double* %4, i64 %idxprom60, !dbg !1645 + store double %add54, double* %arrayidx61, align 8, !dbg !1646, !tbaa !437 + %sub62 = sub nsw i32 %i3.0, 1, !dbg !1647 + %mul63 = mul nsw i32 %sub62, %n2, !dbg !1647 + %mul64 = mul nsw i32 %mul63, %n1, !dbg !1647 + %sub65 = sub nsw i32 %i2.0, 1, !dbg !1647 + %mul66 = mul nsw i32 %sub65, %n1, !dbg !1647 + %add67 = add nsw i32 %mul64, %mul66, !dbg !1647 + %add68 = add nsw i32 %add67, %i1.0, !dbg !1647 + %idxprom69 = sext i32 %add68 to i64, !dbg !1647 + %arrayidx70 = getelementptr inbounds double, double* %ou, i64 %idxprom69, !dbg !1647 + %10 = load double, double* %arrayidx70, align 8, !dbg !1647, !tbaa !437 + %sub71 = sub nsw i32 %i3.0, 1, !dbg !1648 + %mul72 = mul nsw i32 %sub71, %n2, !dbg !1648 + %mul73 = mul nsw i32 %mul72, %n1, !dbg !1648 + %add74 = add nsw i32 %i2.0, 1, !dbg !1648 + %mul75 = mul nsw i32 %add74, %n1, !dbg !1648 + %add76 = add nsw i32 %mul73, %mul75, !dbg !1648 + %add77 = add nsw i32 %add76, %i1.0, !dbg !1648 + %idxprom78 = sext i32 %add77 to i64, !dbg !1648 + %arrayidx79 = getelementptr inbounds double, double* %ou, i64 %idxprom78, !dbg !1648 + %11 = load double, double* %arrayidx79, align 8, !dbg !1648, !tbaa !437 + %add80 = fadd double %10, %11, !dbg !1649 + %add81 = add nsw i32 %i3.0, 1, !dbg !1650 + %mul82 = mul nsw i32 %add81, %n2, !dbg !1650 + %mul83 = mul nsw i32 %mul82, %n1, !dbg !1650 + %sub84 = sub nsw i32 %i2.0, 1, !dbg !1650 + %mul85 = mul nsw i32 %sub84, %n1, !dbg !1650 + %add86 = add nsw i32 %mul83, %mul85, !dbg !1650 + %add87 = add nsw i32 %add86, %i1.0, !dbg !1650 + %idxprom88 = sext i32 %add87 to i64, !dbg !1650 + %arrayidx89 = getelementptr inbounds double, double* %ou, i64 %idxprom88, !dbg !1650 + %12 = load double, double* %arrayidx89, align 8, !dbg !1650, !tbaa !437 + %add90 = fadd double %add80, %12, !dbg !1651 + %add91 = add nsw i32 %i3.0, 1, !dbg !1652 + %mul92 = mul nsw i32 %add91, %n2, !dbg !1652 + %mul93 = mul nsw i32 %mul92, %n1, !dbg !1652 + %add94 = add nsw i32 %i2.0, 1, !dbg !1652 + %mul95 = mul nsw i32 %add94, %n1, !dbg !1652 + %add96 = add nsw i32 %mul93, %mul95, !dbg !1652 + %add97 = add nsw i32 %add96, %i1.0, !dbg !1652 + %idxprom98 = sext i32 %add97 to i64, !dbg !1652 + %arrayidx99 = getelementptr inbounds double, double* %ou, i64 %idxprom98, !dbg !1652 + %13 = load double, double* %arrayidx99, align 8, !dbg !1652, !tbaa !437 + %add100 = fadd double %add90, %13, !dbg !1653 + %mul101 = mul nsw i32 %i3.0, %n2, !dbg !1654 + %mul102 = mul nsw i32 %mul101, %n1, !dbg !1654 + %mul103 = mul nsw i32 %i2.0, %n1, !dbg !1654 + %add104 = add nsw i32 %mul102, %mul103, !dbg !1654 + %add105 = add nsw i32 %add104, %i1.0, !dbg !1654 + %idxprom106 = sext i32 %add105 to i64, !dbg !1654 + %arrayidx107 = getelementptr inbounds double, double* %5, i64 %idxprom106, !dbg !1654 + store double %add100, double* %arrayidx107, align 8, !dbg !1655, !tbaa !437 + br label %for.inc, !dbg !1656 + +for.inc: ; preds = %for.body21 + %inc = add nsw i32 %i1.0, 1, !dbg !1657 + call void @llvm.dbg.value(metadata i32 %inc, metadata !1586, metadata !DIExpression()), !dbg !1593 + br label %for.cond18, !dbg !1658, !llvm.loop !1659 + +for.end: ; preds = %for.cond18 + br label %for.inc108, !dbg !1661 + +for.inc108: ; preds = %for.end + %inc109 = add nsw i32 %i2.0, 1, !dbg !1662 + call void @llvm.dbg.value(metadata i32 %inc109, metadata !1585, metadata !DIExpression()), !dbg !1593 + br label %for.cond13, !dbg !1663, !llvm.loop !1664 + +for.end110: ; preds = %for.cond13 + br label %for.inc111, !dbg !1666 + +for.inc111: ; preds = %for.end110 + %inc112 = add nsw i32 %i3.0, 1, !dbg !1667 + call void @llvm.dbg.value(metadata i32 %inc112, metadata !1584, metadata !DIExpression()), !dbg !1593 + br label %for.cond, !dbg !1668, !llvm.loop !1669 + +for.end113: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 1, metadata !1584, metadata !DIExpression()), !dbg !1593 + br label %for.cond114, !dbg !1671 + +for.cond114: ; preds = %for.inc204, %for.end113 + %i3.1 = phi i32 [ 1, %for.end113 ], [ %inc205, %for.inc204 ], !dbg !1673 + call void @llvm.dbg.value(metadata i32 %i3.1, metadata !1584, metadata !DIExpression()), !dbg !1593 + %sub115 = sub nsw i32 %n3, 1, !dbg !1674 + %cmp116 = icmp slt i32 %i3.1, %sub115, !dbg !1676 + br i1 %cmp116, label %for.body118, label %for.end206, !dbg !1677 + +for.body118: ; preds = %for.cond114 + call void @llvm.dbg.value(metadata i32 1, metadata !1585, metadata !DIExpression()), !dbg !1593 + br label %for.cond119, !dbg !1678 + +for.cond119: ; preds = %for.inc201, %for.body118 + %i2.1 = phi i32 [ 1, %for.body118 ], [ %inc202, %for.inc201 ], !dbg !1681 + call void @llvm.dbg.value(metadata i32 %i2.1, metadata !1585, metadata !DIExpression()), !dbg !1593 + %sub120 = sub nsw i32 %n2, 1, !dbg !1682 + %cmp121 = icmp slt i32 %i2.1, %sub120, !dbg !1684 + br i1 %cmp121, label %for.body123, label %for.end203, !dbg !1685 + +for.body123: ; preds = %for.cond119 + call void @llvm.dbg.value(metadata i32 1, metadata !1586, metadata !DIExpression()), !dbg !1593 + br label %for.cond124, !dbg !1686 + +for.cond124: ; preds = %for.inc198, %for.body123 + %i1.1 = phi i32 [ 1, %for.body123 ], [ %inc199, %for.inc198 ], !dbg !1689 + call void @llvm.dbg.value(metadata i32 %i1.1, metadata !1586, metadata !DIExpression()), !dbg !1593 + %sub125 = sub nsw i32 %n1, 1, !dbg !1690 + %cmp126 = icmp slt i32 %i1.1, %sub125, !dbg !1692 + br i1 %cmp126, label %for.body128, label %for.end200, !dbg !1693 + +for.body128: ; preds = %for.cond124 + %mul129 = mul nsw i32 %i3.1, %n2, !dbg !1694 + %mul130 = mul nsw i32 %mul129, %n1, !dbg !1694 + %mul131 = mul nsw i32 %i2.1, %n1, !dbg !1694 + %add132 = add nsw i32 %mul130, %mul131, !dbg !1694 + %add133 = add nsw i32 %add132, %i1.1, !dbg !1694 + %idxprom134 = sext i32 %add133 to i64, !dbg !1694 + %arrayidx135 = getelementptr inbounds double, double* %ov, i64 %idxprom134, !dbg !1694 + %14 = load double, double* %arrayidx135, align 8, !dbg !1694, !tbaa !437 + %mul136 = mul nsw i32 %i3.1, %n2, !dbg !1696 + %mul137 = mul nsw i32 %mul136, %n1, !dbg !1696 + %mul138 = mul nsw i32 %i2.1, %n1, !dbg !1696 + %add139 = add nsw i32 %mul137, %mul138, !dbg !1696 + %add140 = add nsw i32 %add139, %i1.1, !dbg !1696 + %idxprom141 = sext i32 %add140 to i64, !dbg !1696 + %arrayidx142 = getelementptr inbounds double, double* %ou, i64 %idxprom141, !dbg !1696 + %15 = load double, double* %arrayidx142, align 8, !dbg !1696, !tbaa !437 + %mul143 = fmul double %0, %15, !dbg !1697 + %sub144 = fsub double %14, %mul143, !dbg !1698 + %mul145 = mul nsw i32 %i3.1, %n2, !dbg !1699 + %mul146 = mul nsw i32 %mul145, %n1, !dbg !1699 + %mul147 = mul nsw i32 %i2.1, %n1, !dbg !1699 + %add148 = add nsw i32 %mul146, %mul147, !dbg !1699 + %add149 = add nsw i32 %add148, %i1.1, !dbg !1699 + %idxprom150 = sext i32 %add149 to i64, !dbg !1699 + %arrayidx151 = getelementptr inbounds double, double* %5, i64 %idxprom150, !dbg !1699 + %16 = load double, double* %arrayidx151, align 8, !dbg !1699, !tbaa !437 + %mul152 = mul nsw i32 %i3.1, %n2, !dbg !1700 + %mul153 = mul nsw i32 %mul152, %n1, !dbg !1700 + %mul154 = mul nsw i32 %i2.1, %n1, !dbg !1700 + %add155 = add nsw i32 %mul153, %mul154, !dbg !1700 + %sub156 = sub nsw i32 %i1.1, 1, !dbg !1700 + %add157 = add nsw i32 %add155, %sub156, !dbg !1700 + %idxprom158 = sext i32 %add157 to i64, !dbg !1700 + %arrayidx159 = getelementptr inbounds double, double* %4, i64 %idxprom158, !dbg !1700 + %17 = load double, double* %arrayidx159, align 8, !dbg !1700, !tbaa !437 + %add160 = fadd double %16, %17, !dbg !1701 + %mul161 = mul nsw i32 %i3.1, %n2, !dbg !1702 + %mul162 = mul nsw i32 %mul161, %n1, !dbg !1702 + %mul163 = mul nsw i32 %i2.1, %n1, !dbg !1702 + %add164 = add nsw i32 %mul162, %mul163, !dbg !1702 + %add165 = add nsw i32 %i1.1, 1, !dbg !1702 + %add166 = add nsw i32 %add164, %add165, !dbg !1702 + %idxprom167 = sext i32 %add166 to i64, !dbg !1702 + %arrayidx168 = getelementptr inbounds double, double* %4, i64 %idxprom167, !dbg !1702 + %18 = load double, double* %arrayidx168, align 8, !dbg !1702, !tbaa !437 + %add169 = fadd double %add160, %18, !dbg !1703 + %mul170 = fmul double %1, %add169, !dbg !1704 + %sub171 = fsub double %sub144, %mul170, !dbg !1705 + %mul172 = mul nsw i32 %i3.1, %n2, !dbg !1706 + %mul173 = mul nsw i32 %mul172, %n1, !dbg !1706 + %mul174 = mul nsw i32 %i2.1, %n1, !dbg !1706 + %add175 = add nsw i32 %mul173, %mul174, !dbg !1706 + %sub176 = sub nsw i32 %i1.1, 1, !dbg !1706 + %add177 = add nsw i32 %add175, %sub176, !dbg !1706 + %idxprom178 = sext i32 %add177 to i64, !dbg !1706 + %arrayidx179 = getelementptr inbounds double, double* %5, i64 %idxprom178, !dbg !1706 + %19 = load double, double* %arrayidx179, align 8, !dbg !1706, !tbaa !437 + %mul180 = mul nsw i32 %i3.1, %n2, !dbg !1707 + %mul181 = mul nsw i32 %mul180, %n1, !dbg !1707 + %mul182 = mul nsw i32 %i2.1, %n1, !dbg !1707 + %add183 = add nsw i32 %mul181, %mul182, !dbg !1707 + %add184 = add nsw i32 %i1.1, 1, !dbg !1707 + %add185 = add nsw i32 %add183, %add184, !dbg !1707 + %idxprom186 = sext i32 %add185 to i64, !dbg !1707 + %arrayidx187 = getelementptr inbounds double, double* %5, i64 %idxprom186, !dbg !1707 + %20 = load double, double* %arrayidx187, align 8, !dbg !1707, !tbaa !437 + %add188 = fadd double %19, %20, !dbg !1708 + %mul189 = fmul double %2, %add188, !dbg !1709 + %sub190 = fsub double %sub171, %mul189, !dbg !1710 + %mul191 = mul nsw i32 %i3.1, %n2, !dbg !1711 + %mul192 = mul nsw i32 %mul191, %n1, !dbg !1711 + %mul193 = mul nsw i32 %i2.1, %n1, !dbg !1711 + %add194 = add nsw i32 %mul192, %mul193, !dbg !1711 + %add195 = add nsw i32 %add194, %i1.1, !dbg !1711 + %idxprom196 = sext i32 %add195 to i64, !dbg !1711 + %arrayidx197 = getelementptr inbounds double, double* %or, i64 %idxprom196, !dbg !1711 + store double %sub190, double* %arrayidx197, align 8, !dbg !1712, !tbaa !437 + br label %for.inc198, !dbg !1713 + +for.inc198: ; preds = %for.body128 + %inc199 = add nsw i32 %i1.1, 1, !dbg !1714 + call void @llvm.dbg.value(metadata i32 %inc199, metadata !1586, metadata !DIExpression()), !dbg !1593 + br label %for.cond124, !dbg !1715, !llvm.loop !1716 + +for.end200: ; preds = %for.cond124 + br label %for.inc201, !dbg !1718 + +for.inc201: ; preds = %for.end200 + %inc202 = add nsw i32 %i2.1, 1, !dbg !1719 + call void @llvm.dbg.value(metadata i32 %inc202, metadata !1585, metadata !DIExpression()), !dbg !1593 + br label %for.cond119, !dbg !1720, !llvm.loop !1721 + +for.end203: ; preds = %for.cond119 + br label %for.inc204, !dbg !1723 + +for.inc204: ; preds = %for.end203 + %inc205 = add nsw i32 %i3.1, 1, !dbg !1724 + call void @llvm.dbg.value(metadata i32 %inc205, metadata !1584, metadata !DIExpression()), !dbg !1593 + br label %for.cond114, !dbg !1725, !llvm.loop !1726 + +for.end206: ; preds = %for.cond114 + %21 = bitcast double* %4 to i8*, !dbg !1728 + %call207 = call i32 @omp_get_default_device(), !dbg !1729 + call void @omp_target_free(i8* %21, i32 %call207), !dbg !1730 + %22 = bitcast double* %5 to i8*, !dbg !1731 + %call208 = call i32 @omp_get_default_device(), !dbg !1732 + call void @omp_target_free(i8* %22, i32 %call208), !dbg !1733 + %23 = load i32, i32* @timeron, align 4, !dbg !1734, !tbaa !242 + %tobool209 = icmp ne i32 %23, 0, !dbg !1734 + br i1 %tobool209, label %if.then210, label %if.end211, !dbg !1736 + +if.then210: ; preds = %for.end206 + call void @timer_stop(i32 4), !dbg !1737 + br label %if.end211, !dbg !1737 + +if.end211: ; preds = %if.then210, %for.end206 + call void @comm3(double* %or, i32 %n1, i32 %n2, i32 %n3, i32 %k), !dbg !1738 + %24 = load i32, i32* getelementptr inbounds ([8 x i32], [8 x i32]* @debug_vec, i64 0, i64 0), align 16, !dbg !1739, !tbaa !278 + %cmp212 = icmp sge i32 %24, 1, !dbg !1741 + br i1 %cmp212, label %if.then214, label %if.end215, !dbg !1742 + +if.then214: ; preds = %if.end211 + call void @rep_nrm(double* %or, i32 %n1, i32 %n2, i32 %n3, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.57, i64 0, i64 0), i32 %k), !dbg !1743 + br label %if.end215, !dbg !1745 + +if.end215: ; preds = %if.then214, %if.end211 + %25 = load i32, i32* getelementptr inbounds ([8 x i32], [8 x i32]* @debug_vec, i64 0, i64 2), align 8, !dbg !1746, !tbaa !278 + %cmp216 = icmp sge i32 %25, %k, !dbg !1748 + br i1 %cmp216, label %if.then218, label %if.end219, !dbg !1749 + +if.then218: ; preds = %if.end215 + call void @showall(double* %or, i32 %n1, i32 %n2, i32 %n3), !dbg !1750 + br label %if.end219, !dbg !1752 + +if.end219: ; preds = %if.then218, %if.end215 + ret void, !dbg !1753 +} + +; Function Attrs: nounwind uwtable +define internal void @mg3P(double* %u, double* %v, double* %r, double* %a, double* %c, i32 %n1, i32 %n2, i32 %n3) #0 !dbg !1754 { +entry: + call void @llvm.dbg.value(metadata double* %u, metadata !1758, metadata !DIExpression()), !dbg !1768 + call void @llvm.dbg.value(metadata double* %v, metadata !1759, metadata !DIExpression()), !dbg !1768 + call void @llvm.dbg.value(metadata double* %r, metadata !1760, metadata !DIExpression()), !dbg !1768 + call void @llvm.dbg.value(metadata double* %a, metadata !1761, metadata !DIExpression()), !dbg !1768 + call void @llvm.dbg.value(metadata double* %c, metadata !1762, metadata !DIExpression()), !dbg !1768 + call void @llvm.dbg.value(metadata i32 %n1, metadata !1763, metadata !DIExpression()), !dbg !1768 + call void @llvm.dbg.value(metadata i32 %n2, metadata !1764, metadata !DIExpression()), !dbg !1768 + call void @llvm.dbg.value(metadata i32 %n3, metadata !1765, metadata !DIExpression()), !dbg !1768 + %0 = load i32, i32* @lt, align 4, !dbg !1769, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %0, metadata !1767, metadata !DIExpression()), !dbg !1768 + br label %for.cond, !dbg !1771 + +for.cond: ; preds = %for.inc, %entry + %k.0 = phi i32 [ %0, %entry ], [ %dec, %for.inc ], !dbg !1772 + call void @llvm.dbg.value(metadata i32 %k.0, metadata !1767, metadata !DIExpression()), !dbg !1768 + %1 = load i32, i32* @lb, align 4, !dbg !1773, !tbaa !278 + %add = add nsw i32 %1, 1, !dbg !1775 + %cmp = icmp sge i32 %k.0, %add, !dbg !1776 + br i1 %cmp, label %for.body, label %for.end, !dbg !1777 + +for.body: ; preds = %for.cond + %sub = sub nsw i32 %k.0, 1, !dbg !1778 + call void @llvm.dbg.value(metadata i32 %sub, metadata !1766, metadata !DIExpression()), !dbg !1768 + %idxprom = sext i32 %k.0 to i64, !dbg !1780 + %arrayidx = getelementptr inbounds [10 x i32], [10 x i32]* @ir, i64 0, i64 %idxprom, !dbg !1780 + %2 = load i32, i32* %arrayidx, align 4, !dbg !1780, !tbaa !278 + %idxprom1 = sext i32 %2 to i64, !dbg !1781 + %arrayidx2 = getelementptr inbounds double, double* %r, i64 %idxprom1, !dbg !1781 + %idxprom3 = sext i32 %k.0 to i64, !dbg !1782 + %arrayidx4 = getelementptr inbounds [10 x i32], [10 x i32]* @m1, i64 0, i64 %idxprom3, !dbg !1782 + %3 = load i32, i32* %arrayidx4, align 4, !dbg !1782, !tbaa !278 + %idxprom5 = sext i32 %k.0 to i64, !dbg !1783 + %arrayidx6 = getelementptr inbounds [10 x i32], [10 x i32]* @m2, i64 0, i64 %idxprom5, !dbg !1783 + %4 = load i32, i32* %arrayidx6, align 4, !dbg !1783, !tbaa !278 + %idxprom7 = sext i32 %k.0 to i64, !dbg !1784 + %arrayidx8 = getelementptr inbounds [10 x i32], [10 x i32]* @m3, i64 0, i64 %idxprom7, !dbg !1784 + %5 = load i32, i32* %arrayidx8, align 4, !dbg !1784, !tbaa !278 + %idxprom9 = sext i32 %sub to i64, !dbg !1785 + %arrayidx10 = getelementptr inbounds [10 x i32], [10 x i32]* @ir, i64 0, i64 %idxprom9, !dbg !1785 + %6 = load i32, i32* %arrayidx10, align 4, !dbg !1785, !tbaa !278 + %idxprom11 = sext i32 %6 to i64, !dbg !1786 + %arrayidx12 = getelementptr inbounds double, double* %r, i64 %idxprom11, !dbg !1786 + %idxprom13 = sext i32 %sub to i64, !dbg !1787 + %arrayidx14 = getelementptr inbounds [10 x i32], [10 x i32]* @m1, i64 0, i64 %idxprom13, !dbg !1787 + %7 = load i32, i32* %arrayidx14, align 4, !dbg !1787, !tbaa !278 + %idxprom15 = sext i32 %sub to i64, !dbg !1788 + %arrayidx16 = getelementptr inbounds [10 x i32], [10 x i32]* @m2, i64 0, i64 %idxprom15, !dbg !1788 + %8 = load i32, i32* %arrayidx16, align 4, !dbg !1788, !tbaa !278 + %idxprom17 = sext i32 %sub to i64, !dbg !1789 + %arrayidx18 = getelementptr inbounds [10 x i32], [10 x i32]* @m3, i64 0, i64 %idxprom17, !dbg !1789 + %9 = load i32, i32* %arrayidx18, align 4, !dbg !1789, !tbaa !278 + call void @rprj3(double* %arrayidx2, i32 %3, i32 %4, i32 %5, double* %arrayidx12, i32 %7, i32 %8, i32 %9, i32 %k.0), !dbg !1790 + br label %for.inc, !dbg !1791 + +for.inc: ; preds = %for.body + %dec = add nsw i32 %k.0, -1, !dbg !1792 + call void @llvm.dbg.value(metadata i32 %dec, metadata !1767, metadata !DIExpression()), !dbg !1768 + br label %for.cond, !dbg !1793, !llvm.loop !1794 + +for.end: ; preds = %for.cond + %10 = load i32, i32* @lb, align 4, !dbg !1796, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %10, metadata !1767, metadata !DIExpression()), !dbg !1768 + %idxprom19 = sext i32 %10 to i64, !dbg !1797 + %arrayidx20 = getelementptr inbounds [10 x i32], [10 x i32]* @ir, i64 0, i64 %idxprom19, !dbg !1797 + %11 = load i32, i32* %arrayidx20, align 4, !dbg !1797, !tbaa !278 + %idxprom21 = sext i32 %11 to i64, !dbg !1798 + %arrayidx22 = getelementptr inbounds double, double* %u, i64 %idxprom21, !dbg !1798 + %idxprom23 = sext i32 %10 to i64, !dbg !1799 + %arrayidx24 = getelementptr inbounds [10 x i32], [10 x i32]* @m1, i64 0, i64 %idxprom23, !dbg !1799 + %12 = load i32, i32* %arrayidx24, align 4, !dbg !1799, !tbaa !278 + %idxprom25 = sext i32 %10 to i64, !dbg !1800 + %arrayidx26 = getelementptr inbounds [10 x i32], [10 x i32]* @m2, i64 0, i64 %idxprom25, !dbg !1800 + %13 = load i32, i32* %arrayidx26, align 4, !dbg !1800, !tbaa !278 + %idxprom27 = sext i32 %10 to i64, !dbg !1801 + %arrayidx28 = getelementptr inbounds [10 x i32], [10 x i32]* @m3, i64 0, i64 %idxprom27, !dbg !1801 + %14 = load i32, i32* %arrayidx28, align 4, !dbg !1801, !tbaa !278 + call void @zero3(double* %arrayidx22, i32 %12, i32 %13, i32 %14), !dbg !1802 + %idxprom29 = sext i32 %10 to i64, !dbg !1803 + %arrayidx30 = getelementptr inbounds [10 x i32], [10 x i32]* @ir, i64 0, i64 %idxprom29, !dbg !1803 + %15 = load i32, i32* %arrayidx30, align 4, !dbg !1803, !tbaa !278 + %idxprom31 = sext i32 %15 to i64, !dbg !1804 + %arrayidx32 = getelementptr inbounds double, double* %r, i64 %idxprom31, !dbg !1804 + %idxprom33 = sext i32 %10 to i64, !dbg !1805 + %arrayidx34 = getelementptr inbounds [10 x i32], [10 x i32]* @ir, i64 0, i64 %idxprom33, !dbg !1805 + %16 = load i32, i32* %arrayidx34, align 4, !dbg !1805, !tbaa !278 + %idxprom35 = sext i32 %16 to i64, !dbg !1806 + %arrayidx36 = getelementptr inbounds double, double* %u, i64 %idxprom35, !dbg !1806 + %idxprom37 = sext i32 %10 to i64, !dbg !1807 + %arrayidx38 = getelementptr inbounds [10 x i32], [10 x i32]* @m1, i64 0, i64 %idxprom37, !dbg !1807 + %17 = load i32, i32* %arrayidx38, align 4, !dbg !1807, !tbaa !278 + %idxprom39 = sext i32 %10 to i64, !dbg !1808 + %arrayidx40 = getelementptr inbounds [10 x i32], [10 x i32]* @m2, i64 0, i64 %idxprom39, !dbg !1808 + %18 = load i32, i32* %arrayidx40, align 4, !dbg !1808, !tbaa !278 + %idxprom41 = sext i32 %10 to i64, !dbg !1809 + %arrayidx42 = getelementptr inbounds [10 x i32], [10 x i32]* @m3, i64 0, i64 %idxprom41, !dbg !1809 + %19 = load i32, i32* %arrayidx42, align 4, !dbg !1809, !tbaa !278 + call void @psinv(double* %arrayidx32, double* %arrayidx36, i32 %17, i32 %18, i32 %19, double* %c, i32 %10), !dbg !1810 + %20 = load i32, i32* @lb, align 4, !dbg !1811, !tbaa !278 + %add43 = add nsw i32 %20, 1, !dbg !1813 + call void @llvm.dbg.value(metadata i32 %add43, metadata !1767, metadata !DIExpression()), !dbg !1768 + br label %for.cond44, !dbg !1814 + +for.cond44: ; preds = %for.inc111, %for.end + %k.1 = phi i32 [ %add43, %for.end ], [ %inc, %for.inc111 ], !dbg !1815 + call void @llvm.dbg.value(metadata i32 %k.1, metadata !1767, metadata !DIExpression()), !dbg !1768 + %21 = load i32, i32* @lt, align 4, !dbg !1816, !tbaa !278 + %sub45 = sub nsw i32 %21, 1, !dbg !1818 + %cmp46 = icmp sle i32 %k.1, %sub45, !dbg !1819 + br i1 %cmp46, label %for.body47, label %for.end112, !dbg !1820 + +for.body47: ; preds = %for.cond44 + %sub48 = sub nsw i32 %k.1, 1, !dbg !1821 + call void @llvm.dbg.value(metadata i32 %sub48, metadata !1766, metadata !DIExpression()), !dbg !1768 + %idxprom49 = sext i32 %k.1 to i64, !dbg !1823 + %arrayidx50 = getelementptr inbounds [10 x i32], [10 x i32]* @ir, i64 0, i64 %idxprom49, !dbg !1823 + %22 = load i32, i32* %arrayidx50, align 4, !dbg !1823, !tbaa !278 + %idxprom51 = sext i32 %22 to i64, !dbg !1824 + %arrayidx52 = getelementptr inbounds double, double* %u, i64 %idxprom51, !dbg !1824 + %idxprom53 = sext i32 %k.1 to i64, !dbg !1825 + %arrayidx54 = getelementptr inbounds [10 x i32], [10 x i32]* @m1, i64 0, i64 %idxprom53, !dbg !1825 + %23 = load i32, i32* %arrayidx54, align 4, !dbg !1825, !tbaa !278 + %idxprom55 = sext i32 %k.1 to i64, !dbg !1826 + %arrayidx56 = getelementptr inbounds [10 x i32], [10 x i32]* @m2, i64 0, i64 %idxprom55, !dbg !1826 + %24 = load i32, i32* %arrayidx56, align 4, !dbg !1826, !tbaa !278 + %idxprom57 = sext i32 %k.1 to i64, !dbg !1827 + %arrayidx58 = getelementptr inbounds [10 x i32], [10 x i32]* @m3, i64 0, i64 %idxprom57, !dbg !1827 + %25 = load i32, i32* %arrayidx58, align 4, !dbg !1827, !tbaa !278 + call void @zero3(double* %arrayidx52, i32 %23, i32 %24, i32 %25), !dbg !1828 + %idxprom59 = sext i32 %sub48 to i64, !dbg !1829 + %arrayidx60 = getelementptr inbounds [10 x i32], [10 x i32]* @ir, i64 0, i64 %idxprom59, !dbg !1829 + %26 = load i32, i32* %arrayidx60, align 4, !dbg !1829, !tbaa !278 + %idxprom61 = sext i32 %26 to i64, !dbg !1830 + %arrayidx62 = getelementptr inbounds double, double* %u, i64 %idxprom61, !dbg !1830 + %idxprom63 = sext i32 %sub48 to i64, !dbg !1831 + %arrayidx64 = getelementptr inbounds [10 x i32], [10 x i32]* @m1, i64 0, i64 %idxprom63, !dbg !1831 + %27 = load i32, i32* %arrayidx64, align 4, !dbg !1831, !tbaa !278 + %idxprom65 = sext i32 %sub48 to i64, !dbg !1832 + %arrayidx66 = getelementptr inbounds [10 x i32], [10 x i32]* @m2, i64 0, i64 %idxprom65, !dbg !1832 + %28 = load i32, i32* %arrayidx66, align 4, !dbg !1832, !tbaa !278 + %idxprom67 = sext i32 %sub48 to i64, !dbg !1833 + %arrayidx68 = getelementptr inbounds [10 x i32], [10 x i32]* @m3, i64 0, i64 %idxprom67, !dbg !1833 + %29 = load i32, i32* %arrayidx68, align 4, !dbg !1833, !tbaa !278 + %idxprom69 = sext i32 %k.1 to i64, !dbg !1834 + %arrayidx70 = getelementptr inbounds [10 x i32], [10 x i32]* @ir, i64 0, i64 %idxprom69, !dbg !1834 + %30 = load i32, i32* %arrayidx70, align 4, !dbg !1834, !tbaa !278 + %idxprom71 = sext i32 %30 to i64, !dbg !1835 + %arrayidx72 = getelementptr inbounds double, double* %u, i64 %idxprom71, !dbg !1835 + %idxprom73 = sext i32 %k.1 to i64, !dbg !1836 + %arrayidx74 = getelementptr inbounds [10 x i32], [10 x i32]* @m1, i64 0, i64 %idxprom73, !dbg !1836 + %31 = load i32, i32* %arrayidx74, align 4, !dbg !1836, !tbaa !278 + %idxprom75 = sext i32 %k.1 to i64, !dbg !1837 + %arrayidx76 = getelementptr inbounds [10 x i32], [10 x i32]* @m2, i64 0, i64 %idxprom75, !dbg !1837 + %32 = load i32, i32* %arrayidx76, align 4, !dbg !1837, !tbaa !278 + %idxprom77 = sext i32 %k.1 to i64, !dbg !1838 + %arrayidx78 = getelementptr inbounds [10 x i32], [10 x i32]* @m3, i64 0, i64 %idxprom77, !dbg !1838 + %33 = load i32, i32* %arrayidx78, align 4, !dbg !1838, !tbaa !278 + call void @interp(double* %arrayidx62, i32 %27, i32 %28, i32 %29, double* %arrayidx72, i32 %31, i32 %32, i32 %33, i32 %k.1), !dbg !1839 + %idxprom79 = sext i32 %k.1 to i64, !dbg !1840 + %arrayidx80 = getelementptr inbounds [10 x i32], [10 x i32]* @ir, i64 0, i64 %idxprom79, !dbg !1840 + %34 = load i32, i32* %arrayidx80, align 4, !dbg !1840, !tbaa !278 + %idxprom81 = sext i32 %34 to i64, !dbg !1841 + %arrayidx82 = getelementptr inbounds double, double* %u, i64 %idxprom81, !dbg !1841 + %idxprom83 = sext i32 %k.1 to i64, !dbg !1842 + %arrayidx84 = getelementptr inbounds [10 x i32], [10 x i32]* @ir, i64 0, i64 %idxprom83, !dbg !1842 + %35 = load i32, i32* %arrayidx84, align 4, !dbg !1842, !tbaa !278 + %idxprom85 = sext i32 %35 to i64, !dbg !1843 + %arrayidx86 = getelementptr inbounds double, double* %r, i64 %idxprom85, !dbg !1843 + %idxprom87 = sext i32 %k.1 to i64, !dbg !1844 + %arrayidx88 = getelementptr inbounds [10 x i32], [10 x i32]* @ir, i64 0, i64 %idxprom87, !dbg !1844 + %36 = load i32, i32* %arrayidx88, align 4, !dbg !1844, !tbaa !278 + %idxprom89 = sext i32 %36 to i64, !dbg !1845 + %arrayidx90 = getelementptr inbounds double, double* %r, i64 %idxprom89, !dbg !1845 + %idxprom91 = sext i32 %k.1 to i64, !dbg !1846 + %arrayidx92 = getelementptr inbounds [10 x i32], [10 x i32]* @m1, i64 0, i64 %idxprom91, !dbg !1846 + %37 = load i32, i32* %arrayidx92, align 4, !dbg !1846, !tbaa !278 + %idxprom93 = sext i32 %k.1 to i64, !dbg !1847 + %arrayidx94 = getelementptr inbounds [10 x i32], [10 x i32]* @m2, i64 0, i64 %idxprom93, !dbg !1847 + %38 = load i32, i32* %arrayidx94, align 4, !dbg !1847, !tbaa !278 + %idxprom95 = sext i32 %k.1 to i64, !dbg !1848 + %arrayidx96 = getelementptr inbounds [10 x i32], [10 x i32]* @m3, i64 0, i64 %idxprom95, !dbg !1848 + %39 = load i32, i32* %arrayidx96, align 4, !dbg !1848, !tbaa !278 + call void @resid(double* %arrayidx82, double* %arrayidx86, double* %arrayidx90, i32 %37, i32 %38, i32 %39, double* %a, i32 %k.1), !dbg !1849 + %idxprom97 = sext i32 %k.1 to i64, !dbg !1850 + %arrayidx98 = getelementptr inbounds [10 x i32], [10 x i32]* @ir, i64 0, i64 %idxprom97, !dbg !1850 + %40 = load i32, i32* %arrayidx98, align 4, !dbg !1850, !tbaa !278 + %idxprom99 = sext i32 %40 to i64, !dbg !1851 + %arrayidx100 = getelementptr inbounds double, double* %r, i64 %idxprom99, !dbg !1851 + %idxprom101 = sext i32 %k.1 to i64, !dbg !1852 + %arrayidx102 = getelementptr inbounds [10 x i32], [10 x i32]* @ir, i64 0, i64 %idxprom101, !dbg !1852 + %41 = load i32, i32* %arrayidx102, align 4, !dbg !1852, !tbaa !278 + %idxprom103 = sext i32 %41 to i64, !dbg !1853 + %arrayidx104 = getelementptr inbounds double, double* %u, i64 %idxprom103, !dbg !1853 + %idxprom105 = sext i32 %k.1 to i64, !dbg !1854 + %arrayidx106 = getelementptr inbounds [10 x i32], [10 x i32]* @m1, i64 0, i64 %idxprom105, !dbg !1854 + %42 = load i32, i32* %arrayidx106, align 4, !dbg !1854, !tbaa !278 + %idxprom107 = sext i32 %k.1 to i64, !dbg !1855 + %arrayidx108 = getelementptr inbounds [10 x i32], [10 x i32]* @m2, i64 0, i64 %idxprom107, !dbg !1855 + %43 = load i32, i32* %arrayidx108, align 4, !dbg !1855, !tbaa !278 + %idxprom109 = sext i32 %k.1 to i64, !dbg !1856 + %arrayidx110 = getelementptr inbounds [10 x i32], [10 x i32]* @m3, i64 0, i64 %idxprom109, !dbg !1856 + %44 = load i32, i32* %arrayidx110, align 4, !dbg !1856, !tbaa !278 + call void @psinv(double* %arrayidx100, double* %arrayidx104, i32 %42, i32 %43, i32 %44, double* %c, i32 %k.1), !dbg !1857 + br label %for.inc111, !dbg !1858 + +for.inc111: ; preds = %for.body47 + %inc = add nsw i32 %k.1, 1, !dbg !1859 + call void @llvm.dbg.value(metadata i32 %inc, metadata !1767, metadata !DIExpression()), !dbg !1768 + br label %for.cond44, !dbg !1860, !llvm.loop !1861 + +for.end112: ; preds = %for.cond44 + %45 = load i32, i32* @lt, align 4, !dbg !1863, !tbaa !278 + %sub113 = sub nsw i32 %45, 1, !dbg !1864 + call void @llvm.dbg.value(metadata i32 %sub113, metadata !1766, metadata !DIExpression()), !dbg !1768 + %46 = load i32, i32* @lt, align 4, !dbg !1865, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %46, metadata !1767, metadata !DIExpression()), !dbg !1768 + %idxprom114 = sext i32 %sub113 to i64, !dbg !1866 + %arrayidx115 = getelementptr inbounds [10 x i32], [10 x i32]* @ir, i64 0, i64 %idxprom114, !dbg !1866 + %47 = load i32, i32* %arrayidx115, align 4, !dbg !1866, !tbaa !278 + %idxprom116 = sext i32 %47 to i64, !dbg !1867 + %arrayidx117 = getelementptr inbounds double, double* %u, i64 %idxprom116, !dbg !1867 + %idxprom118 = sext i32 %sub113 to i64, !dbg !1868 + %arrayidx119 = getelementptr inbounds [10 x i32], [10 x i32]* @m1, i64 0, i64 %idxprom118, !dbg !1868 + %48 = load i32, i32* %arrayidx119, align 4, !dbg !1868, !tbaa !278 + %idxprom120 = sext i32 %sub113 to i64, !dbg !1869 + %arrayidx121 = getelementptr inbounds [10 x i32], [10 x i32]* @m2, i64 0, i64 %idxprom120, !dbg !1869 + %49 = load i32, i32* %arrayidx121, align 4, !dbg !1869, !tbaa !278 + %idxprom122 = sext i32 %sub113 to i64, !dbg !1870 + %arrayidx123 = getelementptr inbounds [10 x i32], [10 x i32]* @m3, i64 0, i64 %idxprom122, !dbg !1870 + %50 = load i32, i32* %arrayidx123, align 4, !dbg !1870, !tbaa !278 + call void @interp(double* %arrayidx117, i32 %48, i32 %49, i32 %50, double* %u, i32 %n1, i32 %n2, i32 %n3, i32 %46), !dbg !1871 + call void @resid(double* %u, double* %v, double* %r, i32 %n1, i32 %n2, i32 %n3, double* %a, i32 %46), !dbg !1872 + call void @psinv(double* %r, double* %u, i32 %n1, i32 %n2, i32 %n3, double* %c, i32 %46), !dbg !1873 + ret void, !dbg !1874 +} + +declare dso_local void @timer_stop(i32) #4 + +declare dso_local double @timer_read(i32) #4 + +; Function Attrs: nounwind readnone speculatable +declare double @llvm.fabs.f64(double) #3 + +declare dso_local void @print_results(i8*, i8 signext, i32, i32, i32, i32, double, double, i8*, i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*) #4 + +; Function Attrs: nounwind uwtable +define internal void @rprj3(double* %or, i32 %m1k, i32 %m2k, i32 %m3k, double* %os, i32 %m1j, i32 %m2j, i32 %m3j, i32 %k) #0 !dbg !1875 { +entry: + call void @llvm.dbg.value(metadata double* %or, metadata !1877, metadata !DIExpression()), !dbg !1900 + call void @llvm.dbg.value(metadata i32 %m1k, metadata !1878, metadata !DIExpression()), !dbg !1900 + call void @llvm.dbg.value(metadata i32 %m2k, metadata !1879, metadata !DIExpression()), !dbg !1900 + call void @llvm.dbg.value(metadata i32 %m3k, metadata !1880, metadata !DIExpression()), !dbg !1900 + call void @llvm.dbg.value(metadata double* %os, metadata !1881, metadata !DIExpression()), !dbg !1900 + call void @llvm.dbg.value(metadata i32 %m1j, metadata !1882, metadata !DIExpression()), !dbg !1900 + call void @llvm.dbg.value(metadata i32 %m2j, metadata !1883, metadata !DIExpression()), !dbg !1900 + call void @llvm.dbg.value(metadata i32 %m3j, metadata !1884, metadata !DIExpression()), !dbg !1900 + call void @llvm.dbg.value(metadata i32 %k, metadata !1885, metadata !DIExpression()), !dbg !1900 + %mul = mul nsw i32 %m3k, %m2k, !dbg !1901 + %mul1 = mul nsw i32 %mul, %m1k, !dbg !1902 + %conv = sext i32 %mul1 to i64, !dbg !1903 + %mul2 = mul i64 %conv, 8, !dbg !1904 + %call = call i32 @omp_get_default_device(), !dbg !1905 + %call3 = call i8* @omp_target_alloc(i64 %mul2, i32 %call), !dbg !1906 + %0 = bitcast i8* %call3 to double*, !dbg !1907 + call void @llvm.dbg.value(metadata double* %0, metadata !1896, metadata !DIExpression()), !dbg !1900 + %mul4 = mul nsw i32 %m3k, %m2k, !dbg !1908 + %mul5 = mul nsw i32 %mul4, %m1k, !dbg !1909 + %conv6 = sext i32 %mul5 to i64, !dbg !1910 + %mul7 = mul i64 %conv6, 8, !dbg !1911 + %call8 = call i32 @omp_get_default_device(), !dbg !1912 + %call9 = call i8* @omp_target_alloc(i64 %mul7, i32 %call8), !dbg !1913 + %1 = bitcast i8* %call9 to double*, !dbg !1914 + call void @llvm.dbg.value(metadata double* %1, metadata !1897, metadata !DIExpression()), !dbg !1900 + %2 = load i32, i32* @timeron, align 4, !dbg !1915, !tbaa !242 + %tobool = icmp ne i32 %2, 0, !dbg !1915 + br i1 %tobool, label %if.then, label %if.end, !dbg !1917 + +if.then: ; preds = %entry + call void @timer_start(i32 6), !dbg !1918 + br label %if.end, !dbg !1918 + +if.end: ; preds = %if.then, %entry + %cmp = icmp eq i32 %m1k, 3, !dbg !1919 + br i1 %cmp, label %if.then11, label %if.else, !dbg !1921 + +if.then11: ; preds = %if.end + call void @llvm.dbg.value(metadata i32 2, metadata !1892, metadata !DIExpression()), !dbg !1900 + br label %if.end12, !dbg !1922 + +if.else: ; preds = %if.end + call void @llvm.dbg.value(metadata i32 1, metadata !1892, metadata !DIExpression()), !dbg !1900 + br label %if.end12 + +if.end12: ; preds = %if.else, %if.then11 + %d1.0 = phi i32 [ 2, %if.then11 ], [ 1, %if.else ], !dbg !1924 + call void @llvm.dbg.value(metadata i32 %d1.0, metadata !1892, metadata !DIExpression()), !dbg !1900 + %cmp13 = icmp eq i32 %m2k, 3, !dbg !1925 + br i1 %cmp13, label %if.then15, label %if.else16, !dbg !1927 + +if.then15: ; preds = %if.end12 + call void @llvm.dbg.value(metadata i32 2, metadata !1893, metadata !DIExpression()), !dbg !1900 + br label %if.end17, !dbg !1928 + +if.else16: ; preds = %if.end12 + call void @llvm.dbg.value(metadata i32 1, metadata !1893, metadata !DIExpression()), !dbg !1900 + br label %if.end17 + +if.end17: ; preds = %if.else16, %if.then15 + %d2.0 = phi i32 [ 2, %if.then15 ], [ 1, %if.else16 ], !dbg !1930 + call void @llvm.dbg.value(metadata i32 %d2.0, metadata !1893, metadata !DIExpression()), !dbg !1900 + %cmp18 = icmp eq i32 %m3k, 3, !dbg !1931 + br i1 %cmp18, label %if.then20, label %if.else21, !dbg !1933 + +if.then20: ; preds = %if.end17 + call void @llvm.dbg.value(metadata i32 2, metadata !1894, metadata !DIExpression()), !dbg !1900 + br label %if.end22, !dbg !1934 + +if.else21: ; preds = %if.end17 + call void @llvm.dbg.value(metadata i32 1, metadata !1894, metadata !DIExpression()), !dbg !1900 + br label %if.end22 + +if.end22: ; preds = %if.else21, %if.then20 + %d3.0 = phi i32 [ 2, %if.then20 ], [ 1, %if.else21 ], !dbg !1936 + call void @llvm.dbg.value(metadata i32 %d3.0, metadata !1894, metadata !DIExpression()), !dbg !1900 + call void @llvm.dbg.value(metadata i32 1, metadata !1886, metadata !DIExpression()), !dbg !1900 + br label %for.cond, !dbg !1937 + +for.cond: ; preds = %for.inc126, %if.end22 + %j3.0 = phi i32 [ 1, %if.end22 ], [ %inc127, %for.inc126 ], !dbg !1939 + call void @llvm.dbg.value(metadata i32 %j3.0, metadata !1886, metadata !DIExpression()), !dbg !1900 + %sub = sub nsw i32 %m3j, 1, !dbg !1940 + %cmp23 = icmp slt i32 %j3.0, %sub, !dbg !1942 + br i1 %cmp23, label %for.body, label %for.end128, !dbg !1943 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 1, metadata !1887, metadata !DIExpression()), !dbg !1900 + br label %for.cond25, !dbg !1944 + +for.cond25: ; preds = %for.inc123, %for.body + %j2.0 = phi i32 [ 1, %for.body ], [ %inc124, %for.inc123 ], !dbg !1947 + call void @llvm.dbg.value(metadata i32 %j2.0, metadata !1887, metadata !DIExpression()), !dbg !1900 + %sub26 = sub nsw i32 %m2j, 1, !dbg !1948 + %cmp27 = icmp slt i32 %j2.0, %sub26, !dbg !1950 + br i1 %cmp27, label %for.body29, label %for.end125, !dbg !1951 + +for.body29: ; preds = %for.cond25 + call void @llvm.dbg.value(metadata i32 1, metadata !1888, metadata !DIExpression()), !dbg !1900 + br label %for.cond30, !dbg !1952 + +for.cond30: ; preds = %for.inc, %for.body29 + %j1.0 = phi i32 [ 1, %for.body29 ], [ %inc, %for.inc ], !dbg !1955 + call void @llvm.dbg.value(metadata i32 %j1.0, metadata !1888, metadata !DIExpression()), !dbg !1900 + %cmp31 = icmp slt i32 %j1.0, %m1j, !dbg !1956 + br i1 %cmp31, label %for.body33, label %for.end, !dbg !1958 + +for.body33: ; preds = %for.cond30 + %mul34 = mul nsw i32 2, %j3.0, !dbg !1959 + %sub35 = sub nsw i32 %mul34, %d3.0, !dbg !1961 + call void @llvm.dbg.value(metadata i32 %sub35, metadata !1889, metadata !DIExpression()), !dbg !1900 + %mul36 = mul nsw i32 2, %j2.0, !dbg !1962 + %sub37 = sub nsw i32 %mul36, %d2.0, !dbg !1963 + call void @llvm.dbg.value(metadata i32 %sub37, metadata !1890, metadata !DIExpression()), !dbg !1900 + %mul38 = mul nsw i32 2, %j1.0, !dbg !1964 + %sub39 = sub nsw i32 %mul38, %d1.0, !dbg !1965 + call void @llvm.dbg.value(metadata i32 %sub39, metadata !1891, metadata !DIExpression()), !dbg !1900 + %add = add nsw i32 %sub35, 1, !dbg !1966 + %mul40 = mul nsw i32 %add, %m2k, !dbg !1966 + %mul41 = mul nsw i32 %mul40, %m1k, !dbg !1966 + %mul42 = mul nsw i32 %sub37, %m1k, !dbg !1966 + %add43 = add nsw i32 %mul41, %mul42, !dbg !1966 + %add44 = add nsw i32 %add43, %sub39, !dbg !1966 + %idxprom = sext i32 %add44 to i64, !dbg !1966 + %arrayidx = getelementptr inbounds double, double* %or, i64 %idxprom, !dbg !1966 + %3 = load double, double* %arrayidx, align 8, !dbg !1966, !tbaa !437 + %add45 = add nsw i32 %sub35, 1, !dbg !1967 + %mul46 = mul nsw i32 %add45, %m2k, !dbg !1967 + %mul47 = mul nsw i32 %mul46, %m1k, !dbg !1967 + %add48 = add nsw i32 %sub37, 2, !dbg !1967 + %mul49 = mul nsw i32 %add48, %m1k, !dbg !1967 + %add50 = add nsw i32 %mul47, %mul49, !dbg !1967 + %add51 = add nsw i32 %add50, %sub39, !dbg !1967 + %idxprom52 = sext i32 %add51 to i64, !dbg !1967 + %arrayidx53 = getelementptr inbounds double, double* %or, i64 %idxprom52, !dbg !1967 + %4 = load double, double* %arrayidx53, align 8, !dbg !1967, !tbaa !437 + %add54 = fadd double %3, %4, !dbg !1968 + %mul55 = mul nsw i32 %sub35, %m2k, !dbg !1969 + %mul56 = mul nsw i32 %mul55, %m1k, !dbg !1969 + %add57 = add nsw i32 %sub37, 1, !dbg !1969 + %mul58 = mul nsw i32 %add57, %m1k, !dbg !1969 + %add59 = add nsw i32 %mul56, %mul58, !dbg !1969 + %add60 = add nsw i32 %add59, %sub39, !dbg !1969 + %idxprom61 = sext i32 %add60 to i64, !dbg !1969 + %arrayidx62 = getelementptr inbounds double, double* %or, i64 %idxprom61, !dbg !1969 + %5 = load double, double* %arrayidx62, align 8, !dbg !1969, !tbaa !437 + %add63 = fadd double %add54, %5, !dbg !1970 + %add64 = add nsw i32 %sub35, 2, !dbg !1971 + %mul65 = mul nsw i32 %add64, %m2k, !dbg !1971 + %mul66 = mul nsw i32 %mul65, %m1k, !dbg !1971 + %add67 = add nsw i32 %sub37, 1, !dbg !1971 + %mul68 = mul nsw i32 %add67, %m1k, !dbg !1971 + %add69 = add nsw i32 %mul66, %mul68, !dbg !1971 + %add70 = add nsw i32 %add69, %sub39, !dbg !1971 + %idxprom71 = sext i32 %add70 to i64, !dbg !1971 + %arrayidx72 = getelementptr inbounds double, double* %or, i64 %idxprom71, !dbg !1971 + %6 = load double, double* %arrayidx72, align 8, !dbg !1971, !tbaa !437 + %add73 = fadd double %add63, %6, !dbg !1972 + %mul74 = mul nsw i32 %sub35, %m2k, !dbg !1973 + %mul75 = mul nsw i32 %mul74, %m1k, !dbg !1973 + %mul76 = mul nsw i32 %sub37, %m1k, !dbg !1973 + %add77 = add nsw i32 %mul75, %mul76, !dbg !1973 + %add78 = add nsw i32 %add77, %sub39, !dbg !1973 + %idxprom79 = sext i32 %add78 to i64, !dbg !1973 + %arrayidx80 = getelementptr inbounds double, double* %0, i64 %idxprom79, !dbg !1973 + store double %add73, double* %arrayidx80, align 8, !dbg !1974, !tbaa !437 + %mul81 = mul nsw i32 %sub35, %m2k, !dbg !1975 + %mul82 = mul nsw i32 %mul81, %m1k, !dbg !1975 + %mul83 = mul nsw i32 %sub37, %m1k, !dbg !1975 + %add84 = add nsw i32 %mul82, %mul83, !dbg !1975 + %add85 = add nsw i32 %add84, %sub39, !dbg !1975 + %idxprom86 = sext i32 %add85 to i64, !dbg !1975 + %arrayidx87 = getelementptr inbounds double, double* %or, i64 %idxprom86, !dbg !1975 + %7 = load double, double* %arrayidx87, align 8, !dbg !1975, !tbaa !437 + %add88 = add nsw i32 %sub35, 2, !dbg !1976 + %mul89 = mul nsw i32 %add88, %m2k, !dbg !1976 + %mul90 = mul nsw i32 %mul89, %m1k, !dbg !1976 + %mul91 = mul nsw i32 %sub37, %m1k, !dbg !1976 + %add92 = add nsw i32 %mul90, %mul91, !dbg !1976 + %add93 = add nsw i32 %add92, %sub39, !dbg !1976 + %idxprom94 = sext i32 %add93 to i64, !dbg !1976 + %arrayidx95 = getelementptr inbounds double, double* %or, i64 %idxprom94, !dbg !1976 + %8 = load double, double* %arrayidx95, align 8, !dbg !1976, !tbaa !437 + %add96 = fadd double %7, %8, !dbg !1977 + %mul97 = mul nsw i32 %sub35, %m2k, !dbg !1978 + %mul98 = mul nsw i32 %mul97, %m1k, !dbg !1978 + %add99 = add nsw i32 %sub37, 2, !dbg !1978 + %mul100 = mul nsw i32 %add99, %m1k, !dbg !1978 + %add101 = add nsw i32 %mul98, %mul100, !dbg !1978 + %add102 = add nsw i32 %add101, %sub39, !dbg !1978 + %idxprom103 = sext i32 %add102 to i64, !dbg !1978 + %arrayidx104 = getelementptr inbounds double, double* %or, i64 %idxprom103, !dbg !1978 + %9 = load double, double* %arrayidx104, align 8, !dbg !1978, !tbaa !437 + %add105 = fadd double %add96, %9, !dbg !1979 + %add106 = add nsw i32 %sub35, 2, !dbg !1980 + %mul107 = mul nsw i32 %add106, %m2k, !dbg !1980 + %mul108 = mul nsw i32 %mul107, %m1k, !dbg !1980 + %add109 = add nsw i32 %sub37, 2, !dbg !1980 + %mul110 = mul nsw i32 %add109, %m1k, !dbg !1980 + %add111 = add nsw i32 %mul108, %mul110, !dbg !1980 + %add112 = add nsw i32 %add111, %sub39, !dbg !1980 + %idxprom113 = sext i32 %add112 to i64, !dbg !1980 + %arrayidx114 = getelementptr inbounds double, double* %or, i64 %idxprom113, !dbg !1980 + %10 = load double, double* %arrayidx114, align 8, !dbg !1980, !tbaa !437 + %add115 = fadd double %add105, %10, !dbg !1981 + %mul116 = mul nsw i32 %sub35, %m2k, !dbg !1982 + %mul117 = mul nsw i32 %mul116, %m1k, !dbg !1982 + %mul118 = mul nsw i32 %sub37, %m1k, !dbg !1982 + %add119 = add nsw i32 %mul117, %mul118, !dbg !1982 + %add120 = add nsw i32 %add119, %sub39, !dbg !1982 + %idxprom121 = sext i32 %add120 to i64, !dbg !1982 + %arrayidx122 = getelementptr inbounds double, double* %1, i64 %idxprom121, !dbg !1982 + store double %add115, double* %arrayidx122, align 8, !dbg !1983, !tbaa !437 + br label %for.inc, !dbg !1984 + +for.inc: ; preds = %for.body33 + %inc = add nsw i32 %j1.0, 1, !dbg !1985 + call void @llvm.dbg.value(metadata i32 %inc, metadata !1888, metadata !DIExpression()), !dbg !1900 + br label %for.cond30, !dbg !1986, !llvm.loop !1987 + +for.end: ; preds = %for.cond30 + br label %for.inc123, !dbg !1989 + +for.inc123: ; preds = %for.end + %inc124 = add nsw i32 %j2.0, 1, !dbg !1990 + call void @llvm.dbg.value(metadata i32 %inc124, metadata !1887, metadata !DIExpression()), !dbg !1900 + br label %for.cond25, !dbg !1991, !llvm.loop !1992 + +for.end125: ; preds = %for.cond25 + br label %for.inc126, !dbg !1994 + +for.inc126: ; preds = %for.end125 + %inc127 = add nsw i32 %j3.0, 1, !dbg !1995 + call void @llvm.dbg.value(metadata i32 %inc127, metadata !1886, metadata !DIExpression()), !dbg !1900 + br label %for.cond, !dbg !1996, !llvm.loop !1997 + +for.end128: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 1, metadata !1886, metadata !DIExpression()), !dbg !1900 + br label %for.cond129, !dbg !1999 + +for.cond129: ; preds = %for.inc314, %for.end128 + %j3.1 = phi i32 [ 1, %for.end128 ], [ %inc315, %for.inc314 ], !dbg !2001 + call void @llvm.dbg.value(metadata i32 %j3.1, metadata !1886, metadata !DIExpression()), !dbg !1900 + %sub130 = sub nsw i32 %m3j, 1, !dbg !2002 + %cmp131 = icmp slt i32 %j3.1, %sub130, !dbg !2004 + br i1 %cmp131, label %for.body133, label %for.end316, !dbg !2005 + +for.body133: ; preds = %for.cond129 + call void @llvm.dbg.value(metadata i32 1, metadata !1887, metadata !DIExpression()), !dbg !1900 + br label %for.cond134, !dbg !2006 + +for.cond134: ; preds = %for.inc311, %for.body133 + %j2.1 = phi i32 [ 1, %for.body133 ], [ %inc312, %for.inc311 ], !dbg !2009 + call void @llvm.dbg.value(metadata i32 %j2.1, metadata !1887, metadata !DIExpression()), !dbg !1900 + %sub135 = sub nsw i32 %m2j, 1, !dbg !2010 + %cmp136 = icmp slt i32 %j2.1, %sub135, !dbg !2012 + br i1 %cmp136, label %for.body138, label %for.end313, !dbg !2013 + +for.body138: ; preds = %for.cond134 + call void @llvm.dbg.value(metadata i32 1, metadata !1888, metadata !DIExpression()), !dbg !1900 + br label %for.cond139, !dbg !2014 + +for.cond139: ; preds = %for.inc308, %for.body138 + %j1.1 = phi i32 [ 1, %for.body138 ], [ %inc309, %for.inc308 ], !dbg !2017 + call void @llvm.dbg.value(metadata i32 %j1.1, metadata !1888, metadata !DIExpression()), !dbg !1900 + %sub140 = sub nsw i32 %m1j, 1, !dbg !2018 + %cmp141 = icmp slt i32 %j1.1, %sub140, !dbg !2020 + br i1 %cmp141, label %for.body143, label %for.end310, !dbg !2021 + +for.body143: ; preds = %for.cond139 + %mul144 = mul nsw i32 2, %j3.1, !dbg !2022 + %sub145 = sub nsw i32 %mul144, %d3.0, !dbg !2024 + call void @llvm.dbg.value(metadata i32 %sub145, metadata !1889, metadata !DIExpression()), !dbg !1900 + %mul146 = mul nsw i32 2, %j2.1, !dbg !2025 + %sub147 = sub nsw i32 %mul146, %d2.0, !dbg !2026 + call void @llvm.dbg.value(metadata i32 %sub147, metadata !1890, metadata !DIExpression()), !dbg !1900 + %mul148 = mul nsw i32 2, %j1.1, !dbg !2027 + %sub149 = sub nsw i32 %mul148, %d1.0, !dbg !2028 + call void @llvm.dbg.value(metadata i32 %sub149, metadata !1891, metadata !DIExpression()), !dbg !1900 + %mul150 = mul nsw i32 %sub145, %m2k, !dbg !2029 + %mul151 = mul nsw i32 %mul150, %m1k, !dbg !2029 + %mul152 = mul nsw i32 %sub147, %m1k, !dbg !2029 + %add153 = add nsw i32 %mul151, %mul152, !dbg !2029 + %add154 = add nsw i32 %sub149, 1, !dbg !2029 + %add155 = add nsw i32 %add153, %add154, !dbg !2029 + %idxprom156 = sext i32 %add155 to i64, !dbg !2029 + %arrayidx157 = getelementptr inbounds double, double* %or, i64 %idxprom156, !dbg !2029 + %11 = load double, double* %arrayidx157, align 8, !dbg !2029, !tbaa !437 + %add158 = add nsw i32 %sub145, 2, !dbg !2030 + %mul159 = mul nsw i32 %add158, %m2k, !dbg !2030 + %mul160 = mul nsw i32 %mul159, %m1k, !dbg !2030 + %mul161 = mul nsw i32 %sub147, %m1k, !dbg !2030 + %add162 = add nsw i32 %mul160, %mul161, !dbg !2030 + %add163 = add nsw i32 %sub149, 1, !dbg !2030 + %add164 = add nsw i32 %add162, %add163, !dbg !2030 + %idxprom165 = sext i32 %add164 to i64, !dbg !2030 + %arrayidx166 = getelementptr inbounds double, double* %or, i64 %idxprom165, !dbg !2030 + %12 = load double, double* %arrayidx166, align 8, !dbg !2030, !tbaa !437 + %add167 = fadd double %11, %12, !dbg !2031 + %mul168 = mul nsw i32 %sub145, %m2k, !dbg !2032 + %mul169 = mul nsw i32 %mul168, %m1k, !dbg !2032 + %add170 = add nsw i32 %sub147, 2, !dbg !2032 + %mul171 = mul nsw i32 %add170, %m1k, !dbg !2032 + %add172 = add nsw i32 %mul169, %mul171, !dbg !2032 + %add173 = add nsw i32 %sub149, 1, !dbg !2032 + %add174 = add nsw i32 %add172, %add173, !dbg !2032 + %idxprom175 = sext i32 %add174 to i64, !dbg !2032 + %arrayidx176 = getelementptr inbounds double, double* %or, i64 %idxprom175, !dbg !2032 + %13 = load double, double* %arrayidx176, align 8, !dbg !2032, !tbaa !437 + %add177 = fadd double %add167, %13, !dbg !2033 + %add178 = add nsw i32 %sub145, 2, !dbg !2034 + %mul179 = mul nsw i32 %add178, %m2k, !dbg !2034 + %mul180 = mul nsw i32 %mul179, %m1k, !dbg !2034 + %add181 = add nsw i32 %sub147, 2, !dbg !2034 + %mul182 = mul nsw i32 %add181, %m1k, !dbg !2034 + %add183 = add nsw i32 %mul180, %mul182, !dbg !2034 + %add184 = add nsw i32 %sub149, 1, !dbg !2034 + %add185 = add nsw i32 %add183, %add184, !dbg !2034 + %idxprom186 = sext i32 %add185 to i64, !dbg !2034 + %arrayidx187 = getelementptr inbounds double, double* %or, i64 %idxprom186, !dbg !2034 + %14 = load double, double* %arrayidx187, align 8, !dbg !2034, !tbaa !437 + %add188 = fadd double %add177, %14, !dbg !2035 + call void @llvm.dbg.value(metadata double %add188, metadata !1899, metadata !DIExpression()), !dbg !1900 + %add189 = add nsw i32 %sub145, 1, !dbg !2036 + %mul190 = mul nsw i32 %add189, %m2k, !dbg !2036 + %mul191 = mul nsw i32 %mul190, %m1k, !dbg !2036 + %mul192 = mul nsw i32 %sub147, %m1k, !dbg !2036 + %add193 = add nsw i32 %mul191, %mul192, !dbg !2036 + %add194 = add nsw i32 %sub149, 1, !dbg !2036 + %add195 = add nsw i32 %add193, %add194, !dbg !2036 + %idxprom196 = sext i32 %add195 to i64, !dbg !2036 + %arrayidx197 = getelementptr inbounds double, double* %or, i64 %idxprom196, !dbg !2036 + %15 = load double, double* %arrayidx197, align 8, !dbg !2036, !tbaa !437 + %add198 = add nsw i32 %sub145, 1, !dbg !2037 + %mul199 = mul nsw i32 %add198, %m2k, !dbg !2037 + %mul200 = mul nsw i32 %mul199, %m1k, !dbg !2037 + %add201 = add nsw i32 %sub147, 2, !dbg !2037 + %mul202 = mul nsw i32 %add201, %m1k, !dbg !2037 + %add203 = add nsw i32 %mul200, %mul202, !dbg !2037 + %add204 = add nsw i32 %sub149, 1, !dbg !2037 + %add205 = add nsw i32 %add203, %add204, !dbg !2037 + %idxprom206 = sext i32 %add205 to i64, !dbg !2037 + %arrayidx207 = getelementptr inbounds double, double* %or, i64 %idxprom206, !dbg !2037 + %16 = load double, double* %arrayidx207, align 8, !dbg !2037, !tbaa !437 + %add208 = fadd double %15, %16, !dbg !2038 + %mul209 = mul nsw i32 %sub145, %m2k, !dbg !2039 + %mul210 = mul nsw i32 %mul209, %m1k, !dbg !2039 + %add211 = add nsw i32 %sub147, 1, !dbg !2039 + %mul212 = mul nsw i32 %add211, %m1k, !dbg !2039 + %add213 = add nsw i32 %mul210, %mul212, !dbg !2039 + %add214 = add nsw i32 %sub149, 1, !dbg !2039 + %add215 = add nsw i32 %add213, %add214, !dbg !2039 + %idxprom216 = sext i32 %add215 to i64, !dbg !2039 + %arrayidx217 = getelementptr inbounds double, double* %or, i64 %idxprom216, !dbg !2039 + %17 = load double, double* %arrayidx217, align 8, !dbg !2039, !tbaa !437 + %add218 = fadd double %add208, %17, !dbg !2040 + %add219 = add nsw i32 %sub145, 2, !dbg !2041 + %mul220 = mul nsw i32 %add219, %m2k, !dbg !2041 + %mul221 = mul nsw i32 %mul220, %m1k, !dbg !2041 + %add222 = add nsw i32 %sub147, 1, !dbg !2041 + %mul223 = mul nsw i32 %add222, %m1k, !dbg !2041 + %add224 = add nsw i32 %mul221, %mul223, !dbg !2041 + %add225 = add nsw i32 %sub149, 1, !dbg !2041 + %add226 = add nsw i32 %add224, %add225, !dbg !2041 + %idxprom227 = sext i32 %add226 to i64, !dbg !2041 + %arrayidx228 = getelementptr inbounds double, double* %or, i64 %idxprom227, !dbg !2041 + %18 = load double, double* %arrayidx228, align 8, !dbg !2041, !tbaa !437 + %add229 = fadd double %add218, %18, !dbg !2042 + call void @llvm.dbg.value(metadata double %add229, metadata !1898, metadata !DIExpression()), !dbg !1900 + %add230 = add nsw i32 %sub145, 1, !dbg !2043 + %mul231 = mul nsw i32 %add230, %m2k, !dbg !2043 + %mul232 = mul nsw i32 %mul231, %m1k, !dbg !2043 + %add233 = add nsw i32 %sub147, 1, !dbg !2043 + %mul234 = mul nsw i32 %add233, %m1k, !dbg !2043 + %add235 = add nsw i32 %mul232, %mul234, !dbg !2043 + %add236 = add nsw i32 %sub149, 1, !dbg !2043 + %add237 = add nsw i32 %add235, %add236, !dbg !2043 + %idxprom238 = sext i32 %add237 to i64, !dbg !2043 + %arrayidx239 = getelementptr inbounds double, double* %or, i64 %idxprom238, !dbg !2043 + %19 = load double, double* %arrayidx239, align 8, !dbg !2043, !tbaa !437 + %mul240 = fmul double 5.000000e-01, %19, !dbg !2044 + %add241 = add nsw i32 %sub145, 1, !dbg !2045 + %mul242 = mul nsw i32 %add241, %m2k, !dbg !2045 + %mul243 = mul nsw i32 %mul242, %m1k, !dbg !2045 + %add244 = add nsw i32 %sub147, 1, !dbg !2045 + %mul245 = mul nsw i32 %add244, %m1k, !dbg !2045 + %add246 = add nsw i32 %mul243, %mul245, !dbg !2045 + %add247 = add nsw i32 %add246, %sub149, !dbg !2045 + %idxprom248 = sext i32 %add247 to i64, !dbg !2045 + %arrayidx249 = getelementptr inbounds double, double* %or, i64 %idxprom248, !dbg !2045 + %20 = load double, double* %arrayidx249, align 8, !dbg !2045, !tbaa !437 + %add250 = add nsw i32 %sub145, 1, !dbg !2046 + %mul251 = mul nsw i32 %add250, %m2k, !dbg !2046 + %mul252 = mul nsw i32 %mul251, %m1k, !dbg !2046 + %add253 = add nsw i32 %sub147, 1, !dbg !2046 + %mul254 = mul nsw i32 %add253, %m1k, !dbg !2046 + %add255 = add nsw i32 %mul252, %mul254, !dbg !2046 + %add256 = add nsw i32 %sub149, 2, !dbg !2046 + %add257 = add nsw i32 %add255, %add256, !dbg !2046 + %idxprom258 = sext i32 %add257 to i64, !dbg !2046 + %arrayidx259 = getelementptr inbounds double, double* %or, i64 %idxprom258, !dbg !2046 + %21 = load double, double* %arrayidx259, align 8, !dbg !2046, !tbaa !437 + %add260 = fadd double %20, %21, !dbg !2047 + %add261 = fadd double %add260, %add229, !dbg !2048 + %mul262 = fmul double 2.500000e-01, %add261, !dbg !2049 + %add263 = fadd double %mul240, %mul262, !dbg !2050 + %mul264 = mul nsw i32 %sub145, %m2k, !dbg !2051 + %mul265 = mul nsw i32 %mul264, %m1k, !dbg !2051 + %mul266 = mul nsw i32 %sub147, %m1k, !dbg !2051 + %add267 = add nsw i32 %mul265, %mul266, !dbg !2051 + %add268 = add nsw i32 %add267, %sub149, !dbg !2051 + %idxprom269 = sext i32 %add268 to i64, !dbg !2051 + %arrayidx270 = getelementptr inbounds double, double* %0, i64 %idxprom269, !dbg !2051 + %22 = load double, double* %arrayidx270, align 8, !dbg !2051, !tbaa !437 + %mul271 = mul nsw i32 %sub145, %m2k, !dbg !2052 + %mul272 = mul nsw i32 %mul271, %m1k, !dbg !2052 + %mul273 = mul nsw i32 %sub147, %m1k, !dbg !2052 + %add274 = add nsw i32 %mul272, %mul273, !dbg !2052 + %add275 = add nsw i32 %sub149, 2, !dbg !2052 + %add276 = add nsw i32 %add274, %add275, !dbg !2052 + %idxprom277 = sext i32 %add276 to i64, !dbg !2052 + %arrayidx278 = getelementptr inbounds double, double* %0, i64 %idxprom277, !dbg !2052 + %23 = load double, double* %arrayidx278, align 8, !dbg !2052, !tbaa !437 + %add279 = fadd double %22, %23, !dbg !2053 + %add280 = fadd double %add279, %add188, !dbg !2054 + %mul281 = fmul double 1.250000e-01, %add280, !dbg !2055 + %add282 = fadd double %add263, %mul281, !dbg !2056 + %mul283 = mul nsw i32 %sub145, %m2k, !dbg !2057 + %mul284 = mul nsw i32 %mul283, %m1k, !dbg !2057 + %mul285 = mul nsw i32 %sub147, %m1k, !dbg !2057 + %add286 = add nsw i32 %mul284, %mul285, !dbg !2057 + %add287 = add nsw i32 %add286, %sub149, !dbg !2057 + %idxprom288 = sext i32 %add287 to i64, !dbg !2057 + %arrayidx289 = getelementptr inbounds double, double* %1, i64 %idxprom288, !dbg !2057 + %24 = load double, double* %arrayidx289, align 8, !dbg !2057, !tbaa !437 + %mul290 = mul nsw i32 %sub145, %m2k, !dbg !2058 + %mul291 = mul nsw i32 %mul290, %m1k, !dbg !2058 + %mul292 = mul nsw i32 %sub147, %m1k, !dbg !2058 + %add293 = add nsw i32 %mul291, %mul292, !dbg !2058 + %add294 = add nsw i32 %sub149, 2, !dbg !2058 + %add295 = add nsw i32 %add293, %add294, !dbg !2058 + %idxprom296 = sext i32 %add295 to i64, !dbg !2058 + %arrayidx297 = getelementptr inbounds double, double* %1, i64 %idxprom296, !dbg !2058 + %25 = load double, double* %arrayidx297, align 8, !dbg !2058, !tbaa !437 + %add298 = fadd double %24, %25, !dbg !2059 + %mul299 = fmul double 6.250000e-02, %add298, !dbg !2060 + %add300 = fadd double %add282, %mul299, !dbg !2061 + %mul301 = mul nsw i32 %j3.1, %m2j, !dbg !2062 + %mul302 = mul nsw i32 %mul301, %m1j, !dbg !2062 + %mul303 = mul nsw i32 %j2.1, %m1j, !dbg !2062 + %add304 = add nsw i32 %mul302, %mul303, !dbg !2062 + %add305 = add nsw i32 %add304, %j1.1, !dbg !2062 + %idxprom306 = sext i32 %add305 to i64, !dbg !2062 + %arrayidx307 = getelementptr inbounds double, double* %os, i64 %idxprom306, !dbg !2062 + store double %add300, double* %arrayidx307, align 8, !dbg !2063, !tbaa !437 + br label %for.inc308, !dbg !2064 + +for.inc308: ; preds = %for.body143 + %inc309 = add nsw i32 %j1.1, 1, !dbg !2065 + call void @llvm.dbg.value(metadata i32 %inc309, metadata !1888, metadata !DIExpression()), !dbg !1900 + br label %for.cond139, !dbg !2066, !llvm.loop !2067 + +for.end310: ; preds = %for.cond139 + br label %for.inc311, !dbg !2069 + +for.inc311: ; preds = %for.end310 + %inc312 = add nsw i32 %j2.1, 1, !dbg !2070 + call void @llvm.dbg.value(metadata i32 %inc312, metadata !1887, metadata !DIExpression()), !dbg !1900 + br label %for.cond134, !dbg !2071, !llvm.loop !2072 + +for.end313: ; preds = %for.cond134 + br label %for.inc314, !dbg !2074 + +for.inc314: ; preds = %for.end313 + %inc315 = add nsw i32 %j3.1, 1, !dbg !2075 + call void @llvm.dbg.value(metadata i32 %inc315, metadata !1886, metadata !DIExpression()), !dbg !1900 + br label %for.cond129, !dbg !2076, !llvm.loop !2077 + +for.end316: ; preds = %for.cond129 + %26 = load i32, i32* @timeron, align 4, !dbg !2079, !tbaa !242 + %tobool317 = icmp ne i32 %26, 0, !dbg !2079 + br i1 %tobool317, label %if.then318, label %if.end319, !dbg !2081 + +if.then318: ; preds = %for.end316 + call void @timer_stop(i32 6), !dbg !2082 + br label %if.end319, !dbg !2082 + +if.end319: ; preds = %if.then318, %for.end316 + %sub320 = sub nsw i32 %k, 1, !dbg !2083 + call void @llvm.dbg.value(metadata i32 %sub320, metadata !1895, metadata !DIExpression()), !dbg !1900 + call void @comm3(double* %os, i32 %m1j, i32 %m2j, i32 %m3j, i32 %sub320), !dbg !2084 + %27 = load i32, i32* getelementptr inbounds ([8 x i32], [8 x i32]* @debug_vec, i64 0, i64 0), align 16, !dbg !2085, !tbaa !278 + %cmp321 = icmp sge i32 %27, 1, !dbg !2087 + br i1 %cmp321, label %if.then323, label %if.end325, !dbg !2088 + +if.then323: ; preds = %if.end319 + %sub324 = sub nsw i32 %k, 1, !dbg !2089 + call void @rep_nrm(double* %os, i32 %m1j, i32 %m2j, i32 %m3j, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.49, i64 0, i64 0), i32 %sub324), !dbg !2091 + br label %if.end325, !dbg !2092 + +if.end325: ; preds = %if.then323, %if.end319 + %28 = load i32, i32* getelementptr inbounds ([8 x i32], [8 x i32]* @debug_vec, i64 0, i64 4), align 16, !dbg !2093, !tbaa !278 + %cmp326 = icmp sge i32 %28, %k, !dbg !2095 + br i1 %cmp326, label %if.then328, label %if.end329, !dbg !2096 + +if.then328: ; preds = %if.end325 + call void @showall(double* %os, i32 %m1j, i32 %m2j, i32 %m3j), !dbg !2097 + br label %if.end329, !dbg !2099 + +if.end329: ; preds = %if.then328, %if.end325 + %29 = bitcast double* %0 to i8*, !dbg !2100 + %call330 = call i32 @omp_get_default_device(), !dbg !2101 + call void @omp_target_free(i8* %29, i32 %call330), !dbg !2102 + %30 = bitcast double* %1 to i8*, !dbg !2103 + %call331 = call i32 @omp_get_default_device(), !dbg !2104 + call void @omp_target_free(i8* %30, i32 %call331), !dbg !2105 + ret void, !dbg !2106 +} + +; Function Attrs: nounwind uwtable +define internal void @psinv(double* noalias %or, double* noalias %ou, i32 %n1, i32 %n2, i32 %n3, double* %c, i32 %k) #0 !dbg !2107 { +entry: + call void @llvm.dbg.value(metadata double* %or, metadata !2111, metadata !DIExpression()), !dbg !2126 + call void @llvm.dbg.value(metadata double* %ou, metadata !2112, metadata !DIExpression()), !dbg !2126 + call void @llvm.dbg.value(metadata i32 %n1, metadata !2113, metadata !DIExpression()), !dbg !2126 + call void @llvm.dbg.value(metadata i32 %n2, metadata !2114, metadata !DIExpression()), !dbg !2126 + call void @llvm.dbg.value(metadata i32 %n3, metadata !2115, metadata !DIExpression()), !dbg !2126 + call void @llvm.dbg.value(metadata double* %c, metadata !2116, metadata !DIExpression()), !dbg !2126 + call void @llvm.dbg.value(metadata i32 %k, metadata !2117, metadata !DIExpression()), !dbg !2126 + %arrayidx = getelementptr inbounds double, double* %c, i64 0, !dbg !2127 + %0 = load double, double* %arrayidx, align 8, !dbg !2127, !tbaa !437 + call void @llvm.dbg.value(metadata double %0, metadata !2121, metadata !DIExpression()), !dbg !2126 + %arrayidx1 = getelementptr inbounds double, double* %c, i64 1, !dbg !2128 + %1 = load double, double* %arrayidx1, align 8, !dbg !2128, !tbaa !437 + call void @llvm.dbg.value(metadata double %1, metadata !2122, metadata !DIExpression()), !dbg !2126 + %arrayidx2 = getelementptr inbounds double, double* %c, i64 2, !dbg !2129 + %2 = load double, double* %arrayidx2, align 8, !dbg !2129, !tbaa !437 + call void @llvm.dbg.value(metadata double %2, metadata !2123, metadata !DIExpression()), !dbg !2126 + %mul = mul nsw i32 %n3, %n2, !dbg !2130 + %mul3 = mul nsw i32 %mul, %n1, !dbg !2131 + %conv = sext i32 %mul3 to i64, !dbg !2132 + %mul4 = mul i64 %conv, 8, !dbg !2133 + %call = call i32 @omp_get_default_device(), !dbg !2134 + %call5 = call i8* @omp_target_alloc(i64 %mul4, i32 %call), !dbg !2135 + %3 = bitcast i8* %call5 to double*, !dbg !2136 + call void @llvm.dbg.value(metadata double* %3, metadata !2124, metadata !DIExpression()), !dbg !2126 + %mul6 = mul nsw i32 %n3, %n2, !dbg !2137 + %mul7 = mul nsw i32 %mul6, %n1, !dbg !2138 + %conv8 = sext i32 %mul7 to i64, !dbg !2139 + %mul9 = mul i64 %conv8, 8, !dbg !2140 + %call10 = call i32 @omp_get_default_device(), !dbg !2141 + %call11 = call i8* @omp_target_alloc(i64 %mul9, i32 %call10), !dbg !2142 + %4 = bitcast i8* %call11 to double*, !dbg !2143 + call void @llvm.dbg.value(metadata double* %4, metadata !2125, metadata !DIExpression()), !dbg !2126 + %5 = load i32, i32* @timeron, align 4, !dbg !2144, !tbaa !242 + %tobool = icmp ne i32 %5, 0, !dbg !2144 + br i1 %tobool, label %if.then, label %if.end, !dbg !2146 + +if.then: ; preds = %entry + call void @timer_start(i32 3), !dbg !2147 + br label %if.end, !dbg !2147 + +if.end: ; preds = %if.then, %entry + call void @llvm.dbg.value(metadata i32 1, metadata !2118, metadata !DIExpression()), !dbg !2126 + br label %for.cond, !dbg !2148 + +for.cond: ; preds = %for.inc111, %if.end + %i3.0 = phi i32 [ 1, %if.end ], [ %inc112, %for.inc111 ], !dbg !2150 + call void @llvm.dbg.value(metadata i32 %i3.0, metadata !2118, metadata !DIExpression()), !dbg !2126 + %sub = sub nsw i32 %n3, 1, !dbg !2151 + %cmp = icmp slt i32 %i3.0, %sub, !dbg !2153 + br i1 %cmp, label %for.body, label %for.end113, !dbg !2154 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 1, metadata !2119, metadata !DIExpression()), !dbg !2126 + br label %for.cond13, !dbg !2155 + +for.cond13: ; preds = %for.inc108, %for.body + %i2.0 = phi i32 [ 1, %for.body ], [ %inc109, %for.inc108 ], !dbg !2158 + call void @llvm.dbg.value(metadata i32 %i2.0, metadata !2119, metadata !DIExpression()), !dbg !2126 + %sub14 = sub nsw i32 %n2, 1, !dbg !2159 + %cmp15 = icmp slt i32 %i2.0, %sub14, !dbg !2161 + br i1 %cmp15, label %for.body17, label %for.end110, !dbg !2162 + +for.body17: ; preds = %for.cond13 + call void @llvm.dbg.value(metadata i32 0, metadata !2120, metadata !DIExpression()), !dbg !2126 + br label %for.cond18, !dbg !2163 + +for.cond18: ; preds = %for.inc, %for.body17 + %i1.0 = phi i32 [ 0, %for.body17 ], [ %inc, %for.inc ], !dbg !2166 + call void @llvm.dbg.value(metadata i32 %i1.0, metadata !2120, metadata !DIExpression()), !dbg !2126 + %cmp19 = icmp slt i32 %i1.0, %n1, !dbg !2167 + br i1 %cmp19, label %for.body21, label %for.end, !dbg !2169 + +for.body21: ; preds = %for.cond18 + %mul22 = mul nsw i32 %i3.0, %n2, !dbg !2170 + %mul23 = mul nsw i32 %mul22, %n1, !dbg !2170 + %sub24 = sub nsw i32 %i2.0, 1, !dbg !2170 + %mul25 = mul nsw i32 %sub24, %n1, !dbg !2170 + %add = add nsw i32 %mul23, %mul25, !dbg !2170 + %add26 = add nsw i32 %add, %i1.0, !dbg !2170 + %idxprom = sext i32 %add26 to i64, !dbg !2170 + %arrayidx27 = getelementptr inbounds double, double* %or, i64 %idxprom, !dbg !2170 + %6 = load double, double* %arrayidx27, align 8, !dbg !2170, !tbaa !437 + %mul28 = mul nsw i32 %i3.0, %n2, !dbg !2172 + %mul29 = mul nsw i32 %mul28, %n1, !dbg !2172 + %add30 = add nsw i32 %i2.0, 1, !dbg !2172 + %mul31 = mul nsw i32 %add30, %n1, !dbg !2172 + %add32 = add nsw i32 %mul29, %mul31, !dbg !2172 + %add33 = add nsw i32 %add32, %i1.0, !dbg !2172 + %idxprom34 = sext i32 %add33 to i64, !dbg !2172 + %arrayidx35 = getelementptr inbounds double, double* %or, i64 %idxprom34, !dbg !2172 + %7 = load double, double* %arrayidx35, align 8, !dbg !2172, !tbaa !437 + %add36 = fadd double %6, %7, !dbg !2173 + %sub37 = sub nsw i32 %i3.0, 1, !dbg !2174 + %mul38 = mul nsw i32 %sub37, %n2, !dbg !2174 + %mul39 = mul nsw i32 %mul38, %n1, !dbg !2174 + %mul40 = mul nsw i32 %i2.0, %n1, !dbg !2174 + %add41 = add nsw i32 %mul39, %mul40, !dbg !2174 + %add42 = add nsw i32 %add41, %i1.0, !dbg !2174 + %idxprom43 = sext i32 %add42 to i64, !dbg !2174 + %arrayidx44 = getelementptr inbounds double, double* %or, i64 %idxprom43, !dbg !2174 + %8 = load double, double* %arrayidx44, align 8, !dbg !2174, !tbaa !437 + %add45 = fadd double %add36, %8, !dbg !2175 + %add46 = add nsw i32 %i3.0, 1, !dbg !2176 + %mul47 = mul nsw i32 %add46, %n2, !dbg !2176 + %mul48 = mul nsw i32 %mul47, %n1, !dbg !2176 + %mul49 = mul nsw i32 %i2.0, %n1, !dbg !2176 + %add50 = add nsw i32 %mul48, %mul49, !dbg !2176 + %add51 = add nsw i32 %add50, %i1.0, !dbg !2176 + %idxprom52 = sext i32 %add51 to i64, !dbg !2176 + %arrayidx53 = getelementptr inbounds double, double* %or, i64 %idxprom52, !dbg !2176 + %9 = load double, double* %arrayidx53, align 8, !dbg !2176, !tbaa !437 + %add54 = fadd double %add45, %9, !dbg !2177 + %mul55 = mul nsw i32 %i3.0, %n2, !dbg !2178 + %mul56 = mul nsw i32 %mul55, %n1, !dbg !2178 + %mul57 = mul nsw i32 %i2.0, %n1, !dbg !2178 + %add58 = add nsw i32 %mul56, %mul57, !dbg !2178 + %add59 = add nsw i32 %add58, %i1.0, !dbg !2178 + %idxprom60 = sext i32 %add59 to i64, !dbg !2178 + %arrayidx61 = getelementptr inbounds double, double* %3, i64 %idxprom60, !dbg !2178 + store double %add54, double* %arrayidx61, align 8, !dbg !2179, !tbaa !437 + %sub62 = sub nsw i32 %i3.0, 1, !dbg !2180 + %mul63 = mul nsw i32 %sub62, %n2, !dbg !2180 + %mul64 = mul nsw i32 %mul63, %n1, !dbg !2180 + %sub65 = sub nsw i32 %i2.0, 1, !dbg !2180 + %mul66 = mul nsw i32 %sub65, %n1, !dbg !2180 + %add67 = add nsw i32 %mul64, %mul66, !dbg !2180 + %add68 = add nsw i32 %add67, %i1.0, !dbg !2180 + %idxprom69 = sext i32 %add68 to i64, !dbg !2180 + %arrayidx70 = getelementptr inbounds double, double* %or, i64 %idxprom69, !dbg !2180 + %10 = load double, double* %arrayidx70, align 8, !dbg !2180, !tbaa !437 + %sub71 = sub nsw i32 %i3.0, 1, !dbg !2181 + %mul72 = mul nsw i32 %sub71, %n2, !dbg !2181 + %mul73 = mul nsw i32 %mul72, %n1, !dbg !2181 + %add74 = add nsw i32 %i2.0, 1, !dbg !2181 + %mul75 = mul nsw i32 %add74, %n1, !dbg !2181 + %add76 = add nsw i32 %mul73, %mul75, !dbg !2181 + %add77 = add nsw i32 %add76, %i1.0, !dbg !2181 + %idxprom78 = sext i32 %add77 to i64, !dbg !2181 + %arrayidx79 = getelementptr inbounds double, double* %or, i64 %idxprom78, !dbg !2181 + %11 = load double, double* %arrayidx79, align 8, !dbg !2181, !tbaa !437 + %add80 = fadd double %10, %11, !dbg !2182 + %add81 = add nsw i32 %i3.0, 1, !dbg !2183 + %mul82 = mul nsw i32 %add81, %n2, !dbg !2183 + %mul83 = mul nsw i32 %mul82, %n1, !dbg !2183 + %sub84 = sub nsw i32 %i2.0, 1, !dbg !2183 + %mul85 = mul nsw i32 %sub84, %n1, !dbg !2183 + %add86 = add nsw i32 %mul83, %mul85, !dbg !2183 + %add87 = add nsw i32 %add86, %i1.0, !dbg !2183 + %idxprom88 = sext i32 %add87 to i64, !dbg !2183 + %arrayidx89 = getelementptr inbounds double, double* %or, i64 %idxprom88, !dbg !2183 + %12 = load double, double* %arrayidx89, align 8, !dbg !2183, !tbaa !437 + %add90 = fadd double %add80, %12, !dbg !2184 + %add91 = add nsw i32 %i3.0, 1, !dbg !2185 + %mul92 = mul nsw i32 %add91, %n2, !dbg !2185 + %mul93 = mul nsw i32 %mul92, %n1, !dbg !2185 + %add94 = add nsw i32 %i2.0, 1, !dbg !2185 + %mul95 = mul nsw i32 %add94, %n1, !dbg !2185 + %add96 = add nsw i32 %mul93, %mul95, !dbg !2185 + %add97 = add nsw i32 %add96, %i1.0, !dbg !2185 + %idxprom98 = sext i32 %add97 to i64, !dbg !2185 + %arrayidx99 = getelementptr inbounds double, double* %or, i64 %idxprom98, !dbg !2185 + %13 = load double, double* %arrayidx99, align 8, !dbg !2185, !tbaa !437 + %add100 = fadd double %add90, %13, !dbg !2186 + %mul101 = mul nsw i32 %i3.0, %n2, !dbg !2187 + %mul102 = mul nsw i32 %mul101, %n1, !dbg !2187 + %mul103 = mul nsw i32 %i2.0, %n1, !dbg !2187 + %add104 = add nsw i32 %mul102, %mul103, !dbg !2187 + %add105 = add nsw i32 %add104, %i1.0, !dbg !2187 + %idxprom106 = sext i32 %add105 to i64, !dbg !2187 + %arrayidx107 = getelementptr inbounds double, double* %4, i64 %idxprom106, !dbg !2187 + store double %add100, double* %arrayidx107, align 8, !dbg !2188, !tbaa !437 + br label %for.inc, !dbg !2189 + +for.inc: ; preds = %for.body21 + %inc = add nsw i32 %i1.0, 1, !dbg !2190 + call void @llvm.dbg.value(metadata i32 %inc, metadata !2120, metadata !DIExpression()), !dbg !2126 + br label %for.cond18, !dbg !2191, !llvm.loop !2192 + +for.end: ; preds = %for.cond18 + br label %for.inc108, !dbg !2194 + +for.inc108: ; preds = %for.end + %inc109 = add nsw i32 %i2.0, 1, !dbg !2195 + call void @llvm.dbg.value(metadata i32 %inc109, metadata !2119, metadata !DIExpression()), !dbg !2126 + br label %for.cond13, !dbg !2196, !llvm.loop !2197 + +for.end110: ; preds = %for.cond13 + br label %for.inc111, !dbg !2199 + +for.inc111: ; preds = %for.end110 + %inc112 = add nsw i32 %i3.0, 1, !dbg !2200 + call void @llvm.dbg.value(metadata i32 %inc112, metadata !2118, metadata !DIExpression()), !dbg !2126 + br label %for.cond, !dbg !2201, !llvm.loop !2202 + +for.end113: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 1, metadata !2118, metadata !DIExpression()), !dbg !2126 + br label %for.cond114, !dbg !2204 + +for.cond114: ; preds = %for.inc212, %for.end113 + %i3.1 = phi i32 [ 1, %for.end113 ], [ %inc213, %for.inc212 ], !dbg !2206 + call void @llvm.dbg.value(metadata i32 %i3.1, metadata !2118, metadata !DIExpression()), !dbg !2126 + %sub115 = sub nsw i32 %n3, 1, !dbg !2207 + %cmp116 = icmp slt i32 %i3.1, %sub115, !dbg !2209 + br i1 %cmp116, label %for.body118, label %for.end214, !dbg !2210 + +for.body118: ; preds = %for.cond114 + call void @llvm.dbg.value(metadata i32 1, metadata !2119, metadata !DIExpression()), !dbg !2126 + br label %for.cond119, !dbg !2211 + +for.cond119: ; preds = %for.inc209, %for.body118 + %i2.1 = phi i32 [ 1, %for.body118 ], [ %inc210, %for.inc209 ], !dbg !2214 + call void @llvm.dbg.value(metadata i32 %i2.1, metadata !2119, metadata !DIExpression()), !dbg !2126 + %sub120 = sub nsw i32 %n2, 1, !dbg !2215 + %cmp121 = icmp slt i32 %i2.1, %sub120, !dbg !2217 + br i1 %cmp121, label %for.body123, label %for.end211, !dbg !2218 + +for.body123: ; preds = %for.cond119 + call void @llvm.dbg.value(metadata i32 1, metadata !2120, metadata !DIExpression()), !dbg !2126 + br label %for.cond124, !dbg !2219 + +for.cond124: ; preds = %for.inc206, %for.body123 + %i1.1 = phi i32 [ 1, %for.body123 ], [ %inc207, %for.inc206 ], !dbg !2222 + call void @llvm.dbg.value(metadata i32 %i1.1, metadata !2120, metadata !DIExpression()), !dbg !2126 + %sub125 = sub nsw i32 %n1, 1, !dbg !2223 + %cmp126 = icmp slt i32 %i1.1, %sub125, !dbg !2225 + br i1 %cmp126, label %for.body128, label %for.end208, !dbg !2226 + +for.body128: ; preds = %for.cond124 + %mul129 = mul nsw i32 %i3.1, %n2, !dbg !2227 + %mul130 = mul nsw i32 %mul129, %n1, !dbg !2227 + %mul131 = mul nsw i32 %i2.1, %n1, !dbg !2227 + %add132 = add nsw i32 %mul130, %mul131, !dbg !2227 + %add133 = add nsw i32 %add132, %i1.1, !dbg !2227 + %idxprom134 = sext i32 %add133 to i64, !dbg !2227 + %arrayidx135 = getelementptr inbounds double, double* %ou, i64 %idxprom134, !dbg !2227 + %14 = load double, double* %arrayidx135, align 8, !dbg !2227, !tbaa !437 + %mul136 = mul nsw i32 %i3.1, %n2, !dbg !2229 + %mul137 = mul nsw i32 %mul136, %n1, !dbg !2229 + %mul138 = mul nsw i32 %i2.1, %n1, !dbg !2229 + %add139 = add nsw i32 %mul137, %mul138, !dbg !2229 + %add140 = add nsw i32 %add139, %i1.1, !dbg !2229 + %idxprom141 = sext i32 %add140 to i64, !dbg !2229 + %arrayidx142 = getelementptr inbounds double, double* %or, i64 %idxprom141, !dbg !2229 + %15 = load double, double* %arrayidx142, align 8, !dbg !2229, !tbaa !437 + %mul143 = fmul double %0, %15, !dbg !2230 + %add144 = fadd double %14, %mul143, !dbg !2231 + %mul145 = mul nsw i32 %i3.1, %n2, !dbg !2232 + %mul146 = mul nsw i32 %mul145, %n1, !dbg !2232 + %mul147 = mul nsw i32 %i2.1, %n1, !dbg !2232 + %add148 = add nsw i32 %mul146, %mul147, !dbg !2232 + %sub149 = sub nsw i32 %i1.1, 1, !dbg !2232 + %add150 = add nsw i32 %add148, %sub149, !dbg !2232 + %idxprom151 = sext i32 %add150 to i64, !dbg !2232 + %arrayidx152 = getelementptr inbounds double, double* %or, i64 %idxprom151, !dbg !2232 + %16 = load double, double* %arrayidx152, align 8, !dbg !2232, !tbaa !437 + %mul153 = mul nsw i32 %i3.1, %n2, !dbg !2233 + %mul154 = mul nsw i32 %mul153, %n1, !dbg !2233 + %mul155 = mul nsw i32 %i2.1, %n1, !dbg !2233 + %add156 = add nsw i32 %mul154, %mul155, !dbg !2233 + %add157 = add nsw i32 %i1.1, 1, !dbg !2233 + %add158 = add nsw i32 %add156, %add157, !dbg !2233 + %idxprom159 = sext i32 %add158 to i64, !dbg !2233 + %arrayidx160 = getelementptr inbounds double, double* %or, i64 %idxprom159, !dbg !2233 + %17 = load double, double* %arrayidx160, align 8, !dbg !2233, !tbaa !437 + %add161 = fadd double %16, %17, !dbg !2234 + %mul162 = mul nsw i32 %i3.1, %n2, !dbg !2235 + %mul163 = mul nsw i32 %mul162, %n1, !dbg !2235 + %mul164 = mul nsw i32 %i2.1, %n1, !dbg !2235 + %add165 = add nsw i32 %mul163, %mul164, !dbg !2235 + %add166 = add nsw i32 %add165, %i1.1, !dbg !2235 + %idxprom167 = sext i32 %add166 to i64, !dbg !2235 + %arrayidx168 = getelementptr inbounds double, double* %3, i64 %idxprom167, !dbg !2235 + %18 = load double, double* %arrayidx168, align 8, !dbg !2235, !tbaa !437 + %add169 = fadd double %add161, %18, !dbg !2236 + %mul170 = fmul double %1, %add169, !dbg !2237 + %add171 = fadd double %add144, %mul170, !dbg !2238 + %mul172 = mul nsw i32 %i3.1, %n2, !dbg !2239 + %mul173 = mul nsw i32 %mul172, %n1, !dbg !2239 + %mul174 = mul nsw i32 %i2.1, %n1, !dbg !2239 + %add175 = add nsw i32 %mul173, %mul174, !dbg !2239 + %add176 = add nsw i32 %add175, %i1.1, !dbg !2239 + %idxprom177 = sext i32 %add176 to i64, !dbg !2239 + %arrayidx178 = getelementptr inbounds double, double* %4, i64 %idxprom177, !dbg !2239 + %19 = load double, double* %arrayidx178, align 8, !dbg !2239, !tbaa !437 + %mul179 = mul nsw i32 %i3.1, %n2, !dbg !2240 + %mul180 = mul nsw i32 %mul179, %n1, !dbg !2240 + %mul181 = mul nsw i32 %i2.1, %n1, !dbg !2240 + %add182 = add nsw i32 %mul180, %mul181, !dbg !2240 + %sub183 = sub nsw i32 %i1.1, 1, !dbg !2240 + %add184 = add nsw i32 %add182, %sub183, !dbg !2240 + %idxprom185 = sext i32 %add184 to i64, !dbg !2240 + %arrayidx186 = getelementptr inbounds double, double* %3, i64 %idxprom185, !dbg !2240 + %20 = load double, double* %arrayidx186, align 8, !dbg !2240, !tbaa !437 + %add187 = fadd double %19, %20, !dbg !2241 + %mul188 = mul nsw i32 %i3.1, %n2, !dbg !2242 + %mul189 = mul nsw i32 %mul188, %n1, !dbg !2242 + %mul190 = mul nsw i32 %i2.1, %n1, !dbg !2242 + %add191 = add nsw i32 %mul189, %mul190, !dbg !2242 + %add192 = add nsw i32 %i1.1, 1, !dbg !2242 + %add193 = add nsw i32 %add191, %add192, !dbg !2242 + %idxprom194 = sext i32 %add193 to i64, !dbg !2242 + %arrayidx195 = getelementptr inbounds double, double* %3, i64 %idxprom194, !dbg !2242 + %21 = load double, double* %arrayidx195, align 8, !dbg !2242, !tbaa !437 + %add196 = fadd double %add187, %21, !dbg !2243 + %mul197 = fmul double %2, %add196, !dbg !2244 + %add198 = fadd double %add171, %mul197, !dbg !2245 + %mul199 = mul nsw i32 %i3.1, %n2, !dbg !2246 + %mul200 = mul nsw i32 %mul199, %n1, !dbg !2246 + %mul201 = mul nsw i32 %i2.1, %n1, !dbg !2246 + %add202 = add nsw i32 %mul200, %mul201, !dbg !2246 + %add203 = add nsw i32 %add202, %i1.1, !dbg !2246 + %idxprom204 = sext i32 %add203 to i64, !dbg !2246 + %arrayidx205 = getelementptr inbounds double, double* %ou, i64 %idxprom204, !dbg !2246 + store double %add198, double* %arrayidx205, align 8, !dbg !2247, !tbaa !437 + br label %for.inc206, !dbg !2248 + +for.inc206: ; preds = %for.body128 + %inc207 = add nsw i32 %i1.1, 1, !dbg !2249 + call void @llvm.dbg.value(metadata i32 %inc207, metadata !2120, metadata !DIExpression()), !dbg !2126 + br label %for.cond124, !dbg !2250, !llvm.loop !2251 + +for.end208: ; preds = %for.cond124 + br label %for.inc209, !dbg !2253 + +for.inc209: ; preds = %for.end208 + %inc210 = add nsw i32 %i2.1, 1, !dbg !2254 + call void @llvm.dbg.value(metadata i32 %inc210, metadata !2119, metadata !DIExpression()), !dbg !2126 + br label %for.cond119, !dbg !2255, !llvm.loop !2256 + +for.end211: ; preds = %for.cond119 + br label %for.inc212, !dbg !2258 + +for.inc212: ; preds = %for.end211 + %inc213 = add nsw i32 %i3.1, 1, !dbg !2259 + call void @llvm.dbg.value(metadata i32 %inc213, metadata !2118, metadata !DIExpression()), !dbg !2126 + br label %for.cond114, !dbg !2260, !llvm.loop !2261 + +for.end214: ; preds = %for.cond114 + %22 = load i32, i32* @timeron, align 4, !dbg !2263, !tbaa !242 + %tobool215 = icmp ne i32 %22, 0, !dbg !2263 + br i1 %tobool215, label %if.then216, label %if.end217, !dbg !2265 + +if.then216: ; preds = %for.end214 + call void @timer_stop(i32 3), !dbg !2266 + br label %if.end217, !dbg !2266 + +if.end217: ; preds = %if.then216, %for.end214 + %23 = bitcast double* %3 to i8*, !dbg !2267 + %call218 = call i32 @omp_get_default_device(), !dbg !2268 + call void @omp_target_free(i8* %23, i32 %call218), !dbg !2269 + %24 = bitcast double* %4 to i8*, !dbg !2270 + %call219 = call i32 @omp_get_default_device(), !dbg !2271 + call void @omp_target_free(i8* %24, i32 %call219), !dbg !2272 + call void @comm3(double* %ou, i32 %n1, i32 %n2, i32 %n3, i32 %k), !dbg !2273 + %25 = load i32, i32* getelementptr inbounds ([8 x i32], [8 x i32]* @debug_vec, i64 0, i64 0), align 16, !dbg !2274, !tbaa !278 + %cmp220 = icmp sge i32 %25, 1, !dbg !2276 + br i1 %cmp220, label %if.then222, label %if.end223, !dbg !2277 + +if.then222: ; preds = %if.end217 + call void @rep_nrm(double* %ou, i32 %n1, i32 %n2, i32 %n3, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.54, i64 0, i64 0), i32 %k), !dbg !2278 + br label %if.end223, !dbg !2280 + +if.end223: ; preds = %if.then222, %if.end217 + %26 = load i32, i32* getelementptr inbounds ([8 x i32], [8 x i32]* @debug_vec, i64 0, i64 3), align 4, !dbg !2281, !tbaa !278 + %cmp224 = icmp sge i32 %26, %k, !dbg !2283 + br i1 %cmp224, label %if.then226, label %if.end227, !dbg !2284 + +if.then226: ; preds = %if.end223 + call void @showall(double* %ou, i32 %n1, i32 %n2, i32 %n3), !dbg !2285 + br label %if.end227, !dbg !2287 + +if.end227: ; preds = %if.then226, %if.end223 + ret void, !dbg !2288 +} + +; Function Attrs: nounwind uwtable +define internal void @interp(double* %oz, i32 %mm1, i32 %mm2, i32 %mm3, double* %ou, i32 %n1, i32 %n2, i32 %n3, i32 %k) #0 !dbg !70 { +entry: + call void @llvm.dbg.value(metadata double* %oz, metadata !74, metadata !DIExpression()), !dbg !2289 + call void @llvm.dbg.value(metadata i32 %mm1, metadata !75, metadata !DIExpression()), !dbg !2289 + call void @llvm.dbg.value(metadata i32 %mm2, metadata !76, metadata !DIExpression()), !dbg !2289 + call void @llvm.dbg.value(metadata i32 %mm3, metadata !77, metadata !DIExpression()), !dbg !2289 + call void @llvm.dbg.value(metadata double* %ou, metadata !78, metadata !DIExpression()), !dbg !2289 + call void @llvm.dbg.value(metadata i32 %n1, metadata !79, metadata !DIExpression()), !dbg !2289 + call void @llvm.dbg.value(metadata i32 %n2, metadata !80, metadata !DIExpression()), !dbg !2289 + call void @llvm.dbg.value(metadata i32 %n3, metadata !81, metadata !DIExpression()), !dbg !2289 + call void @llvm.dbg.value(metadata i32 %k, metadata !82, metadata !DIExpression()), !dbg !2289 + %mul = mul nsw i32 %mm3, %mm2, !dbg !2290 + %mul1 = mul nsw i32 %mul, %mm1, !dbg !2291 + %conv = sext i32 %mul1 to i64, !dbg !2292 + %mul2 = mul i64 %conv, 8, !dbg !2293 + %call = call i32 @omp_get_default_device(), !dbg !2294 + %call3 = call i8* @omp_target_alloc(i64 %mul2, i32 %call), !dbg !2295 + %0 = bitcast i8* %call3 to double*, !dbg !2296 + store double* %0, double** @interp.z1, align 8, !dbg !2297, !tbaa !198 + %mul4 = mul nsw i32 %mm3, %mm2, !dbg !2298 + %mul5 = mul nsw i32 %mul4, %mm1, !dbg !2299 + %conv6 = sext i32 %mul5 to i64, !dbg !2300 + %mul7 = mul i64 %conv6, 8, !dbg !2301 + %call8 = call i32 @omp_get_default_device(), !dbg !2302 + %call9 = call i8* @omp_target_alloc(i64 %mul7, i32 %call8), !dbg !2303 + %1 = bitcast i8* %call9 to double*, !dbg !2304 + store double* %1, double** @interp.z2, align 8, !dbg !2305, !tbaa !198 + %mul10 = mul nsw i32 %mm3, %mm2, !dbg !2306 + %mul11 = mul nsw i32 %mul10, %mm1, !dbg !2307 + %conv12 = sext i32 %mul11 to i64, !dbg !2308 + %mul13 = mul i64 %conv12, 8, !dbg !2309 + %call14 = call i32 @omp_get_default_device(), !dbg !2310 + %call15 = call i8* @omp_target_alloc(i64 %mul13, i32 %call14), !dbg !2311 + %2 = bitcast i8* %call15 to double*, !dbg !2312 + store double* %2, double** @interp.z3, align 8, !dbg !2313, !tbaa !198 + %3 = load i32, i32* @timeron, align 4, !dbg !2314, !tbaa !242 + %tobool = icmp ne i32 %3, 0, !dbg !2314 + br i1 %tobool, label %if.then, label %if.end, !dbg !2316 + +if.then: ; preds = %entry + call void @timer_start(i32 7), !dbg !2317 + br label %if.end, !dbg !2317 + +if.end: ; preds = %if.then, %entry + %cmp = icmp ne i32 %n1, 3, !dbg !2318 + br i1 %cmp, label %land.lhs.true, label %if.else, !dbg !2320 + +land.lhs.true: ; preds = %if.end + %cmp17 = icmp ne i32 %n2, 3, !dbg !2321 + br i1 %cmp17, label %land.lhs.true19, label %if.else, !dbg !2322 + +land.lhs.true19: ; preds = %land.lhs.true + %cmp20 = icmp ne i32 %n3, 3, !dbg !2323 + br i1 %cmp20, label %if.then22, label %if.else, !dbg !2324 + +if.then22: ; preds = %land.lhs.true19 + call void @llvm.dbg.value(metadata i32 0, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond, !dbg !2325 + +for.cond: ; preds = %for.inc113, %if.then22 + %i3.0 = phi i32 [ 0, %if.then22 ], [ %inc114, %for.inc113 ], !dbg !2328 + call void @llvm.dbg.value(metadata i32 %i3.0, metadata !83, metadata !DIExpression()), !dbg !2289 + %sub = sub nsw i32 %mm3, 1, !dbg !2329 + %cmp23 = icmp slt i32 %i3.0, %sub, !dbg !2331 + br i1 %cmp23, label %for.body, label %for.end115, !dbg !2332 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 0, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond25, !dbg !2333 + +for.cond25: ; preds = %for.inc110, %for.body + %i2.0 = phi i32 [ 0, %for.body ], [ %inc111, %for.inc110 ], !dbg !2336 + call void @llvm.dbg.value(metadata i32 %i2.0, metadata !84, metadata !DIExpression()), !dbg !2289 + %sub26 = sub nsw i32 %mm2, 1, !dbg !2337 + %cmp27 = icmp slt i32 %i2.0, %sub26, !dbg !2339 + br i1 %cmp27, label %for.body29, label %for.end112, !dbg !2340 + +for.body29: ; preds = %for.cond25 + call void @llvm.dbg.value(metadata i32 0, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond30, !dbg !2341 + +for.cond30: ; preds = %for.inc, %for.body29 + %i1.0 = phi i32 [ 0, %for.body29 ], [ %inc, %for.inc ], !dbg !2344 + call void @llvm.dbg.value(metadata i32 %i1.0, metadata !85, metadata !DIExpression()), !dbg !2289 + %cmp31 = icmp slt i32 %i1.0, %mm1, !dbg !2345 + br i1 %cmp31, label %for.body33, label %for.end, !dbg !2347 + +for.body33: ; preds = %for.cond30 + %mul34 = mul nsw i32 %i3.0, %mm2, !dbg !2348 + %mul35 = mul nsw i32 %mul34, %mm1, !dbg !2348 + %add = add nsw i32 %i2.0, 1, !dbg !2348 + %mul36 = mul nsw i32 %add, %mm1, !dbg !2348 + %add37 = add nsw i32 %mul35, %mul36, !dbg !2348 + %add38 = add nsw i32 %add37, %i1.0, !dbg !2348 + %idxprom = sext i32 %add38 to i64, !dbg !2348 + %arrayidx = getelementptr inbounds double, double* %oz, i64 %idxprom, !dbg !2348 + %4 = load double, double* %arrayidx, align 8, !dbg !2348, !tbaa !437 + %mul39 = mul nsw i32 %i3.0, %mm2, !dbg !2350 + %mul40 = mul nsw i32 %mul39, %mm1, !dbg !2350 + %mul41 = mul nsw i32 %i2.0, %mm1, !dbg !2350 + %add42 = add nsw i32 %mul40, %mul41, !dbg !2350 + %add43 = add nsw i32 %add42, %i1.0, !dbg !2350 + %idxprom44 = sext i32 %add43 to i64, !dbg !2350 + %arrayidx45 = getelementptr inbounds double, double* %oz, i64 %idxprom44, !dbg !2350 + %5 = load double, double* %arrayidx45, align 8, !dbg !2350, !tbaa !437 + %add46 = fadd double %4, %5, !dbg !2351 + %6 = load double*, double** @interp.z1, align 8, !dbg !2352, !tbaa !198 + %mul47 = mul nsw i32 %i3.0, %mm2, !dbg !2352 + %mul48 = mul nsw i32 %mul47, %mm1, !dbg !2352 + %mul49 = mul nsw i32 %i2.0, %mm1, !dbg !2352 + %add50 = add nsw i32 %mul48, %mul49, !dbg !2352 + %add51 = add nsw i32 %add50, %i1.0, !dbg !2352 + %idxprom52 = sext i32 %add51 to i64, !dbg !2352 + %arrayidx53 = getelementptr inbounds double, double* %6, i64 %idxprom52, !dbg !2352 + store double %add46, double* %arrayidx53, align 8, !dbg !2353, !tbaa !437 + %add54 = add nsw i32 %i3.0, 1, !dbg !2354 + %mul55 = mul nsw i32 %add54, %mm2, !dbg !2354 + %mul56 = mul nsw i32 %mul55, %mm1, !dbg !2354 + %mul57 = mul nsw i32 %i2.0, %mm1, !dbg !2354 + %add58 = add nsw i32 %mul56, %mul57, !dbg !2354 + %add59 = add nsw i32 %add58, %i1.0, !dbg !2354 + %idxprom60 = sext i32 %add59 to i64, !dbg !2354 + %arrayidx61 = getelementptr inbounds double, double* %oz, i64 %idxprom60, !dbg !2354 + %7 = load double, double* %arrayidx61, align 8, !dbg !2354, !tbaa !437 + %mul62 = mul nsw i32 %i3.0, %mm2, !dbg !2355 + %mul63 = mul nsw i32 %mul62, %mm1, !dbg !2355 + %mul64 = mul nsw i32 %i2.0, %mm1, !dbg !2355 + %add65 = add nsw i32 %mul63, %mul64, !dbg !2355 + %add66 = add nsw i32 %add65, %i1.0, !dbg !2355 + %idxprom67 = sext i32 %add66 to i64, !dbg !2355 + %arrayidx68 = getelementptr inbounds double, double* %oz, i64 %idxprom67, !dbg !2355 + %8 = load double, double* %arrayidx68, align 8, !dbg !2355, !tbaa !437 + %add69 = fadd double %7, %8, !dbg !2356 + %9 = load double*, double** @interp.z2, align 8, !dbg !2357, !tbaa !198 + %mul70 = mul nsw i32 %i3.0, %mm2, !dbg !2357 + %mul71 = mul nsw i32 %mul70, %mm1, !dbg !2357 + %mul72 = mul nsw i32 %i2.0, %mm1, !dbg !2357 + %add73 = add nsw i32 %mul71, %mul72, !dbg !2357 + %add74 = add nsw i32 %add73, %i1.0, !dbg !2357 + %idxprom75 = sext i32 %add74 to i64, !dbg !2357 + %arrayidx76 = getelementptr inbounds double, double* %9, i64 %idxprom75, !dbg !2357 + store double %add69, double* %arrayidx76, align 8, !dbg !2358, !tbaa !437 + %add77 = add nsw i32 %i3.0, 1, !dbg !2359 + %mul78 = mul nsw i32 %add77, %mm2, !dbg !2359 + %mul79 = mul nsw i32 %mul78, %mm1, !dbg !2359 + %add80 = add nsw i32 %i2.0, 1, !dbg !2359 + %mul81 = mul nsw i32 %add80, %mm1, !dbg !2359 + %add82 = add nsw i32 %mul79, %mul81, !dbg !2359 + %add83 = add nsw i32 %add82, %i1.0, !dbg !2359 + %idxprom84 = sext i32 %add83 to i64, !dbg !2359 + %arrayidx85 = getelementptr inbounds double, double* %oz, i64 %idxprom84, !dbg !2359 + %10 = load double, double* %arrayidx85, align 8, !dbg !2359, !tbaa !437 + %add86 = add nsw i32 %i3.0, 1, !dbg !2360 + %mul87 = mul nsw i32 %add86, %mm2, !dbg !2360 + %mul88 = mul nsw i32 %mul87, %mm1, !dbg !2360 + %mul89 = mul nsw i32 %i2.0, %mm1, !dbg !2360 + %add90 = add nsw i32 %mul88, %mul89, !dbg !2360 + %add91 = add nsw i32 %add90, %i1.0, !dbg !2360 + %idxprom92 = sext i32 %add91 to i64, !dbg !2360 + %arrayidx93 = getelementptr inbounds double, double* %oz, i64 %idxprom92, !dbg !2360 + %11 = load double, double* %arrayidx93, align 8, !dbg !2360, !tbaa !437 + %add94 = fadd double %10, %11, !dbg !2361 + %12 = load double*, double** @interp.z1, align 8, !dbg !2362, !tbaa !198 + %mul95 = mul nsw i32 %i3.0, %mm2, !dbg !2362 + %mul96 = mul nsw i32 %mul95, %mm1, !dbg !2362 + %mul97 = mul nsw i32 %i2.0, %mm1, !dbg !2362 + %add98 = add nsw i32 %mul96, %mul97, !dbg !2362 + %add99 = add nsw i32 %add98, %i1.0, !dbg !2362 + %idxprom100 = sext i32 %add99 to i64, !dbg !2362 + %arrayidx101 = getelementptr inbounds double, double* %12, i64 %idxprom100, !dbg !2362 + %13 = load double, double* %arrayidx101, align 8, !dbg !2362, !tbaa !437 + %add102 = fadd double %add94, %13, !dbg !2363 + %14 = load double*, double** @interp.z3, align 8, !dbg !2364, !tbaa !198 + %mul103 = mul nsw i32 %i3.0, %mm2, !dbg !2364 + %mul104 = mul nsw i32 %mul103, %mm1, !dbg !2364 + %mul105 = mul nsw i32 %i2.0, %mm1, !dbg !2364 + %add106 = add nsw i32 %mul104, %mul105, !dbg !2364 + %add107 = add nsw i32 %add106, %i1.0, !dbg !2364 + %idxprom108 = sext i32 %add107 to i64, !dbg !2364 + %arrayidx109 = getelementptr inbounds double, double* %14, i64 %idxprom108, !dbg !2364 + store double %add102, double* %arrayidx109, align 8, !dbg !2365, !tbaa !437 + br label %for.inc, !dbg !2366 + +for.inc: ; preds = %for.body33 + %inc = add nsw i32 %i1.0, 1, !dbg !2367 + call void @llvm.dbg.value(metadata i32 %inc, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond30, !dbg !2368, !llvm.loop !2369 + +for.end: ; preds = %for.cond30 + br label %for.inc110, !dbg !2371 + +for.inc110: ; preds = %for.end + %inc111 = add nsw i32 %i2.0, 1, !dbg !2372 + call void @llvm.dbg.value(metadata i32 %inc111, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond25, !dbg !2373, !llvm.loop !2374 + +for.end112: ; preds = %for.cond25 + br label %for.inc113, !dbg !2376 + +for.inc113: ; preds = %for.end112 + %inc114 = add nsw i32 %i3.0, 1, !dbg !2377 + call void @llvm.dbg.value(metadata i32 %inc114, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond, !dbg !2378, !llvm.loop !2379 + +for.end115: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 0, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond116, !dbg !2381 + +for.cond116: ; preds = %for.inc205, %for.end115 + %i3.1 = phi i32 [ 0, %for.end115 ], [ %inc206, %for.inc205 ], !dbg !2383 + call void @llvm.dbg.value(metadata i32 %i3.1, metadata !83, metadata !DIExpression()), !dbg !2289 + %sub117 = sub nsw i32 %mm3, 1, !dbg !2384 + %cmp118 = icmp slt i32 %i3.1, %sub117, !dbg !2386 + br i1 %cmp118, label %for.body120, label %for.end207, !dbg !2387 + +for.body120: ; preds = %for.cond116 + call void @llvm.dbg.value(metadata i32 0, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond121, !dbg !2388 + +for.cond121: ; preds = %for.inc202, %for.body120 + %i2.1 = phi i32 [ 0, %for.body120 ], [ %inc203, %for.inc202 ], !dbg !2391 + call void @llvm.dbg.value(metadata i32 %i2.1, metadata !84, metadata !DIExpression()), !dbg !2289 + %sub122 = sub nsw i32 %mm2, 1, !dbg !2392 + %cmp123 = icmp slt i32 %i2.1, %sub122, !dbg !2394 + br i1 %cmp123, label %for.body125, label %for.end204, !dbg !2395 + +for.body125: ; preds = %for.cond121 + call void @llvm.dbg.value(metadata i32 0, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond126, !dbg !2396 + +for.cond126: ; preds = %for.inc199, %for.body125 + %i1.1 = phi i32 [ 0, %for.body125 ], [ %inc200, %for.inc199 ], !dbg !2399 + call void @llvm.dbg.value(metadata i32 %i1.1, metadata !85, metadata !DIExpression()), !dbg !2289 + %sub127 = sub nsw i32 %mm1, 1, !dbg !2400 + %cmp128 = icmp slt i32 %i1.1, %sub127, !dbg !2402 + br i1 %cmp128, label %for.body130, label %for.end201, !dbg !2403 + +for.body130: ; preds = %for.cond126 + %mul131 = mul nsw i32 2, %i3.1, !dbg !2404 + %mul132 = mul nsw i32 %mul131, %n2, !dbg !2404 + %mul133 = mul nsw i32 %mul132, %n1, !dbg !2404 + %mul134 = mul nsw i32 2, %i2.1, !dbg !2404 + %mul135 = mul nsw i32 %mul134, %n1, !dbg !2404 + %add136 = add nsw i32 %mul133, %mul135, !dbg !2404 + %mul137 = mul nsw i32 2, %i1.1, !dbg !2404 + %add138 = add nsw i32 %add136, %mul137, !dbg !2404 + %idxprom139 = sext i32 %add138 to i64, !dbg !2404 + %arrayidx140 = getelementptr inbounds double, double* %ou, i64 %idxprom139, !dbg !2404 + %15 = load double, double* %arrayidx140, align 8, !dbg !2404, !tbaa !437 + %mul141 = mul nsw i32 %i3.1, %mm2, !dbg !2406 + %mul142 = mul nsw i32 %mul141, %mm1, !dbg !2406 + %mul143 = mul nsw i32 %i2.1, %mm1, !dbg !2406 + %add144 = add nsw i32 %mul142, %mul143, !dbg !2406 + %add145 = add nsw i32 %add144, %i1.1, !dbg !2406 + %idxprom146 = sext i32 %add145 to i64, !dbg !2406 + %arrayidx147 = getelementptr inbounds double, double* %oz, i64 %idxprom146, !dbg !2406 + %16 = load double, double* %arrayidx147, align 8, !dbg !2406, !tbaa !437 + %add148 = fadd double %15, %16, !dbg !2407 + %mul149 = mul nsw i32 2, %i3.1, !dbg !2408 + %mul150 = mul nsw i32 %mul149, %n2, !dbg !2408 + %mul151 = mul nsw i32 %mul150, %n1, !dbg !2408 + %mul152 = mul nsw i32 2, %i2.1, !dbg !2408 + %mul153 = mul nsw i32 %mul152, %n1, !dbg !2408 + %add154 = add nsw i32 %mul151, %mul153, !dbg !2408 + %mul155 = mul nsw i32 2, %i1.1, !dbg !2408 + %add156 = add nsw i32 %add154, %mul155, !dbg !2408 + %idxprom157 = sext i32 %add156 to i64, !dbg !2408 + %arrayidx158 = getelementptr inbounds double, double* %ou, i64 %idxprom157, !dbg !2408 + store double %add148, double* %arrayidx158, align 8, !dbg !2409, !tbaa !437 + %mul159 = mul nsw i32 2, %i3.1, !dbg !2410 + %mul160 = mul nsw i32 %mul159, %n2, !dbg !2410 + %mul161 = mul nsw i32 %mul160, %n1, !dbg !2410 + %mul162 = mul nsw i32 2, %i2.1, !dbg !2410 + %mul163 = mul nsw i32 %mul162, %n1, !dbg !2410 + %add164 = add nsw i32 %mul161, %mul163, !dbg !2410 + %mul165 = mul nsw i32 2, %i1.1, !dbg !2410 + %add166 = add nsw i32 %mul165, 1, !dbg !2410 + %add167 = add nsw i32 %add164, %add166, !dbg !2410 + %idxprom168 = sext i32 %add167 to i64, !dbg !2410 + %arrayidx169 = getelementptr inbounds double, double* %ou, i64 %idxprom168, !dbg !2410 + %17 = load double, double* %arrayidx169, align 8, !dbg !2410, !tbaa !437 + %mul170 = mul nsw i32 %i3.1, %mm2, !dbg !2411 + %mul171 = mul nsw i32 %mul170, %mm1, !dbg !2411 + %mul172 = mul nsw i32 %i2.1, %mm1, !dbg !2411 + %add173 = add nsw i32 %mul171, %mul172, !dbg !2411 + %add174 = add nsw i32 %i1.1, 1, !dbg !2411 + %add175 = add nsw i32 %add173, %add174, !dbg !2411 + %idxprom176 = sext i32 %add175 to i64, !dbg !2411 + %arrayidx177 = getelementptr inbounds double, double* %oz, i64 %idxprom176, !dbg !2411 + %18 = load double, double* %arrayidx177, align 8, !dbg !2411, !tbaa !437 + %mul178 = mul nsw i32 %i3.1, %mm2, !dbg !2412 + %mul179 = mul nsw i32 %mul178, %mm1, !dbg !2412 + %mul180 = mul nsw i32 %i2.1, %mm1, !dbg !2412 + %add181 = add nsw i32 %mul179, %mul180, !dbg !2412 + %add182 = add nsw i32 %add181, %i1.1, !dbg !2412 + %idxprom183 = sext i32 %add182 to i64, !dbg !2412 + %arrayidx184 = getelementptr inbounds double, double* %oz, i64 %idxprom183, !dbg !2412 + %19 = load double, double* %arrayidx184, align 8, !dbg !2412, !tbaa !437 + %add185 = fadd double %18, %19, !dbg !2413 + %mul186 = fmul double 5.000000e-01, %add185, !dbg !2414 + %add187 = fadd double %17, %mul186, !dbg !2415 + %mul188 = mul nsw i32 2, %i3.1, !dbg !2416 + %mul189 = mul nsw i32 %mul188, %n2, !dbg !2416 + %mul190 = mul nsw i32 %mul189, %n1, !dbg !2416 + %mul191 = mul nsw i32 2, %i2.1, !dbg !2416 + %mul192 = mul nsw i32 %mul191, %n1, !dbg !2416 + %add193 = add nsw i32 %mul190, %mul192, !dbg !2416 + %mul194 = mul nsw i32 2, %i1.1, !dbg !2416 + %add195 = add nsw i32 %mul194, 1, !dbg !2416 + %add196 = add nsw i32 %add193, %add195, !dbg !2416 + %idxprom197 = sext i32 %add196 to i64, !dbg !2416 + %arrayidx198 = getelementptr inbounds double, double* %ou, i64 %idxprom197, !dbg !2416 + store double %add187, double* %arrayidx198, align 8, !dbg !2417, !tbaa !437 + br label %for.inc199, !dbg !2418 + +for.inc199: ; preds = %for.body130 + %inc200 = add nsw i32 %i1.1, 1, !dbg !2419 + call void @llvm.dbg.value(metadata i32 %inc200, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond126, !dbg !2420, !llvm.loop !2421 + +for.end201: ; preds = %for.cond126 + br label %for.inc202, !dbg !2423 + +for.inc202: ; preds = %for.end201 + %inc203 = add nsw i32 %i2.1, 1, !dbg !2424 + call void @llvm.dbg.value(metadata i32 %inc203, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond121, !dbg !2425, !llvm.loop !2426 + +for.end204: ; preds = %for.cond121 + br label %for.inc205, !dbg !2428 + +for.inc205: ; preds = %for.end204 + %inc206 = add nsw i32 %i3.1, 1, !dbg !2429 + call void @llvm.dbg.value(metadata i32 %inc206, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond116, !dbg !2430, !llvm.loop !2431 + +for.end207: ; preds = %for.cond116 + call void @llvm.dbg.value(metadata i32 0, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond208, !dbg !2433 + +for.cond208: ; preds = %for.inc302, %for.end207 + %i3.2 = phi i32 [ 0, %for.end207 ], [ %inc303, %for.inc302 ], !dbg !2435 + call void @llvm.dbg.value(metadata i32 %i3.2, metadata !83, metadata !DIExpression()), !dbg !2289 + %sub209 = sub nsw i32 %mm3, 1, !dbg !2436 + %cmp210 = icmp slt i32 %i3.2, %sub209, !dbg !2438 + br i1 %cmp210, label %for.body212, label %for.end304, !dbg !2439 + +for.body212: ; preds = %for.cond208 + call void @llvm.dbg.value(metadata i32 0, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond213, !dbg !2440 + +for.cond213: ; preds = %for.inc299, %for.body212 + %i2.2 = phi i32 [ 0, %for.body212 ], [ %inc300, %for.inc299 ], !dbg !2443 + call void @llvm.dbg.value(metadata i32 %i2.2, metadata !84, metadata !DIExpression()), !dbg !2289 + %sub214 = sub nsw i32 %mm2, 1, !dbg !2444 + %cmp215 = icmp slt i32 %i2.2, %sub214, !dbg !2446 + br i1 %cmp215, label %for.body217, label %for.end301, !dbg !2447 + +for.body217: ; preds = %for.cond213 + call void @llvm.dbg.value(metadata i32 0, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond218, !dbg !2448 + +for.cond218: ; preds = %for.inc296, %for.body217 + %i1.2 = phi i32 [ 0, %for.body217 ], [ %inc297, %for.inc296 ], !dbg !2451 + call void @llvm.dbg.value(metadata i32 %i1.2, metadata !85, metadata !DIExpression()), !dbg !2289 + %sub219 = sub nsw i32 %mm1, 1, !dbg !2452 + %cmp220 = icmp slt i32 %i1.2, %sub219, !dbg !2454 + br i1 %cmp220, label %for.body222, label %for.end298, !dbg !2455 + +for.body222: ; preds = %for.cond218 + %mul223 = mul nsw i32 2, %i3.2, !dbg !2456 + %mul224 = mul nsw i32 %mul223, %n2, !dbg !2456 + %mul225 = mul nsw i32 %mul224, %n1, !dbg !2456 + %mul226 = mul nsw i32 2, %i2.2, !dbg !2456 + %add227 = add nsw i32 %mul226, 1, !dbg !2456 + %mul228 = mul nsw i32 %add227, %n1, !dbg !2456 + %add229 = add nsw i32 %mul225, %mul228, !dbg !2456 + %mul230 = mul nsw i32 2, %i1.2, !dbg !2456 + %add231 = add nsw i32 %add229, %mul230, !dbg !2456 + %idxprom232 = sext i32 %add231 to i64, !dbg !2456 + %arrayidx233 = getelementptr inbounds double, double* %ou, i64 %idxprom232, !dbg !2456 + %20 = load double, double* %arrayidx233, align 8, !dbg !2456, !tbaa !437 + %21 = load double*, double** @interp.z1, align 8, !dbg !2458, !tbaa !198 + %mul234 = mul nsw i32 %i3.2, %mm2, !dbg !2458 + %mul235 = mul nsw i32 %mul234, %mm1, !dbg !2458 + %mul236 = mul nsw i32 %i2.2, %mm1, !dbg !2458 + %add237 = add nsw i32 %mul235, %mul236, !dbg !2458 + %add238 = add nsw i32 %add237, %i1.2, !dbg !2458 + %idxprom239 = sext i32 %add238 to i64, !dbg !2458 + %arrayidx240 = getelementptr inbounds double, double* %21, i64 %idxprom239, !dbg !2458 + %22 = load double, double* %arrayidx240, align 8, !dbg !2458, !tbaa !437 + %mul241 = fmul double 5.000000e-01, %22, !dbg !2459 + %add242 = fadd double %20, %mul241, !dbg !2460 + %mul243 = mul nsw i32 2, %i3.2, !dbg !2461 + %mul244 = mul nsw i32 %mul243, %n2, !dbg !2461 + %mul245 = mul nsw i32 %mul244, %n1, !dbg !2461 + %mul246 = mul nsw i32 2, %i2.2, !dbg !2461 + %add247 = add nsw i32 %mul246, 1, !dbg !2461 + %mul248 = mul nsw i32 %add247, %n1, !dbg !2461 + %add249 = add nsw i32 %mul245, %mul248, !dbg !2461 + %mul250 = mul nsw i32 2, %i1.2, !dbg !2461 + %add251 = add nsw i32 %add249, %mul250, !dbg !2461 + %idxprom252 = sext i32 %add251 to i64, !dbg !2461 + %arrayidx253 = getelementptr inbounds double, double* %ou, i64 %idxprom252, !dbg !2461 + store double %add242, double* %arrayidx253, align 8, !dbg !2462, !tbaa !437 + %mul254 = mul nsw i32 2, %i3.2, !dbg !2463 + %mul255 = mul nsw i32 %mul254, %n2, !dbg !2463 + %mul256 = mul nsw i32 %mul255, %n1, !dbg !2463 + %mul257 = mul nsw i32 2, %i2.2, !dbg !2463 + %add258 = add nsw i32 %mul257, 1, !dbg !2463 + %mul259 = mul nsw i32 %add258, %n1, !dbg !2463 + %add260 = add nsw i32 %mul256, %mul259, !dbg !2463 + %mul261 = mul nsw i32 2, %i1.2, !dbg !2463 + %add262 = add nsw i32 %mul261, 1, !dbg !2463 + %add263 = add nsw i32 %add260, %add262, !dbg !2463 + %idxprom264 = sext i32 %add263 to i64, !dbg !2463 + %arrayidx265 = getelementptr inbounds double, double* %ou, i64 %idxprom264, !dbg !2463 + %23 = load double, double* %arrayidx265, align 8, !dbg !2463, !tbaa !437 + %24 = load double*, double** @interp.z1, align 8, !dbg !2464, !tbaa !198 + %mul266 = mul nsw i32 %i3.2, %mm2, !dbg !2464 + %mul267 = mul nsw i32 %mul266, %mm1, !dbg !2464 + %mul268 = mul nsw i32 %i2.2, %mm1, !dbg !2464 + %add269 = add nsw i32 %mul267, %mul268, !dbg !2464 + %add270 = add nsw i32 %add269, %i1.2, !dbg !2464 + %idxprom271 = sext i32 %add270 to i64, !dbg !2464 + %arrayidx272 = getelementptr inbounds double, double* %24, i64 %idxprom271, !dbg !2464 + %25 = load double, double* %arrayidx272, align 8, !dbg !2464, !tbaa !437 + %26 = load double*, double** @interp.z1, align 8, !dbg !2465, !tbaa !198 + %mul273 = mul nsw i32 %i3.2, %mm2, !dbg !2465 + %mul274 = mul nsw i32 %mul273, %mm1, !dbg !2465 + %mul275 = mul nsw i32 %i2.2, %mm1, !dbg !2465 + %add276 = add nsw i32 %mul274, %mul275, !dbg !2465 + %add277 = add nsw i32 %i1.2, 1, !dbg !2465 + %add278 = add nsw i32 %add276, %add277, !dbg !2465 + %idxprom279 = sext i32 %add278 to i64, !dbg !2465 + %arrayidx280 = getelementptr inbounds double, double* %26, i64 %idxprom279, !dbg !2465 + %27 = load double, double* %arrayidx280, align 8, !dbg !2465, !tbaa !437 + %add281 = fadd double %25, %27, !dbg !2466 + %mul282 = fmul double 2.500000e-01, %add281, !dbg !2467 + %add283 = fadd double %23, %mul282, !dbg !2468 + %mul284 = mul nsw i32 2, %i3.2, !dbg !2469 + %mul285 = mul nsw i32 %mul284, %n2, !dbg !2469 + %mul286 = mul nsw i32 %mul285, %n1, !dbg !2469 + %mul287 = mul nsw i32 2, %i2.2, !dbg !2469 + %add288 = add nsw i32 %mul287, 1, !dbg !2469 + %mul289 = mul nsw i32 %add288, %n1, !dbg !2469 + %add290 = add nsw i32 %mul286, %mul289, !dbg !2469 + %mul291 = mul nsw i32 2, %i1.2, !dbg !2469 + %add292 = add nsw i32 %mul291, 1, !dbg !2469 + %add293 = add nsw i32 %add290, %add292, !dbg !2469 + %idxprom294 = sext i32 %add293 to i64, !dbg !2469 + %arrayidx295 = getelementptr inbounds double, double* %ou, i64 %idxprom294, !dbg !2469 + store double %add283, double* %arrayidx295, align 8, !dbg !2470, !tbaa !437 + br label %for.inc296, !dbg !2471 + +for.inc296: ; preds = %for.body222 + %inc297 = add nsw i32 %i1.2, 1, !dbg !2472 + call void @llvm.dbg.value(metadata i32 %inc297, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond218, !dbg !2473, !llvm.loop !2474 + +for.end298: ; preds = %for.cond218 + br label %for.inc299, !dbg !2476 + +for.inc299: ; preds = %for.end298 + %inc300 = add nsw i32 %i2.2, 1, !dbg !2477 + call void @llvm.dbg.value(metadata i32 %inc300, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond213, !dbg !2478, !llvm.loop !2479 + +for.end301: ; preds = %for.cond213 + br label %for.inc302, !dbg !2481 + +for.inc302: ; preds = %for.end301 + %inc303 = add nsw i32 %i3.2, 1, !dbg !2482 + call void @llvm.dbg.value(metadata i32 %inc303, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond208, !dbg !2483, !llvm.loop !2484 + +for.end304: ; preds = %for.cond208 + call void @llvm.dbg.value(metadata i32 0, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond305, !dbg !2486 + +for.cond305: ; preds = %for.inc399, %for.end304 + %i3.3 = phi i32 [ 0, %for.end304 ], [ %inc400, %for.inc399 ], !dbg !2488 + call void @llvm.dbg.value(metadata i32 %i3.3, metadata !83, metadata !DIExpression()), !dbg !2289 + %sub306 = sub nsw i32 %mm3, 1, !dbg !2489 + %cmp307 = icmp slt i32 %i3.3, %sub306, !dbg !2491 + br i1 %cmp307, label %for.body309, label %for.end401, !dbg !2492 + +for.body309: ; preds = %for.cond305 + call void @llvm.dbg.value(metadata i32 0, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond310, !dbg !2493 + +for.cond310: ; preds = %for.inc396, %for.body309 + %i2.3 = phi i32 [ 0, %for.body309 ], [ %inc397, %for.inc396 ], !dbg !2496 + call void @llvm.dbg.value(metadata i32 %i2.3, metadata !84, metadata !DIExpression()), !dbg !2289 + %sub311 = sub nsw i32 %mm2, 1, !dbg !2497 + %cmp312 = icmp slt i32 %i2.3, %sub311, !dbg !2499 + br i1 %cmp312, label %for.body314, label %for.end398, !dbg !2500 + +for.body314: ; preds = %for.cond310 + call void @llvm.dbg.value(metadata i32 0, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond315, !dbg !2501 + +for.cond315: ; preds = %for.inc393, %for.body314 + %i1.3 = phi i32 [ 0, %for.body314 ], [ %inc394, %for.inc393 ], !dbg !2504 + call void @llvm.dbg.value(metadata i32 %i1.3, metadata !85, metadata !DIExpression()), !dbg !2289 + %sub316 = sub nsw i32 %mm1, 1, !dbg !2505 + %cmp317 = icmp slt i32 %i1.3, %sub316, !dbg !2507 + br i1 %cmp317, label %for.body319, label %for.end395, !dbg !2508 + +for.body319: ; preds = %for.cond315 + %mul320 = mul nsw i32 2, %i3.3, !dbg !2509 + %add321 = add nsw i32 %mul320, 1, !dbg !2509 + %mul322 = mul nsw i32 %add321, %n2, !dbg !2509 + %mul323 = mul nsw i32 %mul322, %n1, !dbg !2509 + %mul324 = mul nsw i32 2, %i2.3, !dbg !2509 + %mul325 = mul nsw i32 %mul324, %n1, !dbg !2509 + %add326 = add nsw i32 %mul323, %mul325, !dbg !2509 + %mul327 = mul nsw i32 2, %i1.3, !dbg !2509 + %add328 = add nsw i32 %add326, %mul327, !dbg !2509 + %idxprom329 = sext i32 %add328 to i64, !dbg !2509 + %arrayidx330 = getelementptr inbounds double, double* %ou, i64 %idxprom329, !dbg !2509 + %28 = load double, double* %arrayidx330, align 8, !dbg !2509, !tbaa !437 + %29 = load double*, double** @interp.z2, align 8, !dbg !2511, !tbaa !198 + %mul331 = mul nsw i32 %i3.3, %mm2, !dbg !2511 + %mul332 = mul nsw i32 %mul331, %mm1, !dbg !2511 + %mul333 = mul nsw i32 %i2.3, %mm1, !dbg !2511 + %add334 = add nsw i32 %mul332, %mul333, !dbg !2511 + %add335 = add nsw i32 %add334, %i1.3, !dbg !2511 + %idxprom336 = sext i32 %add335 to i64, !dbg !2511 + %arrayidx337 = getelementptr inbounds double, double* %29, i64 %idxprom336, !dbg !2511 + %30 = load double, double* %arrayidx337, align 8, !dbg !2511, !tbaa !437 + %mul338 = fmul double 5.000000e-01, %30, !dbg !2512 + %add339 = fadd double %28, %mul338, !dbg !2513 + %mul340 = mul nsw i32 2, %i3.3, !dbg !2514 + %add341 = add nsw i32 %mul340, 1, !dbg !2514 + %mul342 = mul nsw i32 %add341, %n2, !dbg !2514 + %mul343 = mul nsw i32 %mul342, %n1, !dbg !2514 + %mul344 = mul nsw i32 2, %i2.3, !dbg !2514 + %mul345 = mul nsw i32 %mul344, %n1, !dbg !2514 + %add346 = add nsw i32 %mul343, %mul345, !dbg !2514 + %mul347 = mul nsw i32 2, %i1.3, !dbg !2514 + %add348 = add nsw i32 %add346, %mul347, !dbg !2514 + %idxprom349 = sext i32 %add348 to i64, !dbg !2514 + %arrayidx350 = getelementptr inbounds double, double* %ou, i64 %idxprom349, !dbg !2514 + store double %add339, double* %arrayidx350, align 8, !dbg !2515, !tbaa !437 + %mul351 = mul nsw i32 2, %i3.3, !dbg !2516 + %add352 = add nsw i32 %mul351, 1, !dbg !2516 + %mul353 = mul nsw i32 %add352, %n2, !dbg !2516 + %mul354 = mul nsw i32 %mul353, %n1, !dbg !2516 + %mul355 = mul nsw i32 2, %i2.3, !dbg !2516 + %mul356 = mul nsw i32 %mul355, %n1, !dbg !2516 + %add357 = add nsw i32 %mul354, %mul356, !dbg !2516 + %mul358 = mul nsw i32 2, %i1.3, !dbg !2516 + %add359 = add nsw i32 %mul358, 1, !dbg !2516 + %add360 = add nsw i32 %add357, %add359, !dbg !2516 + %idxprom361 = sext i32 %add360 to i64, !dbg !2516 + %arrayidx362 = getelementptr inbounds double, double* %ou, i64 %idxprom361, !dbg !2516 + %31 = load double, double* %arrayidx362, align 8, !dbg !2516, !tbaa !437 + %32 = load double*, double** @interp.z2, align 8, !dbg !2517, !tbaa !198 + %mul363 = mul nsw i32 %i3.3, %mm2, !dbg !2517 + %mul364 = mul nsw i32 %mul363, %mm1, !dbg !2517 + %mul365 = mul nsw i32 %i2.3, %mm1, !dbg !2517 + %add366 = add nsw i32 %mul364, %mul365, !dbg !2517 + %add367 = add nsw i32 %add366, %i1.3, !dbg !2517 + %idxprom368 = sext i32 %add367 to i64, !dbg !2517 + %arrayidx369 = getelementptr inbounds double, double* %32, i64 %idxprom368, !dbg !2517 + %33 = load double, double* %arrayidx369, align 8, !dbg !2517, !tbaa !437 + %34 = load double*, double** @interp.z2, align 8, !dbg !2518, !tbaa !198 + %mul370 = mul nsw i32 %i3.3, %mm2, !dbg !2518 + %mul371 = mul nsw i32 %mul370, %mm1, !dbg !2518 + %mul372 = mul nsw i32 %i2.3, %mm1, !dbg !2518 + %add373 = add nsw i32 %mul371, %mul372, !dbg !2518 + %add374 = add nsw i32 %i1.3, 1, !dbg !2518 + %add375 = add nsw i32 %add373, %add374, !dbg !2518 + %idxprom376 = sext i32 %add375 to i64, !dbg !2518 + %arrayidx377 = getelementptr inbounds double, double* %34, i64 %idxprom376, !dbg !2518 + %35 = load double, double* %arrayidx377, align 8, !dbg !2518, !tbaa !437 + %add378 = fadd double %33, %35, !dbg !2519 + %mul379 = fmul double 2.500000e-01, %add378, !dbg !2520 + %add380 = fadd double %31, %mul379, !dbg !2521 + %mul381 = mul nsw i32 2, %i3.3, !dbg !2522 + %add382 = add nsw i32 %mul381, 1, !dbg !2522 + %mul383 = mul nsw i32 %add382, %n2, !dbg !2522 + %mul384 = mul nsw i32 %mul383, %n1, !dbg !2522 + %mul385 = mul nsw i32 2, %i2.3, !dbg !2522 + %mul386 = mul nsw i32 %mul385, %n1, !dbg !2522 + %add387 = add nsw i32 %mul384, %mul386, !dbg !2522 + %mul388 = mul nsw i32 2, %i1.3, !dbg !2522 + %add389 = add nsw i32 %mul388, 1, !dbg !2522 + %add390 = add nsw i32 %add387, %add389, !dbg !2522 + %idxprom391 = sext i32 %add390 to i64, !dbg !2522 + %arrayidx392 = getelementptr inbounds double, double* %ou, i64 %idxprom391, !dbg !2522 + store double %add380, double* %arrayidx392, align 8, !dbg !2523, !tbaa !437 + br label %for.inc393, !dbg !2524 + +for.inc393: ; preds = %for.body319 + %inc394 = add nsw i32 %i1.3, 1, !dbg !2525 + call void @llvm.dbg.value(metadata i32 %inc394, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond315, !dbg !2526, !llvm.loop !2527 + +for.end395: ; preds = %for.cond315 + br label %for.inc396, !dbg !2529 + +for.inc396: ; preds = %for.end395 + %inc397 = add nsw i32 %i2.3, 1, !dbg !2530 + call void @llvm.dbg.value(metadata i32 %inc397, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond310, !dbg !2531, !llvm.loop !2532 + +for.end398: ; preds = %for.cond310 + br label %for.inc399, !dbg !2534 + +for.inc399: ; preds = %for.end398 + %inc400 = add nsw i32 %i3.3, 1, !dbg !2535 + call void @llvm.dbg.value(metadata i32 %inc400, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond305, !dbg !2536, !llvm.loop !2537 + +for.end401: ; preds = %for.cond305 + call void @llvm.dbg.value(metadata i32 0, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond402, !dbg !2539 + +for.cond402: ; preds = %for.inc500, %for.end401 + %i3.4 = phi i32 [ 0, %for.end401 ], [ %inc501, %for.inc500 ], !dbg !2541 + call void @llvm.dbg.value(metadata i32 %i3.4, metadata !83, metadata !DIExpression()), !dbg !2289 + %sub403 = sub nsw i32 %mm3, 1, !dbg !2542 + %cmp404 = icmp slt i32 %i3.4, %sub403, !dbg !2544 + br i1 %cmp404, label %for.body406, label %for.end502, !dbg !2545 + +for.body406: ; preds = %for.cond402 + call void @llvm.dbg.value(metadata i32 0, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond407, !dbg !2546 + +for.cond407: ; preds = %for.inc497, %for.body406 + %i2.4 = phi i32 [ 0, %for.body406 ], [ %inc498, %for.inc497 ], !dbg !2549 + call void @llvm.dbg.value(metadata i32 %i2.4, metadata !84, metadata !DIExpression()), !dbg !2289 + %sub408 = sub nsw i32 %mm2, 1, !dbg !2550 + %cmp409 = icmp slt i32 %i2.4, %sub408, !dbg !2552 + br i1 %cmp409, label %for.body411, label %for.end499, !dbg !2553 + +for.body411: ; preds = %for.cond407 + call void @llvm.dbg.value(metadata i32 0, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond412, !dbg !2554 + +for.cond412: ; preds = %for.inc494, %for.body411 + %i1.4 = phi i32 [ 0, %for.body411 ], [ %inc495, %for.inc494 ], !dbg !2557 + call void @llvm.dbg.value(metadata i32 %i1.4, metadata !85, metadata !DIExpression()), !dbg !2289 + %sub413 = sub nsw i32 %mm1, 1, !dbg !2558 + %cmp414 = icmp slt i32 %i1.4, %sub413, !dbg !2560 + br i1 %cmp414, label %for.body416, label %for.end496, !dbg !2561 + +for.body416: ; preds = %for.cond412 + %mul417 = mul nsw i32 2, %i3.4, !dbg !2562 + %add418 = add nsw i32 %mul417, 1, !dbg !2562 + %mul419 = mul nsw i32 %add418, %n2, !dbg !2562 + %mul420 = mul nsw i32 %mul419, %n1, !dbg !2562 + %mul421 = mul nsw i32 2, %i2.4, !dbg !2562 + %add422 = add nsw i32 %mul421, 1, !dbg !2562 + %mul423 = mul nsw i32 %add422, %n1, !dbg !2562 + %add424 = add nsw i32 %mul420, %mul423, !dbg !2562 + %mul425 = mul nsw i32 2, %i1.4, !dbg !2562 + %add426 = add nsw i32 %add424, %mul425, !dbg !2562 + %idxprom427 = sext i32 %add426 to i64, !dbg !2562 + %arrayidx428 = getelementptr inbounds double, double* %ou, i64 %idxprom427, !dbg !2562 + %36 = load double, double* %arrayidx428, align 8, !dbg !2562, !tbaa !437 + %37 = load double*, double** @interp.z3, align 8, !dbg !2564, !tbaa !198 + %mul429 = mul nsw i32 %i3.4, %mm2, !dbg !2564 + %mul430 = mul nsw i32 %mul429, %mm1, !dbg !2564 + %mul431 = mul nsw i32 %i2.4, %mm1, !dbg !2564 + %add432 = add nsw i32 %mul430, %mul431, !dbg !2564 + %add433 = add nsw i32 %add432, %i1.4, !dbg !2564 + %idxprom434 = sext i32 %add433 to i64, !dbg !2564 + %arrayidx435 = getelementptr inbounds double, double* %37, i64 %idxprom434, !dbg !2564 + %38 = load double, double* %arrayidx435, align 8, !dbg !2564, !tbaa !437 + %mul436 = fmul double 2.500000e-01, %38, !dbg !2565 + %add437 = fadd double %36, %mul436, !dbg !2566 + %mul438 = mul nsw i32 2, %i3.4, !dbg !2567 + %add439 = add nsw i32 %mul438, 1, !dbg !2567 + %mul440 = mul nsw i32 %add439, %n2, !dbg !2567 + %mul441 = mul nsw i32 %mul440, %n1, !dbg !2567 + %mul442 = mul nsw i32 2, %i2.4, !dbg !2567 + %add443 = add nsw i32 %mul442, 1, !dbg !2567 + %mul444 = mul nsw i32 %add443, %n1, !dbg !2567 + %add445 = add nsw i32 %mul441, %mul444, !dbg !2567 + %mul446 = mul nsw i32 2, %i1.4, !dbg !2567 + %add447 = add nsw i32 %add445, %mul446, !dbg !2567 + %idxprom448 = sext i32 %add447 to i64, !dbg !2567 + %arrayidx449 = getelementptr inbounds double, double* %ou, i64 %idxprom448, !dbg !2567 + store double %add437, double* %arrayidx449, align 8, !dbg !2568, !tbaa !437 + %mul450 = mul nsw i32 2, %i3.4, !dbg !2569 + %add451 = add nsw i32 %mul450, 1, !dbg !2569 + %mul452 = mul nsw i32 %add451, %n2, !dbg !2569 + %mul453 = mul nsw i32 %mul452, %n1, !dbg !2569 + %mul454 = mul nsw i32 2, %i2.4, !dbg !2569 + %add455 = add nsw i32 %mul454, 1, !dbg !2569 + %mul456 = mul nsw i32 %add455, %n1, !dbg !2569 + %add457 = add nsw i32 %mul453, %mul456, !dbg !2569 + %mul458 = mul nsw i32 2, %i1.4, !dbg !2569 + %add459 = add nsw i32 %mul458, 1, !dbg !2569 + %add460 = add nsw i32 %add457, %add459, !dbg !2569 + %idxprom461 = sext i32 %add460 to i64, !dbg !2569 + %arrayidx462 = getelementptr inbounds double, double* %ou, i64 %idxprom461, !dbg !2569 + %39 = load double, double* %arrayidx462, align 8, !dbg !2569, !tbaa !437 + %40 = load double*, double** @interp.z3, align 8, !dbg !2570, !tbaa !198 + %mul463 = mul nsw i32 %i3.4, %mm2, !dbg !2570 + %mul464 = mul nsw i32 %mul463, %mm1, !dbg !2570 + %mul465 = mul nsw i32 %i2.4, %mm1, !dbg !2570 + %add466 = add nsw i32 %mul464, %mul465, !dbg !2570 + %add467 = add nsw i32 %add466, %i1.4, !dbg !2570 + %idxprom468 = sext i32 %add467 to i64, !dbg !2570 + %arrayidx469 = getelementptr inbounds double, double* %40, i64 %idxprom468, !dbg !2570 + %41 = load double, double* %arrayidx469, align 8, !dbg !2570, !tbaa !437 + %42 = load double*, double** @interp.z3, align 8, !dbg !2571, !tbaa !198 + %mul470 = mul nsw i32 %i3.4, %mm2, !dbg !2571 + %mul471 = mul nsw i32 %mul470, %mm1, !dbg !2571 + %mul472 = mul nsw i32 %i2.4, %mm1, !dbg !2571 + %add473 = add nsw i32 %mul471, %mul472, !dbg !2571 + %add474 = add nsw i32 %i1.4, 1, !dbg !2571 + %add475 = add nsw i32 %add473, %add474, !dbg !2571 + %idxprom476 = sext i32 %add475 to i64, !dbg !2571 + %arrayidx477 = getelementptr inbounds double, double* %42, i64 %idxprom476, !dbg !2571 + %43 = load double, double* %arrayidx477, align 8, !dbg !2571, !tbaa !437 + %add478 = fadd double %41, %43, !dbg !2572 + %mul479 = fmul double 1.250000e-01, %add478, !dbg !2573 + %add480 = fadd double %39, %mul479, !dbg !2574 + %mul481 = mul nsw i32 2, %i3.4, !dbg !2575 + %add482 = add nsw i32 %mul481, 1, !dbg !2575 + %mul483 = mul nsw i32 %add482, %n2, !dbg !2575 + %mul484 = mul nsw i32 %mul483, %n1, !dbg !2575 + %mul485 = mul nsw i32 2, %i2.4, !dbg !2575 + %add486 = add nsw i32 %mul485, 1, !dbg !2575 + %mul487 = mul nsw i32 %add486, %n1, !dbg !2575 + %add488 = add nsw i32 %mul484, %mul487, !dbg !2575 + %mul489 = mul nsw i32 2, %i1.4, !dbg !2575 + %add490 = add nsw i32 %mul489, 1, !dbg !2575 + %add491 = add nsw i32 %add488, %add490, !dbg !2575 + %idxprom492 = sext i32 %add491 to i64, !dbg !2575 + %arrayidx493 = getelementptr inbounds double, double* %ou, i64 %idxprom492, !dbg !2575 + store double %add480, double* %arrayidx493, align 8, !dbg !2576, !tbaa !437 + br label %for.inc494, !dbg !2577 + +for.inc494: ; preds = %for.body416 + %inc495 = add nsw i32 %i1.4, 1, !dbg !2578 + call void @llvm.dbg.value(metadata i32 %inc495, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond412, !dbg !2579, !llvm.loop !2580 + +for.end496: ; preds = %for.cond412 + br label %for.inc497, !dbg !2582 + +for.inc497: ; preds = %for.end496 + %inc498 = add nsw i32 %i2.4, 1, !dbg !2583 + call void @llvm.dbg.value(metadata i32 %inc498, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond407, !dbg !2584, !llvm.loop !2585 + +for.end499: ; preds = %for.cond407 + br label %for.inc500, !dbg !2587 + +for.inc500: ; preds = %for.end499 + %inc501 = add nsw i32 %i3.4, 1, !dbg !2588 + call void @llvm.dbg.value(metadata i32 %inc501, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond402, !dbg !2589, !llvm.loop !2590 + +for.end502: ; preds = %for.cond402 + br label %if.end1211, !dbg !2592 + +if.else: ; preds = %land.lhs.true19, %land.lhs.true, %if.end + %cmp503 = icmp eq i32 %n1, 3, !dbg !2593 + br i1 %cmp503, label %if.then505, label %if.else506, !dbg !2596 + +if.then505: ; preds = %if.else + call void @llvm.dbg.value(metadata i32 2, metadata !86, metadata !DIExpression()), !dbg !2289 + call void @llvm.dbg.value(metadata i32 1, metadata !89, metadata !DIExpression()), !dbg !2289 + br label %if.end507, !dbg !2597 + +if.else506: ; preds = %if.else + call void @llvm.dbg.value(metadata i32 1, metadata !86, metadata !DIExpression()), !dbg !2289 + call void @llvm.dbg.value(metadata i32 0, metadata !89, metadata !DIExpression()), !dbg !2289 + br label %if.end507 + +if.end507: ; preds = %if.else506, %if.then505 + %d1.0 = phi i32 [ 2, %if.then505 ], [ 1, %if.else506 ], !dbg !2599 + %t1.0 = phi i32 [ 1, %if.then505 ], [ 0, %if.else506 ], !dbg !2599 + call void @llvm.dbg.value(metadata i32 %t1.0, metadata !89, metadata !DIExpression()), !dbg !2289 + call void @llvm.dbg.value(metadata i32 %d1.0, metadata !86, metadata !DIExpression()), !dbg !2289 + %cmp508 = icmp eq i32 %n2, 3, !dbg !2600 + br i1 %cmp508, label %if.then510, label %if.else511, !dbg !2602 + +if.then510: ; preds = %if.end507 + call void @llvm.dbg.value(metadata i32 2, metadata !87, metadata !DIExpression()), !dbg !2289 + call void @llvm.dbg.value(metadata i32 1, metadata !90, metadata !DIExpression()), !dbg !2289 + br label %if.end512, !dbg !2603 + +if.else511: ; preds = %if.end507 + call void @llvm.dbg.value(metadata i32 1, metadata !87, metadata !DIExpression()), !dbg !2289 + call void @llvm.dbg.value(metadata i32 0, metadata !90, metadata !DIExpression()), !dbg !2289 + br label %if.end512 + +if.end512: ; preds = %if.else511, %if.then510 + %d2.0 = phi i32 [ 2, %if.then510 ], [ 1, %if.else511 ], !dbg !2605 + %t2.0 = phi i32 [ 1, %if.then510 ], [ 0, %if.else511 ], !dbg !2605 + call void @llvm.dbg.value(metadata i32 %t2.0, metadata !90, metadata !DIExpression()), !dbg !2289 + call void @llvm.dbg.value(metadata i32 %d2.0, metadata !87, metadata !DIExpression()), !dbg !2289 + %cmp513 = icmp eq i32 %n3, 3, !dbg !2606 + br i1 %cmp513, label %if.then515, label %if.else516, !dbg !2608 + +if.then515: ; preds = %if.end512 + call void @llvm.dbg.value(metadata i32 2, metadata !88, metadata !DIExpression()), !dbg !2289 + call void @llvm.dbg.value(metadata i32 1, metadata !91, metadata !DIExpression()), !dbg !2289 + br label %if.end517, !dbg !2609 + +if.else516: ; preds = %if.end512 + call void @llvm.dbg.value(metadata i32 1, metadata !88, metadata !DIExpression()), !dbg !2289 + call void @llvm.dbg.value(metadata i32 0, metadata !91, metadata !DIExpression()), !dbg !2289 + br label %if.end517 + +if.end517: ; preds = %if.else516, %if.then515 + %d3.0 = phi i32 [ 2, %if.then515 ], [ 1, %if.else516 ], !dbg !2611 + %t3.0 = phi i32 [ 1, %if.then515 ], [ 0, %if.else516 ], !dbg !2611 + call void @llvm.dbg.value(metadata i32 %t3.0, metadata !91, metadata !DIExpression()), !dbg !2289 + call void @llvm.dbg.value(metadata i32 %d3.0, metadata !88, metadata !DIExpression()), !dbg !2289 + call void @llvm.dbg.value(metadata i32 %d3.0, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond518, !dbg !2612 + +for.cond518: ; preds = %for.inc644, %if.end517 + %i3.5 = phi i32 [ %d3.0, %if.end517 ], [ %inc645, %for.inc644 ], !dbg !2615 + call void @llvm.dbg.value(metadata i32 %i3.5, metadata !83, metadata !DIExpression()), !dbg !2289 + %sub519 = sub nsw i32 %mm3, 1, !dbg !2616 + %cmp520 = icmp sle i32 %i3.5, %sub519, !dbg !2618 + br i1 %cmp520, label %for.body522, label %for.end646, !dbg !2619 + +for.body522: ; preds = %for.cond518 + call void @llvm.dbg.value(metadata i32 %d2.0, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond523, !dbg !2620 + +for.cond523: ; preds = %for.inc641, %for.body522 + %i2.5 = phi i32 [ %d2.0, %for.body522 ], [ %inc642, %for.inc641 ], !dbg !2623 + call void @llvm.dbg.value(metadata i32 %i2.5, metadata !84, metadata !DIExpression()), !dbg !2289 + %sub524 = sub nsw i32 %mm2, 1, !dbg !2624 + %cmp525 = icmp sle i32 %i2.5, %sub524, !dbg !2626 + br i1 %cmp525, label %for.body527, label %for.end643, !dbg !2627 + +for.body527: ; preds = %for.cond523 + call void @llvm.dbg.value(metadata i32 %d1.0, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond528, !dbg !2628 + +for.cond528: ; preds = %for.inc576, %for.body527 + %i1.5 = phi i32 [ %d1.0, %for.body527 ], [ %inc577, %for.inc576 ], !dbg !2631 + call void @llvm.dbg.value(metadata i32 %i1.5, metadata !85, metadata !DIExpression()), !dbg !2289 + %sub529 = sub nsw i32 %mm1, 1, !dbg !2632 + %cmp530 = icmp sle i32 %i1.5, %sub529, !dbg !2634 + br i1 %cmp530, label %for.body532, label %for.end578, !dbg !2635 + +for.body532: ; preds = %for.cond528 + %mul533 = mul nsw i32 2, %i3.5, !dbg !2636 + %sub534 = sub nsw i32 %mul533, %d3.0, !dbg !2636 + %sub535 = sub nsw i32 %sub534, 1, !dbg !2636 + %mul536 = mul nsw i32 %sub535, %n2, !dbg !2636 + %mul537 = mul nsw i32 %mul536, %n1, !dbg !2636 + %mul538 = mul nsw i32 2, %i2.5, !dbg !2636 + %sub539 = sub nsw i32 %mul538, %d2.0, !dbg !2636 + %sub540 = sub nsw i32 %sub539, 1, !dbg !2636 + %mul541 = mul nsw i32 %sub540, %n1, !dbg !2636 + %add542 = add nsw i32 %mul537, %mul541, !dbg !2636 + %mul543 = mul nsw i32 2, %i1.5, !dbg !2636 + %sub544 = sub nsw i32 %mul543, %d1.0, !dbg !2636 + %sub545 = sub nsw i32 %sub544, 1, !dbg !2636 + %add546 = add nsw i32 %add542, %sub545, !dbg !2636 + %idxprom547 = sext i32 %add546 to i64, !dbg !2636 + %arrayidx548 = getelementptr inbounds double, double* %ou, i64 %idxprom547, !dbg !2636 + %44 = load double, double* %arrayidx548, align 8, !dbg !2636, !tbaa !437 + %sub549 = sub nsw i32 %i3.5, 1, !dbg !2638 + %mul550 = mul nsw i32 %sub549, %mm2, !dbg !2638 + %mul551 = mul nsw i32 %mul550, %mm1, !dbg !2638 + %sub552 = sub nsw i32 %i2.5, 1, !dbg !2638 + %mul553 = mul nsw i32 %sub552, %mm1, !dbg !2638 + %add554 = add nsw i32 %mul551, %mul553, !dbg !2638 + %sub555 = sub nsw i32 %i1.5, 1, !dbg !2638 + %add556 = add nsw i32 %add554, %sub555, !dbg !2638 + %idxprom557 = sext i32 %add556 to i64, !dbg !2638 + %arrayidx558 = getelementptr inbounds double, double* %ou, i64 %idxprom557, !dbg !2638 + %45 = load double, double* %arrayidx558, align 8, !dbg !2638, !tbaa !437 + %add559 = fadd double %44, %45, !dbg !2639 + %mul560 = mul nsw i32 2, %i3.5, !dbg !2640 + %sub561 = sub nsw i32 %mul560, %d3.0, !dbg !2640 + %sub562 = sub nsw i32 %sub561, 1, !dbg !2640 + %mul563 = mul nsw i32 %sub562, %n2, !dbg !2640 + %mul564 = mul nsw i32 %mul563, %n1, !dbg !2640 + %mul565 = mul nsw i32 2, %i2.5, !dbg !2640 + %sub566 = sub nsw i32 %mul565, %d2.0, !dbg !2640 + %sub567 = sub nsw i32 %sub566, 1, !dbg !2640 + %mul568 = mul nsw i32 %sub567, %n1, !dbg !2640 + %add569 = add nsw i32 %mul564, %mul568, !dbg !2640 + %mul570 = mul nsw i32 2, %i1.5, !dbg !2640 + %sub571 = sub nsw i32 %mul570, %d1.0, !dbg !2640 + %sub572 = sub nsw i32 %sub571, 1, !dbg !2640 + %add573 = add nsw i32 %add569, %sub572, !dbg !2640 + %idxprom574 = sext i32 %add573 to i64, !dbg !2640 + %arrayidx575 = getelementptr inbounds double, double* %ou, i64 %idxprom574, !dbg !2640 + store double %add559, double* %arrayidx575, align 8, !dbg !2641, !tbaa !437 + br label %for.inc576, !dbg !2642 + +for.inc576: ; preds = %for.body532 + %inc577 = add nsw i32 %i1.5, 1, !dbg !2643 + call void @llvm.dbg.value(metadata i32 %inc577, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond528, !dbg !2644, !llvm.loop !2645 + +for.end578: ; preds = %for.cond528 + call void @llvm.dbg.value(metadata i32 1, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond579, !dbg !2647 + +for.cond579: ; preds = %for.inc638, %for.end578 + %i1.6 = phi i32 [ 1, %for.end578 ], [ %inc639, %for.inc638 ], !dbg !2649 + call void @llvm.dbg.value(metadata i32 %i1.6, metadata !85, metadata !DIExpression()), !dbg !2289 + %sub580 = sub nsw i32 %mm1, 1, !dbg !2650 + %cmp581 = icmp sle i32 %i1.6, %sub580, !dbg !2652 + br i1 %cmp581, label %for.body583, label %for.end640, !dbg !2653 + +for.body583: ; preds = %for.cond579 + %mul584 = mul nsw i32 2, %i3.5, !dbg !2654 + %sub585 = sub nsw i32 %mul584, %d3.0, !dbg !2654 + %sub586 = sub nsw i32 %sub585, 1, !dbg !2654 + %mul587 = mul nsw i32 %sub586, %n2, !dbg !2654 + %mul588 = mul nsw i32 %mul587, %n1, !dbg !2654 + %mul589 = mul nsw i32 2, %i2.5, !dbg !2654 + %sub590 = sub nsw i32 %mul589, %d2.0, !dbg !2654 + %sub591 = sub nsw i32 %sub590, 1, !dbg !2654 + %mul592 = mul nsw i32 %sub591, %n1, !dbg !2654 + %add593 = add nsw i32 %mul588, %mul592, !dbg !2654 + %mul594 = mul nsw i32 2, %i1.6, !dbg !2654 + %sub595 = sub nsw i32 %mul594, %t1.0, !dbg !2654 + %sub596 = sub nsw i32 %sub595, 1, !dbg !2654 + %add597 = add nsw i32 %add593, %sub596, !dbg !2654 + %idxprom598 = sext i32 %add597 to i64, !dbg !2654 + %arrayidx599 = getelementptr inbounds double, double* %ou, i64 %idxprom598, !dbg !2654 + %46 = load double, double* %arrayidx599, align 8, !dbg !2654, !tbaa !437 + %sub600 = sub nsw i32 %i3.5, 1, !dbg !2656 + %mul601 = mul nsw i32 %sub600, %mm2, !dbg !2656 + %mul602 = mul nsw i32 %mul601, %mm1, !dbg !2656 + %sub603 = sub nsw i32 %i2.5, 1, !dbg !2656 + %mul604 = mul nsw i32 %sub603, %mm1, !dbg !2656 + %add605 = add nsw i32 %mul602, %mul604, !dbg !2656 + %add606 = add nsw i32 %add605, %i1.6, !dbg !2656 + %idxprom607 = sext i32 %add606 to i64, !dbg !2656 + %arrayidx608 = getelementptr inbounds double, double* %oz, i64 %idxprom607, !dbg !2656 + %47 = load double, double* %arrayidx608, align 8, !dbg !2656, !tbaa !437 + %sub609 = sub nsw i32 %i3.5, 1, !dbg !2657 + %mul610 = mul nsw i32 %sub609, %mm2, !dbg !2657 + %mul611 = mul nsw i32 %mul610, %mm1, !dbg !2657 + %sub612 = sub nsw i32 %i2.5, 1, !dbg !2657 + %mul613 = mul nsw i32 %sub612, %mm1, !dbg !2657 + %add614 = add nsw i32 %mul611, %mul613, !dbg !2657 + %sub615 = sub nsw i32 %i1.6, 1, !dbg !2657 + %add616 = add nsw i32 %add614, %sub615, !dbg !2657 + %idxprom617 = sext i32 %add616 to i64, !dbg !2657 + %arrayidx618 = getelementptr inbounds double, double* %oz, i64 %idxprom617, !dbg !2657 + %48 = load double, double* %arrayidx618, align 8, !dbg !2657, !tbaa !437 + %add619 = fadd double %47, %48, !dbg !2658 + %mul620 = fmul double 5.000000e-01, %add619, !dbg !2659 + %add621 = fadd double %46, %mul620, !dbg !2660 + %mul622 = mul nsw i32 2, %i3.5, !dbg !2661 + %sub623 = sub nsw i32 %mul622, %d3.0, !dbg !2661 + %sub624 = sub nsw i32 %sub623, 1, !dbg !2661 + %mul625 = mul nsw i32 %sub624, %n2, !dbg !2661 + %mul626 = mul nsw i32 %mul625, %n1, !dbg !2661 + %mul627 = mul nsw i32 2, %i2.5, !dbg !2661 + %sub628 = sub nsw i32 %mul627, %d2.0, !dbg !2661 + %sub629 = sub nsw i32 %sub628, 1, !dbg !2661 + %mul630 = mul nsw i32 %sub629, %n1, !dbg !2661 + %add631 = add nsw i32 %mul626, %mul630, !dbg !2661 + %mul632 = mul nsw i32 2, %i1.6, !dbg !2661 + %sub633 = sub nsw i32 %mul632, %t1.0, !dbg !2661 + %sub634 = sub nsw i32 %sub633, 1, !dbg !2661 + %add635 = add nsw i32 %add631, %sub634, !dbg !2661 + %idxprom636 = sext i32 %add635 to i64, !dbg !2661 + %arrayidx637 = getelementptr inbounds double, double* %ou, i64 %idxprom636, !dbg !2661 + store double %add621, double* %arrayidx637, align 8, !dbg !2662, !tbaa !437 + br label %for.inc638, !dbg !2663 + +for.inc638: ; preds = %for.body583 + %inc639 = add nsw i32 %i1.6, 1, !dbg !2664 + call void @llvm.dbg.value(metadata i32 %inc639, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond579, !dbg !2665, !llvm.loop !2666 + +for.end640: ; preds = %for.cond579 + br label %for.inc641, !dbg !2668 + +for.inc641: ; preds = %for.end640 + %inc642 = add nsw i32 %i2.5, 1, !dbg !2669 + call void @llvm.dbg.value(metadata i32 %inc642, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond523, !dbg !2670, !llvm.loop !2671 + +for.end643: ; preds = %for.cond523 + br label %for.inc644, !dbg !2673 + +for.inc644: ; preds = %for.end643 + %inc645 = add nsw i32 %i3.5, 1, !dbg !2674 + call void @llvm.dbg.value(metadata i32 %inc645, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond518, !dbg !2675, !llvm.loop !2676 + +for.end646: ; preds = %for.cond518 + call void @llvm.dbg.value(metadata i32 %d3.0, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond647, !dbg !2678 + +for.cond647: ; preds = %for.inc803, %for.end646 + %i3.6 = phi i32 [ %d3.0, %for.end646 ], [ %inc804, %for.inc803 ], !dbg !2680 + call void @llvm.dbg.value(metadata i32 %i3.6, metadata !83, metadata !DIExpression()), !dbg !2289 + %sub648 = sub nsw i32 %mm3, 1, !dbg !2681 + %cmp649 = icmp sle i32 %i3.6, %sub648, !dbg !2683 + br i1 %cmp649, label %for.body651, label %for.end805, !dbg !2684 + +for.body651: ; preds = %for.cond647 + call void @llvm.dbg.value(metadata i32 1, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond652, !dbg !2685 + +for.cond652: ; preds = %for.inc800, %for.body651 + %i2.6 = phi i32 [ 1, %for.body651 ], [ %inc801, %for.inc800 ], !dbg !2688 + call void @llvm.dbg.value(metadata i32 %i2.6, metadata !84, metadata !DIExpression()), !dbg !2289 + %sub653 = sub nsw i32 %mm2, 1, !dbg !2689 + %cmp654 = icmp sle i32 %i2.6, %sub653, !dbg !2691 + br i1 %cmp654, label %for.body656, label %for.end802, !dbg !2692 + +for.body656: ; preds = %for.cond652 + call void @llvm.dbg.value(metadata i32 %d1.0, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond657, !dbg !2693 + +for.cond657: ; preds = %for.inc716, %for.body656 + %i1.7 = phi i32 [ %d1.0, %for.body656 ], [ %inc717, %for.inc716 ], !dbg !2696 + call void @llvm.dbg.value(metadata i32 %i1.7, metadata !85, metadata !DIExpression()), !dbg !2289 + %sub658 = sub nsw i32 %mm1, 1, !dbg !2697 + %cmp659 = icmp sle i32 %i1.7, %sub658, !dbg !2699 + br i1 %cmp659, label %for.body661, label %for.end718, !dbg !2700 + +for.body661: ; preds = %for.cond657 + %mul662 = mul nsw i32 2, %i3.6, !dbg !2701 + %sub663 = sub nsw i32 %mul662, %d3.0, !dbg !2701 + %sub664 = sub nsw i32 %sub663, 1, !dbg !2701 + %mul665 = mul nsw i32 %sub664, %n2, !dbg !2701 + %mul666 = mul nsw i32 %mul665, %n1, !dbg !2701 + %mul667 = mul nsw i32 2, %i2.6, !dbg !2701 + %sub668 = sub nsw i32 %mul667, %t2.0, !dbg !2701 + %sub669 = sub nsw i32 %sub668, 1, !dbg !2701 + %mul670 = mul nsw i32 %sub669, %n1, !dbg !2701 + %add671 = add nsw i32 %mul666, %mul670, !dbg !2701 + %mul672 = mul nsw i32 2, %i1.7, !dbg !2701 + %sub673 = sub nsw i32 %mul672, %d1.0, !dbg !2701 + %sub674 = sub nsw i32 %sub673, 1, !dbg !2701 + %add675 = add nsw i32 %add671, %sub674, !dbg !2701 + %idxprom676 = sext i32 %add675 to i64, !dbg !2701 + %arrayidx677 = getelementptr inbounds double, double* %ou, i64 %idxprom676, !dbg !2701 + %49 = load double, double* %arrayidx677, align 8, !dbg !2701, !tbaa !437 + %sub678 = sub nsw i32 %i3.6, 1, !dbg !2703 + %mul679 = mul nsw i32 %sub678, %mm2, !dbg !2703 + %mul680 = mul nsw i32 %mul679, %mm1, !dbg !2703 + %mul681 = mul nsw i32 %i2.6, %mm1, !dbg !2703 + %add682 = add nsw i32 %mul680, %mul681, !dbg !2703 + %sub683 = sub nsw i32 %i1.7, 1, !dbg !2703 + %add684 = add nsw i32 %add682, %sub683, !dbg !2703 + %idxprom685 = sext i32 %add684 to i64, !dbg !2703 + %arrayidx686 = getelementptr inbounds double, double* %oz, i64 %idxprom685, !dbg !2703 + %50 = load double, double* %arrayidx686, align 8, !dbg !2703, !tbaa !437 + %sub687 = sub nsw i32 %i3.6, 1, !dbg !2704 + %mul688 = mul nsw i32 %sub687, %mm2, !dbg !2704 + %mul689 = mul nsw i32 %mul688, %mm1, !dbg !2704 + %sub690 = sub nsw i32 %i2.6, 1, !dbg !2704 + %mul691 = mul nsw i32 %sub690, %mm1, !dbg !2704 + %add692 = add nsw i32 %mul689, %mul691, !dbg !2704 + %sub693 = sub nsw i32 %i1.7, 1, !dbg !2704 + %add694 = add nsw i32 %add692, %sub693, !dbg !2704 + %idxprom695 = sext i32 %add694 to i64, !dbg !2704 + %arrayidx696 = getelementptr inbounds double, double* %oz, i64 %idxprom695, !dbg !2704 + %51 = load double, double* %arrayidx696, align 8, !dbg !2704, !tbaa !437 + %add697 = fadd double %50, %51, !dbg !2705 + %mul698 = fmul double 5.000000e-01, %add697, !dbg !2706 + %add699 = fadd double %49, %mul698, !dbg !2707 + %mul700 = mul nsw i32 2, %i3.6, !dbg !2708 + %sub701 = sub nsw i32 %mul700, %d3.0, !dbg !2708 + %sub702 = sub nsw i32 %sub701, 1, !dbg !2708 + %mul703 = mul nsw i32 %sub702, %n2, !dbg !2708 + %mul704 = mul nsw i32 %mul703, %n1, !dbg !2708 + %mul705 = mul nsw i32 2, %i2.6, !dbg !2708 + %sub706 = sub nsw i32 %mul705, %t2.0, !dbg !2708 + %sub707 = sub nsw i32 %sub706, 1, !dbg !2708 + %mul708 = mul nsw i32 %sub707, %n1, !dbg !2708 + %add709 = add nsw i32 %mul704, %mul708, !dbg !2708 + %mul710 = mul nsw i32 2, %i1.7, !dbg !2708 + %sub711 = sub nsw i32 %mul710, %d1.0, !dbg !2708 + %sub712 = sub nsw i32 %sub711, 1, !dbg !2708 + %add713 = add nsw i32 %add709, %sub712, !dbg !2708 + %idxprom714 = sext i32 %add713 to i64, !dbg !2708 + %arrayidx715 = getelementptr inbounds double, double* %ou, i64 %idxprom714, !dbg !2708 + store double %add699, double* %arrayidx715, align 8, !dbg !2709, !tbaa !437 + br label %for.inc716, !dbg !2710 + +for.inc716: ; preds = %for.body661 + %inc717 = add nsw i32 %i1.7, 1, !dbg !2711 + call void @llvm.dbg.value(metadata i32 %inc717, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond657, !dbg !2712, !llvm.loop !2713 + +for.end718: ; preds = %for.cond657 + call void @llvm.dbg.value(metadata i32 1, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond719, !dbg !2715 + +for.cond719: ; preds = %for.inc797, %for.end718 + %i1.8 = phi i32 [ 1, %for.end718 ], [ %inc798, %for.inc797 ], !dbg !2717 + call void @llvm.dbg.value(metadata i32 %i1.8, metadata !85, metadata !DIExpression()), !dbg !2289 + %sub720 = sub nsw i32 %mm1, 1, !dbg !2718 + %cmp721 = icmp sle i32 %i1.8, %sub720, !dbg !2720 + br i1 %cmp721, label %for.body723, label %for.end799, !dbg !2721 + +for.body723: ; preds = %for.cond719 + %mul724 = mul nsw i32 2, %i3.6, !dbg !2722 + %sub725 = sub nsw i32 %mul724, %d3.0, !dbg !2722 + %sub726 = sub nsw i32 %sub725, 1, !dbg !2722 + %mul727 = mul nsw i32 %sub726, %n2, !dbg !2722 + %mul728 = mul nsw i32 %mul727, %n1, !dbg !2722 + %mul729 = mul nsw i32 2, %i2.6, !dbg !2722 + %sub730 = sub nsw i32 %mul729, %t2.0, !dbg !2722 + %sub731 = sub nsw i32 %sub730, 1, !dbg !2722 + %mul732 = mul nsw i32 %sub731, %n1, !dbg !2722 + %add733 = add nsw i32 %mul728, %mul732, !dbg !2722 + %mul734 = mul nsw i32 2, %i1.8, !dbg !2722 + %sub735 = sub nsw i32 %mul734, %t1.0, !dbg !2722 + %sub736 = sub nsw i32 %sub735, 1, !dbg !2722 + %add737 = add nsw i32 %add733, %sub736, !dbg !2722 + %idxprom738 = sext i32 %add737 to i64, !dbg !2722 + %arrayidx739 = getelementptr inbounds double, double* %ou, i64 %idxprom738, !dbg !2722 + %52 = load double, double* %arrayidx739, align 8, !dbg !2722, !tbaa !437 + %sub740 = sub nsw i32 %i3.6, 1, !dbg !2724 + %mul741 = mul nsw i32 %sub740, %mm2, !dbg !2724 + %mul742 = mul nsw i32 %mul741, %mm1, !dbg !2724 + %mul743 = mul nsw i32 %i2.6, %mm1, !dbg !2724 + %add744 = add nsw i32 %mul742, %mul743, !dbg !2724 + %add745 = add nsw i32 %add744, %i1.8, !dbg !2724 + %idxprom746 = sext i32 %add745 to i64, !dbg !2724 + %arrayidx747 = getelementptr inbounds double, double* %oz, i64 %idxprom746, !dbg !2724 + %53 = load double, double* %arrayidx747, align 8, !dbg !2724, !tbaa !437 + %sub748 = sub nsw i32 %i3.6, 1, !dbg !2725 + %mul749 = mul nsw i32 %sub748, %mm2, !dbg !2725 + %mul750 = mul nsw i32 %mul749, %mm1, !dbg !2725 + %sub751 = sub nsw i32 %i2.6, 1, !dbg !2725 + %mul752 = mul nsw i32 %sub751, %mm1, !dbg !2725 + %add753 = add nsw i32 %mul750, %mul752, !dbg !2725 + %add754 = add nsw i32 %add753, %i1.8, !dbg !2725 + %idxprom755 = sext i32 %add754 to i64, !dbg !2725 + %arrayidx756 = getelementptr inbounds double, double* %oz, i64 %idxprom755, !dbg !2725 + %54 = load double, double* %arrayidx756, align 8, !dbg !2725, !tbaa !437 + %add757 = fadd double %53, %54, !dbg !2726 + %sub758 = sub nsw i32 %i3.6, 1, !dbg !2727 + %mul759 = mul nsw i32 %sub758, %mm2, !dbg !2727 + %mul760 = mul nsw i32 %mul759, %mm1, !dbg !2727 + %mul761 = mul nsw i32 %i2.6, %mm1, !dbg !2727 + %add762 = add nsw i32 %mul760, %mul761, !dbg !2727 + %sub763 = sub nsw i32 %i1.8, 1, !dbg !2727 + %add764 = add nsw i32 %add762, %sub763, !dbg !2727 + %idxprom765 = sext i32 %add764 to i64, !dbg !2727 + %arrayidx766 = getelementptr inbounds double, double* %oz, i64 %idxprom765, !dbg !2727 + %55 = load double, double* %arrayidx766, align 8, !dbg !2727, !tbaa !437 + %add767 = fadd double %add757, %55, !dbg !2728 + %sub768 = sub nsw i32 %i3.6, 1, !dbg !2729 + %mul769 = mul nsw i32 %sub768, %mm2, !dbg !2729 + %mul770 = mul nsw i32 %mul769, %mm1, !dbg !2729 + %sub771 = sub nsw i32 %i2.6, 1, !dbg !2729 + %mul772 = mul nsw i32 %sub771, %mm1, !dbg !2729 + %add773 = add nsw i32 %mul770, %mul772, !dbg !2729 + %sub774 = sub nsw i32 %i1.8, 1, !dbg !2729 + %add775 = add nsw i32 %add773, %sub774, !dbg !2729 + %idxprom776 = sext i32 %add775 to i64, !dbg !2729 + %arrayidx777 = getelementptr inbounds double, double* %oz, i64 %idxprom776, !dbg !2729 + %56 = load double, double* %arrayidx777, align 8, !dbg !2729, !tbaa !437 + %add778 = fadd double %add767, %56, !dbg !2730 + %mul779 = fmul double 2.500000e-01, %add778, !dbg !2731 + %add780 = fadd double %52, %mul779, !dbg !2732 + %mul781 = mul nsw i32 2, %i3.6, !dbg !2733 + %sub782 = sub nsw i32 %mul781, %d3.0, !dbg !2733 + %sub783 = sub nsw i32 %sub782, 1, !dbg !2733 + %mul784 = mul nsw i32 %sub783, %n2, !dbg !2733 + %mul785 = mul nsw i32 %mul784, %n1, !dbg !2733 + %mul786 = mul nsw i32 2, %i2.6, !dbg !2733 + %sub787 = sub nsw i32 %mul786, %t2.0, !dbg !2733 + %sub788 = sub nsw i32 %sub787, 1, !dbg !2733 + %mul789 = mul nsw i32 %sub788, %n1, !dbg !2733 + %add790 = add nsw i32 %mul785, %mul789, !dbg !2733 + %mul791 = mul nsw i32 2, %i1.8, !dbg !2733 + %sub792 = sub nsw i32 %mul791, %t1.0, !dbg !2733 + %sub793 = sub nsw i32 %sub792, 1, !dbg !2733 + %add794 = add nsw i32 %add790, %sub793, !dbg !2733 + %idxprom795 = sext i32 %add794 to i64, !dbg !2733 + %arrayidx796 = getelementptr inbounds double, double* %ou, i64 %idxprom795, !dbg !2733 + store double %add780, double* %arrayidx796, align 8, !dbg !2734, !tbaa !437 + br label %for.inc797, !dbg !2735 + +for.inc797: ; preds = %for.body723 + %inc798 = add nsw i32 %i1.8, 1, !dbg !2736 + call void @llvm.dbg.value(metadata i32 %inc798, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond719, !dbg !2737, !llvm.loop !2738 + +for.end799: ; preds = %for.cond719 + br label %for.inc800, !dbg !2740 + +for.inc800: ; preds = %for.end799 + %inc801 = add nsw i32 %i2.6, 1, !dbg !2741 + call void @llvm.dbg.value(metadata i32 %inc801, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond652, !dbg !2742, !llvm.loop !2743 + +for.end802: ; preds = %for.cond652 + br label %for.inc803, !dbg !2745 + +for.inc803: ; preds = %for.end802 + %inc804 = add nsw i32 %i3.6, 1, !dbg !2746 + call void @llvm.dbg.value(metadata i32 %inc804, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond647, !dbg !2747, !llvm.loop !2748 + +for.end805: ; preds = %for.cond647 + call void @llvm.dbg.value(metadata i32 1, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond806, !dbg !2750 + +for.cond806: ; preds = %for.inc881, %for.end805 + %i3.7 = phi i32 [ 1, %for.end805 ], [ %inc882, %for.inc881 ], !dbg !2752 + call void @llvm.dbg.value(metadata i32 %i3.7, metadata !83, metadata !DIExpression()), !dbg !2289 + %sub807 = sub nsw i32 %mm3, 1, !dbg !2753 + %cmp808 = icmp sle i32 %i3.7, %sub807, !dbg !2755 + br i1 %cmp808, label %for.body810, label %for.end883, !dbg !2756 + +for.body810: ; preds = %for.cond806 + call void @llvm.dbg.value(metadata i32 %d2.0, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond811, !dbg !2757 + +for.cond811: ; preds = %for.inc878, %for.body810 + %i2.7 = phi i32 [ %d2.0, %for.body810 ], [ %inc879, %for.inc878 ], !dbg !2760 + call void @llvm.dbg.value(metadata i32 %i2.7, metadata !84, metadata !DIExpression()), !dbg !2289 + %sub812 = sub nsw i32 %mm2, 1, !dbg !2761 + %cmp813 = icmp sle i32 %i2.7, %sub812, !dbg !2763 + br i1 %cmp813, label %for.body815, label %for.end880, !dbg !2764 + +for.body815: ; preds = %for.cond811 + call void @llvm.dbg.value(metadata i32 %d1.0, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond816, !dbg !2765 + +for.cond816: ; preds = %for.inc875, %for.body815 + %i1.9 = phi i32 [ %d1.0, %for.body815 ], [ %inc876, %for.inc875 ], !dbg !2768 + call void @llvm.dbg.value(metadata i32 %i1.9, metadata !85, metadata !DIExpression()), !dbg !2289 + %sub817 = sub nsw i32 %mm1, 1, !dbg !2769 + %cmp818 = icmp sle i32 %i1.9, %sub817, !dbg !2771 + br i1 %cmp818, label %for.body820, label %for.end877, !dbg !2772 + +for.body820: ; preds = %for.cond816 + %mul821 = mul nsw i32 2, %i3.7, !dbg !2773 + %sub822 = sub nsw i32 %mul821, %t3.0, !dbg !2773 + %sub823 = sub nsw i32 %sub822, 1, !dbg !2773 + %mul824 = mul nsw i32 %sub823, %n2, !dbg !2773 + %mul825 = mul nsw i32 %mul824, %n1, !dbg !2773 + %mul826 = mul nsw i32 2, %i2.7, !dbg !2773 + %sub827 = sub nsw i32 %mul826, %d2.0, !dbg !2773 + %sub828 = sub nsw i32 %sub827, 1, !dbg !2773 + %mul829 = mul nsw i32 %sub828, %n1, !dbg !2773 + %add830 = add nsw i32 %mul825, %mul829, !dbg !2773 + %mul831 = mul nsw i32 2, %i1.9, !dbg !2773 + %sub832 = sub nsw i32 %mul831, %d1.0, !dbg !2773 + %sub833 = sub nsw i32 %sub832, 1, !dbg !2773 + %add834 = add nsw i32 %add830, %sub833, !dbg !2773 + %idxprom835 = sext i32 %add834 to i64, !dbg !2773 + %arrayidx836 = getelementptr inbounds double, double* %ou, i64 %idxprom835, !dbg !2773 + %57 = load double, double* %arrayidx836, align 8, !dbg !2773, !tbaa !437 + %mul837 = mul nsw i32 %i3.7, %mm2, !dbg !2775 + %mul838 = mul nsw i32 %mul837, %mm1, !dbg !2775 + %sub839 = sub nsw i32 %i2.7, 1, !dbg !2775 + %mul840 = mul nsw i32 %sub839, %mm1, !dbg !2775 + %add841 = add nsw i32 %mul838, %mul840, !dbg !2775 + %sub842 = sub nsw i32 %i1.9, 1, !dbg !2775 + %add843 = add nsw i32 %add841, %sub842, !dbg !2775 + %idxprom844 = sext i32 %add843 to i64, !dbg !2775 + %arrayidx845 = getelementptr inbounds double, double* %oz, i64 %idxprom844, !dbg !2775 + %58 = load double, double* %arrayidx845, align 8, !dbg !2775, !tbaa !437 + %sub846 = sub nsw i32 %i3.7, 1, !dbg !2776 + %mul847 = mul nsw i32 %sub846, %mm2, !dbg !2776 + %mul848 = mul nsw i32 %mul847, %mm1, !dbg !2776 + %sub849 = sub nsw i32 %i2.7, 1, !dbg !2776 + %mul850 = mul nsw i32 %sub849, %mm1, !dbg !2776 + %add851 = add nsw i32 %mul848, %mul850, !dbg !2776 + %sub852 = sub nsw i32 %i1.9, 1, !dbg !2776 + %add853 = add nsw i32 %add851, %sub852, !dbg !2776 + %idxprom854 = sext i32 %add853 to i64, !dbg !2776 + %arrayidx855 = getelementptr inbounds double, double* %oz, i64 %idxprom854, !dbg !2776 + %59 = load double, double* %arrayidx855, align 8, !dbg !2776, !tbaa !437 + %add856 = fadd double %58, %59, !dbg !2777 + %mul857 = fmul double 5.000000e-01, %add856, !dbg !2778 + %add858 = fadd double %57, %mul857, !dbg !2779 + %mul859 = mul nsw i32 2, %i3.7, !dbg !2780 + %sub860 = sub nsw i32 %mul859, %t3.0, !dbg !2780 + %sub861 = sub nsw i32 %sub860, 1, !dbg !2780 + %mul862 = mul nsw i32 %sub861, %n2, !dbg !2780 + %mul863 = mul nsw i32 %mul862, %n1, !dbg !2780 + %mul864 = mul nsw i32 2, %i2.7, !dbg !2780 + %sub865 = sub nsw i32 %mul864, %d2.0, !dbg !2780 + %sub866 = sub nsw i32 %sub865, 1, !dbg !2780 + %mul867 = mul nsw i32 %sub866, %n1, !dbg !2780 + %add868 = add nsw i32 %mul863, %mul867, !dbg !2780 + %mul869 = mul nsw i32 2, %i1.9, !dbg !2780 + %sub870 = sub nsw i32 %mul869, %d1.0, !dbg !2780 + %sub871 = sub nsw i32 %sub870, 1, !dbg !2780 + %add872 = add nsw i32 %add868, %sub871, !dbg !2780 + %idxprom873 = sext i32 %add872 to i64, !dbg !2780 + %arrayidx874 = getelementptr inbounds double, double* %ou, i64 %idxprom873, !dbg !2780 + store double %add858, double* %arrayidx874, align 8, !dbg !2781, !tbaa !437 + br label %for.inc875, !dbg !2782 + +for.inc875: ; preds = %for.body820 + %inc876 = add nsw i32 %i1.9, 1, !dbg !2783 + call void @llvm.dbg.value(metadata i32 %inc876, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond816, !dbg !2784, !llvm.loop !2785 + +for.end877: ; preds = %for.cond816 + br label %for.inc878, !dbg !2787 + +for.inc878: ; preds = %for.end877 + %inc879 = add nsw i32 %i2.7, 1, !dbg !2788 + call void @llvm.dbg.value(metadata i32 %inc879, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond811, !dbg !2789, !llvm.loop !2790 + +for.end880: ; preds = %for.cond811 + br label %for.inc881, !dbg !2792 + +for.inc881: ; preds = %for.end880 + %inc882 = add nsw i32 %i3.7, 1, !dbg !2793 + call void @llvm.dbg.value(metadata i32 %inc882, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond806, !dbg !2794, !llvm.loop !2795 + +for.end883: ; preds = %for.cond806 + call void @llvm.dbg.value(metadata i32 1, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond884, !dbg !2797 + +for.cond884: ; preds = %for.inc978, %for.end883 + %i3.8 = phi i32 [ 1, %for.end883 ], [ %inc979, %for.inc978 ], !dbg !2799 + call void @llvm.dbg.value(metadata i32 %i3.8, metadata !83, metadata !DIExpression()), !dbg !2289 + %sub885 = sub nsw i32 %mm3, 1, !dbg !2800 + %cmp886 = icmp sle i32 %i3.8, %sub885, !dbg !2802 + br i1 %cmp886, label %for.body888, label %for.end980, !dbg !2803 + +for.body888: ; preds = %for.cond884 + call void @llvm.dbg.value(metadata i32 %d2.0, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond889, !dbg !2804 + +for.cond889: ; preds = %for.inc975, %for.body888 + %i2.8 = phi i32 [ %d2.0, %for.body888 ], [ %inc976, %for.inc975 ], !dbg !2807 + call void @llvm.dbg.value(metadata i32 %i2.8, metadata !84, metadata !DIExpression()), !dbg !2289 + %sub890 = sub nsw i32 %mm2, 1, !dbg !2808 + %cmp891 = icmp sle i32 %i2.8, %sub890, !dbg !2810 + br i1 %cmp891, label %for.body893, label %for.end977, !dbg !2811 + +for.body893: ; preds = %for.cond889 + call void @llvm.dbg.value(metadata i32 1, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond894, !dbg !2812 + +for.cond894: ; preds = %for.inc972, %for.body893 + %i1.10 = phi i32 [ 1, %for.body893 ], [ %inc973, %for.inc972 ], !dbg !2815 + call void @llvm.dbg.value(metadata i32 %i1.10, metadata !85, metadata !DIExpression()), !dbg !2289 + %sub895 = sub nsw i32 %mm1, 1, !dbg !2816 + %cmp896 = icmp sle i32 %i1.10, %sub895, !dbg !2818 + br i1 %cmp896, label %for.body898, label %for.end974, !dbg !2819 + +for.body898: ; preds = %for.cond894 + %mul899 = mul nsw i32 2, %i3.8, !dbg !2820 + %sub900 = sub nsw i32 %mul899, %t3.0, !dbg !2820 + %sub901 = sub nsw i32 %sub900, 1, !dbg !2820 + %mul902 = mul nsw i32 %sub901, %n2, !dbg !2820 + %mul903 = mul nsw i32 %mul902, %n1, !dbg !2820 + %mul904 = mul nsw i32 2, %i2.8, !dbg !2820 + %sub905 = sub nsw i32 %mul904, %d2.0, !dbg !2820 + %sub906 = sub nsw i32 %sub905, 1, !dbg !2820 + %mul907 = mul nsw i32 %sub906, %n1, !dbg !2820 + %add908 = add nsw i32 %mul903, %mul907, !dbg !2820 + %mul909 = mul nsw i32 2, %i1.10, !dbg !2820 + %sub910 = sub nsw i32 %mul909, %t1.0, !dbg !2820 + %sub911 = sub nsw i32 %sub910, 1, !dbg !2820 + %add912 = add nsw i32 %add908, %sub911, !dbg !2820 + %idxprom913 = sext i32 %add912 to i64, !dbg !2820 + %arrayidx914 = getelementptr inbounds double, double* %ou, i64 %idxprom913, !dbg !2820 + %60 = load double, double* %arrayidx914, align 8, !dbg !2820, !tbaa !437 + %mul915 = mul nsw i32 %i3.8, %mm2, !dbg !2822 + %mul916 = mul nsw i32 %mul915, %mm1, !dbg !2822 + %sub917 = sub nsw i32 %i2.8, 1, !dbg !2822 + %mul918 = mul nsw i32 %sub917, %mm1, !dbg !2822 + %add919 = add nsw i32 %mul916, %mul918, !dbg !2822 + %add920 = add nsw i32 %add919, %i1.10, !dbg !2822 + %idxprom921 = sext i32 %add920 to i64, !dbg !2822 + %arrayidx922 = getelementptr inbounds double, double* %oz, i64 %idxprom921, !dbg !2822 + %61 = load double, double* %arrayidx922, align 8, !dbg !2822, !tbaa !437 + %mul923 = mul nsw i32 %i3.8, %mm2, !dbg !2823 + %mul924 = mul nsw i32 %mul923, %mm1, !dbg !2823 + %sub925 = sub nsw i32 %i2.8, 1, !dbg !2823 + %mul926 = mul nsw i32 %sub925, %mm1, !dbg !2823 + %add927 = add nsw i32 %mul924, %mul926, !dbg !2823 + %sub928 = sub nsw i32 %i1.10, 1, !dbg !2823 + %add929 = add nsw i32 %add927, %sub928, !dbg !2823 + %idxprom930 = sext i32 %add929 to i64, !dbg !2823 + %arrayidx931 = getelementptr inbounds double, double* %oz, i64 %idxprom930, !dbg !2823 + %62 = load double, double* %arrayidx931, align 8, !dbg !2823, !tbaa !437 + %add932 = fadd double %61, %62, !dbg !2824 + %sub933 = sub nsw i32 %i3.8, 1, !dbg !2825 + %mul934 = mul nsw i32 %sub933, %mm2, !dbg !2825 + %mul935 = mul nsw i32 %mul934, %mm1, !dbg !2825 + %sub936 = sub nsw i32 %i2.8, 1, !dbg !2825 + %mul937 = mul nsw i32 %sub936, %mm1, !dbg !2825 + %add938 = add nsw i32 %mul935, %mul937, !dbg !2825 + %add939 = add nsw i32 %add938, %i1.10, !dbg !2825 + %idxprom940 = sext i32 %add939 to i64, !dbg !2825 + %arrayidx941 = getelementptr inbounds double, double* %oz, i64 %idxprom940, !dbg !2825 + %63 = load double, double* %arrayidx941, align 8, !dbg !2825, !tbaa !437 + %add942 = fadd double %add932, %63, !dbg !2826 + %sub943 = sub nsw i32 %i3.8, 1, !dbg !2827 + %mul944 = mul nsw i32 %sub943, %mm2, !dbg !2827 + %mul945 = mul nsw i32 %mul944, %mm1, !dbg !2827 + %sub946 = sub nsw i32 %i2.8, 1, !dbg !2827 + %mul947 = mul nsw i32 %sub946, %mm1, !dbg !2827 + %add948 = add nsw i32 %mul945, %mul947, !dbg !2827 + %sub949 = sub nsw i32 %i1.10, 1, !dbg !2827 + %add950 = add nsw i32 %add948, %sub949, !dbg !2827 + %idxprom951 = sext i32 %add950 to i64, !dbg !2827 + %arrayidx952 = getelementptr inbounds double, double* %oz, i64 %idxprom951, !dbg !2827 + %64 = load double, double* %arrayidx952, align 8, !dbg !2827, !tbaa !437 + %add953 = fadd double %add942, %64, !dbg !2828 + %mul954 = fmul double 2.500000e-01, %add953, !dbg !2829 + %add955 = fadd double %60, %mul954, !dbg !2830 + %mul956 = mul nsw i32 2, %i3.8, !dbg !2831 + %sub957 = sub nsw i32 %mul956, %t3.0, !dbg !2831 + %sub958 = sub nsw i32 %sub957, 1, !dbg !2831 + %mul959 = mul nsw i32 %sub958, %n2, !dbg !2831 + %mul960 = mul nsw i32 %mul959, %n1, !dbg !2831 + %mul961 = mul nsw i32 2, %i2.8, !dbg !2831 + %sub962 = sub nsw i32 %mul961, %d2.0, !dbg !2831 + %sub963 = sub nsw i32 %sub962, 1, !dbg !2831 + %mul964 = mul nsw i32 %sub963, %n1, !dbg !2831 + %add965 = add nsw i32 %mul960, %mul964, !dbg !2831 + %mul966 = mul nsw i32 2, %i1.10, !dbg !2831 + %sub967 = sub nsw i32 %mul966, %t1.0, !dbg !2831 + %sub968 = sub nsw i32 %sub967, 1, !dbg !2831 + %add969 = add nsw i32 %add965, %sub968, !dbg !2831 + %idxprom970 = sext i32 %add969 to i64, !dbg !2831 + %arrayidx971 = getelementptr inbounds double, double* %ou, i64 %idxprom970, !dbg !2831 + store double %add955, double* %arrayidx971, align 8, !dbg !2832, !tbaa !437 + br label %for.inc972, !dbg !2833 + +for.inc972: ; preds = %for.body898 + %inc973 = add nsw i32 %i1.10, 1, !dbg !2834 + call void @llvm.dbg.value(metadata i32 %inc973, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond894, !dbg !2835, !llvm.loop !2836 + +for.end974: ; preds = %for.cond894 + br label %for.inc975, !dbg !2838 + +for.inc975: ; preds = %for.end974 + %inc976 = add nsw i32 %i2.8, 1, !dbg !2839 + call void @llvm.dbg.value(metadata i32 %inc976, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond889, !dbg !2840, !llvm.loop !2841 + +for.end977: ; preds = %for.cond889 + br label %for.inc978, !dbg !2843 + +for.inc978: ; preds = %for.end977 + %inc979 = add nsw i32 %i3.8, 1, !dbg !2844 + call void @llvm.dbg.value(metadata i32 %inc979, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond884, !dbg !2845, !llvm.loop !2846 + +for.end980: ; preds = %for.cond884 + call void @llvm.dbg.value(metadata i32 1, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond981, !dbg !2848 + +for.cond981: ; preds = %for.inc1075, %for.end980 + %i3.9 = phi i32 [ 1, %for.end980 ], [ %inc1076, %for.inc1075 ], !dbg !2850 + call void @llvm.dbg.value(metadata i32 %i3.9, metadata !83, metadata !DIExpression()), !dbg !2289 + %sub982 = sub nsw i32 %mm3, 1, !dbg !2851 + %cmp983 = icmp sle i32 %i3.9, %sub982, !dbg !2853 + br i1 %cmp983, label %for.body985, label %for.end1077, !dbg !2854 + +for.body985: ; preds = %for.cond981 + call void @llvm.dbg.value(metadata i32 1, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond986, !dbg !2855 + +for.cond986: ; preds = %for.inc1072, %for.body985 + %i2.9 = phi i32 [ 1, %for.body985 ], [ %inc1073, %for.inc1072 ], !dbg !2858 + call void @llvm.dbg.value(metadata i32 %i2.9, metadata !84, metadata !DIExpression()), !dbg !2289 + %sub987 = sub nsw i32 %mm2, 1, !dbg !2859 + %cmp988 = icmp sle i32 %i2.9, %sub987, !dbg !2861 + br i1 %cmp988, label %for.body990, label %for.end1074, !dbg !2862 + +for.body990: ; preds = %for.cond986 + call void @llvm.dbg.value(metadata i32 %d1.0, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond991, !dbg !2863 + +for.cond991: ; preds = %for.inc1069, %for.body990 + %i1.11 = phi i32 [ %d1.0, %for.body990 ], [ %inc1070, %for.inc1069 ], !dbg !2866 + call void @llvm.dbg.value(metadata i32 %i1.11, metadata !85, metadata !DIExpression()), !dbg !2289 + %sub992 = sub nsw i32 %mm1, 1, !dbg !2867 + %cmp993 = icmp sle i32 %i1.11, %sub992, !dbg !2869 + br i1 %cmp993, label %for.body995, label %for.end1071, !dbg !2870 + +for.body995: ; preds = %for.cond991 + %mul996 = mul nsw i32 2, %i3.9, !dbg !2871 + %sub997 = sub nsw i32 %mul996, %t3.0, !dbg !2871 + %sub998 = sub nsw i32 %sub997, 1, !dbg !2871 + %mul999 = mul nsw i32 %sub998, %n2, !dbg !2871 + %mul1000 = mul nsw i32 %mul999, %n1, !dbg !2871 + %mul1001 = mul nsw i32 2, %i2.9, !dbg !2871 + %sub1002 = sub nsw i32 %mul1001, %t2.0, !dbg !2871 + %sub1003 = sub nsw i32 %sub1002, 1, !dbg !2871 + %mul1004 = mul nsw i32 %sub1003, %n1, !dbg !2871 + %add1005 = add nsw i32 %mul1000, %mul1004, !dbg !2871 + %mul1006 = mul nsw i32 2, %i1.11, !dbg !2871 + %sub1007 = sub nsw i32 %mul1006, %d1.0, !dbg !2871 + %sub1008 = sub nsw i32 %sub1007, 1, !dbg !2871 + %add1009 = add nsw i32 %add1005, %sub1008, !dbg !2871 + %idxprom1010 = sext i32 %add1009 to i64, !dbg !2871 + %arrayidx1011 = getelementptr inbounds double, double* %ou, i64 %idxprom1010, !dbg !2871 + %65 = load double, double* %arrayidx1011, align 8, !dbg !2871, !tbaa !437 + %mul1012 = mul nsw i32 %i3.9, %mm2, !dbg !2873 + %mul1013 = mul nsw i32 %mul1012, %mm1, !dbg !2873 + %mul1014 = mul nsw i32 %i2.9, %mm1, !dbg !2873 + %add1015 = add nsw i32 %mul1013, %mul1014, !dbg !2873 + %sub1016 = sub nsw i32 %i1.11, 1, !dbg !2873 + %add1017 = add nsw i32 %add1015, %sub1016, !dbg !2873 + %idxprom1018 = sext i32 %add1017 to i64, !dbg !2873 + %arrayidx1019 = getelementptr inbounds double, double* %oz, i64 %idxprom1018, !dbg !2873 + %66 = load double, double* %arrayidx1019, align 8, !dbg !2873, !tbaa !437 + %mul1020 = mul nsw i32 %i3.9, %mm2, !dbg !2874 + %mul1021 = mul nsw i32 %mul1020, %mm1, !dbg !2874 + %sub1022 = sub nsw i32 %i2.9, 1, !dbg !2874 + %mul1023 = mul nsw i32 %sub1022, %mm1, !dbg !2874 + %add1024 = add nsw i32 %mul1021, %mul1023, !dbg !2874 + %sub1025 = sub nsw i32 %i1.11, 1, !dbg !2874 + %add1026 = add nsw i32 %add1024, %sub1025, !dbg !2874 + %idxprom1027 = sext i32 %add1026 to i64, !dbg !2874 + %arrayidx1028 = getelementptr inbounds double, double* %oz, i64 %idxprom1027, !dbg !2874 + %67 = load double, double* %arrayidx1028, align 8, !dbg !2874, !tbaa !437 + %add1029 = fadd double %66, %67, !dbg !2875 + %sub1030 = sub nsw i32 %i3.9, 1, !dbg !2876 + %mul1031 = mul nsw i32 %sub1030, %mm2, !dbg !2876 + %mul1032 = mul nsw i32 %mul1031, %mm1, !dbg !2876 + %mul1033 = mul nsw i32 %i2.9, %mm1, !dbg !2876 + %add1034 = add nsw i32 %mul1032, %mul1033, !dbg !2876 + %sub1035 = sub nsw i32 %i1.11, 1, !dbg !2876 + %add1036 = add nsw i32 %add1034, %sub1035, !dbg !2876 + %idxprom1037 = sext i32 %add1036 to i64, !dbg !2876 + %arrayidx1038 = getelementptr inbounds double, double* %oz, i64 %idxprom1037, !dbg !2876 + %68 = load double, double* %arrayidx1038, align 8, !dbg !2876, !tbaa !437 + %add1039 = fadd double %add1029, %68, !dbg !2877 + %sub1040 = sub nsw i32 %i3.9, 1, !dbg !2878 + %mul1041 = mul nsw i32 %sub1040, %mm2, !dbg !2878 + %mul1042 = mul nsw i32 %mul1041, %mm1, !dbg !2878 + %sub1043 = sub nsw i32 %i2.9, 1, !dbg !2878 + %mul1044 = mul nsw i32 %sub1043, %mm1, !dbg !2878 + %add1045 = add nsw i32 %mul1042, %mul1044, !dbg !2878 + %sub1046 = sub nsw i32 %i1.11, 1, !dbg !2878 + %add1047 = add nsw i32 %add1045, %sub1046, !dbg !2878 + %idxprom1048 = sext i32 %add1047 to i64, !dbg !2878 + %arrayidx1049 = getelementptr inbounds double, double* %oz, i64 %idxprom1048, !dbg !2878 + %69 = load double, double* %arrayidx1049, align 8, !dbg !2878, !tbaa !437 + %add1050 = fadd double %add1039, %69, !dbg !2879 + %mul1051 = fmul double 2.500000e-01, %add1050, !dbg !2880 + %add1052 = fadd double %65, %mul1051, !dbg !2881 + %mul1053 = mul nsw i32 2, %i3.9, !dbg !2882 + %sub1054 = sub nsw i32 %mul1053, %t3.0, !dbg !2882 + %sub1055 = sub nsw i32 %sub1054, 1, !dbg !2882 + %mul1056 = mul nsw i32 %sub1055, %n2, !dbg !2882 + %mul1057 = mul nsw i32 %mul1056, %n1, !dbg !2882 + %mul1058 = mul nsw i32 2, %i2.9, !dbg !2882 + %sub1059 = sub nsw i32 %mul1058, %t2.0, !dbg !2882 + %sub1060 = sub nsw i32 %sub1059, 1, !dbg !2882 + %mul1061 = mul nsw i32 %sub1060, %n1, !dbg !2882 + %add1062 = add nsw i32 %mul1057, %mul1061, !dbg !2882 + %mul1063 = mul nsw i32 2, %i1.11, !dbg !2882 + %sub1064 = sub nsw i32 %mul1063, %d1.0, !dbg !2882 + %sub1065 = sub nsw i32 %sub1064, 1, !dbg !2882 + %add1066 = add nsw i32 %add1062, %sub1065, !dbg !2882 + %idxprom1067 = sext i32 %add1066 to i64, !dbg !2882 + %arrayidx1068 = getelementptr inbounds double, double* %ou, i64 %idxprom1067, !dbg !2882 + store double %add1052, double* %arrayidx1068, align 8, !dbg !2883, !tbaa !437 + br label %for.inc1069, !dbg !2884 + +for.inc1069: ; preds = %for.body995 + %inc1070 = add nsw i32 %i1.11, 1, !dbg !2885 + call void @llvm.dbg.value(metadata i32 %inc1070, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond991, !dbg !2886, !llvm.loop !2887 + +for.end1071: ; preds = %for.cond991 + br label %for.inc1072, !dbg !2889 + +for.inc1072: ; preds = %for.end1071 + %inc1073 = add nsw i32 %i2.9, 1, !dbg !2890 + call void @llvm.dbg.value(metadata i32 %inc1073, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond986, !dbg !2891, !llvm.loop !2892 + +for.end1074: ; preds = %for.cond986 + br label %for.inc1075, !dbg !2894 + +for.inc1075: ; preds = %for.end1074 + %inc1076 = add nsw i32 %i3.9, 1, !dbg !2895 + call void @llvm.dbg.value(metadata i32 %inc1076, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond981, !dbg !2896, !llvm.loop !2897 + +for.end1077: ; preds = %for.cond981 + call void @llvm.dbg.value(metadata i32 1, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond1078, !dbg !2899 + +for.cond1078: ; preds = %for.inc1208, %for.end1077 + %i3.10 = phi i32 [ 1, %for.end1077 ], [ %inc1209, %for.inc1208 ], !dbg !2901 + call void @llvm.dbg.value(metadata i32 %i3.10, metadata !83, metadata !DIExpression()), !dbg !2289 + %sub1079 = sub nsw i32 %mm3, 1, !dbg !2902 + %cmp1080 = icmp sle i32 %i3.10, %sub1079, !dbg !2904 + br i1 %cmp1080, label %for.body1082, label %for.end1210, !dbg !2905 + +for.body1082: ; preds = %for.cond1078 + call void @llvm.dbg.value(metadata i32 1, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond1083, !dbg !2906 + +for.cond1083: ; preds = %for.inc1205, %for.body1082 + %i2.10 = phi i32 [ 1, %for.body1082 ], [ %inc1206, %for.inc1205 ], !dbg !2909 + call void @llvm.dbg.value(metadata i32 %i2.10, metadata !84, metadata !DIExpression()), !dbg !2289 + %sub1084 = sub nsw i32 %mm2, 1, !dbg !2910 + %cmp1085 = icmp sle i32 %i2.10, %sub1084, !dbg !2912 + br i1 %cmp1085, label %for.body1087, label %for.end1207, !dbg !2913 + +for.body1087: ; preds = %for.cond1083 + call void @llvm.dbg.value(metadata i32 1, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond1088, !dbg !2914 + +for.cond1088: ; preds = %for.inc1202, %for.body1087 + %i1.12 = phi i32 [ 1, %for.body1087 ], [ %inc1203, %for.inc1202 ], !dbg !2917 + call void @llvm.dbg.value(metadata i32 %i1.12, metadata !85, metadata !DIExpression()), !dbg !2289 + %sub1089 = sub nsw i32 %mm1, 1, !dbg !2918 + %cmp1090 = icmp sle i32 %i1.12, %sub1089, !dbg !2920 + br i1 %cmp1090, label %for.body1092, label %for.end1204, !dbg !2921 + +for.body1092: ; preds = %for.cond1088 + %mul1093 = mul nsw i32 2, %i3.10, !dbg !2922 + %sub1094 = sub nsw i32 %mul1093, %t3.0, !dbg !2922 + %sub1095 = sub nsw i32 %sub1094, 1, !dbg !2922 + %mul1096 = mul nsw i32 %sub1095, %n2, !dbg !2922 + %mul1097 = mul nsw i32 %mul1096, %n1, !dbg !2922 + %mul1098 = mul nsw i32 2, %i2.10, !dbg !2922 + %sub1099 = sub nsw i32 %mul1098, %t2.0, !dbg !2922 + %sub1100 = sub nsw i32 %sub1099, 1, !dbg !2922 + %mul1101 = mul nsw i32 %sub1100, %n1, !dbg !2922 + %add1102 = add nsw i32 %mul1097, %mul1101, !dbg !2922 + %mul1103 = mul nsw i32 2, %i1.12, !dbg !2922 + %sub1104 = sub nsw i32 %mul1103, %t1.0, !dbg !2922 + %sub1105 = sub nsw i32 %sub1104, 1, !dbg !2922 + %add1106 = add nsw i32 %add1102, %sub1105, !dbg !2922 + %idxprom1107 = sext i32 %add1106 to i64, !dbg !2922 + %arrayidx1108 = getelementptr inbounds double, double* %ou, i64 %idxprom1107, !dbg !2922 + %70 = load double, double* %arrayidx1108, align 8, !dbg !2922, !tbaa !437 + %mul1109 = mul nsw i32 %i3.10, %mm2, !dbg !2924 + %mul1110 = mul nsw i32 %mul1109, %mm1, !dbg !2924 + %mul1111 = mul nsw i32 %i2.10, %mm1, !dbg !2924 + %add1112 = add nsw i32 %mul1110, %mul1111, !dbg !2924 + %add1113 = add nsw i32 %add1112, %i1.12, !dbg !2924 + %idxprom1114 = sext i32 %add1113 to i64, !dbg !2924 + %arrayidx1115 = getelementptr inbounds double, double* %oz, i64 %idxprom1114, !dbg !2924 + %71 = load double, double* %arrayidx1115, align 8, !dbg !2924, !tbaa !437 + %mul1116 = mul nsw i32 %i3.10, %mm2, !dbg !2925 + %mul1117 = mul nsw i32 %mul1116, %mm1, !dbg !2925 + %sub1118 = sub nsw i32 %i2.10, 1, !dbg !2925 + %mul1119 = mul nsw i32 %sub1118, %mm1, !dbg !2925 + %add1120 = add nsw i32 %mul1117, %mul1119, !dbg !2925 + %add1121 = add nsw i32 %add1120, %i1.12, !dbg !2925 + %idxprom1122 = sext i32 %add1121 to i64, !dbg !2925 + %arrayidx1123 = getelementptr inbounds double, double* %oz, i64 %idxprom1122, !dbg !2925 + %72 = load double, double* %arrayidx1123, align 8, !dbg !2925, !tbaa !437 + %add1124 = fadd double %71, %72, !dbg !2926 + %mul1125 = mul nsw i32 %i3.10, %mm2, !dbg !2927 + %mul1126 = mul nsw i32 %mul1125, %mm1, !dbg !2927 + %mul1127 = mul nsw i32 %i2.10, %mm1, !dbg !2927 + %add1128 = add nsw i32 %mul1126, %mul1127, !dbg !2927 + %sub1129 = sub nsw i32 %i1.12, 1, !dbg !2927 + %add1130 = add nsw i32 %add1128, %sub1129, !dbg !2927 + %idxprom1131 = sext i32 %add1130 to i64, !dbg !2927 + %arrayidx1132 = getelementptr inbounds double, double* %oz, i64 %idxprom1131, !dbg !2927 + %73 = load double, double* %arrayidx1132, align 8, !dbg !2927, !tbaa !437 + %add1133 = fadd double %add1124, %73, !dbg !2928 + %mul1134 = mul nsw i32 %i3.10, %mm2, !dbg !2929 + %mul1135 = mul nsw i32 %mul1134, %mm1, !dbg !2929 + %sub1136 = sub nsw i32 %i2.10, 1, !dbg !2929 + %mul1137 = mul nsw i32 %sub1136, %mm1, !dbg !2929 + %add1138 = add nsw i32 %mul1135, %mul1137, !dbg !2929 + %sub1139 = sub nsw i32 %i1.12, 1, !dbg !2929 + %add1140 = add nsw i32 %add1138, %sub1139, !dbg !2929 + %idxprom1141 = sext i32 %add1140 to i64, !dbg !2929 + %arrayidx1142 = getelementptr inbounds double, double* %oz, i64 %idxprom1141, !dbg !2929 + %74 = load double, double* %arrayidx1142, align 8, !dbg !2929, !tbaa !437 + %add1143 = fadd double %add1133, %74, !dbg !2930 + %sub1144 = sub nsw i32 %i3.10, 1, !dbg !2931 + %mul1145 = mul nsw i32 %sub1144, %mm2, !dbg !2931 + %mul1146 = mul nsw i32 %mul1145, %mm1, !dbg !2931 + %mul1147 = mul nsw i32 %i2.10, %mm1, !dbg !2931 + %add1148 = add nsw i32 %mul1146, %mul1147, !dbg !2931 + %add1149 = add nsw i32 %add1148, %i1.12, !dbg !2931 + %idxprom1150 = sext i32 %add1149 to i64, !dbg !2931 + %arrayidx1151 = getelementptr inbounds double, double* %oz, i64 %idxprom1150, !dbg !2931 + %75 = load double, double* %arrayidx1151, align 8, !dbg !2931, !tbaa !437 + %add1152 = fadd double %add1143, %75, !dbg !2932 + %sub1153 = sub nsw i32 %i3.10, 1, !dbg !2933 + %mul1154 = mul nsw i32 %sub1153, %mm2, !dbg !2933 + %mul1155 = mul nsw i32 %mul1154, %mm1, !dbg !2933 + %sub1156 = sub nsw i32 %i2.10, 1, !dbg !2933 + %mul1157 = mul nsw i32 %sub1156, %mm1, !dbg !2933 + %add1158 = add nsw i32 %mul1155, %mul1157, !dbg !2933 + %add1159 = add nsw i32 %add1158, %i1.12, !dbg !2933 + %idxprom1160 = sext i32 %add1159 to i64, !dbg !2933 + %arrayidx1161 = getelementptr inbounds double, double* %oz, i64 %idxprom1160, !dbg !2933 + %76 = load double, double* %arrayidx1161, align 8, !dbg !2933, !tbaa !437 + %add1162 = fadd double %add1152, %76, !dbg !2934 + %sub1163 = sub nsw i32 %i3.10, 1, !dbg !2935 + %mul1164 = mul nsw i32 %sub1163, %mm2, !dbg !2935 + %mul1165 = mul nsw i32 %mul1164, %mm1, !dbg !2935 + %mul1166 = mul nsw i32 %i2.10, %mm1, !dbg !2935 + %add1167 = add nsw i32 %mul1165, %mul1166, !dbg !2935 + %sub1168 = sub nsw i32 %i1.12, 1, !dbg !2935 + %add1169 = add nsw i32 %add1167, %sub1168, !dbg !2935 + %idxprom1170 = sext i32 %add1169 to i64, !dbg !2935 + %arrayidx1171 = getelementptr inbounds double, double* %oz, i64 %idxprom1170, !dbg !2935 + %77 = load double, double* %arrayidx1171, align 8, !dbg !2935, !tbaa !437 + %add1172 = fadd double %add1162, %77, !dbg !2936 + %sub1173 = sub nsw i32 %i3.10, 1, !dbg !2937 + %mul1174 = mul nsw i32 %sub1173, %mm2, !dbg !2937 + %mul1175 = mul nsw i32 %mul1174, %mm1, !dbg !2937 + %sub1176 = sub nsw i32 %i2.10, 1, !dbg !2937 + %mul1177 = mul nsw i32 %sub1176, %mm1, !dbg !2937 + %add1178 = add nsw i32 %mul1175, %mul1177, !dbg !2937 + %sub1179 = sub nsw i32 %i1.12, 1, !dbg !2937 + %add1180 = add nsw i32 %add1178, %sub1179, !dbg !2937 + %idxprom1181 = sext i32 %add1180 to i64, !dbg !2937 + %arrayidx1182 = getelementptr inbounds double, double* %oz, i64 %idxprom1181, !dbg !2937 + %78 = load double, double* %arrayidx1182, align 8, !dbg !2937, !tbaa !437 + %add1183 = fadd double %add1172, %78, !dbg !2938 + %mul1184 = fmul double 1.250000e-01, %add1183, !dbg !2939 + %add1185 = fadd double %70, %mul1184, !dbg !2940 + %mul1186 = mul nsw i32 2, %i3.10, !dbg !2941 + %sub1187 = sub nsw i32 %mul1186, %t3.0, !dbg !2941 + %sub1188 = sub nsw i32 %sub1187, 1, !dbg !2941 + %mul1189 = mul nsw i32 %sub1188, %n2, !dbg !2941 + %mul1190 = mul nsw i32 %mul1189, %n1, !dbg !2941 + %mul1191 = mul nsw i32 2, %i2.10, !dbg !2941 + %sub1192 = sub nsw i32 %mul1191, %t2.0, !dbg !2941 + %sub1193 = sub nsw i32 %sub1192, 1, !dbg !2941 + %mul1194 = mul nsw i32 %sub1193, %n1, !dbg !2941 + %add1195 = add nsw i32 %mul1190, %mul1194, !dbg !2941 + %mul1196 = mul nsw i32 2, %i1.12, !dbg !2941 + %sub1197 = sub nsw i32 %mul1196, %t1.0, !dbg !2941 + %sub1198 = sub nsw i32 %sub1197, 1, !dbg !2941 + %add1199 = add nsw i32 %add1195, %sub1198, !dbg !2941 + %idxprom1200 = sext i32 %add1199 to i64, !dbg !2941 + %arrayidx1201 = getelementptr inbounds double, double* %ou, i64 %idxprom1200, !dbg !2941 + store double %add1185, double* %arrayidx1201, align 8, !dbg !2942, !tbaa !437 + br label %for.inc1202, !dbg !2943 + +for.inc1202: ; preds = %for.body1092 + %inc1203 = add nsw i32 %i1.12, 1, !dbg !2944 + call void @llvm.dbg.value(metadata i32 %inc1203, metadata !85, metadata !DIExpression()), !dbg !2289 + br label %for.cond1088, !dbg !2945, !llvm.loop !2946 + +for.end1204: ; preds = %for.cond1088 + br label %for.inc1205, !dbg !2948 + +for.inc1205: ; preds = %for.end1204 + %inc1206 = add nsw i32 %i2.10, 1, !dbg !2949 + call void @llvm.dbg.value(metadata i32 %inc1206, metadata !84, metadata !DIExpression()), !dbg !2289 + br label %for.cond1083, !dbg !2950, !llvm.loop !2951 + +for.end1207: ; preds = %for.cond1083 + br label %for.inc1208, !dbg !2953 + +for.inc1208: ; preds = %for.end1207 + %inc1209 = add nsw i32 %i3.10, 1, !dbg !2954 + call void @llvm.dbg.value(metadata i32 %inc1209, metadata !83, metadata !DIExpression()), !dbg !2289 + br label %for.cond1078, !dbg !2955, !llvm.loop !2956 + +for.end1210: ; preds = %for.cond1078 + br label %if.end1211 + +if.end1211: ; preds = %for.end1210, %for.end502 + %79 = load double*, double** @interp.z1, align 8, !dbg !2958, !tbaa !198 + %80 = bitcast double* %79 to i8*, !dbg !2958 + %call1212 = call i32 @omp_get_default_device(), !dbg !2959 + call void @omp_target_free(i8* %80, i32 %call1212), !dbg !2960 + %81 = load double*, double** @interp.z2, align 8, !dbg !2961, !tbaa !198 + %82 = bitcast double* %81 to i8*, !dbg !2961 + %call1213 = call i32 @omp_get_default_device(), !dbg !2962 + call void @omp_target_free(i8* %82, i32 %call1213), !dbg !2963 + %83 = load double*, double** @interp.z3, align 8, !dbg !2964, !tbaa !198 + %84 = bitcast double* %83 to i8*, !dbg !2964 + %call1214 = call i32 @omp_get_default_device(), !dbg !2965 + call void @omp_target_free(i8* %84, i32 %call1214), !dbg !2966 + %85 = load i32, i32* @timeron, align 4, !dbg !2967, !tbaa !242 + %tobool1215 = icmp ne i32 %85, 0, !dbg !2967 + br i1 %tobool1215, label %if.then1216, label %if.end1217, !dbg !2969 + +if.then1216: ; preds = %if.end1211 + call void @timer_stop(i32 7), !dbg !2970 + br label %if.end1217, !dbg !2970 + +if.end1217: ; preds = %if.then1216, %if.end1211 + %86 = load i32, i32* getelementptr inbounds ([8 x i32], [8 x i32]* @debug_vec, i64 0, i64 0), align 16, !dbg !2971, !tbaa !278 + %cmp1218 = icmp sge i32 %86, 1, !dbg !2973 + br i1 %cmp1218, label %if.then1220, label %if.end1222, !dbg !2974 + +if.then1220: ; preds = %if.end1217 + %sub1221 = sub nsw i32 %k, 1, !dbg !2975 + call void @rep_nrm(double* %oz, i32 %mm1, i32 %mm2, i32 %mm3, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.55, i64 0, i64 0), i32 %sub1221), !dbg !2977 + call void @rep_nrm(double* %ou, i32 %n1, i32 %n2, i32 %n3, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.56, i64 0, i64 0), i32 %k), !dbg !2978 + br label %if.end1222, !dbg !2979 + +if.end1222: ; preds = %if.then1220, %if.end1217 + %87 = load i32, i32* getelementptr inbounds ([8 x i32], [8 x i32]* @debug_vec, i64 0, i64 5), align 4, !dbg !2980, !tbaa !278 + %cmp1223 = icmp sge i32 %87, %k, !dbg !2982 + br i1 %cmp1223, label %if.then1225, label %if.end1226, !dbg !2983 + +if.then1225: ; preds = %if.end1222 + call void @showall(double* %oz, i32 %mm1, i32 %mm2, i32 %mm3), !dbg !2984 + call void @showall(double* %ou, i32 %n1, i32 %n2, i32 %n3), !dbg !2986 + br label %if.end1226, !dbg !2987 + +if.end1226: ; preds = %if.then1225, %if.end1222 + ret void, !dbg !2988 +} + +declare dso_local i8* @omp_target_alloc(i64, i32) #4 + +declare dso_local i32 @omp_get_default_device() #4 + +; Function Attrs: nounwind uwtable +define internal void @comm3(double* %ou, i32 %n1, i32 %n2, i32 %n3, i32 %kk) #0 !dbg !2989 { +entry: + call void @llvm.dbg.value(metadata double* %ou, metadata !2993, metadata !DIExpression()), !dbg !3001 + call void @llvm.dbg.value(metadata i32 %n1, metadata !2994, metadata !DIExpression()), !dbg !3001 + call void @llvm.dbg.value(metadata i32 %n2, metadata !2995, metadata !DIExpression()), !dbg !3001 + call void @llvm.dbg.value(metadata i32 %n3, metadata !2996, metadata !DIExpression()), !dbg !3001 + call void @llvm.dbg.value(metadata i32 %kk, metadata !2997, metadata !DIExpression()), !dbg !3001 + %0 = load i32, i32* @timeron, align 4, !dbg !3002, !tbaa !242 + %tobool = icmp ne i32 %0, 0, !dbg !3002 + br i1 %tobool, label %if.then, label %if.end, !dbg !3004 + +if.then: ; preds = %entry + call void @timer_start(i32 9), !dbg !3005 + br label %if.end, !dbg !3005 + +if.end: ; preds = %if.then, %entry + call void @llvm.dbg.value(metadata i32 1, metadata !3000, metadata !DIExpression()), !dbg !3001 + br label %for.cond, !dbg !3006 + +for.cond: ; preds = %for.inc31, %if.end + %i3.0 = phi i32 [ 1, %if.end ], [ %inc32, %for.inc31 ], !dbg !3009 + call void @llvm.dbg.value(metadata i32 %i3.0, metadata !3000, metadata !DIExpression()), !dbg !3001 + %sub = sub nsw i32 %n3, 1, !dbg !3010 + %cmp = icmp slt i32 %i3.0, %sub, !dbg !3012 + br i1 %cmp, label %for.body, label %for.end33, !dbg !3013 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 1, metadata !2999, metadata !DIExpression()), !dbg !3001 + br label %for.cond1, !dbg !3014 + +for.cond1: ; preds = %for.inc, %for.body + %i2.0 = phi i32 [ 1, %for.body ], [ %inc, %for.inc ], !dbg !3017 + call void @llvm.dbg.value(metadata i32 %i2.0, metadata !2999, metadata !DIExpression()), !dbg !3001 + %sub2 = sub nsw i32 %n2, 1, !dbg !3018 + %cmp3 = icmp slt i32 %i2.0, %sub2, !dbg !3020 + br i1 %cmp3, label %for.body4, label %for.end, !dbg !3021 + +for.body4: ; preds = %for.cond1 + %mul = mul nsw i32 %i3.0, %n2, !dbg !3022 + %mul5 = mul nsw i32 %mul, %n1, !dbg !3022 + %mul6 = mul nsw i32 %i2.0, %n1, !dbg !3022 + %add = add nsw i32 %mul5, %mul6, !dbg !3022 + %sub7 = sub nsw i32 %n1, 2, !dbg !3022 + %add8 = add nsw i32 %add, %sub7, !dbg !3022 + %idxprom = sext i32 %add8 to i64, !dbg !3022 + %arrayidx = getelementptr inbounds double, double* %ou, i64 %idxprom, !dbg !3022 + %1 = load double, double* %arrayidx, align 8, !dbg !3022, !tbaa !437 + %mul9 = mul nsw i32 %i3.0, %n2, !dbg !3024 + %mul10 = mul nsw i32 %mul9, %n1, !dbg !3024 + %mul11 = mul nsw i32 %i2.0, %n1, !dbg !3024 + %add12 = add nsw i32 %mul10, %mul11, !dbg !3024 + %add13 = add nsw i32 %add12, 0, !dbg !3024 + %idxprom14 = sext i32 %add13 to i64, !dbg !3024 + %arrayidx15 = getelementptr inbounds double, double* %ou, i64 %idxprom14, !dbg !3024 + store double %1, double* %arrayidx15, align 8, !dbg !3025, !tbaa !437 + %mul16 = mul nsw i32 %i3.0, %n2, !dbg !3026 + %mul17 = mul nsw i32 %mul16, %n1, !dbg !3026 + %mul18 = mul nsw i32 %i2.0, %n1, !dbg !3026 + %add19 = add nsw i32 %mul17, %mul18, !dbg !3026 + %add20 = add nsw i32 %add19, 1, !dbg !3026 + %idxprom21 = sext i32 %add20 to i64, !dbg !3026 + %arrayidx22 = getelementptr inbounds double, double* %ou, i64 %idxprom21, !dbg !3026 + %2 = load double, double* %arrayidx22, align 8, !dbg !3026, !tbaa !437 + %mul23 = mul nsw i32 %i3.0, %n2, !dbg !3027 + %mul24 = mul nsw i32 %mul23, %n1, !dbg !3027 + %mul25 = mul nsw i32 %i2.0, %n1, !dbg !3027 + %add26 = add nsw i32 %mul24, %mul25, !dbg !3027 + %sub27 = sub nsw i32 %n1, 1, !dbg !3027 + %add28 = add nsw i32 %add26, %sub27, !dbg !3027 + %idxprom29 = sext i32 %add28 to i64, !dbg !3027 + %arrayidx30 = getelementptr inbounds double, double* %ou, i64 %idxprom29, !dbg !3027 + store double %2, double* %arrayidx30, align 8, !dbg !3028, !tbaa !437 + br label %for.inc, !dbg !3029 + +for.inc: ; preds = %for.body4 + %inc = add nsw i32 %i2.0, 1, !dbg !3030 + call void @llvm.dbg.value(metadata i32 %inc, metadata !2999, metadata !DIExpression()), !dbg !3001 + br label %for.cond1, !dbg !3031, !llvm.loop !3032 + +for.end: ; preds = %for.cond1 + br label %for.inc31, !dbg !3034 + +for.inc31: ; preds = %for.end + %inc32 = add nsw i32 %i3.0, 1, !dbg !3035 + call void @llvm.dbg.value(metadata i32 %inc32, metadata !3000, metadata !DIExpression()), !dbg !3001 + br label %for.cond, !dbg !3036, !llvm.loop !3037 + +for.end33: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 1, metadata !3000, metadata !DIExpression()), !dbg !3001 + br label %for.cond34, !dbg !3039 + +for.cond34: ; preds = %for.inc74, %for.end33 + %i3.1 = phi i32 [ 1, %for.end33 ], [ %inc75, %for.inc74 ], !dbg !3041 + call void @llvm.dbg.value(metadata i32 %i3.1, metadata !3000, metadata !DIExpression()), !dbg !3001 + %sub35 = sub nsw i32 %n3, 1, !dbg !3042 + %cmp36 = icmp slt i32 %i3.1, %sub35, !dbg !3044 + br i1 %cmp36, label %for.body37, label %for.end76, !dbg !3045 + +for.body37: ; preds = %for.cond34 + call void @llvm.dbg.value(metadata i32 0, metadata !2998, metadata !DIExpression()), !dbg !3001 + br label %for.cond38, !dbg !3046 + +for.cond38: ; preds = %for.inc71, %for.body37 + %i1.0 = phi i32 [ 0, %for.body37 ], [ %inc72, %for.inc71 ], !dbg !3049 + call void @llvm.dbg.value(metadata i32 %i1.0, metadata !2998, metadata !DIExpression()), !dbg !3001 + %cmp39 = icmp slt i32 %i1.0, %n1, !dbg !3050 + br i1 %cmp39, label %for.body40, label %for.end73, !dbg !3052 + +for.body40: ; preds = %for.cond38 + %mul41 = mul nsw i32 %i3.1, %n2, !dbg !3053 + %mul42 = mul nsw i32 %mul41, %n1, !dbg !3053 + %sub43 = sub nsw i32 %n2, 2, !dbg !3053 + %mul44 = mul nsw i32 %sub43, %n1, !dbg !3053 + %add45 = add nsw i32 %mul42, %mul44, !dbg !3053 + %add46 = add nsw i32 %add45, %i1.0, !dbg !3053 + %idxprom47 = sext i32 %add46 to i64, !dbg !3053 + %arrayidx48 = getelementptr inbounds double, double* %ou, i64 %idxprom47, !dbg !3053 + %3 = load double, double* %arrayidx48, align 8, !dbg !3053, !tbaa !437 + %mul49 = mul nsw i32 %i3.1, %n2, !dbg !3055 + %mul50 = mul nsw i32 %mul49, %n1, !dbg !3055 + %mul51 = mul nsw i32 0, %n1, !dbg !3055 + %add52 = add nsw i32 %mul50, %mul51, !dbg !3055 + %add53 = add nsw i32 %add52, %i1.0, !dbg !3055 + %idxprom54 = sext i32 %add53 to i64, !dbg !3055 + %arrayidx55 = getelementptr inbounds double, double* %ou, i64 %idxprom54, !dbg !3055 + store double %3, double* %arrayidx55, align 8, !dbg !3056, !tbaa !437 + %mul56 = mul nsw i32 %i3.1, %n2, !dbg !3057 + %mul57 = mul nsw i32 %mul56, %n1, !dbg !3057 + %mul58 = mul nsw i32 1, %n1, !dbg !3057 + %add59 = add nsw i32 %mul57, %mul58, !dbg !3057 + %add60 = add nsw i32 %add59, %i1.0, !dbg !3057 + %idxprom61 = sext i32 %add60 to i64, !dbg !3057 + %arrayidx62 = getelementptr inbounds double, double* %ou, i64 %idxprom61, !dbg !3057 + %4 = load double, double* %arrayidx62, align 8, !dbg !3057, !tbaa !437 + %mul63 = mul nsw i32 %i3.1, %n2, !dbg !3058 + %mul64 = mul nsw i32 %mul63, %n1, !dbg !3058 + %sub65 = sub nsw i32 %n2, 1, !dbg !3058 + %mul66 = mul nsw i32 %sub65, %n1, !dbg !3058 + %add67 = add nsw i32 %mul64, %mul66, !dbg !3058 + %add68 = add nsw i32 %add67, %i1.0, !dbg !3058 + %idxprom69 = sext i32 %add68 to i64, !dbg !3058 + %arrayidx70 = getelementptr inbounds double, double* %ou, i64 %idxprom69, !dbg !3058 + store double %4, double* %arrayidx70, align 8, !dbg !3059, !tbaa !437 + br label %for.inc71, !dbg !3060 + +for.inc71: ; preds = %for.body40 + %inc72 = add nsw i32 %i1.0, 1, !dbg !3061 + call void @llvm.dbg.value(metadata i32 %inc72, metadata !2998, metadata !DIExpression()), !dbg !3001 + br label %for.cond38, !dbg !3062, !llvm.loop !3063 + +for.end73: ; preds = %for.cond38 + br label %for.inc74, !dbg !3065 + +for.inc74: ; preds = %for.end73 + %inc75 = add nsw i32 %i3.1, 1, !dbg !3066 + call void @llvm.dbg.value(metadata i32 %inc75, metadata !3000, metadata !DIExpression()), !dbg !3001 + br label %for.cond34, !dbg !3067, !llvm.loop !3068 + +for.end76: ; preds = %for.cond34 + call void @llvm.dbg.value(metadata i32 0, metadata !2999, metadata !DIExpression()), !dbg !3001 + br label %for.cond77, !dbg !3070 + +for.cond77: ; preds = %for.inc116, %for.end76 + %i2.1 = phi i32 [ 0, %for.end76 ], [ %inc117, %for.inc116 ], !dbg !3072 + call void @llvm.dbg.value(metadata i32 %i2.1, metadata !2999, metadata !DIExpression()), !dbg !3001 + %cmp78 = icmp slt i32 %i2.1, %n2, !dbg !3073 + br i1 %cmp78, label %for.body79, label %for.end118, !dbg !3075 + +for.body79: ; preds = %for.cond77 + call void @llvm.dbg.value(metadata i32 0, metadata !2998, metadata !DIExpression()), !dbg !3001 + br label %for.cond80, !dbg !3076 + +for.cond80: ; preds = %for.inc113, %for.body79 + %i1.1 = phi i32 [ 0, %for.body79 ], [ %inc114, %for.inc113 ], !dbg !3079 + call void @llvm.dbg.value(metadata i32 %i1.1, metadata !2998, metadata !DIExpression()), !dbg !3001 + %cmp81 = icmp slt i32 %i1.1, %n1, !dbg !3080 + br i1 %cmp81, label %for.body82, label %for.end115, !dbg !3082 + +for.body82: ; preds = %for.cond80 + %sub83 = sub nsw i32 %n3, 2, !dbg !3083 + %mul84 = mul nsw i32 %sub83, %n2, !dbg !3083 + %mul85 = mul nsw i32 %mul84, %n1, !dbg !3083 + %mul86 = mul nsw i32 %i2.1, %n1, !dbg !3083 + %add87 = add nsw i32 %mul85, %mul86, !dbg !3083 + %add88 = add nsw i32 %add87, %i1.1, !dbg !3083 + %idxprom89 = sext i32 %add88 to i64, !dbg !3083 + %arrayidx90 = getelementptr inbounds double, double* %ou, i64 %idxprom89, !dbg !3083 + %5 = load double, double* %arrayidx90, align 8, !dbg !3083, !tbaa !437 + %mul91 = mul nsw i32 0, %n2, !dbg !3085 + %mul92 = mul nsw i32 %mul91, %n1, !dbg !3085 + %mul93 = mul nsw i32 %i2.1, %n1, !dbg !3085 + %add94 = add nsw i32 %mul92, %mul93, !dbg !3085 + %add95 = add nsw i32 %add94, %i1.1, !dbg !3085 + %idxprom96 = sext i32 %add95 to i64, !dbg !3085 + %arrayidx97 = getelementptr inbounds double, double* %ou, i64 %idxprom96, !dbg !3085 + store double %5, double* %arrayidx97, align 8, !dbg !3086, !tbaa !437 + %mul98 = mul nsw i32 1, %n2, !dbg !3087 + %mul99 = mul nsw i32 %mul98, %n1, !dbg !3087 + %mul100 = mul nsw i32 %i2.1, %n1, !dbg !3087 + %add101 = add nsw i32 %mul99, %mul100, !dbg !3087 + %add102 = add nsw i32 %add101, %i1.1, !dbg !3087 + %idxprom103 = sext i32 %add102 to i64, !dbg !3087 + %arrayidx104 = getelementptr inbounds double, double* %ou, i64 %idxprom103, !dbg !3087 + %6 = load double, double* %arrayidx104, align 8, !dbg !3087, !tbaa !437 + %sub105 = sub nsw i32 %n3, 1, !dbg !3088 + %mul106 = mul nsw i32 %sub105, %n2, !dbg !3088 + %mul107 = mul nsw i32 %mul106, %n1, !dbg !3088 + %mul108 = mul nsw i32 %i2.1, %n1, !dbg !3088 + %add109 = add nsw i32 %mul107, %mul108, !dbg !3088 + %add110 = add nsw i32 %add109, %i1.1, !dbg !3088 + %idxprom111 = sext i32 %add110 to i64, !dbg !3088 + %arrayidx112 = getelementptr inbounds double, double* %ou, i64 %idxprom111, !dbg !3088 + store double %6, double* %arrayidx112, align 8, !dbg !3089, !tbaa !437 + br label %for.inc113, !dbg !3090 + +for.inc113: ; preds = %for.body82 + %inc114 = add nsw i32 %i1.1, 1, !dbg !3091 + call void @llvm.dbg.value(metadata i32 %inc114, metadata !2998, metadata !DIExpression()), !dbg !3001 + br label %for.cond80, !dbg !3092, !llvm.loop !3093 + +for.end115: ; preds = %for.cond80 + br label %for.inc116, !dbg !3095 + +for.inc116: ; preds = %for.end115 + %inc117 = add nsw i32 %i2.1, 1, !dbg !3096 + call void @llvm.dbg.value(metadata i32 %inc117, metadata !2999, metadata !DIExpression()), !dbg !3001 + br label %for.cond77, !dbg !3097, !llvm.loop !3098 + +for.end118: ; preds = %for.cond77 + %7 = load i32, i32* @timeron, align 4, !dbg !3100, !tbaa !242 + %tobool119 = icmp ne i32 %7, 0, !dbg !3100 + br i1 %tobool119, label %if.then120, label %if.end121, !dbg !3102 + +if.then120: ; preds = %for.end118 + call void @timer_stop(i32 9), !dbg !3103 + br label %if.end121, !dbg !3103 + +if.end121: ; preds = %if.then120, %for.end118 + ret void, !dbg !3104 +} + +; Function Attrs: nounwind uwtable +define internal void @rep_nrm(double* %u, i32 %n1, i32 %n2, i32 %n3, i8* %title, i32 %kk) #0 !dbg !3105 { +entry: + %rnm2 = alloca double, align 8 + %rnmu = alloca double, align 8 + call void @llvm.dbg.value(metadata double* %u, metadata !3109, metadata !DIExpression()), !dbg !3117 + call void @llvm.dbg.value(metadata i32 %n1, metadata !3110, metadata !DIExpression()), !dbg !3117 + call void @llvm.dbg.value(metadata i32 %n2, metadata !3111, metadata !DIExpression()), !dbg !3117 + call void @llvm.dbg.value(metadata i32 %n3, metadata !3112, metadata !DIExpression()), !dbg !3117 + call void @llvm.dbg.value(metadata i8* %title, metadata !3113, metadata !DIExpression()), !dbg !3117 + call void @llvm.dbg.value(metadata i32 %kk, metadata !3114, metadata !DIExpression()), !dbg !3117 + %0 = bitcast double* %rnm2 to i8*, !dbg !3118 + call void @llvm.lifetime.start.p0i8(i64 8, i8* %0) #6, !dbg !3118 + call void @llvm.dbg.declare(metadata double* %rnm2, metadata !3115, metadata !DIExpression()), !dbg !3119 + %1 = bitcast double* %rnmu to i8*, !dbg !3118 + call void @llvm.lifetime.start.p0i8(i64 8, i8* %1) #6, !dbg !3118 + call void @llvm.dbg.declare(metadata double* %rnmu, metadata !3116, metadata !DIExpression()), !dbg !3120 + %idxprom = sext i32 %kk to i64, !dbg !3121 + %arrayidx = getelementptr inbounds [10 x i32], [10 x i32]* @nx, i64 0, i64 %idxprom, !dbg !3121 + %2 = load i32, i32* %arrayidx, align 4, !dbg !3121, !tbaa !278 + %idxprom1 = sext i32 %kk to i64, !dbg !3122 + %arrayidx2 = getelementptr inbounds [10 x i32], [10 x i32]* @ny, i64 0, i64 %idxprom1, !dbg !3122 + %3 = load i32, i32* %arrayidx2, align 4, !dbg !3122, !tbaa !278 + %idxprom3 = sext i32 %kk to i64, !dbg !3123 + %arrayidx4 = getelementptr inbounds [10 x i32], [10 x i32]* @nz, i64 0, i64 %idxprom3, !dbg !3123 + %4 = load i32, i32* %arrayidx4, align 4, !dbg !3123, !tbaa !278 + call void @norm2u3(double* %u, i32 %n1, i32 %n2, i32 %n3, double* %rnm2, double* %rnmu, i32 %2, i32 %3, i32 %4), !dbg !3124 + %5 = load double, double* %rnm2, align 8, !dbg !3125, !tbaa !437 + %6 = load double, double* %rnmu, align 8, !dbg !3126, !tbaa !437 + %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.50, i64 0, i64 0), i32 %kk, i8* %title, double %5, double %6), !dbg !3127 + %7 = bitcast double* %rnmu to i8*, !dbg !3128 + call void @llvm.lifetime.end.p0i8(i64 8, i8* %7) #6, !dbg !3128 + %8 = bitcast double* %rnm2 to i8*, !dbg !3128 + call void @llvm.lifetime.end.p0i8(i64 8, i8* %8) #6, !dbg !3128 + ret void, !dbg !3128 +} + +; Function Attrs: nounwind uwtable +define internal void @showall(double* %oz, i32 %n1, i32 %n2, i32 %n3) #0 !dbg !3129 { +entry: + call void @llvm.dbg.value(metadata double* %oz, metadata !3131, metadata !DIExpression()), !dbg !3141 + call void @llvm.dbg.value(metadata i32 %n1, metadata !3132, metadata !DIExpression()), !dbg !3141 + call void @llvm.dbg.value(metadata i32 %n2, metadata !3133, metadata !DIExpression()), !dbg !3141 + call void @llvm.dbg.value(metadata i32 %n3, metadata !3134, metadata !DIExpression()), !dbg !3141 + %cmp = icmp slt i32 %n1, 18, !dbg !3142 + br i1 %cmp, label %cond.true, label %cond.false, !dbg !3142 + +cond.true: ; preds = %entry + br label %cond.end, !dbg !3142 + +cond.false: ; preds = %entry + br label %cond.end, !dbg !3142 + +cond.end: ; preds = %cond.false, %cond.true + %cond = phi i32 [ %n1, %cond.true ], [ 18, %cond.false ], !dbg !3142 + call void @llvm.dbg.value(metadata i32 %cond, metadata !3138, metadata !DIExpression()), !dbg !3141 + %cmp1 = icmp slt i32 %n2, 14, !dbg !3143 + br i1 %cmp1, label %cond.true2, label %cond.false3, !dbg !3143 + +cond.true2: ; preds = %cond.end + br label %cond.end4, !dbg !3143 + +cond.false3: ; preds = %cond.end + br label %cond.end4, !dbg !3143 + +cond.end4: ; preds = %cond.false3, %cond.true2 + %cond5 = phi i32 [ %n2, %cond.true2 ], [ 14, %cond.false3 ], !dbg !3143 + call void @llvm.dbg.value(metadata i32 %cond5, metadata !3139, metadata !DIExpression()), !dbg !3141 + %cmp6 = icmp slt i32 %n3, 18, !dbg !3144 + br i1 %cmp6, label %cond.true7, label %cond.false8, !dbg !3144 + +cond.true7: ; preds = %cond.end4 + br label %cond.end9, !dbg !3144 + +cond.false8: ; preds = %cond.end4 + br label %cond.end9, !dbg !3144 + +cond.end9: ; preds = %cond.false8, %cond.true7 + %cond10 = phi i32 [ %n3, %cond.true7 ], [ 18, %cond.false8 ], !dbg !3144 + call void @llvm.dbg.value(metadata i32 %cond10, metadata !3140, metadata !DIExpression()), !dbg !3141 + %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.51, i64 0, i64 0)), !dbg !3145 + call void @llvm.dbg.value(metadata i32 0, metadata !3137, metadata !DIExpression()), !dbg !3141 + br label %for.cond, !dbg !3146 + +for.cond: ; preds = %for.inc27, %cond.end9 + %i3.0 = phi i32 [ 0, %cond.end9 ], [ %inc28, %for.inc27 ], !dbg !3148 + call void @llvm.dbg.value(metadata i32 %i3.0, metadata !3137, metadata !DIExpression()), !dbg !3141 + %cmp11 = icmp slt i32 %i3.0, %cond10, !dbg !3149 + br i1 %cmp11, label %for.body, label %for.end29, !dbg !3151 + +for.body: ; preds = %for.cond + call void @llvm.dbg.value(metadata i32 0, metadata !3135, metadata !DIExpression()), !dbg !3141 + br label %for.cond12, !dbg !3152 + +for.cond12: ; preds = %for.inc23, %for.body + %i1.0 = phi i32 [ 0, %for.body ], [ %inc24, %for.inc23 ], !dbg !3155 + call void @llvm.dbg.value(metadata i32 %i1.0, metadata !3135, metadata !DIExpression()), !dbg !3141 + %cmp13 = icmp slt i32 %i1.0, %cond, !dbg !3156 + br i1 %cmp13, label %for.body14, label %for.end25, !dbg !3158 + +for.body14: ; preds = %for.cond12 + call void @llvm.dbg.value(metadata i32 0, metadata !3136, metadata !DIExpression()), !dbg !3141 + br label %for.cond15, !dbg !3159 + +for.cond15: ; preds = %for.inc, %for.body14 + %i2.0 = phi i32 [ 0, %for.body14 ], [ %inc, %for.inc ], !dbg !3162 + call void @llvm.dbg.value(metadata i32 %i2.0, metadata !3136, metadata !DIExpression()), !dbg !3141 + %cmp16 = icmp slt i32 %i2.0, %cond5, !dbg !3163 + br i1 %cmp16, label %for.body17, label %for.end, !dbg !3165 + +for.body17: ; preds = %for.cond15 + %mul = mul nsw i32 %i3.0, %n2, !dbg !3166 + %mul18 = mul nsw i32 %mul, %n1, !dbg !3166 + %mul19 = mul nsw i32 %i2.0, %n1, !dbg !3166 + %add = add nsw i32 %mul18, %mul19, !dbg !3166 + %add20 = add nsw i32 %add, %i2.0, !dbg !3166 + %idxprom = sext i32 %add20 to i64, !dbg !3166 + %arrayidx = getelementptr inbounds double, double* %oz, i64 %idxprom, !dbg !3166 + %0 = load double, double* %arrayidx, align 8, !dbg !3166, !tbaa !437 + %call21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.52, i64 0, i64 0), double %0), !dbg !3168 + br label %for.inc, !dbg !3169 + +for.inc: ; preds = %for.body17 + %inc = add nsw i32 %i2.0, 1, !dbg !3170 + call void @llvm.dbg.value(metadata i32 %inc, metadata !3136, metadata !DIExpression()), !dbg !3141 + br label %for.cond15, !dbg !3171, !llvm.loop !3172 + +for.end: ; preds = %for.cond15 + %call22 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.20, i64 0, i64 0)), !dbg !3174 + br label %for.inc23, !dbg !3175 + +for.inc23: ; preds = %for.end + %inc24 = add nsw i32 %i1.0, 1, !dbg !3176 + call void @llvm.dbg.value(metadata i32 %inc24, metadata !3135, metadata !DIExpression()), !dbg !3141 + br label %for.cond12, !dbg !3177, !llvm.loop !3178 + +for.end25: ; preds = %for.cond12 + %call26 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.53, i64 0, i64 0)), !dbg !3180 + br label %for.inc27, !dbg !3181 + +for.inc27: ; preds = %for.end25 + %inc28 = add nsw i32 %i3.0, 1, !dbg !3182 + call void @llvm.dbg.value(metadata i32 %inc28, metadata !3137, metadata !DIExpression()), !dbg !3141 + br label %for.cond, !dbg !3183, !llvm.loop !3184 + +for.end29: ; preds = %for.cond + %call30 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.51, i64 0, i64 0)), !dbg !3186 + ret void, !dbg !3187 +} + +declare dso_local void @omp_target_free(i8*, i32) #4 + +; Function Attrs: nounwind +declare dso_local double @pow(double, double) #1 + +; Function Attrs: nounwind +declare dso_local double @sqrt(double) #1 + +; Function Attrs: nounwind uwtable +define internal double @power(double %a, i32 %n) #0 !dbg !3188 { +entry: + %aj = alloca double, align 8 + %power = alloca double, align 8 + call void @llvm.dbg.value(metadata double %a, metadata !3192, metadata !DIExpression()), !dbg !3198 + call void @llvm.dbg.value(metadata i32 %n, metadata !3193, metadata !DIExpression()), !dbg !3198 + %0 = bitcast double* %aj to i8*, !dbg !3199 + call void @llvm.lifetime.start.p0i8(i64 8, i8* %0) #6, !dbg !3199 + call void @llvm.dbg.declare(metadata double* %aj, metadata !3194, metadata !DIExpression()), !dbg !3200 + %1 = bitcast double* %power to i8*, !dbg !3201 + call void @llvm.lifetime.start.p0i8(i64 8, i8* %1) #6, !dbg !3201 + call void @llvm.dbg.declare(metadata double* %power, metadata !3197, metadata !DIExpression()), !dbg !3202 + store double 1.000000e+00, double* %power, align 8, !dbg !3203, !tbaa !437 + call void @llvm.dbg.value(metadata i32 %n, metadata !3195, metadata !DIExpression()), !dbg !3198 + store double %a, double* %aj, align 8, !dbg !3204, !tbaa !437 + br label %while.cond, !dbg !3205 + +while.cond: ; preds = %if.end, %entry + %nj.0 = phi i32 [ %n, %entry ], [ %div, %if.end ], !dbg !3198 + call void @llvm.dbg.value(metadata i32 %nj.0, metadata !3195, metadata !DIExpression()), !dbg !3198 + %cmp = icmp ne i32 %nj.0, 0, !dbg !3206 + br i1 %cmp, label %while.body, label %while.end, !dbg !3205 + +while.body: ; preds = %while.cond + %rem = srem i32 %nj.0, 2, !dbg !3207 + %cmp1 = icmp eq i32 %rem, 1, !dbg !3210 + br i1 %cmp1, label %if.then, label %if.end, !dbg !3211 + +if.then: ; preds = %while.body + %2 = load double, double* %aj, align 8, !dbg !3212, !tbaa !437 + %call = call double @randlc(double* %power, double %2), !dbg !3213 + call void @llvm.dbg.value(metadata double %call, metadata !3196, metadata !DIExpression()), !dbg !3198 + br label %if.end, !dbg !3214 + +if.end: ; preds = %if.then, %while.body + %3 = load double, double* %aj, align 8, !dbg !3215, !tbaa !437 + %call2 = call double @randlc(double* %aj, double %3), !dbg !3216 + call void @llvm.dbg.value(metadata double %call2, metadata !3196, metadata !DIExpression()), !dbg !3198 + %div = sdiv i32 %nj.0, 2, !dbg !3217 + call void @llvm.dbg.value(metadata i32 %div, metadata !3195, metadata !DIExpression()), !dbg !3198 + br label %while.cond, !dbg !3205, !llvm.loop !3218 + +while.end: ; preds = %while.cond + %4 = load double, double* %power, align 8, !dbg !3220, !tbaa !437 + %5 = bitcast double* %power to i8*, !dbg !3221 + call void @llvm.lifetime.end.p0i8(i64 8, i8* %5) #6, !dbg !3221 + %6 = bitcast double* %aj to i8*, !dbg !3221 + call void @llvm.lifetime.end.p0i8(i64 8, i8* %6) #6, !dbg !3221 + ret double %4, !dbg !3222 +} + +; Function Attrs: alwaysinline nounwind uwtable +define available_externally dso_local double @randlc(double* %x, double %a) #5 !dbg !3223 { +entry: + call void @llvm.dbg.value(metadata double* %x, metadata !3227, metadata !DIExpression()), !dbg !3243 + call void @llvm.dbg.value(metadata double %a, metadata !3228, metadata !DIExpression()), !dbg !3243 + call void @llvm.dbg.value(metadata double 0x3E80000000000000, metadata !3229, metadata !DIExpression()), !dbg !3243 + call void @llvm.dbg.value(metadata double 0x3D10000000000000, metadata !3230, metadata !DIExpression()), !dbg !3243 + call void @llvm.dbg.value(metadata double 0x4160000000000000, metadata !3231, metadata !DIExpression()), !dbg !3243 + call void @llvm.dbg.value(metadata double 0x42D0000000000000, metadata !3232, metadata !DIExpression()), !dbg !3243 + %mul = fmul double 0x3E80000000000000, %a, !dbg !3244 + call void @llvm.dbg.value(metadata double %mul, metadata !3233, metadata !DIExpression()), !dbg !3243 + %conv = fptosi double %mul to i32, !dbg !3245 + %conv1 = sitofp i32 %conv to double, !dbg !3245 + call void @llvm.dbg.value(metadata double %conv1, metadata !3237, metadata !DIExpression()), !dbg !3243 + %mul2 = fmul double 0x4160000000000000, %conv1, !dbg !3246 + %sub = fsub double %a, %mul2, !dbg !3247 + call void @llvm.dbg.value(metadata double %sub, metadata !3238, metadata !DIExpression()), !dbg !3243 + %0 = load double, double* %x, align 8, !dbg !3248, !tbaa !437 + %mul3 = fmul double 0x3E80000000000000, %0, !dbg !3249 + call void @llvm.dbg.value(metadata double %mul3, metadata !3233, metadata !DIExpression()), !dbg !3243 + %conv4 = fptosi double %mul3 to i32, !dbg !3250 + %conv5 = sitofp i32 %conv4 to double, !dbg !3250 + call void @llvm.dbg.value(metadata double %conv5, metadata !3239, metadata !DIExpression()), !dbg !3243 + %1 = load double, double* %x, align 8, !dbg !3251, !tbaa !437 + %mul6 = fmul double 0x4160000000000000, %conv5, !dbg !3252 + %sub7 = fsub double %1, %mul6, !dbg !3253 + call void @llvm.dbg.value(metadata double %sub7, metadata !3240, metadata !DIExpression()), !dbg !3243 + %mul8 = fmul double %conv1, %sub7, !dbg !3254 + %mul9 = fmul double %sub, %conv5, !dbg !3255 + %add = fadd double %mul8, %mul9, !dbg !3256 + call void @llvm.dbg.value(metadata double %add, metadata !3233, metadata !DIExpression()), !dbg !3243 + %mul10 = fmul double 0x3E80000000000000, %add, !dbg !3257 + %conv11 = fptosi double %mul10 to i32, !dbg !3258 + %conv12 = sitofp i32 %conv11 to double, !dbg !3258 + call void @llvm.dbg.value(metadata double %conv12, metadata !3234, metadata !DIExpression()), !dbg !3243 + %mul13 = fmul double 0x4160000000000000, %conv12, !dbg !3259 + %sub14 = fsub double %add, %mul13, !dbg !3260 + call void @llvm.dbg.value(metadata double %sub14, metadata !3241, metadata !DIExpression()), !dbg !3243 + %mul15 = fmul double 0x4160000000000000, %sub14, !dbg !3261 + %mul16 = fmul double %sub, %sub7, !dbg !3262 + %add17 = fadd double %mul15, %mul16, !dbg !3263 + call void @llvm.dbg.value(metadata double %add17, metadata !3235, metadata !DIExpression()), !dbg !3243 + %mul18 = fmul double 0x3D10000000000000, %add17, !dbg !3264 + %conv19 = fptosi double %mul18 to i32, !dbg !3265 + %conv20 = sitofp i32 %conv19 to double, !dbg !3265 + call void @llvm.dbg.value(metadata double %conv20, metadata !3236, metadata !DIExpression()), !dbg !3243 + %mul21 = fmul double 0x42D0000000000000, %conv20, !dbg !3266 + %sub22 = fsub double %add17, %mul21, !dbg !3267 + store double %sub22, double* %x, align 8, !dbg !3268, !tbaa !437 + %2 = load double, double* %x, align 8, !dbg !3269, !tbaa !437 + %mul23 = fmul double 0x3D10000000000000, %2, !dbg !3270 + call void @llvm.dbg.value(metadata double %mul23, metadata !3242, metadata !DIExpression()), !dbg !3243 + ret double %mul23, !dbg !3271 +} + +; Function Attrs: alwaysinline nounwind uwtable +define available_externally dso_local void @vranlc(i32 %n, double* %x, double %a, double* %y) #5 !dbg !3272 { +entry: + call void @llvm.dbg.value(metadata i32 %n, metadata !3276, metadata !DIExpression()), !dbg !3294 + call void @llvm.dbg.value(metadata double* %x, metadata !3277, metadata !DIExpression()), !dbg !3294 + call void @llvm.dbg.value(metadata double %a, metadata !3278, metadata !DIExpression()), !dbg !3294 + call void @llvm.dbg.value(metadata double* %y, metadata !3279, metadata !DIExpression()), !dbg !3294 + call void @llvm.dbg.value(metadata double 0x3E80000000000000, metadata !3280, metadata !DIExpression()), !dbg !3294 + call void @llvm.dbg.value(metadata double 0x3D10000000000000, metadata !3281, metadata !DIExpression()), !dbg !3294 + call void @llvm.dbg.value(metadata double 0x4160000000000000, metadata !3282, metadata !DIExpression()), !dbg !3294 + call void @llvm.dbg.value(metadata double 0x42D0000000000000, metadata !3283, metadata !DIExpression()), !dbg !3294 + %mul = fmul double 0x3E80000000000000, %a, !dbg !3295 + call void @llvm.dbg.value(metadata double %mul, metadata !3284, metadata !DIExpression()), !dbg !3294 + %conv = fptosi double %mul to i32, !dbg !3296 + %conv1 = sitofp i32 %conv to double, !dbg !3296 + call void @llvm.dbg.value(metadata double %conv1, metadata !3288, metadata !DIExpression()), !dbg !3294 + %mul2 = fmul double 0x4160000000000000, %conv1, !dbg !3297 + %sub = fsub double %a, %mul2, !dbg !3298 + call void @llvm.dbg.value(metadata double %sub, metadata !3289, metadata !DIExpression()), !dbg !3294 + call void @llvm.dbg.value(metadata i32 0, metadata !3293, metadata !DIExpression()), !dbg !3294 + br label %for.cond, !dbg !3299 + +for.cond: ; preds = %for.inc, %entry + %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.inc ], !dbg !3301 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !3293, metadata !DIExpression()), !dbg !3294 + %cmp = icmp slt i32 %i.0, %n, !dbg !3302 + br i1 %cmp, label %for.body, label %for.end, !dbg !3304 + +for.body: ; preds = %for.cond + %0 = load double, double* %x, align 8, !dbg !3305, !tbaa !437 + %mul4 = fmul double 0x3E80000000000000, %0, !dbg !3307 + call void @llvm.dbg.value(metadata double %mul4, metadata !3284, metadata !DIExpression()), !dbg !3294 + %conv5 = fptosi double %mul4 to i32, !dbg !3308 + %conv6 = sitofp i32 %conv5 to double, !dbg !3308 + call void @llvm.dbg.value(metadata double %conv6, metadata !3290, metadata !DIExpression()), !dbg !3294 + %1 = load double, double* %x, align 8, !dbg !3309, !tbaa !437 + %mul7 = fmul double 0x4160000000000000, %conv6, !dbg !3310 + %sub8 = fsub double %1, %mul7, !dbg !3311 + call void @llvm.dbg.value(metadata double %sub8, metadata !3291, metadata !DIExpression()), !dbg !3294 + %mul9 = fmul double %conv1, %sub8, !dbg !3312 + %mul10 = fmul double %sub, %conv6, !dbg !3313 + %add = fadd double %mul9, %mul10, !dbg !3314 + call void @llvm.dbg.value(metadata double %add, metadata !3284, metadata !DIExpression()), !dbg !3294 + %mul11 = fmul double 0x3E80000000000000, %add, !dbg !3315 + %conv12 = fptosi double %mul11 to i32, !dbg !3316 + %conv13 = sitofp i32 %conv12 to double, !dbg !3316 + call void @llvm.dbg.value(metadata double %conv13, metadata !3285, metadata !DIExpression()), !dbg !3294 + %mul14 = fmul double 0x4160000000000000, %conv13, !dbg !3317 + %sub15 = fsub double %add, %mul14, !dbg !3318 + call void @llvm.dbg.value(metadata double %sub15, metadata !3292, metadata !DIExpression()), !dbg !3294 + %mul16 = fmul double 0x4160000000000000, %sub15, !dbg !3319 + %mul17 = fmul double %sub, %sub8, !dbg !3320 + %add18 = fadd double %mul16, %mul17, !dbg !3321 + call void @llvm.dbg.value(metadata double %add18, metadata !3286, metadata !DIExpression()), !dbg !3294 + %mul19 = fmul double 0x3D10000000000000, %add18, !dbg !3322 + %conv20 = fptosi double %mul19 to i32, !dbg !3323 + %conv21 = sitofp i32 %conv20 to double, !dbg !3323 + call void @llvm.dbg.value(metadata double %conv21, metadata !3287, metadata !DIExpression()), !dbg !3294 + %mul22 = fmul double 0x42D0000000000000, %conv21, !dbg !3324 + %sub23 = fsub double %add18, %mul22, !dbg !3325 + store double %sub23, double* %x, align 8, !dbg !3326, !tbaa !437 + %2 = load double, double* %x, align 8, !dbg !3327, !tbaa !437 + %mul24 = fmul double 0x3D10000000000000, %2, !dbg !3328 + %idxprom = sext i32 %i.0 to i64, !dbg !3329 + %arrayidx = getelementptr inbounds double, double* %y, i64 %idxprom, !dbg !3329 + store double %mul24, double* %arrayidx, align 8, !dbg !3330, !tbaa !437 + br label %for.inc, !dbg !3331 + +for.inc: ; preds = %for.body + %inc = add nsw i32 %i.0, 1, !dbg !3332 + call void @llvm.dbg.value(metadata i32 %inc, metadata !3293, metadata !DIExpression()), !dbg !3294 + br label %for.cond, !dbg !3333, !llvm.loop !3334 + +for.end: ; preds = %for.cond + ret void, !dbg !3336 +} + +; Function Attrs: nounwind uwtable +define internal void @bubble([2 x double]* %ten, [2 x i32]* %j1, [2 x i32]* %j2, [2 x i32]* %j3, i32 %m, i32 %ind) #0 !dbg !3337 { +entry: + call void @llvm.dbg.value(metadata [2 x double]* %ten, metadata !3346, metadata !DIExpression()), !dbg !3355 + call void @llvm.dbg.value(metadata [2 x i32]* %j1, metadata !3347, metadata !DIExpression()), !dbg !3355 + call void @llvm.dbg.value(metadata [2 x i32]* %j2, metadata !3348, metadata !DIExpression()), !dbg !3355 + call void @llvm.dbg.value(metadata [2 x i32]* %j3, metadata !3349, metadata !DIExpression()), !dbg !3355 + call void @llvm.dbg.value(metadata i32 %m, metadata !3350, metadata !DIExpression()), !dbg !3355 + call void @llvm.dbg.value(metadata i32 %ind, metadata !3351, metadata !DIExpression()), !dbg !3355 + %cmp = icmp eq i32 %ind, 1, !dbg !3356 + br i1 %cmp, label %if.then, label %if.else82, !dbg !3358 + +if.then: ; preds = %entry + call void @llvm.dbg.value(metadata i32 0, metadata !3353, metadata !DIExpression()), !dbg !3355 + br label %for.cond, !dbg !3359 + +for.cond: ; preds = %for.inc, %if.then + %i.0 = phi i32 [ 0, %if.then ], [ %inc, %for.inc ], !dbg !3362 + call void @llvm.dbg.value(metadata i32 %i.0, metadata !3353, metadata !DIExpression()), !dbg !3355 + %sub = sub nsw i32 %m, 1, !dbg !3363 + %cmp1 = icmp slt i32 %i.0, %sub, !dbg !3365 + br i1 %cmp1, label %for.body, label %for.end, !dbg !3366 + +for.body: ; preds = %for.cond + %idxprom = sext i32 %i.0 to i64, !dbg !3367 + %arrayidx = getelementptr inbounds [2 x double], [2 x double]* %ten, i64 %idxprom, !dbg !3367 + %idxprom2 = sext i32 %ind to i64, !dbg !3367 + %arrayidx3 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx, i64 0, i64 %idxprom2, !dbg !3367 + %0 = load double, double* %arrayidx3, align 8, !dbg !3367, !tbaa !437 + %add = add nsw i32 %i.0, 1, !dbg !3370 + %idxprom4 = sext i32 %add to i64, !dbg !3371 + %arrayidx5 = getelementptr inbounds [2 x double], [2 x double]* %ten, i64 %idxprom4, !dbg !3371 + %idxprom6 = sext i32 %ind to i64, !dbg !3371 + %arrayidx7 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx5, i64 0, i64 %idxprom6, !dbg !3371 + %1 = load double, double* %arrayidx7, align 8, !dbg !3371, !tbaa !437 + %cmp8 = fcmp ogt double %0, %1, !dbg !3372 + br i1 %cmp8, label %if.then9, label %if.else, !dbg !3373 + +if.then9: ; preds = %for.body + %add10 = add nsw i32 %i.0, 1, !dbg !3374 + %idxprom11 = sext i32 %add10 to i64, !dbg !3376 + %arrayidx12 = getelementptr inbounds [2 x double], [2 x double]* %ten, i64 %idxprom11, !dbg !3376 + %idxprom13 = sext i32 %ind to i64, !dbg !3376 + %arrayidx14 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx12, i64 0, i64 %idxprom13, !dbg !3376 + %2 = load double, double* %arrayidx14, align 8, !dbg !3376, !tbaa !437 + call void @llvm.dbg.value(metadata double %2, metadata !3352, metadata !DIExpression()), !dbg !3355 + %idxprom15 = sext i32 %i.0 to i64, !dbg !3377 + %arrayidx16 = getelementptr inbounds [2 x double], [2 x double]* %ten, i64 %idxprom15, !dbg !3377 + %idxprom17 = sext i32 %ind to i64, !dbg !3377 + %arrayidx18 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx16, i64 0, i64 %idxprom17, !dbg !3377 + %3 = load double, double* %arrayidx18, align 8, !dbg !3377, !tbaa !437 + %add19 = add nsw i32 %i.0, 1, !dbg !3378 + %idxprom20 = sext i32 %add19 to i64, !dbg !3379 + %arrayidx21 = getelementptr inbounds [2 x double], [2 x double]* %ten, i64 %idxprom20, !dbg !3379 + %idxprom22 = sext i32 %ind to i64, !dbg !3379 + %arrayidx23 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx21, i64 0, i64 %idxprom22, !dbg !3379 + store double %3, double* %arrayidx23, align 8, !dbg !3380, !tbaa !437 + %idxprom24 = sext i32 %i.0 to i64, !dbg !3381 + %arrayidx25 = getelementptr inbounds [2 x double], [2 x double]* %ten, i64 %idxprom24, !dbg !3381 + %idxprom26 = sext i32 %ind to i64, !dbg !3381 + %arrayidx27 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx25, i64 0, i64 %idxprom26, !dbg !3381 + store double %2, double* %arrayidx27, align 8, !dbg !3382, !tbaa !437 + %add28 = add nsw i32 %i.0, 1, !dbg !3383 + %idxprom29 = sext i32 %add28 to i64, !dbg !3384 + %arrayidx30 = getelementptr inbounds [2 x i32], [2 x i32]* %j1, i64 %idxprom29, !dbg !3384 + %idxprom31 = sext i32 %ind to i64, !dbg !3384 + %arrayidx32 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx30, i64 0, i64 %idxprom31, !dbg !3384 + %4 = load i32, i32* %arrayidx32, align 4, !dbg !3384, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %4, metadata !3354, metadata !DIExpression()), !dbg !3355 + %idxprom33 = sext i32 %i.0 to i64, !dbg !3385 + %arrayidx34 = getelementptr inbounds [2 x i32], [2 x i32]* %j1, i64 %idxprom33, !dbg !3385 + %idxprom35 = sext i32 %ind to i64, !dbg !3385 + %arrayidx36 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx34, i64 0, i64 %idxprom35, !dbg !3385 + %5 = load i32, i32* %arrayidx36, align 4, !dbg !3385, !tbaa !278 + %add37 = add nsw i32 %i.0, 1, !dbg !3386 + %idxprom38 = sext i32 %add37 to i64, !dbg !3387 + %arrayidx39 = getelementptr inbounds [2 x i32], [2 x i32]* %j1, i64 %idxprom38, !dbg !3387 + %idxprom40 = sext i32 %ind to i64, !dbg !3387 + %arrayidx41 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx39, i64 0, i64 %idxprom40, !dbg !3387 + store i32 %5, i32* %arrayidx41, align 4, !dbg !3388, !tbaa !278 + %idxprom42 = sext i32 %i.0 to i64, !dbg !3389 + %arrayidx43 = getelementptr inbounds [2 x i32], [2 x i32]* %j1, i64 %idxprom42, !dbg !3389 + %idxprom44 = sext i32 %ind to i64, !dbg !3389 + %arrayidx45 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx43, i64 0, i64 %idxprom44, !dbg !3389 + store i32 %4, i32* %arrayidx45, align 4, !dbg !3390, !tbaa !278 + %add46 = add nsw i32 %i.0, 1, !dbg !3391 + %idxprom47 = sext i32 %add46 to i64, !dbg !3392 + %arrayidx48 = getelementptr inbounds [2 x i32], [2 x i32]* %j2, i64 %idxprom47, !dbg !3392 + %idxprom49 = sext i32 %ind to i64, !dbg !3392 + %arrayidx50 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx48, i64 0, i64 %idxprom49, !dbg !3392 + %6 = load i32, i32* %arrayidx50, align 4, !dbg !3392, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %6, metadata !3354, metadata !DIExpression()), !dbg !3355 + %idxprom51 = sext i32 %i.0 to i64, !dbg !3393 + %arrayidx52 = getelementptr inbounds [2 x i32], [2 x i32]* %j2, i64 %idxprom51, !dbg !3393 + %idxprom53 = sext i32 %ind to i64, !dbg !3393 + %arrayidx54 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx52, i64 0, i64 %idxprom53, !dbg !3393 + %7 = load i32, i32* %arrayidx54, align 4, !dbg !3393, !tbaa !278 + %add55 = add nsw i32 %i.0, 1, !dbg !3394 + %idxprom56 = sext i32 %add55 to i64, !dbg !3395 + %arrayidx57 = getelementptr inbounds [2 x i32], [2 x i32]* %j2, i64 %idxprom56, !dbg !3395 + %idxprom58 = sext i32 %ind to i64, !dbg !3395 + %arrayidx59 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx57, i64 0, i64 %idxprom58, !dbg !3395 + store i32 %7, i32* %arrayidx59, align 4, !dbg !3396, !tbaa !278 + %idxprom60 = sext i32 %i.0 to i64, !dbg !3397 + %arrayidx61 = getelementptr inbounds [2 x i32], [2 x i32]* %j2, i64 %idxprom60, !dbg !3397 + %idxprom62 = sext i32 %ind to i64, !dbg !3397 + %arrayidx63 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx61, i64 0, i64 %idxprom62, !dbg !3397 + store i32 %6, i32* %arrayidx63, align 4, !dbg !3398, !tbaa !278 + %add64 = add nsw i32 %i.0, 1, !dbg !3399 + %idxprom65 = sext i32 %add64 to i64, !dbg !3400 + %arrayidx66 = getelementptr inbounds [2 x i32], [2 x i32]* %j3, i64 %idxprom65, !dbg !3400 + %idxprom67 = sext i32 %ind to i64, !dbg !3400 + %arrayidx68 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx66, i64 0, i64 %idxprom67, !dbg !3400 + %8 = load i32, i32* %arrayidx68, align 4, !dbg !3400, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %8, metadata !3354, metadata !DIExpression()), !dbg !3355 + %idxprom69 = sext i32 %i.0 to i64, !dbg !3401 + %arrayidx70 = getelementptr inbounds [2 x i32], [2 x i32]* %j3, i64 %idxprom69, !dbg !3401 + %idxprom71 = sext i32 %ind to i64, !dbg !3401 + %arrayidx72 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx70, i64 0, i64 %idxprom71, !dbg !3401 + %9 = load i32, i32* %arrayidx72, align 4, !dbg !3401, !tbaa !278 + %add73 = add nsw i32 %i.0, 1, !dbg !3402 + %idxprom74 = sext i32 %add73 to i64, !dbg !3403 + %arrayidx75 = getelementptr inbounds [2 x i32], [2 x i32]* %j3, i64 %idxprom74, !dbg !3403 + %idxprom76 = sext i32 %ind to i64, !dbg !3403 + %arrayidx77 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx75, i64 0, i64 %idxprom76, !dbg !3403 + store i32 %9, i32* %arrayidx77, align 4, !dbg !3404, !tbaa !278 + %idxprom78 = sext i32 %i.0 to i64, !dbg !3405 + %arrayidx79 = getelementptr inbounds [2 x i32], [2 x i32]* %j3, i64 %idxprom78, !dbg !3405 + %idxprom80 = sext i32 %ind to i64, !dbg !3405 + %arrayidx81 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx79, i64 0, i64 %idxprom80, !dbg !3405 + store i32 %8, i32* %arrayidx81, align 4, !dbg !3406, !tbaa !278 + br label %if.end, !dbg !3407 + +if.else: ; preds = %for.body + br label %cleanup, !dbg !3408 + +if.end: ; preds = %if.then9 + br label %for.inc, !dbg !3410 + +for.inc: ; preds = %if.end + %inc = add nsw i32 %i.0, 1, !dbg !3411 + call void @llvm.dbg.value(metadata i32 %inc, metadata !3353, metadata !DIExpression()), !dbg !3355 + br label %for.cond, !dbg !3412, !llvm.loop !3413 + +for.end: ; preds = %for.cond + br label %if.end175, !dbg !3415 + +if.else82: ; preds = %entry + call void @llvm.dbg.value(metadata i32 0, metadata !3353, metadata !DIExpression()), !dbg !3355 + br label %for.cond83, !dbg !3416 + +for.cond83: ; preds = %for.inc172, %if.else82 + %i.1 = phi i32 [ 0, %if.else82 ], [ %inc173, %for.inc172 ], !dbg !3419 + call void @llvm.dbg.value(metadata i32 %i.1, metadata !3353, metadata !DIExpression()), !dbg !3355 + %sub84 = sub nsw i32 %m, 1, !dbg !3420 + %cmp85 = icmp slt i32 %i.1, %sub84, !dbg !3422 + br i1 %cmp85, label %for.body86, label %for.end174, !dbg !3423 + +for.body86: ; preds = %for.cond83 + %idxprom87 = sext i32 %i.1 to i64, !dbg !3424 + %arrayidx88 = getelementptr inbounds [2 x double], [2 x double]* %ten, i64 %idxprom87, !dbg !3424 + %idxprom89 = sext i32 %ind to i64, !dbg !3424 + %arrayidx90 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx88, i64 0, i64 %idxprom89, !dbg !3424 + %10 = load double, double* %arrayidx90, align 8, !dbg !3424, !tbaa !437 + %add91 = add nsw i32 %i.1, 1, !dbg !3427 + %idxprom92 = sext i32 %add91 to i64, !dbg !3428 + %arrayidx93 = getelementptr inbounds [2 x double], [2 x double]* %ten, i64 %idxprom92, !dbg !3428 + %idxprom94 = sext i32 %ind to i64, !dbg !3428 + %arrayidx95 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx93, i64 0, i64 %idxprom94, !dbg !3428 + %11 = load double, double* %arrayidx95, align 8, !dbg !3428, !tbaa !437 + %cmp96 = fcmp olt double %10, %11, !dbg !3429 + br i1 %cmp96, label %if.then97, label %if.else170, !dbg !3430 + +if.then97: ; preds = %for.body86 + %add98 = add nsw i32 %i.1, 1, !dbg !3431 + %idxprom99 = sext i32 %add98 to i64, !dbg !3433 + %arrayidx100 = getelementptr inbounds [2 x double], [2 x double]* %ten, i64 %idxprom99, !dbg !3433 + %idxprom101 = sext i32 %ind to i64, !dbg !3433 + %arrayidx102 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx100, i64 0, i64 %idxprom101, !dbg !3433 + %12 = load double, double* %arrayidx102, align 8, !dbg !3433, !tbaa !437 + call void @llvm.dbg.value(metadata double %12, metadata !3352, metadata !DIExpression()), !dbg !3355 + %idxprom103 = sext i32 %i.1 to i64, !dbg !3434 + %arrayidx104 = getelementptr inbounds [2 x double], [2 x double]* %ten, i64 %idxprom103, !dbg !3434 + %idxprom105 = sext i32 %ind to i64, !dbg !3434 + %arrayidx106 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx104, i64 0, i64 %idxprom105, !dbg !3434 + %13 = load double, double* %arrayidx106, align 8, !dbg !3434, !tbaa !437 + %add107 = add nsw i32 %i.1, 1, !dbg !3435 + %idxprom108 = sext i32 %add107 to i64, !dbg !3436 + %arrayidx109 = getelementptr inbounds [2 x double], [2 x double]* %ten, i64 %idxprom108, !dbg !3436 + %idxprom110 = sext i32 %ind to i64, !dbg !3436 + %arrayidx111 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx109, i64 0, i64 %idxprom110, !dbg !3436 + store double %13, double* %arrayidx111, align 8, !dbg !3437, !tbaa !437 + %idxprom112 = sext i32 %i.1 to i64, !dbg !3438 + %arrayidx113 = getelementptr inbounds [2 x double], [2 x double]* %ten, i64 %idxprom112, !dbg !3438 + %idxprom114 = sext i32 %ind to i64, !dbg !3438 + %arrayidx115 = getelementptr inbounds [2 x double], [2 x double]* %arrayidx113, i64 0, i64 %idxprom114, !dbg !3438 + store double %12, double* %arrayidx115, align 8, !dbg !3439, !tbaa !437 + %add116 = add nsw i32 %i.1, 1, !dbg !3440 + %idxprom117 = sext i32 %add116 to i64, !dbg !3441 + %arrayidx118 = getelementptr inbounds [2 x i32], [2 x i32]* %j1, i64 %idxprom117, !dbg !3441 + %idxprom119 = sext i32 %ind to i64, !dbg !3441 + %arrayidx120 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx118, i64 0, i64 %idxprom119, !dbg !3441 + %14 = load i32, i32* %arrayidx120, align 4, !dbg !3441, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %14, metadata !3354, metadata !DIExpression()), !dbg !3355 + %idxprom121 = sext i32 %i.1 to i64, !dbg !3442 + %arrayidx122 = getelementptr inbounds [2 x i32], [2 x i32]* %j1, i64 %idxprom121, !dbg !3442 + %idxprom123 = sext i32 %ind to i64, !dbg !3442 + %arrayidx124 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx122, i64 0, i64 %idxprom123, !dbg !3442 + %15 = load i32, i32* %arrayidx124, align 4, !dbg !3442, !tbaa !278 + %add125 = add nsw i32 %i.1, 1, !dbg !3443 + %idxprom126 = sext i32 %add125 to i64, !dbg !3444 + %arrayidx127 = getelementptr inbounds [2 x i32], [2 x i32]* %j1, i64 %idxprom126, !dbg !3444 + %idxprom128 = sext i32 %ind to i64, !dbg !3444 + %arrayidx129 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx127, i64 0, i64 %idxprom128, !dbg !3444 + store i32 %15, i32* %arrayidx129, align 4, !dbg !3445, !tbaa !278 + %idxprom130 = sext i32 %i.1 to i64, !dbg !3446 + %arrayidx131 = getelementptr inbounds [2 x i32], [2 x i32]* %j1, i64 %idxprom130, !dbg !3446 + %idxprom132 = sext i32 %ind to i64, !dbg !3446 + %arrayidx133 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx131, i64 0, i64 %idxprom132, !dbg !3446 + store i32 %14, i32* %arrayidx133, align 4, !dbg !3447, !tbaa !278 + %add134 = add nsw i32 %i.1, 1, !dbg !3448 + %idxprom135 = sext i32 %add134 to i64, !dbg !3449 + %arrayidx136 = getelementptr inbounds [2 x i32], [2 x i32]* %j2, i64 %idxprom135, !dbg !3449 + %idxprom137 = sext i32 %ind to i64, !dbg !3449 + %arrayidx138 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx136, i64 0, i64 %idxprom137, !dbg !3449 + %16 = load i32, i32* %arrayidx138, align 4, !dbg !3449, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %16, metadata !3354, metadata !DIExpression()), !dbg !3355 + %idxprom139 = sext i32 %i.1 to i64, !dbg !3450 + %arrayidx140 = getelementptr inbounds [2 x i32], [2 x i32]* %j2, i64 %idxprom139, !dbg !3450 + %idxprom141 = sext i32 %ind to i64, !dbg !3450 + %arrayidx142 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx140, i64 0, i64 %idxprom141, !dbg !3450 + %17 = load i32, i32* %arrayidx142, align 4, !dbg !3450, !tbaa !278 + %add143 = add nsw i32 %i.1, 1, !dbg !3451 + %idxprom144 = sext i32 %add143 to i64, !dbg !3452 + %arrayidx145 = getelementptr inbounds [2 x i32], [2 x i32]* %j2, i64 %idxprom144, !dbg !3452 + %idxprom146 = sext i32 %ind to i64, !dbg !3452 + %arrayidx147 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx145, i64 0, i64 %idxprom146, !dbg !3452 + store i32 %17, i32* %arrayidx147, align 4, !dbg !3453, !tbaa !278 + %idxprom148 = sext i32 %i.1 to i64, !dbg !3454 + %arrayidx149 = getelementptr inbounds [2 x i32], [2 x i32]* %j2, i64 %idxprom148, !dbg !3454 + %idxprom150 = sext i32 %ind to i64, !dbg !3454 + %arrayidx151 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx149, i64 0, i64 %idxprom150, !dbg !3454 + store i32 %16, i32* %arrayidx151, align 4, !dbg !3455, !tbaa !278 + %add152 = add nsw i32 %i.1, 1, !dbg !3456 + %idxprom153 = sext i32 %add152 to i64, !dbg !3457 + %arrayidx154 = getelementptr inbounds [2 x i32], [2 x i32]* %j3, i64 %idxprom153, !dbg !3457 + %idxprom155 = sext i32 %ind to i64, !dbg !3457 + %arrayidx156 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx154, i64 0, i64 %idxprom155, !dbg !3457 + %18 = load i32, i32* %arrayidx156, align 4, !dbg !3457, !tbaa !278 + call void @llvm.dbg.value(metadata i32 %18, metadata !3354, metadata !DIExpression()), !dbg !3355 + %idxprom157 = sext i32 %i.1 to i64, !dbg !3458 + %arrayidx158 = getelementptr inbounds [2 x i32], [2 x i32]* %j3, i64 %idxprom157, !dbg !3458 + %idxprom159 = sext i32 %ind to i64, !dbg !3458 + %arrayidx160 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx158, i64 0, i64 %idxprom159, !dbg !3458 + %19 = load i32, i32* %arrayidx160, align 4, !dbg !3458, !tbaa !278 + %add161 = add nsw i32 %i.1, 1, !dbg !3459 + %idxprom162 = sext i32 %add161 to i64, !dbg !3460 + %arrayidx163 = getelementptr inbounds [2 x i32], [2 x i32]* %j3, i64 %idxprom162, !dbg !3460 + %idxprom164 = sext i32 %ind to i64, !dbg !3460 + %arrayidx165 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx163, i64 0, i64 %idxprom164, !dbg !3460 + store i32 %19, i32* %arrayidx165, align 4, !dbg !3461, !tbaa !278 + %idxprom166 = sext i32 %i.1 to i64, !dbg !3462 + %arrayidx167 = getelementptr inbounds [2 x i32], [2 x i32]* %j3, i64 %idxprom166, !dbg !3462 + %idxprom168 = sext i32 %ind to i64, !dbg !3462 + %arrayidx169 = getelementptr inbounds [2 x i32], [2 x i32]* %arrayidx167, i64 0, i64 %idxprom168, !dbg !3462 + store i32 %18, i32* %arrayidx169, align 4, !dbg !3463, !tbaa !278 + br label %if.end171, !dbg !3464 + +if.else170: ; preds = %for.body86 + br label %cleanup, !dbg !3465 + +if.end171: ; preds = %if.then97 + br label %for.inc172, !dbg !3467 + +for.inc172: ; preds = %if.end171 + %inc173 = add nsw i32 %i.1, 1, !dbg !3468 + call void @llvm.dbg.value(metadata i32 %inc173, metadata !3353, metadata !DIExpression()), !dbg !3355 + br label %for.cond83, !dbg !3469, !llvm.loop !3470 + +for.end174: ; preds = %for.cond83 + br label %if.end175 + +if.end175: ; preds = %for.end174, %for.end + br label %cleanup, !dbg !3472 + +cleanup: ; preds = %if.end175, %if.else170, %if.else + %cleanup.dest.slot.0 = phi i32 [ 1, %if.else ], [ 0, %if.end175 ], [ 1, %if.else170 ] + switch i32 %cleanup.dest.slot.0, label %unreachable [ + i32 0, label %cleanup.cont + i32 1, label %cleanup.cont + ] + +cleanup.cont: ; preds = %cleanup, %cleanup + ret void, !dbg !3472 + +unreachable: ; preds = %cleanup + unreachable +} + +; Function Attrs: nounwind readnone speculatable +declare void @llvm.dbg.value(metadata, metadata, metadata) #3 + +attributes #0 = { nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #1 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #2 = { argmemonly nounwind } +attributes #3 = { nounwind readnone speculatable } +attributes #4 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #5 = { alwaysinline nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #6 = { nounwind } + +!llvm.dbg.cu = !{!2} +!llvm.module.flags = !{!96, !97, !98} +!llvm.ident = !{!99} + +!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) +!1 = distinct !DIGlobalVariable(name: "gnr", scope: !2, file: !3, line: 114, type: !15, isLocal: false, isDefinition: true) +!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 9.0.0 (git@github.com:prithayan/llvm-project.git 9683f06d0ed55984d96f430331d28b1437b7dd07)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, retainedTypes: !11, globals: !16, nameTableKind: None) +!3 = !DIFile(filename: "mg.c", directory: "/home/prithayan/project/openmp_benchmark/schandra_udel/NAS_SHOC_OpenACC_2.5/NAS-OMP-OFFLOADING/MG") +!4 = !{!5} +!5 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !6, line: 4, baseType: !7, size: 32, elements: !8) +!6 = !DIFile(filename: "../common/type.h", directory: "/home/prithayan/project/openmp_benchmark/schandra_udel/NAS_SHOC_OpenACC_2.5/NAS-OMP-OFFLOADING/MG") +!7 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) +!8 = !{!9, !10} +!9 = !DIEnumerator(name: "false", value: 0, isUnsigned: true) +!10 = !DIEnumerator(name: "true", value: 1, isUnsigned: true) +!11 = !{!12, !14, !15} +!12 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !13, size: 64) +!13 = !DIBasicType(name: "double", size: 64, encoding: DW_ATE_float) +!14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) +!15 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!16 = !{!0, !17, !23, !25, !27, !30, !35, !37, !39, !42, !44, !46, !48, !50, !52, !54, !56, !58, !60, !62, !64, !66, !68, !92, !94} +!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) +!18 = distinct !DIGlobalVariable(name: "nx", scope: !2, file: !19, line: 62, type: !20, isLocal: true, isDefinition: true) +!19 = !DIFile(filename: "./globals.h", directory: "/home/prithayan/project/openmp_benchmark/schandra_udel/NAS_SHOC_OpenACC_2.5/NAS-OMP-OFFLOADING/MG") +!20 = !DICompositeType(tag: DW_TAG_array_type, baseType: !15, size: 320, elements: !21) +!21 = !{!22} +!22 = !DISubrange(count: 10) +!23 = !DIGlobalVariableExpression(var: !24, expr: !DIExpression()) +!24 = distinct !DIGlobalVariable(name: "ny", scope: !2, file: !19, line: 63, type: !20, isLocal: true, isDefinition: true) +!25 = !DIGlobalVariableExpression(var: !26, expr: !DIExpression()) +!26 = distinct !DIGlobalVariable(name: "nz", scope: !2, file: !19, line: 64, type: !20, isLocal: true, isDefinition: true) +!27 = !DIGlobalVariableExpression(var: !28, expr: !DIExpression()) +!28 = distinct !DIGlobalVariable(name: "Class", scope: !2, file: !19, line: 67, type: !29, isLocal: true, isDefinition: true) +!29 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) +!30 = !DIGlobalVariableExpression(var: !31, expr: !DIExpression()) +!31 = distinct !DIGlobalVariable(name: "debug_vec", scope: !2, file: !19, line: 70, type: !32, isLocal: true, isDefinition: true) +!32 = !DICompositeType(tag: DW_TAG_array_type, baseType: !15, size: 256, elements: !33) +!33 = !{!34} +!34 = !DISubrange(count: 8) +!35 = !DIGlobalVariableExpression(var: !36, expr: !DIExpression()) +!36 = distinct !DIGlobalVariable(name: "lt", scope: !2, file: !19, line: 77, type: !15, isLocal: true, isDefinition: true) +!37 = !DIGlobalVariableExpression(var: !38, expr: !DIExpression()) +!38 = distinct !DIGlobalVariable(name: "lb", scope: !2, file: !19, line: 77, type: !15, isLocal: true, isDefinition: true) +!39 = !DIGlobalVariableExpression(var: !40, expr: !DIExpression()) +!40 = distinct !DIGlobalVariable(name: "timeron", scope: !2, file: !19, line: 91, type: !41, isLocal: true, isDefinition: true) +!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "logical", file: !6, line: 4, baseType: !5) +!42 = !DIGlobalVariableExpression(var: !43, expr: !DIExpression()) +!43 = distinct !DIGlobalVariable(name: "u", scope: !2, file: !3, line: 111, type: !12, isLocal: true, isDefinition: true) +!44 = !DIGlobalVariableExpression(var: !45, expr: !DIExpression()) +!45 = distinct !DIGlobalVariable(name: "v", scope: !2, file: !3, line: 112, type: !12, isLocal: true, isDefinition: true) +!46 = !DIGlobalVariableExpression(var: !47, expr: !DIExpression()) +!47 = distinct !DIGlobalVariable(name: "r", scope: !2, file: !3, line: 113, type: !12, isLocal: true, isDefinition: true) +!48 = !DIGlobalVariableExpression(var: !49, expr: !DIExpression()) +!49 = distinct !DIGlobalVariable(name: "m1", scope: !2, file: !19, line: 73, type: !20, isLocal: true, isDefinition: true) +!50 = !DIGlobalVariableExpression(var: !51, expr: !DIExpression()) +!51 = distinct !DIGlobalVariable(name: "m2", scope: !2, file: !19, line: 74, type: !20, isLocal: true, isDefinition: true) +!52 = !DIGlobalVariableExpression(var: !53, expr: !DIExpression()) +!53 = distinct !DIGlobalVariable(name: "m3", scope: !2, file: !19, line: 75, type: !20, isLocal: true, isDefinition: true) +!54 = !DIGlobalVariableExpression(var: !55, expr: !DIExpression()) +!55 = distinct !DIGlobalVariable(name: "is1", scope: !2, file: !3, line: 117, type: !15, isLocal: true, isDefinition: true) +!56 = !DIGlobalVariableExpression(var: !57, expr: !DIExpression()) +!57 = distinct !DIGlobalVariable(name: "ie1", scope: !2, file: !3, line: 117, type: !15, isLocal: true, isDefinition: true) +!58 = !DIGlobalVariableExpression(var: !59, expr: !DIExpression()) +!59 = distinct !DIGlobalVariable(name: "is2", scope: !2, file: !3, line: 117, type: !15, isLocal: true, isDefinition: true) +!60 = !DIGlobalVariableExpression(var: !61, expr: !DIExpression()) +!61 = distinct !DIGlobalVariable(name: "ie2", scope: !2, file: !3, line: 117, type: !15, isLocal: true, isDefinition: true) +!62 = !DIGlobalVariableExpression(var: !63, expr: !DIExpression()) +!63 = distinct !DIGlobalVariable(name: "is3", scope: !2, file: !3, line: 117, type: !15, isLocal: true, isDefinition: true) +!64 = !DIGlobalVariableExpression(var: !65, expr: !DIExpression()) +!65 = distinct !DIGlobalVariable(name: "ie3", scope: !2, file: !3, line: 117, type: !15, isLocal: true, isDefinition: true) +!66 = !DIGlobalVariableExpression(var: !67, expr: !DIExpression()) +!67 = distinct !DIGlobalVariable(name: "ir", scope: !2, file: !19, line: 76, type: !20, isLocal: true, isDefinition: true) +!68 = !DIGlobalVariableExpression(var: !69, expr: !DIExpression()) +!69 = distinct !DIGlobalVariable(name: "z1", scope: !70, file: !3, line: 914, type: !12, isLocal: true, isDefinition: true) +!70 = distinct !DISubprogram(name: "interp", scope: !3, file: !3, line: 900, type: !71, scopeLine: 902, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !73) +!71 = !DISubroutineType(types: !72) +!72 = !{null, !12, !15, !15, !15, !12, !15, !15, !15, !15} +!73 = !{!74, !75, !76, !77, !78, !79, !80, !81, !82, !83, !84, !85, !86, !87, !88, !89, !90, !91} +!74 = !DILocalVariable(name: "oz", arg: 1, scope: !70, file: !3, line: 900, type: !12) +!75 = !DILocalVariable(name: "mm1", arg: 2, scope: !70, file: !3, line: 900, type: !15) +!76 = !DILocalVariable(name: "mm2", arg: 3, scope: !70, file: !3, line: 900, type: !15) +!77 = !DILocalVariable(name: "mm3", arg: 4, scope: !70, file: !3, line: 900, type: !15) +!78 = !DILocalVariable(name: "ou", arg: 5, scope: !70, file: !3, line: 901, type: !12) +!79 = !DILocalVariable(name: "n1", arg: 6, scope: !70, file: !3, line: 901, type: !15) +!80 = !DILocalVariable(name: "n2", arg: 7, scope: !70, file: !3, line: 901, type: !15) +!81 = !DILocalVariable(name: "n3", arg: 8, scope: !70, file: !3, line: 901, type: !15) +!82 = !DILocalVariable(name: "k", arg: 9, scope: !70, file: !3, line: 901, type: !15) +!83 = !DILocalVariable(name: "i3", scope: !70, file: !3, line: 907, type: !15) +!84 = !DILocalVariable(name: "i2", scope: !70, file: !3, line: 907, type: !15) +!85 = !DILocalVariable(name: "i1", scope: !70, file: !3, line: 907, type: !15) +!86 = !DILocalVariable(name: "d1", scope: !70, file: !3, line: 907, type: !15) +!87 = !DILocalVariable(name: "d2", scope: !70, file: !3, line: 907, type: !15) +!88 = !DILocalVariable(name: "d3", scope: !70, file: !3, line: 907, type: !15) +!89 = !DILocalVariable(name: "t1", scope: !70, file: !3, line: 907, type: !15) +!90 = !DILocalVariable(name: "t2", scope: !70, file: !3, line: 907, type: !15) +!91 = !DILocalVariable(name: "t3", scope: !70, file: !3, line: 907, type: !15) +!92 = !DIGlobalVariableExpression(var: !93, expr: !DIExpression()) +!93 = distinct !DIGlobalVariable(name: "z2", scope: !70, file: !3, line: 914, type: !12, isLocal: true, isDefinition: true) +!94 = !DIGlobalVariableExpression(var: !95, expr: !DIExpression()) +!95 = distinct !DIGlobalVariable(name: "z3", scope: !70, file: !3, line: 914, type: !12, isLocal: true, isDefinition: true) +!96 = !{i32 2, !"Dwarf Version", i32 4} +!97 = !{i32 2, !"Debug Info Version", i32 3} +!98 = !{i32 1, !"wchar_size", i32 4} +!99 = !{!"clang version 9.0.0 (git@github.com:prithayan/llvm-project.git 9683f06d0ed55984d96f430331d28b1437b7dd07)"} +!100 = distinct !DISubprogram(name: "main", scope: !3, file: !3, line: 120, type: !101, scopeLine: 121, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !103) +!101 = !DISubroutineType(types: !102) +!102 = !{!15} +!103 = !{!104, !105, !106, !107, !108, !109, !113, !114, !115, !116, !117, !118, !119, !120, !121, !122, !123, !124, !125, !126, !127, !128, !131, !132, !192} +!104 = !DILocalVariable(name: "k", scope: !100, file: !3, line: 129, type: !15) +!105 = !DILocalVariable(name: "it", scope: !100, file: !3, line: 129, type: !15) +!106 = !DILocalVariable(name: "t", scope: !100, file: !3, line: 130, type: !13) +!107 = !DILocalVariable(name: "tinit", scope: !100, file: !3, line: 130, type: !13) +!108 = !DILocalVariable(name: "mflops", scope: !100, file: !3, line: 130, type: !13) +!109 = !DILocalVariable(name: "a", scope: !100, file: !3, line: 132, type: !110) +!110 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 256, elements: !111) +!111 = !{!112} +!112 = !DISubrange(count: 4) +!113 = !DILocalVariable(name: "c", scope: !100, file: !3, line: 132, type: !110) +!114 = !DILocalVariable(name: "rnm2", scope: !100, file: !3, line: 134, type: !13) +!115 = !DILocalVariable(name: "rnmu", scope: !100, file: !3, line: 134, type: !13) +!116 = !DILocalVariable(name: "old2", scope: !100, file: !3, line: 134, type: !13) +!117 = !DILocalVariable(name: "oldu", scope: !100, file: !3, line: 134, type: !13) +!118 = !DILocalVariable(name: "epsilon", scope: !100, file: !3, line: 134, type: !13) +!119 = !DILocalVariable(name: "n1", scope: !100, file: !3, line: 135, type: !15) +!120 = !DILocalVariable(name: "n2", scope: !100, file: !3, line: 135, type: !15) +!121 = !DILocalVariable(name: "n3", scope: !100, file: !3, line: 135, type: !15) +!122 = !DILocalVariable(name: "nit", scope: !100, file: !3, line: 135, type: !15) +!123 = !DILocalVariable(name: "nn", scope: !100, file: !3, line: 136, type: !13) +!124 = !DILocalVariable(name: "verify_value", scope: !100, file: !3, line: 136, type: !13) +!125 = !DILocalVariable(name: "err", scope: !100, file: !3, line: 136, type: !13) +!126 = !DILocalVariable(name: "verified", scope: !100, file: !3, line: 137, type: !41) +!127 = !DILocalVariable(name: "i", scope: !100, file: !3, line: 139, type: !15) +!128 = !DILocalVariable(name: "t_names", scope: !100, file: !3, line: 140, type: !129) +!129 = !DICompositeType(tag: DW_TAG_array_type, baseType: !130, size: 640, elements: !21) +!130 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !29, size: 64) +!131 = !DILocalVariable(name: "tmax", scope: !100, file: !3, line: 141, type: !13) +!132 = !DILocalVariable(name: "fp", scope: !100, file: !3, line: 154, type: !133) +!133 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !134, size: 64) +!134 = !DIDerivedType(tag: DW_TAG_typedef, name: "FILE", file: !135, line: 48, baseType: !136) +!135 = !DIFile(filename: "/usr/include/stdio.h", directory: "") +!136 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_IO_FILE", file: !137, line: 241, size: 1728, elements: !138) +!137 = !DIFile(filename: "/usr/include/libio.h", directory: "") +!138 = !{!139, !140, !141, !142, !143, !144, !145, !146, !147, !148, !149, !150, !151, !159, !160, !161, !162, !166, !168, !170, !174, !177, !179, !180, !181, !182, !183, !187, !188} +!139 = !DIDerivedType(tag: DW_TAG_member, name: "_flags", scope: !136, file: !137, line: 242, baseType: !15, size: 32) +!140 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_read_ptr", scope: !136, file: !137, line: 247, baseType: !130, size: 64, offset: 64) +!141 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_read_end", scope: !136, file: !137, line: 248, baseType: !130, size: 64, offset: 128) +!142 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_read_base", scope: !136, file: !137, line: 249, baseType: !130, size: 64, offset: 192) +!143 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_write_base", scope: !136, file: !137, line: 250, baseType: !130, size: 64, offset: 256) +!144 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_write_ptr", scope: !136, file: !137, line: 251, baseType: !130, size: 64, offset: 320) +!145 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_write_end", scope: !136, file: !137, line: 252, baseType: !130, size: 64, offset: 384) +!146 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_buf_base", scope: !136, file: !137, line: 253, baseType: !130, size: 64, offset: 448) +!147 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_buf_end", scope: !136, file: !137, line: 254, baseType: !130, size: 64, offset: 512) +!148 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_save_base", scope: !136, file: !137, line: 256, baseType: !130, size: 64, offset: 576) +!149 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_backup_base", scope: !136, file: !137, line: 257, baseType: !130, size: 64, offset: 640) +!150 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_save_end", scope: !136, file: !137, line: 258, baseType: !130, size: 64, offset: 704) +!151 = !DIDerivedType(tag: DW_TAG_member, name: "_markers", scope: !136, file: !137, line: 260, baseType: !152, size: 64, offset: 768) +!152 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !153, size: 64) +!153 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_IO_marker", file: !137, line: 156, size: 192, elements: !154) +!154 = !{!155, !156, !158} +!155 = !DIDerivedType(tag: DW_TAG_member, name: "_next", scope: !153, file: !137, line: 157, baseType: !152, size: 64) +!156 = !DIDerivedType(tag: DW_TAG_member, name: "_sbuf", scope: !153, file: !137, line: 158, baseType: !157, size: 64, offset: 64) +!157 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !136, size: 64) +!158 = !DIDerivedType(tag: DW_TAG_member, name: "_pos", scope: !153, file: !137, line: 162, baseType: !15, size: 32, offset: 128) +!159 = !DIDerivedType(tag: DW_TAG_member, name: "_chain", scope: !136, file: !137, line: 262, baseType: !157, size: 64, offset: 832) +!160 = !DIDerivedType(tag: DW_TAG_member, name: "_fileno", scope: !136, file: !137, line: 264, baseType: !15, size: 32, offset: 896) +!161 = !DIDerivedType(tag: DW_TAG_member, name: "_flags2", scope: !136, file: !137, line: 268, baseType: !15, size: 32, offset: 928) +!162 = !DIDerivedType(tag: DW_TAG_member, name: "_old_offset", scope: !136, file: !137, line: 270, baseType: !163, size: 64, offset: 960) +!163 = !DIDerivedType(tag: DW_TAG_typedef, name: "__off_t", file: !164, line: 131, baseType: !165) +!164 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "") +!165 = !DIBasicType(name: "long int", size: 64, encoding: DW_ATE_signed) +!166 = !DIDerivedType(tag: DW_TAG_member, name: "_cur_column", scope: !136, file: !137, line: 274, baseType: !167, size: 16, offset: 1024) +!167 = !DIBasicType(name: "unsigned short", size: 16, encoding: DW_ATE_unsigned) +!168 = !DIDerivedType(tag: DW_TAG_member, name: "_vtable_offset", scope: !136, file: !137, line: 275, baseType: !169, size: 8, offset: 1040) +!169 = !DIBasicType(name: "signed char", size: 8, encoding: DW_ATE_signed_char) +!170 = !DIDerivedType(tag: DW_TAG_member, name: "_shortbuf", scope: !136, file: !137, line: 276, baseType: !171, size: 8, offset: 1048) +!171 = !DICompositeType(tag: DW_TAG_array_type, baseType: !29, size: 8, elements: !172) +!172 = !{!173} +!173 = !DISubrange(count: 1) +!174 = !DIDerivedType(tag: DW_TAG_member, name: "_lock", scope: !136, file: !137, line: 280, baseType: !175, size: 64, offset: 1088) +!175 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !176, size: 64) +!176 = !DIDerivedType(tag: DW_TAG_typedef, name: "_IO_lock_t", file: !137, line: 150, baseType: null) +!177 = !DIDerivedType(tag: DW_TAG_member, name: "_offset", scope: !136, file: !137, line: 289, baseType: !178, size: 64, offset: 1152) +!178 = !DIDerivedType(tag: DW_TAG_typedef, name: "__off64_t", file: !164, line: 132, baseType: !165) +!179 = !DIDerivedType(tag: DW_TAG_member, name: "__pad1", scope: !136, file: !137, line: 297, baseType: !14, size: 64, offset: 1216) +!180 = !DIDerivedType(tag: DW_TAG_member, name: "__pad2", scope: !136, file: !137, line: 298, baseType: !14, size: 64, offset: 1280) +!181 = !DIDerivedType(tag: DW_TAG_member, name: "__pad3", scope: !136, file: !137, line: 299, baseType: !14, size: 64, offset: 1344) +!182 = !DIDerivedType(tag: DW_TAG_member, name: "__pad4", scope: !136, file: !137, line: 300, baseType: !14, size: 64, offset: 1408) +!183 = !DIDerivedType(tag: DW_TAG_member, name: "__pad5", scope: !136, file: !137, line: 302, baseType: !184, size: 64, offset: 1472) +!184 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !185, line: 46, baseType: !186) +!185 = !DIFile(filename: "/usr/lib/llvm-9/lib/clang/9.0.0/include/stddef.h", directory: "") +!186 = !DIBasicType(name: "long unsigned int", size: 64, encoding: DW_ATE_unsigned) +!187 = !DIDerivedType(tag: DW_TAG_member, name: "_mode", scope: !136, file: !137, line: 303, baseType: !15, size: 32, offset: 1536) +!188 = !DIDerivedType(tag: DW_TAG_member, name: "_unused2", scope: !136, file: !137, line: 305, baseType: !189, size: 160, offset: 1568) +!189 = !DICompositeType(tag: DW_TAG_array_type, baseType: !29, size: 160, elements: !190) +!190 = !{!191} +!191 = !DISubrange(count: 20) +!192 = !DILocalVariable(name: "result", scope: !193, file: !3, line: 174, type: !15) +!193 = distinct !DILexicalBlock(scope: !194, file: !3, line: 173, column: 46) +!194 = distinct !DILexicalBlock(scope: !100, file: !3, line: 173, column: 7) +!195 = !DILocation(line: 122, column: 17, scope: !100) +!196 = !DILocation(line: 122, column: 7, scope: !100) +!197 = !DILocation(line: 122, column: 5, scope: !100) +!198 = !{!199, !199, i64 0} +!199 = !{!"any pointer", !200, i64 0} +!200 = !{!"omnipotent char", !201, i64 0} +!201 = !{!"Simple C/C++ TBAA"} +!202 = !DILocation(line: 123, column: 17, scope: !100) +!203 = !DILocation(line: 123, column: 7, scope: !100) +!204 = !DILocation(line: 123, column: 5, scope: !100) +!205 = !DILocation(line: 124, column: 17, scope: !100) +!206 = !DILocation(line: 124, column: 7, scope: !100) +!207 = !DILocation(line: 124, column: 5, scope: !100) +!208 = !DILocation(line: 132, column: 3, scope: !100) +!209 = !DILocation(line: 132, column: 10, scope: !100) +!210 = !DILocation(line: 132, column: 16, scope: !100) +!211 = !DILocation(line: 134, column: 3, scope: !100) +!212 = !DILocation(line: 134, column: 10, scope: !100) +!213 = !DILocation(line: 134, column: 16, scope: !100) +!214 = !DILocation(line: 135, column: 3, scope: !100) +!215 = !DILocation(line: 135, column: 7, scope: !100) +!216 = !DILocation(line: 135, column: 11, scope: !100) +!217 = !DILocation(line: 135, column: 15, scope: !100) +!218 = !DILocation(line: 135, column: 19, scope: !100) +!219 = !DILocation(line: 140, column: 3, scope: !100) +!220 = !DILocation(line: 140, column: 9, scope: !100) +!221 = !DILocation(line: 0, scope: !100) +!222 = !DILocation(line: 143, column: 8, scope: !223) +!223 = distinct !DILexicalBlock(scope: !100, file: !3, line: 143, column: 3) +!224 = !DILocation(line: 0, scope: !223) +!225 = !DILocation(line: 143, column: 22, scope: !226) +!226 = distinct !DILexicalBlock(scope: !223, file: !3, line: 143, column: 3) +!227 = !DILocation(line: 143, column: 3, scope: !223) +!228 = !DILocation(line: 144, column: 5, scope: !229) +!229 = distinct !DILexicalBlock(scope: !226, file: !3, line: 143, column: 37) +!230 = !DILocation(line: 145, column: 3, scope: !229) +!231 = !DILocation(line: 143, column: 33, scope: !226) +!232 = !DILocation(line: 143, column: 3, scope: !226) +!233 = distinct !{!233, !227, !234} +!234 = !DILocation(line: 145, column: 3, scope: !223) +!235 = !DILocation(line: 149, column: 3, scope: !100) +!236 = !DILocation(line: 155, column: 13, scope: !237) +!237 = distinct !DILexicalBlock(scope: !100, file: !3, line: 155, column: 7) +!238 = !DILocation(line: 155, column: 39, scope: !237) +!239 = !DILocation(line: 155, column: 7, scope: !100) +!240 = !DILocation(line: 156, column: 13, scope: !241) +!241 = distinct !DILexicalBlock(scope: !237, file: !3, line: 155, column: 48) +!242 = !{!200, !200, i64 0} +!243 = !DILocation(line: 157, column: 5, scope: !241) +!244 = !DILocation(line: 157, column: 21, scope: !241) +!245 = !DILocation(line: 158, column: 5, scope: !241) +!246 = !DILocation(line: 158, column: 22, scope: !241) +!247 = !DILocation(line: 159, column: 5, scope: !241) +!248 = !DILocation(line: 159, column: 21, scope: !241) +!249 = !DILocation(line: 160, column: 5, scope: !241) +!250 = !DILocation(line: 160, column: 22, scope: !241) +!251 = !DILocation(line: 161, column: 5, scope: !241) +!252 = !DILocation(line: 161, column: 22, scope: !241) +!253 = !DILocation(line: 162, column: 5, scope: !241) +!254 = !DILocation(line: 162, column: 22, scope: !241) +!255 = !DILocation(line: 163, column: 5, scope: !241) +!256 = !DILocation(line: 163, column: 23, scope: !241) +!257 = !DILocation(line: 164, column: 5, scope: !241) +!258 = !DILocation(line: 164, column: 22, scope: !241) +!259 = !DILocation(line: 165, column: 5, scope: !241) +!260 = !DILocation(line: 165, column: 22, scope: !241) +!261 = !DILocation(line: 166, column: 5, scope: !241) +!262 = !DILocation(line: 167, column: 3, scope: !241) +!263 = !DILocation(line: 168, column: 13, scope: !264) +!264 = distinct !DILexicalBlock(scope: !237, file: !3, line: 167, column: 10) +!265 = !DILocation(line: 171, column: 3, scope: !100) +!266 = !DILocation(line: 173, column: 13, scope: !194) +!267 = !DILocation(line: 173, column: 37, scope: !194) +!268 = !DILocation(line: 173, column: 7, scope: !100) +!269 = !DILocation(line: 175, column: 5, scope: !193) +!270 = !DILocation(line: 176, column: 14, scope: !193) +!271 = !DILocation(line: 0, scope: !193) +!272 = !DILocation(line: 177, column: 5, scope: !193) +!273 = !DILocation(line: 177, column: 12, scope: !193) +!274 = !DILocation(line: 177, column: 22, scope: !193) +!275 = distinct !{!275, !272, !276} +!276 = !DILocation(line: 177, column: 30, scope: !193) +!277 = !DILocation(line: 178, column: 39, scope: !193) +!278 = !{!279, !279, i64 0} +!279 = !{!"int", !200, i64 0} +!280 = !DILocation(line: 178, column: 36, scope: !193) +!281 = !DILocation(line: 178, column: 48, scope: !193) +!282 = !DILocation(line: 178, column: 45, scope: !193) +!283 = !DILocation(line: 178, column: 57, scope: !193) +!284 = !DILocation(line: 178, column: 54, scope: !193) +!285 = !DILocation(line: 178, column: 14, scope: !193) +!286 = !DILocation(line: 179, column: 5, scope: !193) +!287 = !DILocation(line: 179, column: 12, scope: !193) +!288 = !DILocation(line: 179, column: 22, scope: !193) +!289 = distinct !{!289, !286, !290} +!290 = !DILocation(line: 179, column: 30, scope: !193) +!291 = !DILocation(line: 180, column: 14, scope: !193) +!292 = !DILocation(line: 181, column: 5, scope: !193) +!293 = !DILocation(line: 181, column: 12, scope: !193) +!294 = !DILocation(line: 181, column: 22, scope: !193) +!295 = distinct !{!295, !292, !296} +!296 = !DILocation(line: 181, column: 30, scope: !193) +!297 = !DILocation(line: 182, column: 10, scope: !298) +!298 = distinct !DILexicalBlock(scope: !193, file: !3, line: 182, column: 5) +!299 = !DILocation(line: 0, scope: !298) +!300 = !DILocation(line: 182, column: 19, scope: !301) +!301 = distinct !DILexicalBlock(scope: !298, file: !3, line: 182, column: 5) +!302 = !DILocation(line: 182, column: 5, scope: !298) +!303 = !DILocation(line: 183, column: 34, scope: !304) +!304 = distinct !DILexicalBlock(scope: !301, file: !3, line: 182, column: 30) +!305 = !DILocation(line: 183, column: 16, scope: !304) +!306 = !DILocation(line: 184, column: 5, scope: !304) +!307 = !DILocation(line: 182, column: 26, scope: !301) +!308 = !DILocation(line: 182, column: 5, scope: !301) +!309 = distinct !{!309, !302, !310} +!310 = !DILocation(line: 184, column: 5, scope: !298) +!311 = !DILocation(line: 185, column: 5, scope: !193) +!312 = !DILocation(line: 186, column: 3, scope: !193) +!313 = !DILocation(line: 187, column: 5, scope: !314) +!314 = distinct !DILexicalBlock(scope: !194, file: !3, line: 186, column: 10) +!315 = !DILocation(line: 188, column: 8, scope: !314) +!316 = !DILocation(line: 189, column: 9, scope: !314) +!317 = !DILocation(line: 190, column: 8, scope: !314) +!318 = !DILocation(line: 190, column: 5, scope: !314) +!319 = !DILocation(line: 190, column: 12, scope: !314) +!320 = !DILocation(line: 191, column: 8, scope: !314) +!321 = !DILocation(line: 191, column: 5, scope: !314) +!322 = !DILocation(line: 191, column: 12, scope: !314) +!323 = !DILocation(line: 192, column: 8, scope: !314) +!324 = !DILocation(line: 192, column: 5, scope: !314) +!325 = !DILocation(line: 192, column: 12, scope: !314) +!326 = !DILocation(line: 194, column: 10, scope: !327) +!327 = distinct !DILexicalBlock(scope: !314, file: !3, line: 194, column: 5) +!328 = !DILocation(line: 0, scope: !327) +!329 = !DILocation(line: 194, column: 19, scope: !330) +!330 = distinct !DILexicalBlock(scope: !327, file: !3, line: 194, column: 5) +!331 = !DILocation(line: 194, column: 5, scope: !327) +!332 = !DILocation(line: 195, column: 7, scope: !333) +!333 = distinct !DILexicalBlock(scope: !330, file: !3, line: 194, column: 30) +!334 = !DILocation(line: 195, column: 20, scope: !333) +!335 = !DILocation(line: 196, column: 5, scope: !333) +!336 = !DILocation(line: 194, column: 26, scope: !330) +!337 = !DILocation(line: 194, column: 5, scope: !330) +!338 = distinct !{!338, !331, !339} +!339 = !DILocation(line: 196, column: 5, scope: !327) +!340 = !DILocation(line: 199, column: 12, scope: !341) +!341 = distinct !DILexicalBlock(scope: !100, file: !3, line: 199, column: 8) +!342 = !DILocation(line: 199, column: 9, scope: !341) +!343 = !DILocation(line: 199, column: 22, scope: !341) +!344 = !DILocation(line: 199, column: 19, scope: !341) +!345 = !DILocation(line: 199, column: 16, scope: !341) +!346 = !DILocation(line: 199, column: 27, scope: !341) +!347 = !DILocation(line: 199, column: 34, scope: !341) +!348 = !DILocation(line: 199, column: 31, scope: !341) +!349 = !DILocation(line: 199, column: 44, scope: !341) +!350 = !DILocation(line: 199, column: 41, scope: !341) +!351 = !DILocation(line: 199, column: 38, scope: !341) +!352 = !DILocation(line: 199, column: 8, scope: !100) +!353 = !DILocation(line: 200, column: 11, scope: !354) +!354 = distinct !DILexicalBlock(scope: !341, file: !3, line: 199, column: 51) +!355 = !DILocation(line: 201, column: 3, scope: !354) +!356 = !DILocation(line: 201, column: 18, scope: !357) +!357 = distinct !DILexicalBlock(scope: !341, file: !3, line: 201, column: 15) +!358 = !DILocation(line: 201, column: 15, scope: !357) +!359 = !DILocation(line: 201, column: 22, scope: !357) +!360 = !DILocation(line: 201, column: 28, scope: !357) +!361 = !DILocation(line: 201, column: 31, scope: !357) +!362 = !DILocation(line: 201, column: 35, scope: !357) +!363 = !DILocation(line: 201, column: 15, scope: !341) +!364 = !DILocation(line: 202, column: 11, scope: !365) +!365 = distinct !DILexicalBlock(scope: !357, file: !3, line: 201, column: 42) +!366 = !DILocation(line: 203, column: 3, scope: !365) +!367 = !DILocation(line: 203, column: 18, scope: !368) +!368 = distinct !DILexicalBlock(scope: !357, file: !3, line: 203, column: 15) +!369 = !DILocation(line: 203, column: 15, scope: !368) +!370 = !DILocation(line: 203, column: 22, scope: !368) +!371 = !DILocation(line: 203, column: 29, scope: !368) +!372 = !DILocation(line: 203, column: 32, scope: !368) +!373 = !DILocation(line: 203, column: 36, scope: !368) +!374 = !DILocation(line: 203, column: 15, scope: !357) +!375 = !DILocation(line: 204, column: 11, scope: !376) +!376 = distinct !DILexicalBlock(scope: !368, file: !3, line: 203, column: 43) +!377 = !DILocation(line: 205, column: 3, scope: !376) +!378 = !DILocation(line: 205, column: 18, scope: !379) +!379 = distinct !DILexicalBlock(scope: !368, file: !3, line: 205, column: 15) +!380 = !DILocation(line: 205, column: 15, scope: !379) +!381 = !DILocation(line: 205, column: 22, scope: !379) +!382 = !DILocation(line: 205, column: 29, scope: !379) +!383 = !DILocation(line: 205, column: 32, scope: !379) +!384 = !DILocation(line: 205, column: 36, scope: !379) +!385 = !DILocation(line: 205, column: 15, scope: !368) +!386 = !DILocation(line: 206, column: 11, scope: !387) +!387 = distinct !DILexicalBlock(scope: !379, file: !3, line: 205, column: 43) +!388 = !DILocation(line: 207, column: 3, scope: !387) +!389 = !DILocation(line: 207, column: 18, scope: !390) +!390 = distinct !DILexicalBlock(scope: !379, file: !3, line: 207, column: 15) +!391 = !DILocation(line: 207, column: 15, scope: !390) +!392 = !DILocation(line: 207, column: 22, scope: !390) +!393 = !DILocation(line: 207, column: 29, scope: !390) +!394 = !DILocation(line: 207, column: 32, scope: !390) +!395 = !DILocation(line: 207, column: 36, scope: !390) +!396 = !DILocation(line: 207, column: 15, scope: !379) +!397 = !DILocation(line: 208, column: 11, scope: !398) +!398 = distinct !DILexicalBlock(scope: !390, file: !3, line: 207, column: 44) +!399 = !DILocation(line: 209, column: 3, scope: !398) +!400 = !DILocation(line: 209, column: 18, scope: !401) +!401 = distinct !DILexicalBlock(scope: !390, file: !3, line: 209, column: 15) +!402 = !DILocation(line: 209, column: 15, scope: !401) +!403 = !DILocation(line: 209, column: 22, scope: !401) +!404 = !DILocation(line: 209, column: 29, scope: !401) +!405 = !DILocation(line: 209, column: 32, scope: !401) +!406 = !DILocation(line: 209, column: 36, scope: !401) +!407 = !DILocation(line: 209, column: 15, scope: !390) +!408 = !DILocation(line: 210, column: 11, scope: !409) +!409 = distinct !DILexicalBlock(scope: !401, file: !3, line: 209, column: 44) +!410 = !DILocation(line: 211, column: 3, scope: !409) +!411 = !DILocation(line: 211, column: 18, scope: !412) +!412 = distinct !DILexicalBlock(scope: !401, file: !3, line: 211, column: 15) +!413 = !DILocation(line: 211, column: 15, scope: !412) +!414 = !DILocation(line: 211, column: 22, scope: !412) +!415 = !DILocation(line: 211, column: 30, scope: !412) +!416 = !DILocation(line: 211, column: 33, scope: !412) +!417 = !DILocation(line: 211, column: 37, scope: !412) +!418 = !DILocation(line: 211, column: 15, scope: !401) +!419 = !DILocation(line: 212, column: 11, scope: !420) +!420 = distinct !DILexicalBlock(scope: !412, file: !3, line: 211, column: 45) +!421 = !DILocation(line: 213, column: 3, scope: !420) +!422 = !DILocation(line: 213, column: 18, scope: !423) +!423 = distinct !DILexicalBlock(scope: !412, file: !3, line: 213, column: 15) +!424 = !DILocation(line: 213, column: 15, scope: !423) +!425 = !DILocation(line: 213, column: 22, scope: !423) +!426 = !DILocation(line: 213, column: 30, scope: !423) +!427 = !DILocation(line: 213, column: 33, scope: !423) +!428 = !DILocation(line: 213, column: 37, scope: !423) +!429 = !DILocation(line: 213, column: 15, scope: !412) +!430 = !DILocation(line: 214, column: 11, scope: !431) +!431 = distinct !DILexicalBlock(scope: !423, file: !3, line: 213, column: 45) +!432 = !DILocation(line: 215, column: 3, scope: !431) +!433 = !DILocation(line: 216, column: 11, scope: !434) +!434 = distinct !DILexicalBlock(scope: !423, file: !3, line: 215, column: 10) +!435 = !DILocation(line: 232, column: 3, scope: !100) +!436 = !DILocation(line: 232, column: 8, scope: !100) +!437 = !{!438, !438, i64 0} +!438 = !{!"double", !200, i64 0} +!439 = !DILocation(line: 233, column: 3, scope: !100) +!440 = !DILocation(line: 233, column: 8, scope: !100) +!441 = !DILocation(line: 234, column: 3, scope: !100) +!442 = !DILocation(line: 234, column: 8, scope: !100) +!443 = !DILocation(line: 235, column: 3, scope: !100) +!444 = !DILocation(line: 235, column: 8, scope: !100) +!445 = !DILocation(line: 237, column: 7, scope: !446) +!446 = distinct !DILexicalBlock(scope: !100, file: !3, line: 237, column: 7) +!447 = !DILocation(line: 237, column: 13, scope: !446) +!448 = !DILocation(line: 237, column: 20, scope: !446) +!449 = !DILocation(line: 237, column: 23, scope: !446) +!450 = !DILocation(line: 237, column: 29, scope: !446) +!451 = !DILocation(line: 237, column: 36, scope: !446) +!452 = !DILocation(line: 237, column: 39, scope: !446) +!453 = !DILocation(line: 237, column: 45, scope: !446) +!454 = !DILocation(line: 237, column: 7, scope: !100) +!455 = !DILocation(line: 241, column: 5, scope: !456) +!456 = distinct !DILexicalBlock(scope: !446, file: !3, line: 237, column: 52) +!457 = !DILocation(line: 241, column: 10, scope: !456) +!458 = !DILocation(line: 242, column: 5, scope: !456) +!459 = !DILocation(line: 242, column: 10, scope: !456) +!460 = !DILocation(line: 243, column: 5, scope: !456) +!461 = !DILocation(line: 243, column: 10, scope: !456) +!462 = !DILocation(line: 244, column: 5, scope: !456) +!463 = !DILocation(line: 244, column: 10, scope: !456) +!464 = !DILocation(line: 245, column: 3, scope: !456) +!465 = !DILocation(line: 249, column: 5, scope: !466) +!466 = distinct !DILexicalBlock(scope: !446, file: !3, line: 245, column: 10) +!467 = !DILocation(line: 249, column: 10, scope: !466) +!468 = !DILocation(line: 250, column: 5, scope: !466) +!469 = !DILocation(line: 250, column: 10, scope: !466) +!470 = !DILocation(line: 251, column: 5, scope: !466) +!471 = !DILocation(line: 251, column: 10, scope: !466) +!472 = !DILocation(line: 252, column: 5, scope: !466) +!473 = !DILocation(line: 252, column: 10, scope: !466) +!474 = !DILocation(line: 254, column: 6, scope: !100) +!475 = !DILocation(line: 255, column: 8, scope: !100) +!476 = !DILocation(line: 260, column: 5, scope: !477) +!477 = distinct !DILexicalBlock(scope: !100, file: !3, line: 259, column: 3) +!478 = !DILocation(line: 261, column: 11, scope: !477) +!479 = !DILocation(line: 261, column: 14, scope: !477) +!480 = !DILocation(line: 261, column: 18, scope: !477) +!481 = !DILocation(line: 261, column: 22, scope: !477) +!482 = !DILocation(line: 261, column: 5, scope: !477) +!483 = !DILocation(line: 262, column: 11, scope: !477) +!484 = !DILocation(line: 262, column: 14, scope: !477) +!485 = !DILocation(line: 262, column: 18, scope: !477) +!486 = !DILocation(line: 262, column: 22, scope: !477) +!487 = !DILocation(line: 262, column: 29, scope: !477) +!488 = !DILocation(line: 262, column: 26, scope: !477) +!489 = !DILocation(line: 262, column: 37, scope: !477) +!490 = !DILocation(line: 262, column: 34, scope: !477) +!491 = !DILocation(line: 262, column: 5, scope: !477) +!492 = !DILocation(line: 264, column: 13, scope: !477) +!493 = !DILocation(line: 264, column: 16, scope: !477) +!494 = !DILocation(line: 264, column: 20, scope: !477) +!495 = !DILocation(line: 264, column: 24, scope: !477) +!496 = !DILocation(line: 264, column: 45, scope: !477) +!497 = !DILocation(line: 264, column: 42, scope: !477) +!498 = !DILocation(line: 264, column: 53, scope: !477) +!499 = !DILocation(line: 264, column: 50, scope: !477) +!500 = !DILocation(line: 264, column: 61, scope: !477) +!501 = !DILocation(line: 264, column: 58, scope: !477) +!502 = !DILocation(line: 264, column: 5, scope: !477) +!503 = !DILocation(line: 266, column: 51, scope: !477) +!504 = !DILocation(line: 266, column: 48, scope: !477) +!505 = !DILocation(line: 266, column: 59, scope: !477) +!506 = !DILocation(line: 266, column: 56, scope: !477) +!507 = !DILocation(line: 266, column: 67, scope: !477) +!508 = !DILocation(line: 266, column: 64, scope: !477) +!509 = !DILocation(line: 266, column: 72, scope: !477) +!510 = !DILocation(line: 266, column: 5, scope: !477) +!511 = !DILocation(line: 267, column: 34, scope: !477) +!512 = !DILocation(line: 267, column: 5, scope: !477) +!513 = !DILocation(line: 268, column: 5, scope: !477) +!514 = !DILocation(line: 270, column: 11, scope: !477) +!515 = !DILocation(line: 270, column: 14, scope: !477) +!516 = !DILocation(line: 270, column: 17, scope: !477) +!517 = !DILocation(line: 270, column: 20, scope: !477) +!518 = !DILocation(line: 270, column: 24, scope: !477) +!519 = !DILocation(line: 270, column: 28, scope: !477) +!520 = !DILocation(line: 270, column: 32, scope: !477) +!521 = !DILocation(line: 270, column: 5, scope: !477) +!522 = !DILocation(line: 271, column: 13, scope: !477) +!523 = !DILocation(line: 271, column: 16, scope: !477) +!524 = !DILocation(line: 271, column: 20, scope: !477) +!525 = !DILocation(line: 271, column: 24, scope: !477) +!526 = !DILocation(line: 271, column: 45, scope: !477) +!527 = !DILocation(line: 271, column: 42, scope: !477) +!528 = !DILocation(line: 271, column: 53, scope: !477) +!529 = !DILocation(line: 271, column: 50, scope: !477) +!530 = !DILocation(line: 271, column: 61, scope: !477) +!531 = !DILocation(line: 271, column: 58, scope: !477) +!532 = !DILocation(line: 271, column: 5, scope: !477) +!533 = !DILocation(line: 272, column: 12, scope: !477) +!534 = !DILocation(line: 273, column: 12, scope: !477) +!535 = !DILocation(line: 278, column: 10, scope: !477) +!536 = !DILocation(line: 278, column: 13, scope: !477) +!537 = !DILocation(line: 278, column: 16, scope: !477) +!538 = !DILocation(line: 278, column: 19, scope: !477) +!539 = !DILocation(line: 278, column: 22, scope: !477) +!540 = !DILocation(line: 278, column: 25, scope: !477) +!541 = !DILocation(line: 278, column: 29, scope: !477) +!542 = !DILocation(line: 278, column: 33, scope: !477) +!543 = !DILocation(line: 278, column: 5, scope: !477) +!544 = !DILocation(line: 279, column: 11, scope: !477) +!545 = !DILocation(line: 279, column: 14, scope: !477) +!546 = !DILocation(line: 279, column: 17, scope: !477) +!547 = !DILocation(line: 279, column: 20, scope: !477) +!548 = !DILocation(line: 279, column: 24, scope: !477) +!549 = !DILocation(line: 279, column: 28, scope: !477) +!550 = !DILocation(line: 279, column: 32, scope: !477) +!551 = !DILocation(line: 279, column: 5, scope: !477) +!552 = !DILocation(line: 280, column: 5, scope: !477) +!553 = !DILocation(line: 281, column: 11, scope: !477) +!554 = !DILocation(line: 281, column: 14, scope: !477) +!555 = !DILocation(line: 281, column: 18, scope: !477) +!556 = !DILocation(line: 281, column: 22, scope: !477) +!557 = !DILocation(line: 281, column: 5, scope: !477) +!558 = !DILocation(line: 282, column: 11, scope: !477) +!559 = !DILocation(line: 282, column: 14, scope: !477) +!560 = !DILocation(line: 282, column: 18, scope: !477) +!561 = !DILocation(line: 282, column: 22, scope: !477) +!562 = !DILocation(line: 282, column: 29, scope: !477) +!563 = !DILocation(line: 282, column: 26, scope: !477) +!564 = !DILocation(line: 282, column: 37, scope: !477) +!565 = !DILocation(line: 282, column: 34, scope: !477) +!566 = !DILocation(line: 282, column: 5, scope: !477) +!567 = !DILocation(line: 284, column: 5, scope: !477) +!568 = !DILocation(line: 285, column: 13, scope: !477) +!569 = !DILocation(line: 287, column: 5, scope: !477) +!570 = !DILocation(line: 289, column: 10, scope: !571) +!571 = distinct !DILexicalBlock(scope: !477, file: !3, line: 289, column: 5) +!572 = !DILocation(line: 0, scope: !571) +!573 = !DILocation(line: 289, column: 25, scope: !574) +!574 = distinct !DILexicalBlock(scope: !571, file: !3, line: 289, column: 5) +!575 = !DILocation(line: 289, column: 5, scope: !571) +!576 = !DILocation(line: 290, column: 7, scope: !577) +!577 = distinct !DILexicalBlock(scope: !574, file: !3, line: 289, column: 40) +!578 = !DILocation(line: 291, column: 5, scope: !577) +!579 = !DILocation(line: 289, column: 36, scope: !574) +!580 = !DILocation(line: 289, column: 5, scope: !574) +!581 = distinct !{!581, !575, !582} +!582 = !DILocation(line: 291, column: 5, scope: !571) +!583 = !DILocation(line: 293, column: 5, scope: !477) +!584 = !DILocation(line: 295, column: 11, scope: !477) +!585 = !DILocation(line: 295, column: 14, scope: !477) +!586 = !DILocation(line: 295, column: 17, scope: !477) +!587 = !DILocation(line: 295, column: 20, scope: !477) +!588 = !DILocation(line: 295, column: 24, scope: !477) +!589 = !DILocation(line: 295, column: 28, scope: !477) +!590 = !DILocation(line: 295, column: 32, scope: !477) +!591 = !DILocation(line: 295, column: 5, scope: !477) +!592 = !DILocation(line: 296, column: 13, scope: !477) +!593 = !DILocation(line: 296, column: 16, scope: !477) +!594 = !DILocation(line: 296, column: 20, scope: !477) +!595 = !DILocation(line: 296, column: 24, scope: !477) +!596 = !DILocation(line: 296, column: 45, scope: !477) +!597 = !DILocation(line: 296, column: 42, scope: !477) +!598 = !DILocation(line: 296, column: 53, scope: !477) +!599 = !DILocation(line: 296, column: 50, scope: !477) +!600 = !DILocation(line: 296, column: 61, scope: !477) +!601 = !DILocation(line: 296, column: 58, scope: !477) +!602 = !DILocation(line: 296, column: 5, scope: !477) +!603 = !DILocation(line: 297, column: 12, scope: !477) +!604 = !DILocation(line: 298, column: 12, scope: !477) +!605 = !DILocation(line: 300, column: 10, scope: !606) +!606 = distinct !DILexicalBlock(scope: !477, file: !3, line: 300, column: 5) +!607 = !DILocation(line: 0, scope: !606) +!608 = !DILocation(line: 300, column: 24, scope: !609) +!609 = distinct !DILexicalBlock(scope: !606, file: !3, line: 300, column: 5) +!610 = !DILocation(line: 300, column: 21, scope: !609) +!611 = !DILocation(line: 300, column: 5, scope: !606) +!612 = !DILocation(line: 301, column: 15, scope: !613) +!613 = distinct !DILexicalBlock(scope: !614, file: !3, line: 301, column: 11) +!614 = distinct !DILexicalBlock(scope: !609, file: !3, line: 300, column: 35) +!615 = !DILocation(line: 301, column: 21, scope: !613) +!616 = !DILocation(line: 301, column: 31, scope: !613) +!617 = !DILocation(line: 301, column: 28, scope: !613) +!618 = !DILocation(line: 301, column: 36, scope: !613) +!619 = !DILocation(line: 301, column: 44, scope: !613) +!620 = !DILocation(line: 301, column: 51, scope: !613) +!621 = !DILocation(line: 301, column: 11, scope: !614) +!622 = !DILocation(line: 302, column: 9, scope: !623) +!623 = distinct !DILexicalBlock(scope: !613, file: !3, line: 301, column: 58) +!624 = !DILocation(line: 303, column: 7, scope: !623) +!625 = !DILocation(line: 304, column: 12, scope: !614) +!626 = !DILocation(line: 304, column: 15, scope: !614) +!627 = !DILocation(line: 304, column: 18, scope: !614) +!628 = !DILocation(line: 304, column: 21, scope: !614) +!629 = !DILocation(line: 304, column: 24, scope: !614) +!630 = !DILocation(line: 304, column: 27, scope: !614) +!631 = !DILocation(line: 304, column: 31, scope: !614) +!632 = !DILocation(line: 304, column: 35, scope: !614) +!633 = !DILocation(line: 304, column: 7, scope: !614) +!634 = !DILocation(line: 305, column: 13, scope: !614) +!635 = !DILocation(line: 305, column: 16, scope: !614) +!636 = !DILocation(line: 305, column: 19, scope: !614) +!637 = !DILocation(line: 305, column: 22, scope: !614) +!638 = !DILocation(line: 305, column: 26, scope: !614) +!639 = !DILocation(line: 305, column: 30, scope: !614) +!640 = !DILocation(line: 305, column: 34, scope: !614) +!641 = !DILocation(line: 305, column: 7, scope: !614) +!642 = !DILocation(line: 306, column: 5, scope: !614) +!643 = !DILocation(line: 300, column: 31, scope: !609) +!644 = !DILocation(line: 300, column: 5, scope: !609) +!645 = distinct !{!645, !611, !646} +!646 = !DILocation(line: 306, column: 5, scope: !606) +!647 = !DILocation(line: 308, column: 13, scope: !477) +!648 = !DILocation(line: 308, column: 16, scope: !477) +!649 = !DILocation(line: 308, column: 20, scope: !477) +!650 = !DILocation(line: 308, column: 24, scope: !477) +!651 = !DILocation(line: 308, column: 45, scope: !477) +!652 = !DILocation(line: 308, column: 42, scope: !477) +!653 = !DILocation(line: 308, column: 53, scope: !477) +!654 = !DILocation(line: 308, column: 50, scope: !477) +!655 = !DILocation(line: 308, column: 61, scope: !477) +!656 = !DILocation(line: 308, column: 58, scope: !477) +!657 = !DILocation(line: 308, column: 5, scope: !477) +!658 = !DILocation(line: 310, column: 3, scope: !100) +!659 = !DILocation(line: 312, column: 7, scope: !100) +!660 = !DILocation(line: 317, column: 3, scope: !100) +!661 = !DILocation(line: 320, column: 7, scope: !662) +!662 = distinct !DILexicalBlock(scope: !100, file: !3, line: 320, column: 7) +!663 = !DILocation(line: 320, column: 13, scope: !662) +!664 = !DILocation(line: 320, column: 7, scope: !100) +!665 = !DILocation(line: 321, column: 9, scope: !666) +!666 = distinct !DILexicalBlock(scope: !667, file: !3, line: 321, column: 9) +!667 = distinct !DILexicalBlock(scope: !662, file: !3, line: 320, column: 21) +!668 = !DILocation(line: 321, column: 15, scope: !666) +!669 = !DILocation(line: 321, column: 9, scope: !667) +!670 = !DILocation(line: 323, column: 5, scope: !671) +!671 = distinct !DILexicalBlock(scope: !666, file: !3, line: 321, column: 23) +!672 = !DILocation(line: 323, column: 16, scope: !673) +!673 = distinct !DILexicalBlock(scope: !666, file: !3, line: 323, column: 16) +!674 = !DILocation(line: 323, column: 22, scope: !673) +!675 = !DILocation(line: 323, column: 16, scope: !666) +!676 = !DILocation(line: 325, column: 5, scope: !677) +!677 = distinct !DILexicalBlock(scope: !673, file: !3, line: 323, column: 30) +!678 = !DILocation(line: 325, column: 16, scope: !679) +!679 = distinct !DILexicalBlock(scope: !673, file: !3, line: 325, column: 16) +!680 = !DILocation(line: 325, column: 22, scope: !679) +!681 = !DILocation(line: 325, column: 16, scope: !673) +!682 = !DILocation(line: 327, column: 5, scope: !683) +!683 = distinct !DILexicalBlock(scope: !679, file: !3, line: 325, column: 30) +!684 = !DILocation(line: 327, column: 16, scope: !685) +!685 = distinct !DILexicalBlock(scope: !679, file: !3, line: 327, column: 16) +!686 = !DILocation(line: 327, column: 22, scope: !685) +!687 = !DILocation(line: 327, column: 16, scope: !679) +!688 = !DILocation(line: 329, column: 5, scope: !689) +!689 = distinct !DILexicalBlock(scope: !685, file: !3, line: 327, column: 30) +!690 = !DILocation(line: 329, column: 16, scope: !691) +!691 = distinct !DILexicalBlock(scope: !685, file: !3, line: 329, column: 16) +!692 = !DILocation(line: 329, column: 22, scope: !691) +!693 = !DILocation(line: 329, column: 16, scope: !685) +!694 = !DILocation(line: 331, column: 5, scope: !695) +!695 = distinct !DILexicalBlock(scope: !691, file: !3, line: 329, column: 30) +!696 = !DILocation(line: 331, column: 16, scope: !697) +!697 = distinct !DILexicalBlock(scope: !691, file: !3, line: 331, column: 16) +!698 = !DILocation(line: 331, column: 22, scope: !697) +!699 = !DILocation(line: 331, column: 16, scope: !691) +!700 = !DILocation(line: 333, column: 5, scope: !701) +!701 = distinct !DILexicalBlock(scope: !697, file: !3, line: 331, column: 30) +!702 = !DILocation(line: 333, column: 16, scope: !703) +!703 = distinct !DILexicalBlock(scope: !697, file: !3, line: 333, column: 16) +!704 = !DILocation(line: 333, column: 22, scope: !703) +!705 = !DILocation(line: 333, column: 16, scope: !697) +!706 = !DILocation(line: 335, column: 5, scope: !707) +!707 = distinct !DILexicalBlock(scope: !703, file: !3, line: 333, column: 30) +!708 = !DILocation(line: 0, scope: !697) +!709 = !DILocation(line: 0, scope: !691) +!710 = !DILocation(line: 0, scope: !685) +!711 = !DILocation(line: 0, scope: !679) +!712 = !DILocation(line: 0, scope: !673) +!713 = !DILocation(line: 0, scope: !666) +!714 = !DILocation(line: 337, column: 17, scope: !667) +!715 = !DILocation(line: 337, column: 22, scope: !667) +!716 = !DILocation(line: 337, column: 11, scope: !667) +!717 = !DILocation(line: 337, column: 39, scope: !667) +!718 = !DILocation(line: 338, column: 5, scope: !667) +!719 = !DILocation(line: 339, column: 58, scope: !667) +!720 = !DILocation(line: 339, column: 5, scope: !667) +!721 = !DILocation(line: 341, column: 13, scope: !722) +!722 = distinct !DILexicalBlock(scope: !667, file: !3, line: 341, column: 9) +!723 = !DILocation(line: 341, column: 9, scope: !667) +!724 = !DILocation(line: 343, column: 7, scope: !725) +!725 = distinct !DILexicalBlock(scope: !722, file: !3, line: 341, column: 25) +!726 = !DILocation(line: 344, column: 39, scope: !725) +!727 = !DILocation(line: 344, column: 7, scope: !725) +!728 = !DILocation(line: 345, column: 7, scope: !725) +!729 = !DILocation(line: 346, column: 5, scope: !725) +!730 = !DILocation(line: 348, column: 7, scope: !731) +!731 = distinct !DILexicalBlock(scope: !722, file: !3, line: 346, column: 12) +!732 = !DILocation(line: 349, column: 51, scope: !731) +!733 = !DILocation(line: 349, column: 7, scope: !731) +!734 = !DILocation(line: 350, column: 7, scope: !731) +!735 = !DILocation(line: 0, scope: !722) +!736 = !DILocation(line: 352, column: 3, scope: !667) +!737 = !DILocation(line: 354, column: 5, scope: !738) +!738 = distinct !DILexicalBlock(scope: !662, file: !3, line: 352, column: 10) +!739 = !DILocation(line: 355, column: 5, scope: !738) +!740 = !DILocation(line: 356, column: 37, scope: !738) +!741 = !DILocation(line: 356, column: 5, scope: !738) +!742 = !DILocation(line: 0, scope: !662) +!743 = !DILocation(line: 359, column: 17, scope: !100) +!744 = !DILocation(line: 359, column: 14, scope: !100) +!745 = !DILocation(line: 359, column: 12, scope: !100) +!746 = !DILocation(line: 359, column: 26, scope: !100) +!747 = !DILocation(line: 359, column: 23, scope: !100) +!748 = !DILocation(line: 359, column: 21, scope: !100) +!749 = !DILocation(line: 359, column: 35, scope: !100) +!750 = !DILocation(line: 359, column: 32, scope: !100) +!751 = !DILocation(line: 359, column: 30, scope: !100) +!752 = !DILocation(line: 361, column: 9, scope: !753) +!753 = distinct !DILexicalBlock(scope: !100, file: !3, line: 361, column: 7) +!754 = !DILocation(line: 361, column: 7, scope: !100) +!755 = !DILocation(line: 362, column: 21, scope: !756) +!756 = distinct !DILexicalBlock(scope: !753, file: !3, line: 361, column: 17) +!757 = !DILocation(line: 362, column: 19, scope: !756) +!758 = !DILocation(line: 362, column: 25, scope: !756) +!759 = !DILocation(line: 362, column: 30, scope: !756) +!760 = !DILocation(line: 362, column: 39, scope: !756) +!761 = !DILocation(line: 363, column: 3, scope: !756) +!762 = !DILocation(line: 0, scope: !753) +!763 = !DILocation(line: 367, column: 23, scope: !100) +!764 = !DILocation(line: 367, column: 33, scope: !100) +!765 = !DILocation(line: 367, column: 30, scope: !100) +!766 = !DILocation(line: 367, column: 41, scope: !100) +!767 = !DILocation(line: 367, column: 38, scope: !100) +!768 = !DILocation(line: 367, column: 49, scope: !100) +!769 = !DILocation(line: 367, column: 46, scope: !100) +!770 = !DILocation(line: 368, column: 7, scope: !100) +!771 = !DILocation(line: 367, column: 3, scope: !100) +!772 = !DILocation(line: 376, column: 7, scope: !773) +!773 = distinct !DILexicalBlock(scope: !100, file: !3, line: 376, column: 7) +!774 = !DILocation(line: 376, column: 7, scope: !100) +!775 = !DILocation(line: 377, column: 12, scope: !776) +!776 = distinct !DILexicalBlock(scope: !773, file: !3, line: 376, column: 16) +!777 = !DILocation(line: 378, column: 14, scope: !778) +!778 = distinct !DILexicalBlock(scope: !776, file: !3, line: 378, column: 9) +!779 = !DILocation(line: 378, column: 9, scope: !776) +!780 = !DILocation(line: 378, column: 22, scope: !778) +!781 = !DILocation(line: 0, scope: !776) +!782 = !DILocation(line: 380, column: 5, scope: !776) +!783 = !DILocation(line: 381, column: 10, scope: !784) +!784 = distinct !DILexicalBlock(scope: !776, file: !3, line: 381, column: 5) +!785 = !DILocation(line: 0, scope: !784) +!786 = !DILocation(line: 381, column: 25, scope: !787) +!787 = distinct !DILexicalBlock(scope: !784, file: !3, line: 381, column: 5) +!788 = !DILocation(line: 381, column: 5, scope: !784) +!789 = !DILocation(line: 382, column: 11, scope: !790) +!790 = distinct !DILexicalBlock(scope: !787, file: !3, line: 381, column: 40) +!791 = !DILocation(line: 383, column: 13, scope: !792) +!792 = distinct !DILexicalBlock(scope: !790, file: !3, line: 383, column: 11) +!793 = !DILocation(line: 383, column: 11, scope: !790) +!794 = !DILocation(line: 384, column: 13, scope: !795) +!795 = distinct !DILexicalBlock(scope: !792, file: !3, line: 383, column: 26) +!796 = !DILocation(line: 384, column: 33, scope: !795) +!797 = !DILocation(line: 385, column: 66, scope: !795) +!798 = !DILocation(line: 385, column: 71, scope: !795) +!799 = !DILocation(line: 385, column: 9, scope: !795) +!800 = !DILocation(line: 386, column: 7, scope: !795) +!801 = !DILocation(line: 387, column: 45, scope: !802) +!802 = distinct !DILexicalBlock(scope: !792, file: !3, line: 386, column: 14) +!803 = !DILocation(line: 387, column: 61, scope: !802) +!804 = !DILocation(line: 387, column: 66, scope: !802) +!805 = !DILocation(line: 387, column: 9, scope: !802) +!806 = !DILocation(line: 389, column: 5, scope: !790) +!807 = !DILocation(line: 381, column: 36, scope: !787) +!808 = !DILocation(line: 381, column: 5, scope: !787) +!809 = distinct !{!809, !788, !810} +!810 = !DILocation(line: 389, column: 5, scope: !784) +!811 = !DILocation(line: 390, column: 3, scope: !776) +!812 = !DILocation(line: 395, column: 1, scope: !100) +!813 = !DILocation(line: 394, column: 3, scope: !100) +!814 = distinct !DISubprogram(name: "setup", scope: !3, file: !3, line: 398, type: !815, scopeLine: 399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !818) +!815 = !DISubroutineType(types: !816) +!816 = !{null, !817, !817, !817} +!817 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) +!818 = !{!819, !820, !821, !822, !823, !824, !825, !829} +!819 = !DILocalVariable(name: "n1", arg: 1, scope: !814, file: !3, line: 398, type: !817) +!820 = !DILocalVariable(name: "n2", arg: 2, scope: !814, file: !3, line: 398, type: !817) +!821 = !DILocalVariable(name: "n3", arg: 3, scope: !814, file: !3, line: 398, type: !817) +!822 = !DILocalVariable(name: "k", scope: !814, file: !3, line: 400, type: !15) +!823 = !DILocalVariable(name: "j", scope: !814, file: !3, line: 400, type: !15) +!824 = !DILocalVariable(name: "ax", scope: !814, file: !3, line: 402, type: !15) +!825 = !DILocalVariable(name: "mi", scope: !814, file: !3, line: 402, type: !826) +!826 = !DICompositeType(tag: DW_TAG_array_type, baseType: !15, size: 960, elements: !827) +!827 = !{!22, !828} +!828 = !DISubrange(count: 3) +!829 = !DILocalVariable(name: "ng", scope: !814, file: !3, line: 403, type: !826) +!830 = !DILocation(line: 0, scope: !814) +!831 = !DILocation(line: 402, column: 3, scope: !814) +!832 = !DILocation(line: 402, column: 11, scope: !814) +!833 = !DILocation(line: 403, column: 3, scope: !814) +!834 = !DILocation(line: 403, column: 7, scope: !814) +!835 = !DILocation(line: 405, column: 18, scope: !814) +!836 = !DILocation(line: 405, column: 15, scope: !814) +!837 = !DILocation(line: 405, column: 6, scope: !814) +!838 = !DILocation(line: 405, column: 3, scope: !814) +!839 = !DILocation(line: 405, column: 13, scope: !814) +!840 = !DILocation(line: 406, column: 18, scope: !814) +!841 = !DILocation(line: 406, column: 15, scope: !814) +!842 = !DILocation(line: 406, column: 6, scope: !814) +!843 = !DILocation(line: 406, column: 3, scope: !814) +!844 = !DILocation(line: 406, column: 13, scope: !814) +!845 = !DILocation(line: 407, column: 18, scope: !814) +!846 = !DILocation(line: 407, column: 15, scope: !814) +!847 = !DILocation(line: 407, column: 6, scope: !814) +!848 = !DILocation(line: 407, column: 3, scope: !814) +!849 = !DILocation(line: 407, column: 13, scope: !814) +!850 = !DILocation(line: 408, column: 12, scope: !851) +!851 = distinct !DILexicalBlock(scope: !814, file: !3, line: 408, column: 3) +!852 = !DILocation(line: 408, column: 14, scope: !851) +!853 = !DILocation(line: 408, column: 8, scope: !851) +!854 = !DILocation(line: 0, scope: !851) +!855 = !DILocation(line: 408, column: 20, scope: !856) +!856 = distinct !DILexicalBlock(scope: !851, file: !3, line: 408, column: 3) +!857 = !DILocation(line: 408, column: 3, scope: !851) +!858 = !DILocation(line: 409, column: 10, scope: !859) +!859 = distinct !DILexicalBlock(scope: !860, file: !3, line: 409, column: 5) +!860 = distinct !DILexicalBlock(scope: !856, file: !3, line: 408, column: 31) +!861 = !DILocation(line: 0, scope: !859) +!862 = !DILocation(line: 409, column: 21, scope: !863) +!863 = distinct !DILexicalBlock(scope: !859, file: !3, line: 409, column: 5) +!864 = !DILocation(line: 409, column: 5, scope: !859) +!865 = !DILocation(line: 410, column: 23, scope: !866) +!866 = distinct !DILexicalBlock(scope: !863, file: !3, line: 409, column: 32) +!867 = !DILocation(line: 410, column: 19, scope: !866) +!868 = !DILocation(line: 410, column: 30, scope: !866) +!869 = !DILocation(line: 410, column: 7, scope: !866) +!870 = !DILocation(line: 410, column: 17, scope: !866) +!871 = !DILocation(line: 411, column: 5, scope: !866) +!872 = !DILocation(line: 409, column: 28, scope: !863) +!873 = !DILocation(line: 409, column: 5, scope: !863) +!874 = distinct !{!874, !864, !875} +!875 = !DILocation(line: 411, column: 5, scope: !859) +!876 = !DILocation(line: 412, column: 3, scope: !860) +!877 = !DILocation(line: 408, column: 27, scope: !856) +!878 = !DILocation(line: 408, column: 3, scope: !856) +!879 = distinct !{!879, !857, !880} +!880 = !DILocation(line: 412, column: 3, scope: !851) +!881 = !DILocation(line: 413, column: 12, scope: !882) +!882 = distinct !DILexicalBlock(scope: !814, file: !3, line: 413, column: 3) +!883 = !DILocation(line: 413, column: 8, scope: !882) +!884 = !DILocation(line: 0, scope: !882) +!885 = !DILocation(line: 413, column: 18, scope: !886) +!886 = distinct !DILexicalBlock(scope: !882, file: !3, line: 413, column: 3) +!887 = !DILocation(line: 413, column: 3, scope: !882) +!888 = !DILocation(line: 414, column: 13, scope: !889) +!889 = distinct !DILexicalBlock(scope: !886, file: !3, line: 413, column: 29) +!890 = !DILocation(line: 414, column: 5, scope: !889) +!891 = !DILocation(line: 414, column: 11, scope: !889) +!892 = !DILocation(line: 415, column: 13, scope: !889) +!893 = !DILocation(line: 415, column: 5, scope: !889) +!894 = !DILocation(line: 415, column: 11, scope: !889) +!895 = !DILocation(line: 416, column: 13, scope: !889) +!896 = !DILocation(line: 416, column: 5, scope: !889) +!897 = !DILocation(line: 416, column: 11, scope: !889) +!898 = !DILocation(line: 417, column: 3, scope: !889) +!899 = !DILocation(line: 413, column: 25, scope: !886) +!900 = !DILocation(line: 413, column: 3, scope: !886) +!901 = distinct !{!901, !887, !902} +!902 = !DILocation(line: 417, column: 3, scope: !882) +!903 = !DILocation(line: 419, column: 12, scope: !904) +!904 = distinct !DILexicalBlock(scope: !814, file: !3, line: 419, column: 3) +!905 = !DILocation(line: 419, column: 8, scope: !904) +!906 = !DILocation(line: 0, scope: !904) +!907 = !DILocation(line: 419, column: 18, scope: !908) +!908 = distinct !DILexicalBlock(scope: !904, file: !3, line: 419, column: 3) +!909 = !DILocation(line: 419, column: 3, scope: !904) +!910 = !DILocation(line: 420, column: 10, scope: !911) +!911 = distinct !DILexicalBlock(scope: !912, file: !3, line: 420, column: 5) +!912 = distinct !DILexicalBlock(scope: !908, file: !3, line: 419, column: 29) +!913 = !DILocation(line: 0, scope: !911) +!914 = !DILocation(line: 420, column: 21, scope: !915) +!915 = distinct !DILexicalBlock(scope: !911, file: !3, line: 420, column: 5) +!916 = !DILocation(line: 420, column: 5, scope: !911) +!917 = !DILocation(line: 421, column: 23, scope: !918) +!918 = distinct !DILexicalBlock(scope: !915, file: !3, line: 420, column: 32) +!919 = !DILocation(line: 421, column: 21, scope: !918) +!920 = !DILocation(line: 421, column: 7, scope: !918) +!921 = !DILocation(line: 421, column: 17, scope: !918) +!922 = !DILocation(line: 422, column: 5, scope: !918) +!923 = !DILocation(line: 420, column: 28, scope: !915) +!924 = !DILocation(line: 420, column: 5, scope: !915) +!925 = distinct !{!925, !916, !926} +!926 = !DILocation(line: 422, column: 5, scope: !911) +!927 = !DILocation(line: 424, column: 13, scope: !912) +!928 = !DILocation(line: 424, column: 5, scope: !912) +!929 = !DILocation(line: 424, column: 11, scope: !912) +!930 = !DILocation(line: 425, column: 13, scope: !912) +!931 = !DILocation(line: 425, column: 5, scope: !912) +!932 = !DILocation(line: 425, column: 11, scope: !912) +!933 = !DILocation(line: 426, column: 13, scope: !912) +!934 = !DILocation(line: 426, column: 5, scope: !912) +!935 = !DILocation(line: 426, column: 11, scope: !912) +!936 = !DILocation(line: 427, column: 3, scope: !912) +!937 = !DILocation(line: 419, column: 25, scope: !908) +!938 = !DILocation(line: 419, column: 3, scope: !908) +!939 = distinct !{!939, !909, !940} +!940 = !DILocation(line: 427, column: 3, scope: !904) +!941 = !DILocation(line: 429, column: 7, scope: !814) +!942 = !DILocation(line: 430, column: 13, scope: !814) +!943 = !DILocation(line: 430, column: 11, scope: !814) +!944 = !DILocation(line: 430, column: 27, scope: !814) +!945 = !DILocation(line: 430, column: 24, scope: !814) +!946 = !DILocation(line: 430, column: 22, scope: !814) +!947 = !DILocation(line: 430, column: 7, scope: !814) +!948 = !DILocation(line: 431, column: 13, scope: !814) +!949 = !DILocation(line: 431, column: 11, scope: !814) +!950 = !DILocation(line: 431, column: 7, scope: !814) +!951 = !DILocation(line: 432, column: 13, scope: !814) +!952 = !DILocation(line: 432, column: 11, scope: !814) +!953 = !DILocation(line: 432, column: 19, scope: !814) +!954 = !DILocation(line: 432, column: 17, scope: !814) +!955 = !DILocation(line: 432, column: 7, scope: !814) +!956 = !DILocation(line: 433, column: 13, scope: !814) +!957 = !DILocation(line: 433, column: 11, scope: !814) +!958 = !DILocation(line: 433, column: 27, scope: !814) +!959 = !DILocation(line: 433, column: 24, scope: !814) +!960 = !DILocation(line: 433, column: 22, scope: !814) +!961 = !DILocation(line: 433, column: 7, scope: !814) +!962 = !DILocation(line: 434, column: 13, scope: !814) +!963 = !DILocation(line: 434, column: 11, scope: !814) +!964 = !DILocation(line: 434, column: 7, scope: !814) +!965 = !DILocation(line: 435, column: 13, scope: !814) +!966 = !DILocation(line: 435, column: 11, scope: !814) +!967 = !DILocation(line: 435, column: 19, scope: !814) +!968 = !DILocation(line: 435, column: 17, scope: !814) +!969 = !DILocation(line: 435, column: 7, scope: !814) +!970 = !DILocation(line: 436, column: 13, scope: !814) +!971 = !DILocation(line: 436, column: 11, scope: !814) +!972 = !DILocation(line: 436, column: 27, scope: !814) +!973 = !DILocation(line: 436, column: 24, scope: !814) +!974 = !DILocation(line: 436, column: 22, scope: !814) +!975 = !DILocation(line: 436, column: 7, scope: !814) +!976 = !DILocation(line: 437, column: 13, scope: !814) +!977 = !DILocation(line: 437, column: 11, scope: !814) +!978 = !DILocation(line: 437, column: 7, scope: !814) +!979 = !DILocation(line: 438, column: 13, scope: !814) +!980 = !DILocation(line: 438, column: 11, scope: !814) +!981 = !DILocation(line: 438, column: 19, scope: !814) +!982 = !DILocation(line: 438, column: 17, scope: !814) +!983 = !DILocation(line: 438, column: 7, scope: !814) +!984 = !DILocation(line: 440, column: 6, scope: !814) +!985 = !DILocation(line: 440, column: 3, scope: !814) +!986 = !DILocation(line: 440, column: 10, scope: !814) +!987 = !DILocation(line: 441, column: 12, scope: !988) +!988 = distinct !DILexicalBlock(scope: !814, file: !3, line: 441, column: 3) +!989 = !DILocation(line: 441, column: 14, scope: !988) +!990 = !DILocation(line: 441, column: 8, scope: !988) +!991 = !DILocation(line: 0, scope: !988) +!992 = !DILocation(line: 441, column: 20, scope: !993) +!993 = distinct !DILexicalBlock(scope: !988, file: !3, line: 441, column: 3) +!994 = !DILocation(line: 441, column: 3, scope: !988) +!995 = !DILocation(line: 442, column: 17, scope: !996) +!996 = distinct !DILexicalBlock(scope: !993, file: !3, line: 441, column: 31) +!997 = !DILocation(line: 442, column: 13, scope: !996) +!998 = !DILocation(line: 442, column: 29, scope: !996) +!999 = !DILocation(line: 442, column: 25, scope: !996) +!1000 = !DILocation(line: 442, column: 24, scope: !996) +!1001 = !DILocation(line: 442, column: 37, scope: !996) +!1002 = !DILocation(line: 442, column: 33, scope: !996) +!1003 = !DILocation(line: 442, column: 32, scope: !996) +!1004 = !DILocation(line: 442, column: 45, scope: !996) +!1005 = !DILocation(line: 442, column: 41, scope: !996) +!1006 = !DILocation(line: 442, column: 40, scope: !996) +!1007 = !DILocation(line: 442, column: 20, scope: !996) +!1008 = !DILocation(line: 442, column: 5, scope: !996) +!1009 = !DILocation(line: 442, column: 11, scope: !996) +!1010 = !DILocation(line: 443, column: 3, scope: !996) +!1011 = !DILocation(line: 441, column: 27, scope: !993) +!1012 = !DILocation(line: 441, column: 3, scope: !993) +!1013 = distinct !{!1013, !994, !1014} +!1014 = !DILocation(line: 443, column: 3, scope: !988) +!1015 = !DILocation(line: 445, column: 7, scope: !1016) +!1016 = distinct !DILexicalBlock(scope: !814, file: !3, line: 445, column: 7) +!1017 = !DILocation(line: 445, column: 20, scope: !1016) +!1018 = !DILocation(line: 445, column: 7, scope: !814) +!1019 = !DILocation(line: 446, column: 5, scope: !1020) +!1020 = distinct !DILexicalBlock(scope: !1016, file: !3, line: 445, column: 26) +!1021 = !DILocation(line: 447, column: 5, scope: !1020) +!1022 = !DILocation(line: 449, column: 11, scope: !1020) +!1023 = !DILocation(line: 449, column: 14, scope: !1020) +!1024 = !DILocation(line: 449, column: 23, scope: !1020) +!1025 = !DILocation(line: 449, column: 32, scope: !1020) +!1026 = !DILocation(line: 449, column: 41, scope: !1020) +!1027 = !DILocation(line: 449, column: 45, scope: !1020) +!1028 = !DILocation(line: 449, column: 49, scope: !1020) +!1029 = !DILocation(line: 449, column: 53, scope: !1020) +!1030 = !DILocation(line: 449, column: 57, scope: !1020) +!1031 = !DILocation(line: 449, column: 61, scope: !1020) +!1032 = !DILocation(line: 449, column: 65, scope: !1020) +!1033 = !DILocation(line: 449, column: 69, scope: !1020) +!1034 = !DILocation(line: 449, column: 73, scope: !1020) +!1035 = !DILocation(line: 448, column: 5, scope: !1020) +!1036 = !DILocation(line: 450, column: 3, scope: !1020) +!1037 = !DILocation(line: 451, column: 1, scope: !814) +!1038 = distinct !DISubprogram(name: "zero3", scope: !3, file: !3, line: 1774, type: !1039, scopeLine: 1775, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !1041) +!1039 = !DISubroutineType(types: !1040) +!1040 = !{null, !12, !15, !15, !15} +!1041 = !{!1042, !1043, !1044, !1045, !1046, !1047, !1048} +!1042 = !DILocalVariable(name: "oz", arg: 1, scope: !1038, file: !3, line: 1774, type: !12) +!1043 = !DILocalVariable(name: "n1", arg: 2, scope: !1038, file: !3, line: 1774, type: !15) +!1044 = !DILocalVariable(name: "n2", arg: 3, scope: !1038, file: !3, line: 1774, type: !15) +!1045 = !DILocalVariable(name: "n3", arg: 4, scope: !1038, file: !3, line: 1774, type: !15) +!1046 = !DILocalVariable(name: "i1", scope: !1038, file: !3, line: 1778, type: !15) +!1047 = !DILocalVariable(name: "i2", scope: !1038, file: !3, line: 1778, type: !15) +!1048 = !DILocalVariable(name: "i3", scope: !1038, file: !3, line: 1778, type: !15) +!1049 = !DILocation(line: 0, scope: !1038) +!1050 = !DILocation(line: 1786, column: 8, scope: !1051) +!1051 = distinct !DILexicalBlock(scope: !1038, file: !3, line: 1786, column: 3) +!1052 = !DILocation(line: 0, scope: !1051) +!1053 = !DILocation(line: 1786, column: 19, scope: !1054) +!1054 = distinct !DILexicalBlock(scope: !1051, file: !3, line: 1786, column: 3) +!1055 = !DILocation(line: 1786, column: 3, scope: !1051) +!1056 = !DILocation(line: 1790, column: 10, scope: !1057) +!1057 = distinct !DILexicalBlock(scope: !1058, file: !3, line: 1790, column: 5) +!1058 = distinct !DILexicalBlock(scope: !1054, file: !3, line: 1786, column: 31) +!1059 = !DILocation(line: 0, scope: !1057) +!1060 = !DILocation(line: 1790, column: 21, scope: !1061) +!1061 = distinct !DILexicalBlock(scope: !1057, file: !3, line: 1790, column: 5) +!1062 = !DILocation(line: 1790, column: 5, scope: !1057) +!1063 = !DILocation(line: 1791, column: 12, scope: !1064) +!1064 = distinct !DILexicalBlock(scope: !1065, file: !3, line: 1791, column: 7) +!1065 = distinct !DILexicalBlock(scope: !1061, file: !3, line: 1790, column: 33) +!1066 = !DILocation(line: 0, scope: !1064) +!1067 = !DILocation(line: 1791, column: 23, scope: !1068) +!1068 = distinct !DILexicalBlock(scope: !1064, file: !3, line: 1791, column: 7) +!1069 = !DILocation(line: 1791, column: 7, scope: !1064) +!1070 = !DILocation(line: 1793, column: 9, scope: !1071) +!1071 = distinct !DILexicalBlock(scope: !1068, file: !3, line: 1791, column: 35) +!1072 = !DILocation(line: 1793, column: 37, scope: !1071) +!1073 = !DILocation(line: 1794, column: 7, scope: !1071) +!1074 = !DILocation(line: 1791, column: 31, scope: !1068) +!1075 = !DILocation(line: 1791, column: 7, scope: !1068) +!1076 = distinct !{!1076, !1069, !1077} +!1077 = !DILocation(line: 1794, column: 7, scope: !1064) +!1078 = !DILocation(line: 1795, column: 5, scope: !1065) +!1079 = !DILocation(line: 1790, column: 29, scope: !1061) +!1080 = !DILocation(line: 1790, column: 5, scope: !1061) +!1081 = distinct !{!1081, !1062, !1082} +!1082 = !DILocation(line: 1795, column: 5, scope: !1057) +!1083 = !DILocation(line: 1796, column: 3, scope: !1058) +!1084 = !DILocation(line: 1786, column: 27, scope: !1054) +!1085 = !DILocation(line: 1786, column: 3, scope: !1054) +!1086 = distinct !{!1086, !1055, !1087} +!1087 = !DILocation(line: 1796, column: 3, scope: !1051) +!1088 = !DILocation(line: 1797, column: 1, scope: !1038) +!1089 = distinct !DISubprogram(name: "zran3", scope: !3, file: !3, line: 1485, type: !1090, scopeLine: 1486, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !1092) +!1090 = !DISubroutineType(types: !1091) +!1091 = !{null, !12, !15, !15, !15, !15, !15, !15} +!1092 = !{!1093, !1094, !1095, !1096, !1097, !1098, !1099, !1100, !1101, !1102, !1103, !1104, !1105, !1106, !1107, !1108, !1109, !1110, !1111, !1112, !1113, !1114, !1115, !1116, !1118, !1120, !1121, !1125, !1126, !1127, !1129, !1130, !1131, !1134} +!1093 = !DILocalVariable(name: "oz", arg: 1, scope: !1089, file: !3, line: 1485, type: !12) +!1094 = !DILocalVariable(name: "n1", arg: 2, scope: !1089, file: !3, line: 1485, type: !15) +!1095 = !DILocalVariable(name: "n2", arg: 3, scope: !1089, file: !3, line: 1485, type: !15) +!1096 = !DILocalVariable(name: "n3", arg: 4, scope: !1089, file: !3, line: 1485, type: !15) +!1097 = !DILocalVariable(name: "nx", arg: 5, scope: !1089, file: !3, line: 1485, type: !15) +!1098 = !DILocalVariable(name: "ny", arg: 6, scope: !1089, file: !3, line: 1485, type: !15) +!1099 = !DILocalVariable(name: "k", arg: 7, scope: !1089, file: !3, line: 1485, type: !15) +!1100 = !DILocalVariable(name: "i0", scope: !1089, file: !3, line: 1489, type: !15) +!1101 = !DILocalVariable(name: "m0", scope: !1089, file: !3, line: 1489, type: !15) +!1102 = !DILocalVariable(name: "m1", scope: !1089, file: !3, line: 1489, type: !15) +!1103 = !DILocalVariable(name: "i1", scope: !1089, file: !3, line: 1491, type: !15) +!1104 = !DILocalVariable(name: "i2", scope: !1089, file: !3, line: 1491, type: !15) +!1105 = !DILocalVariable(name: "i3", scope: !1089, file: !3, line: 1491, type: !15) +!1106 = !DILocalVariable(name: "d1", scope: !1089, file: !3, line: 1491, type: !15) +!1107 = !DILocalVariable(name: "e1", scope: !1089, file: !3, line: 1491, type: !15) +!1108 = !DILocalVariable(name: "e2", scope: !1089, file: !3, line: 1491, type: !15) +!1109 = !DILocalVariable(name: "e3", scope: !1089, file: !3, line: 1491, type: !15) +!1110 = !DILocalVariable(name: "xx", scope: !1089, file: !3, line: 1492, type: !13) +!1111 = !DILocalVariable(name: "x0", scope: !1089, file: !3, line: 1492, type: !13) +!1112 = !DILocalVariable(name: "x1", scope: !1089, file: !3, line: 1492, type: !13) +!1113 = !DILocalVariable(name: "a1", scope: !1089, file: !3, line: 1492, type: !13) +!1114 = !DILocalVariable(name: "a2", scope: !1089, file: !3, line: 1492, type: !13) +!1115 = !DILocalVariable(name: "ai", scope: !1089, file: !3, line: 1492, type: !13) +!1116 = !DILocalVariable(name: "mm", scope: !1089, file: !3, line: 1494, type: !1117) +!1117 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !15) +!1118 = !DILocalVariable(name: "a", scope: !1089, file: !3, line: 1495, type: !1119) +!1119 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !13) +!1120 = !DILocalVariable(name: "x", scope: !1089, file: !3, line: 1496, type: !1119) +!1121 = !DILocalVariable(name: "ten", scope: !1089, file: !3, line: 1497, type: !1122) +!1122 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 1280, elements: !1123) +!1123 = !{!22, !1124} +!1124 = !DISubrange(count: 2) +!1125 = !DILocalVariable(name: "best", scope: !1089, file: !3, line: 1497, type: !13) +!1126 = !DILocalVariable(name: "i", scope: !1089, file: !3, line: 1498, type: !15) +!1127 = !DILocalVariable(name: "j1", scope: !1089, file: !3, line: 1498, type: !1128) +!1128 = !DICompositeType(tag: DW_TAG_array_type, baseType: !15, size: 640, elements: !1123) +!1129 = !DILocalVariable(name: "j2", scope: !1089, file: !3, line: 1498, type: !1128) +!1130 = !DILocalVariable(name: "j3", scope: !1089, file: !3, line: 1498, type: !1128) +!1131 = !DILocalVariable(name: "jg", scope: !1089, file: !3, line: 1499, type: !1132) +!1132 = !DICompositeType(tag: DW_TAG_array_type, baseType: !15, size: 2560, elements: !1133) +!1133 = !{!112, !22, !1124} +!1134 = !DILocalVariable(name: "rdummy", scope: !1089, file: !3, line: 1501, type: !13) +!1135 = !DILocation(line: 0, scope: !1089) +!1136 = !DILocation(line: 1492, column: 3, scope: !1089) +!1137 = !DILocation(line: 1492, column: 10, scope: !1089) +!1138 = !DILocation(line: 1492, column: 14, scope: !1089) +!1139 = !DILocation(line: 1492, column: 18, scope: !1089) +!1140 = !DILocation(line: 1495, column: 20, scope: !1089) +!1141 = !DILocation(line: 1497, column: 3, scope: !1089) +!1142 = !DILocation(line: 1497, column: 10, scope: !1089) +!1143 = !DILocation(line: 1498, column: 3, scope: !1089) +!1144 = !DILocation(line: 1498, column: 10, scope: !1089) +!1145 = !DILocation(line: 1498, column: 21, scope: !1089) +!1146 = !DILocation(line: 1498, column: 32, scope: !1089) +!1147 = !DILocation(line: 1499, column: 3, scope: !1089) +!1148 = !DILocation(line: 1499, column: 7, scope: !1089) +!1149 = !DILocation(line: 1503, column: 8, scope: !1089) +!1150 = !DILocation(line: 1504, column: 19, scope: !1089) +!1151 = !DILocation(line: 1504, column: 8, scope: !1089) +!1152 = !DILocation(line: 1507, column: 3, scope: !1089) +!1153 = !DILocation(line: 1510, column: 7, scope: !1089) +!1154 = !DILocation(line: 1510, column: 10, scope: !1089) +!1155 = !DILocation(line: 1510, column: 17, scope: !1089) +!1156 = !DILocation(line: 1510, column: 20, scope: !1089) +!1157 = !DILocation(line: 1510, column: 27, scope: !1089) +!1158 = !DILocation(line: 1510, column: 30, scope: !1089) +!1159 = !DILocation(line: 1510, column: 25, scope: !1089) +!1160 = !DILocation(line: 1510, column: 22, scope: !1089) +!1161 = !DILocation(line: 1510, column: 15, scope: !1089) +!1162 = !DILocation(line: 1510, column: 12, scope: !1089) +!1163 = !DILocation(line: 1512, column: 8, scope: !1089) +!1164 = !DILocation(line: 1513, column: 8, scope: !1089) +!1165 = !DILocation(line: 1513, column: 14, scope: !1089) +!1166 = !DILocation(line: 1513, column: 12, scope: !1089) +!1167 = !DILocation(line: 1513, column: 18, scope: !1089) +!1168 = !DILocation(line: 1514, column: 8, scope: !1089) +!1169 = !DILocation(line: 1514, column: 14, scope: !1089) +!1170 = !DILocation(line: 1514, column: 12, scope: !1089) +!1171 = !DILocation(line: 1514, column: 18, scope: !1089) +!1172 = !DILocation(line: 1515, column: 8, scope: !1089) +!1173 = !DILocation(line: 1515, column: 14, scope: !1089) +!1174 = !DILocation(line: 1515, column: 12, scope: !1089) +!1175 = !DILocation(line: 1515, column: 18, scope: !1089) +!1176 = !DILocation(line: 1516, column: 8, scope: !1089) +!1177 = !DILocation(line: 1516, column: 14, scope: !1089) +!1178 = !DILocation(line: 1516, column: 12, scope: !1089) +!1179 = !DILocation(line: 1516, column: 18, scope: !1089) +!1180 = !DILocation(line: 1517, column: 6, scope: !1089) +!1181 = !DILocation(line: 1518, column: 12, scope: !1089) +!1182 = !DILocation(line: 1520, column: 8, scope: !1183) +!1183 = distinct !DILexicalBlock(scope: !1089, file: !3, line: 1520, column: 3) +!1184 = !DILocation(line: 0, scope: !1183) +!1185 = !DILocation(line: 1520, column: 19, scope: !1186) +!1186 = distinct !DILexicalBlock(scope: !1183, file: !3, line: 1520, column: 3) +!1187 = !DILocation(line: 1520, column: 3, scope: !1183) +!1188 = !DILocation(line: 1521, column: 10, scope: !1189) +!1189 = distinct !DILexicalBlock(scope: !1186, file: !3, line: 1520, column: 31) +!1190 = !DILocation(line: 1521, column: 8, scope: !1189) +!1191 = !DILocation(line: 1522, column: 10, scope: !1192) +!1192 = distinct !DILexicalBlock(scope: !1189, file: !3, line: 1522, column: 5) +!1193 = !DILocation(line: 0, scope: !1192) +!1194 = !DILocation(line: 1522, column: 21, scope: !1195) +!1195 = distinct !DILexicalBlock(scope: !1192, file: !3, line: 1522, column: 5) +!1196 = !DILocation(line: 1522, column: 5, scope: !1192) +!1197 = !DILocation(line: 1523, column: 12, scope: !1198) +!1198 = distinct !DILexicalBlock(scope: !1195, file: !3, line: 1522, column: 33) +!1199 = !DILocation(line: 1523, column: 10, scope: !1198) +!1200 = !DILocation(line: 1525, column: 28, scope: !1198) +!1201 = !DILocation(line: 1525, column: 7, scope: !1198) +!1202 = !DILocation(line: 1526, column: 16, scope: !1198) +!1203 = !DILocation(line: 1527, column: 5, scope: !1198) +!1204 = !DILocation(line: 1522, column: 29, scope: !1195) +!1205 = !DILocation(line: 1522, column: 5, scope: !1195) +!1206 = distinct !{!1206, !1196, !1207} +!1207 = !DILocation(line: 1527, column: 5, scope: !1192) +!1208 = !DILocation(line: 1528, column: 14, scope: !1189) +!1209 = !DILocation(line: 1529, column: 3, scope: !1189) +!1210 = !DILocation(line: 1520, column: 27, scope: !1186) +!1211 = !DILocation(line: 1520, column: 3, scope: !1186) +!1212 = distinct !{!1212, !1187, !1213} +!1213 = !DILocation(line: 1529, column: 3, scope: !1183) +!1214 = !DILocation(line: 1539, column: 8, scope: !1215) +!1215 = distinct !DILexicalBlock(scope: !1089, file: !3, line: 1539, column: 3) +!1216 = !DILocation(line: 0, scope: !1215) +!1217 = !DILocation(line: 1539, column: 17, scope: !1218) +!1218 = distinct !DILexicalBlock(scope: !1215, file: !3, line: 1539, column: 3) +!1219 = !DILocation(line: 1539, column: 3, scope: !1215) +!1220 = !DILocation(line: 1540, column: 5, scope: !1221) +!1221 = distinct !DILexicalBlock(scope: !1218, file: !3, line: 1539, column: 28) +!1222 = !DILocation(line: 1540, column: 15, scope: !1221) +!1223 = !DILocation(line: 1541, column: 5, scope: !1221) +!1224 = !DILocation(line: 1541, column: 14, scope: !1221) +!1225 = !DILocation(line: 1542, column: 5, scope: !1221) +!1226 = !DILocation(line: 1542, column: 14, scope: !1221) +!1227 = !DILocation(line: 1543, column: 5, scope: !1221) +!1228 = !DILocation(line: 1543, column: 14, scope: !1221) +!1229 = !DILocation(line: 1544, column: 5, scope: !1221) +!1230 = !DILocation(line: 1544, column: 15, scope: !1221) +!1231 = !DILocation(line: 1545, column: 5, scope: !1221) +!1232 = !DILocation(line: 1545, column: 14, scope: !1221) +!1233 = !DILocation(line: 1546, column: 5, scope: !1221) +!1234 = !DILocation(line: 1546, column: 14, scope: !1221) +!1235 = !DILocation(line: 1547, column: 5, scope: !1221) +!1236 = !DILocation(line: 1547, column: 14, scope: !1221) +!1237 = !DILocation(line: 1548, column: 3, scope: !1221) +!1238 = !DILocation(line: 1539, column: 24, scope: !1218) +!1239 = !DILocation(line: 1539, column: 3, scope: !1218) +!1240 = distinct !{!1240, !1219, !1241} +!1241 = !DILocation(line: 1548, column: 3, scope: !1215) +!1242 = !DILocation(line: 1550, column: 8, scope: !1243) +!1243 = distinct !DILexicalBlock(scope: !1089, file: !3, line: 1550, column: 3) +!1244 = !DILocation(line: 0, scope: !1243) +!1245 = !DILocation(line: 1550, column: 23, scope: !1246) +!1246 = distinct !DILexicalBlock(scope: !1243, file: !3, line: 1550, column: 3) +!1247 = !DILocation(line: 1550, column: 19, scope: !1246) +!1248 = !DILocation(line: 1550, column: 3, scope: !1243) +!1249 = !DILocation(line: 1551, column: 10, scope: !1250) +!1250 = distinct !DILexicalBlock(scope: !1251, file: !3, line: 1551, column: 5) +!1251 = distinct !DILexicalBlock(scope: !1246, file: !3, line: 1550, column: 33) +!1252 = !DILocation(line: 0, scope: !1250) +!1253 = !DILocation(line: 1551, column: 25, scope: !1254) +!1254 = distinct !DILexicalBlock(scope: !1250, file: !3, line: 1551, column: 5) +!1255 = !DILocation(line: 1551, column: 21, scope: !1254) +!1256 = !DILocation(line: 1551, column: 5, scope: !1250) +!1257 = !DILocation(line: 1552, column: 12, scope: !1258) +!1258 = distinct !DILexicalBlock(scope: !1259, file: !3, line: 1552, column: 7) +!1259 = distinct !DILexicalBlock(scope: !1254, file: !3, line: 1551, column: 35) +!1260 = !DILocation(line: 0, scope: !1258) +!1261 = !DILocation(line: 1552, column: 27, scope: !1262) +!1262 = distinct !DILexicalBlock(scope: !1258, file: !3, line: 1552, column: 7) +!1263 = !DILocation(line: 1552, column: 23, scope: !1262) +!1264 = !DILocation(line: 1552, column: 7, scope: !1258) +!1265 = !DILocation(line: 1554, column: 12, scope: !1266) +!1266 = distinct !DILexicalBlock(scope: !1267, file: !3, line: 1554, column: 12) +!1267 = distinct !DILexicalBlock(scope: !1262, file: !3, line: 1552, column: 37) +!1268 = !DILocation(line: 1554, column: 42, scope: !1266) +!1269 = !DILocation(line: 1554, column: 40, scope: !1266) +!1270 = !DILocation(line: 1554, column: 12, scope: !1267) +!1271 = !DILocation(line: 1556, column: 23, scope: !1272) +!1272 = distinct !DILexicalBlock(scope: !1266, file: !3, line: 1554, column: 52) +!1273 = !DILocation(line: 1556, column: 11, scope: !1272) +!1274 = !DILocation(line: 1556, column: 21, scope: !1272) +!1275 = !DILocation(line: 1557, column: 11, scope: !1272) +!1276 = !DILocation(line: 1557, column: 20, scope: !1272) +!1277 = !DILocation(line: 1558, column: 11, scope: !1272) +!1278 = !DILocation(line: 1558, column: 20, scope: !1272) +!1279 = !DILocation(line: 1559, column: 11, scope: !1272) +!1280 = !DILocation(line: 1559, column: 20, scope: !1272) +!1281 = !DILocation(line: 1560, column: 18, scope: !1272) +!1282 = !DILocation(line: 1560, column: 23, scope: !1272) +!1283 = !DILocation(line: 1560, column: 27, scope: !1272) +!1284 = !DILocation(line: 1560, column: 31, scope: !1272) +!1285 = !DILocation(line: 1560, column: 11, scope: !1272) +!1286 = !DILocation(line: 1561, column: 9, scope: !1272) +!1287 = !DILocation(line: 1563, column: 13, scope: !1288) +!1288 = distinct !DILexicalBlock(scope: !1267, file: !3, line: 1563, column: 13) +!1289 = !DILocation(line: 1563, column: 43, scope: !1288) +!1290 = !DILocation(line: 1563, column: 41, scope: !1288) +!1291 = !DILocation(line: 1563, column: 13, scope: !1267) +!1292 = !DILocation(line: 1565, column: 23, scope: !1293) +!1293 = distinct !DILexicalBlock(scope: !1288, file: !3, line: 1563, column: 54) +!1294 = !DILocation(line: 1565, column: 11, scope: !1293) +!1295 = !DILocation(line: 1565, column: 21, scope: !1293) +!1296 = !DILocation(line: 1566, column: 11, scope: !1293) +!1297 = !DILocation(line: 1566, column: 20, scope: !1293) +!1298 = !DILocation(line: 1567, column: 11, scope: !1293) +!1299 = !DILocation(line: 1567, column: 20, scope: !1293) +!1300 = !DILocation(line: 1568, column: 11, scope: !1293) +!1301 = !DILocation(line: 1568, column: 20, scope: !1293) +!1302 = !DILocation(line: 1569, column: 18, scope: !1293) +!1303 = !DILocation(line: 1569, column: 23, scope: !1293) +!1304 = !DILocation(line: 1569, column: 27, scope: !1293) +!1305 = !DILocation(line: 1569, column: 31, scope: !1293) +!1306 = !DILocation(line: 1569, column: 11, scope: !1293) +!1307 = !DILocation(line: 1570, column: 9, scope: !1293) +!1308 = !DILocation(line: 1571, column: 7, scope: !1267) +!1309 = !DILocation(line: 1552, column: 33, scope: !1262) +!1310 = !DILocation(line: 1552, column: 7, scope: !1262) +!1311 = distinct !{!1311, !1264, !1312} +!1312 = !DILocation(line: 1571, column: 7, scope: !1258) +!1313 = !DILocation(line: 1572, column: 5, scope: !1259) +!1314 = !DILocation(line: 1551, column: 31, scope: !1254) +!1315 = !DILocation(line: 1551, column: 5, scope: !1254) +!1316 = distinct !{!1316, !1256, !1317} +!1317 = !DILocation(line: 1572, column: 5, scope: !1250) +!1318 = !DILocation(line: 1573, column: 3, scope: !1251) +!1319 = !DILocation(line: 1550, column: 29, scope: !1246) +!1320 = !DILocation(line: 1550, column: 3, scope: !1246) +!1321 = distinct !{!1321, !1248, !1322} +!1322 = !DILocation(line: 1573, column: 3, scope: !1243) +!1323 = !DILocation(line: 1581, column: 8, scope: !1324) +!1324 = distinct !DILexicalBlock(scope: !1089, file: !3, line: 1581, column: 3) +!1325 = !DILocation(line: 0, scope: !1324) +!1326 = !DILocation(line: 1581, column: 22, scope: !1327) +!1327 = distinct !DILexicalBlock(scope: !1324, file: !3, line: 1581, column: 3) +!1328 = !DILocation(line: 1581, column: 3, scope: !1324) +!1329 = !DILocation(line: 1583, column: 16, scope: !1330) +!1330 = distinct !DILexicalBlock(scope: !1331, file: !3, line: 1583, column: 9) +!1331 = distinct !DILexicalBlock(scope: !1327, file: !3, line: 1581, column: 33) +!1332 = !DILocation(line: 1583, column: 14, scope: !1330) +!1333 = !DILocation(line: 1583, column: 9, scope: !1331) +!1334 = !DILocation(line: 1584, column: 7, scope: !1335) +!1335 = distinct !DILexicalBlock(scope: !1330, file: !3, line: 1583, column: 28) +!1336 = !DILocation(line: 1584, column: 19, scope: !1335) +!1337 = !DILocation(line: 1585, column: 21, scope: !1335) +!1338 = !DILocation(line: 1585, column: 25, scope: !1335) +!1339 = !DILocation(line: 1585, column: 31, scope: !1335) +!1340 = !DILocation(line: 1585, column: 29, scope: !1335) +!1341 = !DILocation(line: 1585, column: 7, scope: !1335) +!1342 = !DILocation(line: 1585, column: 19, scope: !1335) +!1343 = !DILocation(line: 1586, column: 21, scope: !1335) +!1344 = !DILocation(line: 1586, column: 25, scope: !1335) +!1345 = !DILocation(line: 1586, column: 31, scope: !1335) +!1346 = !DILocation(line: 1586, column: 29, scope: !1335) +!1347 = !DILocation(line: 1586, column: 7, scope: !1335) +!1348 = !DILocation(line: 1586, column: 19, scope: !1335) +!1349 = !DILocation(line: 1587, column: 21, scope: !1335) +!1350 = !DILocation(line: 1587, column: 25, scope: !1335) +!1351 = !DILocation(line: 1587, column: 31, scope: !1335) +!1352 = !DILocation(line: 1587, column: 29, scope: !1335) +!1353 = !DILocation(line: 1587, column: 7, scope: !1335) +!1354 = !DILocation(line: 1587, column: 19, scope: !1335) +!1355 = !DILocation(line: 1588, column: 14, scope: !1335) +!1356 = !DILocation(line: 1589, column: 5, scope: !1335) +!1357 = !DILocation(line: 1590, column: 7, scope: !1358) +!1358 = distinct !DILexicalBlock(scope: !1330, file: !3, line: 1589, column: 12) +!1359 = !DILocation(line: 1590, column: 19, scope: !1358) +!1360 = !DILocation(line: 1591, column: 7, scope: !1358) +!1361 = !DILocation(line: 1591, column: 19, scope: !1358) +!1362 = !DILocation(line: 1592, column: 7, scope: !1358) +!1363 = !DILocation(line: 1592, column: 19, scope: !1358) +!1364 = !DILocation(line: 1593, column: 7, scope: !1358) +!1365 = !DILocation(line: 1593, column: 19, scope: !1358) +!1366 = !DILocation(line: 1597, column: 16, scope: !1367) +!1367 = distinct !DILexicalBlock(scope: !1331, file: !3, line: 1597, column: 9) +!1368 = !DILocation(line: 1597, column: 14, scope: !1367) +!1369 = !DILocation(line: 1597, column: 9, scope: !1331) +!1370 = !DILocation(line: 1598, column: 7, scope: !1371) +!1371 = distinct !DILexicalBlock(scope: !1367, file: !3, line: 1597, column: 28) +!1372 = !DILocation(line: 1598, column: 19, scope: !1371) +!1373 = !DILocation(line: 1599, column: 21, scope: !1371) +!1374 = !DILocation(line: 1599, column: 25, scope: !1371) +!1375 = !DILocation(line: 1599, column: 31, scope: !1371) +!1376 = !DILocation(line: 1599, column: 29, scope: !1371) +!1377 = !DILocation(line: 1599, column: 7, scope: !1371) +!1378 = !DILocation(line: 1599, column: 19, scope: !1371) +!1379 = !DILocation(line: 1600, column: 21, scope: !1371) +!1380 = !DILocation(line: 1600, column: 25, scope: !1371) +!1381 = !DILocation(line: 1600, column: 31, scope: !1371) +!1382 = !DILocation(line: 1600, column: 29, scope: !1371) +!1383 = !DILocation(line: 1600, column: 7, scope: !1371) +!1384 = !DILocation(line: 1600, column: 19, scope: !1371) +!1385 = !DILocation(line: 1601, column: 21, scope: !1371) +!1386 = !DILocation(line: 1601, column: 25, scope: !1371) +!1387 = !DILocation(line: 1601, column: 31, scope: !1371) +!1388 = !DILocation(line: 1601, column: 29, scope: !1371) +!1389 = !DILocation(line: 1601, column: 7, scope: !1371) +!1390 = !DILocation(line: 1601, column: 19, scope: !1371) +!1391 = !DILocation(line: 1602, column: 14, scope: !1371) +!1392 = !DILocation(line: 1603, column: 5, scope: !1371) +!1393 = !DILocation(line: 1604, column: 7, scope: !1394) +!1394 = distinct !DILexicalBlock(scope: !1367, file: !3, line: 1603, column: 12) +!1395 = !DILocation(line: 1604, column: 19, scope: !1394) +!1396 = !DILocation(line: 1605, column: 7, scope: !1394) +!1397 = !DILocation(line: 1605, column: 19, scope: !1394) +!1398 = !DILocation(line: 1606, column: 7, scope: !1394) +!1399 = !DILocation(line: 1606, column: 19, scope: !1394) +!1400 = !DILocation(line: 1607, column: 7, scope: !1394) +!1401 = !DILocation(line: 1607, column: 19, scope: !1394) +!1402 = !DILocation(line: 1610, column: 3, scope: !1331) +!1403 = !DILocation(line: 1581, column: 29, scope: !1327) +!1404 = !DILocation(line: 1581, column: 3, scope: !1327) +!1405 = distinct !{!1405, !1328, !1406} +!1406 = !DILocation(line: 1610, column: 3, scope: !1324) +!1407 = !DILocation(line: 1622, column: 8, scope: !1408) +!1408 = distinct !DILexicalBlock(scope: !1089, file: !3, line: 1622, column: 3) +!1409 = !DILocation(line: 0, scope: !1408) +!1410 = !DILocation(line: 1622, column: 19, scope: !1411) +!1411 = distinct !DILexicalBlock(scope: !1408, file: !3, line: 1622, column: 3) +!1412 = !DILocation(line: 1622, column: 3, scope: !1408) +!1413 = !DILocation(line: 1626, column: 10, scope: !1414) +!1414 = distinct !DILexicalBlock(scope: !1415, file: !3, line: 1626, column: 5) +!1415 = distinct !DILexicalBlock(scope: !1411, file: !3, line: 1622, column: 31) +!1416 = !DILocation(line: 0, scope: !1414) +!1417 = !DILocation(line: 1626, column: 21, scope: !1418) +!1418 = distinct !DILexicalBlock(scope: !1414, file: !3, line: 1626, column: 5) +!1419 = !DILocation(line: 1626, column: 5, scope: !1414) +!1420 = !DILocation(line: 1627, column: 12, scope: !1421) +!1421 = distinct !DILexicalBlock(scope: !1422, file: !3, line: 1627, column: 7) +!1422 = distinct !DILexicalBlock(scope: !1418, file: !3, line: 1626, column: 33) +!1423 = !DILocation(line: 0, scope: !1421) +!1424 = !DILocation(line: 1627, column: 23, scope: !1425) +!1425 = distinct !DILexicalBlock(scope: !1421, file: !3, line: 1627, column: 7) +!1426 = !DILocation(line: 1627, column: 7, scope: !1421) +!1427 = !DILocation(line: 1629, column: 9, scope: !1428) +!1428 = distinct !DILexicalBlock(scope: !1425, file: !3, line: 1627, column: 35) +!1429 = !DILocation(line: 1629, column: 37, scope: !1428) +!1430 = !DILocation(line: 1630, column: 7, scope: !1428) +!1431 = !DILocation(line: 1627, column: 31, scope: !1425) +!1432 = !DILocation(line: 1627, column: 7, scope: !1425) +!1433 = distinct !{!1433, !1426, !1434} +!1434 = !DILocation(line: 1630, column: 7, scope: !1421) +!1435 = !DILocation(line: 1631, column: 5, scope: !1422) +!1436 = !DILocation(line: 1626, column: 29, scope: !1418) +!1437 = !DILocation(line: 1626, column: 5, scope: !1418) +!1438 = distinct !{!1438, !1419, !1439} +!1439 = !DILocation(line: 1631, column: 5, scope: !1414) +!1440 = !DILocation(line: 1632, column: 3, scope: !1415) +!1441 = !DILocation(line: 1622, column: 27, scope: !1411) +!1442 = !DILocation(line: 1622, column: 3, scope: !1411) +!1443 = distinct !{!1443, !1412, !1444} +!1444 = !DILocation(line: 1632, column: 3, scope: !1408) +!1445 = !DILocation(line: 1637, column: 10, scope: !1446) +!1446 = distinct !DILexicalBlock(scope: !1447, file: !3, line: 1637, column: 5) +!1447 = distinct !DILexicalBlock(scope: !1089, file: !3, line: 1635, column: 3) +!1448 = !DILocation(line: 0, scope: !1446) +!1449 = !DILocation(line: 1637, column: 22, scope: !1450) +!1450 = distinct !DILexicalBlock(scope: !1446, file: !3, line: 1637, column: 5) +!1451 = !DILocation(line: 1637, column: 5, scope: !1446) +!1452 = !DILocation(line: 1639, column: 12, scope: !1453) +!1453 = distinct !DILexicalBlock(scope: !1450, file: !3, line: 1637, column: 34) +!1454 = !DILocation(line: 1640, column: 12, scope: !1453) +!1455 = !DILocation(line: 1641, column: 12, scope: !1453) +!1456 = !DILocation(line: 1642, column: 7, scope: !1453) +!1457 = !DILocation(line: 1642, column: 35, scope: !1453) +!1458 = !DILocation(line: 1643, column: 5, scope: !1453) +!1459 = !DILocation(line: 1637, column: 30, scope: !1450) +!1460 = !DILocation(line: 1637, column: 5, scope: !1450) +!1461 = distinct !{!1461, !1451, !1462} +!1462 = !DILocation(line: 1643, column: 5, scope: !1446) +!1463 = !DILocation(line: 1646, column: 10, scope: !1464) +!1464 = distinct !DILexicalBlock(scope: !1447, file: !3, line: 1646, column: 5) +!1465 = !DILocation(line: 0, scope: !1464) +!1466 = !DILocation(line: 1646, column: 22, scope: !1467) +!1467 = distinct !DILexicalBlock(scope: !1464, file: !3, line: 1646, column: 5) +!1468 = !DILocation(line: 1646, column: 5, scope: !1464) +!1469 = !DILocation(line: 1648, column: 12, scope: !1470) +!1470 = distinct !DILexicalBlock(scope: !1467, file: !3, line: 1646, column: 34) +!1471 = !DILocation(line: 1649, column: 12, scope: !1470) +!1472 = !DILocation(line: 1650, column: 12, scope: !1470) +!1473 = !DILocation(line: 1651, column: 7, scope: !1470) +!1474 = !DILocation(line: 1651, column: 35, scope: !1470) +!1475 = !DILocation(line: 1652, column: 5, scope: !1470) +!1476 = !DILocation(line: 1646, column: 30, scope: !1467) +!1477 = !DILocation(line: 1646, column: 5, scope: !1467) +!1478 = distinct !{!1478, !1468, !1479} +!1479 = !DILocation(line: 1652, column: 5, scope: !1464) +!1480 = !DILocation(line: 1657, column: 3, scope: !1089) +!1481 = !DILocation(line: 1662, column: 1, scope: !1089) +!1482 = distinct !DISubprogram(name: "norm2u3", scope: !3, file: !3, line: 1293, type: !1483, scopeLine: 1296, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !1485) +!1483 = !DISubroutineType(types: !1484) +!1484 = !{null, !12, !15, !15, !15, !12, !12, !15, !15, !15} +!1485 = !{!1486, !1487, !1488, !1489, !1490, !1491, !1492, !1493, !1494, !1495, !1496, !1497, !1498, !1499, !1500, !1501} +!1486 = !DILocalVariable(name: "or", arg: 1, scope: !1482, file: !3, line: 1293, type: !12) +!1487 = !DILocalVariable(name: "n1", arg: 2, scope: !1482, file: !3, line: 1293, type: !15) +!1488 = !DILocalVariable(name: "n2", arg: 3, scope: !1482, file: !3, line: 1293, type: !15) +!1489 = !DILocalVariable(name: "n3", arg: 4, scope: !1482, file: !3, line: 1293, type: !15) +!1490 = !DILocalVariable(name: "rnm2", arg: 5, scope: !1482, file: !3, line: 1294, type: !12) +!1491 = !DILocalVariable(name: "rnmu", arg: 6, scope: !1482, file: !3, line: 1294, type: !12) +!1492 = !DILocalVariable(name: "nx", arg: 7, scope: !1482, file: !3, line: 1295, type: !15) +!1493 = !DILocalVariable(name: "ny", arg: 8, scope: !1482, file: !3, line: 1295, type: !15) +!1494 = !DILocalVariable(name: "nz", arg: 9, scope: !1482, file: !3, line: 1295, type: !15) +!1495 = !DILocalVariable(name: "s", scope: !1482, file: !3, line: 1299, type: !13) +!1496 = !DILocalVariable(name: "a", scope: !1482, file: !3, line: 1299, type: !13) +!1497 = !DILocalVariable(name: "temp", scope: !1482, file: !3, line: 1300, type: !13) +!1498 = !DILocalVariable(name: "i3", scope: !1482, file: !3, line: 1301, type: !15) +!1499 = !DILocalVariable(name: "i2", scope: !1482, file: !3, line: 1301, type: !15) +!1500 = !DILocalVariable(name: "i1", scope: !1482, file: !3, line: 1301, type: !15) +!1501 = !DILocalVariable(name: "dn", scope: !1482, file: !3, line: 1303, type: !13) +!1502 = !DILocation(line: 0, scope: !1482) +!1503 = !DILocation(line: 1305, column: 7, scope: !1504) +!1504 = distinct !DILexicalBlock(scope: !1482, file: !3, line: 1305, column: 7) +!1505 = !DILocation(line: 1305, column: 7, scope: !1482) +!1506 = !DILocation(line: 1305, column: 16, scope: !1504) +!1507 = !DILocation(line: 1306, column: 12, scope: !1482) +!1508 = !DILocation(line: 1306, column: 11, scope: !1482) +!1509 = !DILocation(line: 1306, column: 15, scope: !1482) +!1510 = !DILocation(line: 1306, column: 14, scope: !1482) +!1511 = !DILocation(line: 1306, column: 18, scope: !1482) +!1512 = !DILocation(line: 1306, column: 17, scope: !1482) +!1513 = !DILocation(line: 1309, column: 9, scope: !1482) +!1514 = !DILocation(line: 1310, column: 10, scope: !1482) +!1515 = !DILocation(line: 1319, column: 10, scope: !1516) +!1516 = distinct !DILexicalBlock(scope: !1517, file: !3, line: 1319, column: 5) +!1517 = distinct !DILexicalBlock(scope: !1482, file: !3, line: 1313, column: 3) +!1518 = !DILocation(line: 1310, column: 8, scope: !1482) +!1519 = !DILocation(line: 0, scope: !1516) +!1520 = !DILocation(line: 1308, column: 5, scope: !1482) +!1521 = !DILocation(line: 1319, column: 25, scope: !1522) +!1522 = distinct !DILexicalBlock(scope: !1516, file: !3, line: 1319, column: 5) +!1523 = !DILocation(line: 1319, column: 21, scope: !1522) +!1524 = !DILocation(line: 1319, column: 5, scope: !1516) +!1525 = !DILocation(line: 1323, column: 12, scope: !1526) +!1526 = distinct !DILexicalBlock(scope: !1527, file: !3, line: 1323, column: 7) +!1527 = distinct !DILexicalBlock(scope: !1522, file: !3, line: 1319, column: 35) +!1528 = !DILocation(line: 0, scope: !1526) +!1529 = !DILocation(line: 1323, column: 27, scope: !1530) +!1530 = distinct !DILexicalBlock(scope: !1526, file: !3, line: 1323, column: 7) +!1531 = !DILocation(line: 1323, column: 23, scope: !1530) +!1532 = !DILocation(line: 1323, column: 7, scope: !1526) +!1533 = !DILocation(line: 1324, column: 14, scope: !1534) +!1534 = distinct !DILexicalBlock(scope: !1535, file: !3, line: 1324, column: 9) +!1535 = distinct !DILexicalBlock(scope: !1530, file: !3, line: 1323, column: 37) +!1536 = !DILocation(line: 0, scope: !1534) +!1537 = !DILocation(line: 1324, column: 29, scope: !1538) +!1538 = distinct !DILexicalBlock(scope: !1534, file: !3, line: 1324, column: 9) +!1539 = !DILocation(line: 1324, column: 25, scope: !1538) +!1540 = !DILocation(line: 1324, column: 9, scope: !1534) +!1541 = !DILocation(line: 1327, column: 23, scope: !1542) +!1542 = distinct !DILexicalBlock(scope: !1538, file: !3, line: 1324, column: 39) +!1543 = !DILocation(line: 1327, column: 19, scope: !1542) +!1544 = !DILocation(line: 1327, column: 17, scope: !1542) +!1545 = !DILocation(line: 1328, column: 20, scope: !1542) +!1546 = !DILocation(line: 1328, column: 15, scope: !1542) +!1547 = !DILocation(line: 1330, column: 18, scope: !1542) +!1548 = !DILocation(line: 1331, column: 9, scope: !1542) +!1549 = !DILocation(line: 1324, column: 35, scope: !1538) +!1550 = !DILocation(line: 1324, column: 9, scope: !1538) +!1551 = distinct !{!1551, !1540, !1552} +!1552 = !DILocation(line: 1331, column: 9, scope: !1534) +!1553 = !DILocation(line: 1332, column: 7, scope: !1535) +!1554 = !DILocation(line: 1323, column: 33, scope: !1530) +!1555 = !DILocation(line: 1323, column: 7, scope: !1530) +!1556 = distinct !{!1556, !1532, !1557} +!1557 = !DILocation(line: 1332, column: 7, scope: !1526) +!1558 = !DILocation(line: 1333, column: 5, scope: !1527) +!1559 = !DILocation(line: 1319, column: 31, scope: !1522) +!1560 = !DILocation(line: 1319, column: 5, scope: !1522) +!1561 = distinct !{!1561, !1524, !1562} +!1562 = !DILocation(line: 1333, column: 5, scope: !1516) +!1563 = !DILocation(line: 1335, column: 9, scope: !1482) +!1564 = !DILocation(line: 1336, column: 18, scope: !1482) +!1565 = !DILocation(line: 1336, column: 11, scope: !1482) +!1566 = !DILocation(line: 1336, column: 9, scope: !1482) +!1567 = !DILocation(line: 1337, column: 7, scope: !1568) +!1568 = distinct !DILexicalBlock(scope: !1482, file: !3, line: 1337, column: 7) +!1569 = !DILocation(line: 1337, column: 7, scope: !1482) +!1570 = !DILocation(line: 1337, column: 16, scope: !1568) +!1571 = !DILocation(line: 1338, column: 1, scope: !1482) +!1572 = distinct !DISubprogram(name: "resid", scope: !3, file: !3, line: 645, type: !1573, scopeLine: 647, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !1575) +!1573 = !DISubroutineType(types: !1574) +!1574 = !{null, !12, !12, !12, !15, !15, !15, !12, !15} +!1575 = !{!1576, !1577, !1578, !1579, !1580, !1581, !1582, !1583, !1584, !1585, !1586, !1587, !1588, !1589, !1590, !1592} +!1576 = !DILocalVariable(name: "ou", arg: 1, scope: !1572, file: !3, line: 645, type: !12) +!1577 = !DILocalVariable(name: "ov", arg: 2, scope: !1572, file: !3, line: 645, type: !12) +!1578 = !DILocalVariable(name: "or", arg: 3, scope: !1572, file: !3, line: 645, type: !12) +!1579 = !DILocalVariable(name: "n1", arg: 4, scope: !1572, file: !3, line: 645, type: !15) +!1580 = !DILocalVariable(name: "n2", arg: 5, scope: !1572, file: !3, line: 645, type: !15) +!1581 = !DILocalVariable(name: "n3", arg: 6, scope: !1572, file: !3, line: 645, type: !15) +!1582 = !DILocalVariable(name: "a", arg: 7, scope: !1572, file: !3, line: 646, type: !12) +!1583 = !DILocalVariable(name: "k", arg: 8, scope: !1572, file: !3, line: 646, type: !15) +!1584 = !DILocalVariable(name: "i3", scope: !1572, file: !3, line: 653, type: !15) +!1585 = !DILocalVariable(name: "i2", scope: !1572, file: !3, line: 653, type: !15) +!1586 = !DILocalVariable(name: "i1", scope: !1572, file: !3, line: 653, type: !15) +!1587 = !DILocalVariable(name: "a0", scope: !1572, file: !3, line: 654, type: !13) +!1588 = !DILocalVariable(name: "a2", scope: !1572, file: !3, line: 654, type: !13) +!1589 = !DILocalVariable(name: "a3", scope: !1572, file: !3, line: 654, type: !13) +!1590 = !DILocalVariable(name: "u1", scope: !1572, file: !3, line: 656, type: !1591) +!1591 = !DIDerivedType(tag: DW_TAG_restrict_type, baseType: !12) +!1592 = !DILocalVariable(name: "u2", scope: !1572, file: !3, line: 656, type: !1591) +!1593 = !DILocation(line: 0, scope: !1572) +!1594 = !DILocation(line: 658, column: 8, scope: !1572) +!1595 = !DILocation(line: 659, column: 8, scope: !1572) +!1596 = !DILocation(line: 660, column: 8, scope: !1572) +!1597 = !DILocation(line: 662, column: 7, scope: !1598) +!1598 = distinct !DILexicalBlock(scope: !1572, file: !3, line: 662, column: 7) +!1599 = !DILocation(line: 662, column: 7, scope: !1572) +!1600 = !DILocation(line: 662, column: 16, scope: !1598) +!1601 = !DILocation(line: 667, column: 36, scope: !1572) +!1602 = !DILocation(line: 667, column: 39, scope: !1572) +!1603 = !DILocation(line: 667, column: 34, scope: !1572) +!1604 = !DILocation(line: 667, column: 42, scope: !1572) +!1605 = !DILocation(line: 667, column: 59, scope: !1572) +!1606 = !DILocation(line: 667, column: 17, scope: !1572) +!1607 = !DILocation(line: 667, column: 8, scope: !1572) +!1608 = !DILocation(line: 668, column: 36, scope: !1572) +!1609 = !DILocation(line: 668, column: 39, scope: !1572) +!1610 = !DILocation(line: 668, column: 34, scope: !1572) +!1611 = !DILocation(line: 668, column: 42, scope: !1572) +!1612 = !DILocation(line: 668, column: 59, scope: !1572) +!1613 = !DILocation(line: 668, column: 17, scope: !1572) +!1614 = !DILocation(line: 668, column: 8, scope: !1572) +!1615 = !DILocation(line: 681, column: 8, scope: !1616) +!1616 = distinct !DILexicalBlock(scope: !1572, file: !3, line: 681, column: 3) +!1617 = !DILocation(line: 0, scope: !1616) +!1618 = !DILocation(line: 681, column: 23, scope: !1619) +!1619 = distinct !DILexicalBlock(scope: !1616, file: !3, line: 681, column: 3) +!1620 = !DILocation(line: 681, column: 19, scope: !1619) +!1621 = !DILocation(line: 681, column: 3, scope: !1616) +!1622 = !DILocation(line: 685, column: 10, scope: !1623) +!1623 = distinct !DILexicalBlock(scope: !1624, file: !3, line: 685, column: 5) +!1624 = distinct !DILexicalBlock(scope: !1619, file: !3, line: 681, column: 33) +!1625 = !DILocation(line: 0, scope: !1623) +!1626 = !DILocation(line: 685, column: 25, scope: !1627) +!1627 = distinct !DILexicalBlock(scope: !1623, file: !3, line: 685, column: 5) +!1628 = !DILocation(line: 685, column: 21, scope: !1627) +!1629 = !DILocation(line: 685, column: 5, scope: !1623) +!1630 = !DILocation(line: 686, column: 12, scope: !1631) +!1631 = distinct !DILexicalBlock(scope: !1632, file: !3, line: 686, column: 7) +!1632 = distinct !DILexicalBlock(scope: !1627, file: !3, line: 685, column: 35) +!1633 = !DILocation(line: 0, scope: !1631) +!1634 = !DILocation(line: 686, column: 23, scope: !1635) +!1635 = distinct !DILexicalBlock(scope: !1631, file: !3, line: 686, column: 7) +!1636 = !DILocation(line: 686, column: 7, scope: !1631) +!1637 = !DILocation(line: 687, column: 39, scope: !1638) +!1638 = distinct !DILexicalBlock(scope: !1635, file: !3, line: 686, column: 35) +!1639 = !DILocation(line: 687, column: 71, scope: !1638) +!1640 = !DILocation(line: 687, column: 69, scope: !1638) +!1641 = !DILocation(line: 688, column: 13, scope: !1638) +!1642 = !DILocation(line: 688, column: 11, scope: !1638) +!1643 = !DILocation(line: 688, column: 45, scope: !1638) +!1644 = !DILocation(line: 688, column: 43, scope: !1638) +!1645 = !DILocation(line: 687, column: 9, scope: !1638) +!1646 = !DILocation(line: 687, column: 37, scope: !1638) +!1647 = !DILocation(line: 689, column: 39, scope: !1638) +!1648 = !DILocation(line: 689, column: 73, scope: !1638) +!1649 = !DILocation(line: 689, column: 71, scope: !1638) +!1650 = !DILocation(line: 690, column: 13, scope: !1638) +!1651 = !DILocation(line: 690, column: 11, scope: !1638) +!1652 = !DILocation(line: 690, column: 47, scope: !1638) +!1653 = !DILocation(line: 690, column: 45, scope: !1638) +!1654 = !DILocation(line: 689, column: 9, scope: !1638) +!1655 = !DILocation(line: 689, column: 37, scope: !1638) +!1656 = !DILocation(line: 695, column: 7, scope: !1638) +!1657 = !DILocation(line: 686, column: 31, scope: !1635) +!1658 = !DILocation(line: 686, column: 7, scope: !1635) +!1659 = distinct !{!1659, !1636, !1660} +!1660 = !DILocation(line: 695, column: 7, scope: !1631) +!1661 = !DILocation(line: 696, column: 5, scope: !1632) +!1662 = !DILocation(line: 685, column: 31, scope: !1627) +!1663 = !DILocation(line: 685, column: 5, scope: !1627) +!1664 = distinct !{!1664, !1629, !1665} +!1665 = !DILocation(line: 696, column: 5, scope: !1623) +!1666 = !DILocation(line: 697, column: 3, scope: !1624) +!1667 = !DILocation(line: 681, column: 29, scope: !1619) +!1668 = !DILocation(line: 681, column: 3, scope: !1619) +!1669 = distinct !{!1669, !1621, !1670} +!1670 = !DILocation(line: 697, column: 3, scope: !1616) +!1671 = !DILocation(line: 704, column: 8, scope: !1672) +!1672 = distinct !DILexicalBlock(scope: !1572, file: !3, line: 704, column: 3) +!1673 = !DILocation(line: 0, scope: !1672) +!1674 = !DILocation(line: 704, column: 23, scope: !1675) +!1675 = distinct !DILexicalBlock(scope: !1672, file: !3, line: 704, column: 3) +!1676 = !DILocation(line: 704, column: 19, scope: !1675) +!1677 = !DILocation(line: 704, column: 3, scope: !1672) +!1678 = !DILocation(line: 708, column: 10, scope: !1679) +!1679 = distinct !DILexicalBlock(scope: !1680, file: !3, line: 708, column: 5) +!1680 = distinct !DILexicalBlock(scope: !1675, file: !3, line: 704, column: 33) +!1681 = !DILocation(line: 0, scope: !1679) +!1682 = !DILocation(line: 708, column: 25, scope: !1683) +!1683 = distinct !DILexicalBlock(scope: !1679, file: !3, line: 708, column: 5) +!1684 = !DILocation(line: 708, column: 21, scope: !1683) +!1685 = !DILocation(line: 708, column: 5, scope: !1679) +!1686 = !DILocation(line: 709, column: 12, scope: !1687) +!1687 = distinct !DILexicalBlock(scope: !1688, file: !3, line: 709, column: 7) +!1688 = distinct !DILexicalBlock(scope: !1683, file: !3, line: 708, column: 35) +!1689 = !DILocation(line: 0, scope: !1687) +!1690 = !DILocation(line: 709, column: 27, scope: !1691) +!1691 = distinct !DILexicalBlock(scope: !1687, file: !3, line: 709, column: 7) +!1692 = !DILocation(line: 709, column: 23, scope: !1691) +!1693 = !DILocation(line: 709, column: 7, scope: !1687) +!1694 = !DILocation(line: 710, column: 39, scope: !1695) +!1695 = distinct !DILexicalBlock(scope: !1691, file: !3, line: 709, column: 37) +!1696 = !DILocation(line: 711, column: 17, scope: !1695) +!1697 = !DILocation(line: 711, column: 15, scope: !1695) +!1698 = !DILocation(line: 711, column: 11, scope: !1695) +!1699 = !DILocation(line: 720, column: 20, scope: !1695) +!1700 = !DILocation(line: 720, column: 50, scope: !1695) +!1701 = !DILocation(line: 720, column: 48, scope: !1695) +!1702 = !DILocation(line: 721, column: 17, scope: !1695) +!1703 = !DILocation(line: 721, column: 15, scope: !1695) +!1704 = !DILocation(line: 720, column: 16, scope: !1695) +!1705 = !DILocation(line: 720, column: 11, scope: !1695) +!1706 = !DILocation(line: 722, column: 20, scope: !1695) +!1707 = !DILocation(line: 722, column: 52, scope: !1695) +!1708 = !DILocation(line: 722, column: 50, scope: !1695) +!1709 = !DILocation(line: 722, column: 16, scope: !1695) +!1710 = !DILocation(line: 722, column: 11, scope: !1695) +!1711 = !DILocation(line: 710, column: 9, scope: !1695) +!1712 = !DILocation(line: 710, column: 37, scope: !1695) +!1713 = !DILocation(line: 725, column: 7, scope: !1695) +!1714 = !DILocation(line: 709, column: 33, scope: !1691) +!1715 = !DILocation(line: 709, column: 7, scope: !1691) +!1716 = distinct !{!1716, !1693, !1717} +!1717 = !DILocation(line: 725, column: 7, scope: !1687) +!1718 = !DILocation(line: 726, column: 5, scope: !1688) +!1719 = !DILocation(line: 708, column: 31, scope: !1683) +!1720 = !DILocation(line: 708, column: 5, scope: !1683) +!1721 = distinct !{!1721, !1685, !1722} +!1722 = !DILocation(line: 726, column: 5, scope: !1679) +!1723 = !DILocation(line: 727, column: 3, scope: !1680) +!1724 = !DILocation(line: 704, column: 29, scope: !1675) +!1725 = !DILocation(line: 704, column: 3, scope: !1675) +!1726 = distinct !{!1726, !1677, !1727} +!1727 = !DILocation(line: 727, column: 3, scope: !1672) +!1728 = !DILocation(line: 733, column: 19, scope: !1572) +!1729 = !DILocation(line: 733, column: 23, scope: !1572) +!1730 = !DILocation(line: 733, column: 3, scope: !1572) +!1731 = !DILocation(line: 734, column: 19, scope: !1572) +!1732 = !DILocation(line: 734, column: 23, scope: !1572) +!1733 = !DILocation(line: 734, column: 3, scope: !1572) +!1734 = !DILocation(line: 739, column: 7, scope: !1735) +!1735 = distinct !DILexicalBlock(scope: !1572, file: !3, line: 739, column: 7) +!1736 = !DILocation(line: 739, column: 7, scope: !1572) +!1737 = !DILocation(line: 739, column: 16, scope: !1735) +!1738 = !DILocation(line: 745, column: 3, scope: !1572) +!1739 = !DILocation(line: 747, column: 7, scope: !1740) +!1740 = distinct !DILexicalBlock(scope: !1572, file: !3, line: 747, column: 7) +!1741 = !DILocation(line: 747, column: 20, scope: !1740) +!1742 = !DILocation(line: 747, column: 7, scope: !1572) +!1743 = !DILocation(line: 749, column: 5, scope: !1744) +!1744 = distinct !DILexicalBlock(scope: !1740, file: !3, line: 747, column: 26) +!1745 = !DILocation(line: 750, column: 3, scope: !1744) +!1746 = !DILocation(line: 752, column: 7, scope: !1747) +!1747 = distinct !DILexicalBlock(scope: !1572, file: !3, line: 752, column: 7) +!1748 = !DILocation(line: 752, column: 20, scope: !1747) +!1749 = !DILocation(line: 752, column: 7, scope: !1572) +!1750 = !DILocation(line: 754, column: 5, scope: !1751) +!1751 = distinct !DILexicalBlock(scope: !1747, file: !3, line: 752, column: 26) +!1752 = !DILocation(line: 755, column: 3, scope: !1751) +!1753 = !DILocation(line: 756, column: 1, scope: !1572) +!1754 = distinct !DISubprogram(name: "mg3P", scope: !3, file: !3, line: 457, type: !1755, scopeLine: 459, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !1757) +!1755 = !DISubroutineType(types: !1756) +!1756 = !{null, !12, !12, !12, !12, !12, !15, !15, !15} +!1757 = !{!1758, !1759, !1760, !1761, !1762, !1763, !1764, !1765, !1766, !1767} +!1758 = !DILocalVariable(name: "u", arg: 1, scope: !1754, file: !3, line: 457, type: !12) +!1759 = !DILocalVariable(name: "v", arg: 2, scope: !1754, file: !3, line: 457, type: !12) +!1760 = !DILocalVariable(name: "r", arg: 3, scope: !1754, file: !3, line: 457, type: !12) +!1761 = !DILocalVariable(name: "a", arg: 4, scope: !1754, file: !3, line: 458, type: !12) +!1762 = !DILocalVariable(name: "c", arg: 5, scope: !1754, file: !3, line: 458, type: !12) +!1763 = !DILocalVariable(name: "n1", arg: 6, scope: !1754, file: !3, line: 458, type: !15) +!1764 = !DILocalVariable(name: "n2", arg: 7, scope: !1754, file: !3, line: 458, type: !15) +!1765 = !DILocalVariable(name: "n3", arg: 8, scope: !1754, file: !3, line: 458, type: !15) +!1766 = !DILocalVariable(name: "j", scope: !1754, file: !3, line: 460, type: !15) +!1767 = !DILocalVariable(name: "k", scope: !1754, file: !3, line: 460, type: !15) +!1768 = !DILocation(line: 0, scope: !1754) +!1769 = !DILocation(line: 466, column: 12, scope: !1770) +!1770 = distinct !DILexicalBlock(scope: !1754, file: !3, line: 466, column: 3) +!1771 = !DILocation(line: 466, column: 8, scope: !1770) +!1772 = !DILocation(line: 0, scope: !1770) +!1773 = !DILocation(line: 466, column: 21, scope: !1774) +!1774 = distinct !DILexicalBlock(scope: !1770, file: !3, line: 466, column: 3) +!1775 = !DILocation(line: 466, column: 23, scope: !1774) +!1776 = !DILocation(line: 466, column: 18, scope: !1774) +!1777 = !DILocation(line: 466, column: 3, scope: !1770) +!1778 = !DILocation(line: 467, column: 11, scope: !1779) +!1779 = distinct !DILexicalBlock(scope: !1774, file: !3, line: 466, column: 32) +!1780 = !DILocation(line: 468, column: 14, scope: !1779) +!1781 = !DILocation(line: 468, column: 12, scope: !1779) +!1782 = !DILocation(line: 468, column: 22, scope: !1779) +!1783 = !DILocation(line: 468, column: 29, scope: !1779) +!1784 = !DILocation(line: 468, column: 36, scope: !1779) +!1785 = !DILocation(line: 469, column: 12, scope: !1779) +!1786 = !DILocation(line: 469, column: 10, scope: !1779) +!1787 = !DILocation(line: 469, column: 20, scope: !1779) +!1788 = !DILocation(line: 469, column: 27, scope: !1779) +!1789 = !DILocation(line: 469, column: 34, scope: !1779) +!1790 = !DILocation(line: 468, column: 5, scope: !1779) +!1791 = !DILocation(line: 470, column: 3, scope: !1779) +!1792 = !DILocation(line: 466, column: 28, scope: !1774) +!1793 = !DILocation(line: 466, column: 3, scope: !1774) +!1794 = distinct !{!1794, !1777, !1795} +!1795 = !DILocation(line: 470, column: 3, scope: !1770) +!1796 = !DILocation(line: 472, column: 7, scope: !1754) +!1797 = !DILocation(line: 476, column: 12, scope: !1754) +!1798 = !DILocation(line: 476, column: 10, scope: !1754) +!1799 = !DILocation(line: 476, column: 20, scope: !1754) +!1800 = !DILocation(line: 476, column: 27, scope: !1754) +!1801 = !DILocation(line: 476, column: 34, scope: !1754) +!1802 = !DILocation(line: 476, column: 3, scope: !1754) +!1803 = !DILocation(line: 477, column: 12, scope: !1754) +!1804 = !DILocation(line: 477, column: 10, scope: !1754) +!1805 = !DILocation(line: 477, column: 23, scope: !1754) +!1806 = !DILocation(line: 477, column: 21, scope: !1754) +!1807 = !DILocation(line: 477, column: 31, scope: !1754) +!1808 = !DILocation(line: 477, column: 38, scope: !1754) +!1809 = !DILocation(line: 477, column: 45, scope: !1754) +!1810 = !DILocation(line: 477, column: 3, scope: !1754) +!1811 = !DILocation(line: 479, column: 12, scope: !1812) +!1812 = distinct !DILexicalBlock(scope: !1754, file: !3, line: 479, column: 3) +!1813 = !DILocation(line: 479, column: 14, scope: !1812) +!1814 = !DILocation(line: 479, column: 8, scope: !1812) +!1815 = !DILocation(line: 0, scope: !1812) +!1816 = !DILocation(line: 479, column: 23, scope: !1817) +!1817 = distinct !DILexicalBlock(scope: !1812, file: !3, line: 479, column: 3) +!1818 = !DILocation(line: 479, column: 25, scope: !1817) +!1819 = !DILocation(line: 479, column: 20, scope: !1817) +!1820 = !DILocation(line: 479, column: 3, scope: !1812) +!1821 = !DILocation(line: 480, column: 11, scope: !1822) +!1822 = distinct !DILexicalBlock(scope: !1817, file: !3, line: 479, column: 34) +!1823 = !DILocation(line: 485, column: 14, scope: !1822) +!1824 = !DILocation(line: 485, column: 12, scope: !1822) +!1825 = !DILocation(line: 485, column: 22, scope: !1822) +!1826 = !DILocation(line: 485, column: 29, scope: !1822) +!1827 = !DILocation(line: 485, column: 36, scope: !1822) +!1828 = !DILocation(line: 485, column: 5, scope: !1822) +!1829 = !DILocation(line: 486, column: 15, scope: !1822) +!1830 = !DILocation(line: 486, column: 13, scope: !1822) +!1831 = !DILocation(line: 486, column: 23, scope: !1822) +!1832 = !DILocation(line: 486, column: 30, scope: !1822) +!1833 = !DILocation(line: 486, column: 37, scope: !1822) +!1834 = !DILocation(line: 486, column: 47, scope: !1822) +!1835 = !DILocation(line: 486, column: 45, scope: !1822) +!1836 = !DILocation(line: 486, column: 55, scope: !1822) +!1837 = !DILocation(line: 486, column: 62, scope: !1822) +!1838 = !DILocation(line: 486, column: 69, scope: !1822) +!1839 = !DILocation(line: 486, column: 5, scope: !1822) +!1840 = !DILocation(line: 491, column: 14, scope: !1822) +!1841 = !DILocation(line: 491, column: 12, scope: !1822) +!1842 = !DILocation(line: 491, column: 25, scope: !1822) +!1843 = !DILocation(line: 491, column: 23, scope: !1822) +!1844 = !DILocation(line: 491, column: 36, scope: !1822) +!1845 = !DILocation(line: 491, column: 34, scope: !1822) +!1846 = !DILocation(line: 491, column: 44, scope: !1822) +!1847 = !DILocation(line: 491, column: 51, scope: !1822) +!1848 = !DILocation(line: 491, column: 58, scope: !1822) +!1849 = !DILocation(line: 491, column: 5, scope: !1822) +!1850 = !DILocation(line: 496, column: 14, scope: !1822) +!1851 = !DILocation(line: 496, column: 12, scope: !1822) +!1852 = !DILocation(line: 496, column: 25, scope: !1822) +!1853 = !DILocation(line: 496, column: 23, scope: !1822) +!1854 = !DILocation(line: 496, column: 33, scope: !1822) +!1855 = !DILocation(line: 496, column: 40, scope: !1822) +!1856 = !DILocation(line: 496, column: 47, scope: !1822) +!1857 = !DILocation(line: 496, column: 5, scope: !1822) +!1858 = !DILocation(line: 497, column: 3, scope: !1822) +!1859 = !DILocation(line: 479, column: 30, scope: !1817) +!1860 = !DILocation(line: 479, column: 3, scope: !1817) +!1861 = distinct !{!1861, !1820, !1862} +!1862 = !DILocation(line: 497, column: 3, scope: !1812) +!1863 = !DILocation(line: 499, column: 7, scope: !1754) +!1864 = !DILocation(line: 499, column: 10, scope: !1754) +!1865 = !DILocation(line: 500, column: 7, scope: !1754) +!1866 = !DILocation(line: 501, column: 13, scope: !1754) +!1867 = !DILocation(line: 501, column: 11, scope: !1754) +!1868 = !DILocation(line: 501, column: 21, scope: !1754) +!1869 = !DILocation(line: 501, column: 28, scope: !1754) +!1870 = !DILocation(line: 501, column: 35, scope: !1754) +!1871 = !DILocation(line: 501, column: 3, scope: !1754) +!1872 = !DILocation(line: 502, column: 3, scope: !1754) +!1873 = !DILocation(line: 503, column: 3, scope: !1754) +!1874 = !DILocation(line: 504, column: 1, scope: !1754) +!1875 = distinct !DISubprogram(name: "rprj3", scope: !3, file: !3, line: 768, type: !71, scopeLine: 770, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !1876) +!1876 = !{!1877, !1878, !1879, !1880, !1881, !1882, !1883, !1884, !1885, !1886, !1887, !1888, !1889, !1890, !1891, !1892, !1893, !1894, !1895, !1896, !1897, !1898, !1899} +!1877 = !DILocalVariable(name: "or", arg: 1, scope: !1875, file: !3, line: 768, type: !12) +!1878 = !DILocalVariable(name: "m1k", arg: 2, scope: !1875, file: !3, line: 768, type: !15) +!1879 = !DILocalVariable(name: "m2k", arg: 3, scope: !1875, file: !3, line: 768, type: !15) +!1880 = !DILocalVariable(name: "m3k", arg: 4, scope: !1875, file: !3, line: 768, type: !15) +!1881 = !DILocalVariable(name: "os", arg: 5, scope: !1875, file: !3, line: 769, type: !12) +!1882 = !DILocalVariable(name: "m1j", arg: 6, scope: !1875, file: !3, line: 769, type: !15) +!1883 = !DILocalVariable(name: "m2j", arg: 7, scope: !1875, file: !3, line: 769, type: !15) +!1884 = !DILocalVariable(name: "m3j", arg: 8, scope: !1875, file: !3, line: 769, type: !15) +!1885 = !DILocalVariable(name: "k", arg: 9, scope: !1875, file: !3, line: 769, type: !15) +!1886 = !DILocalVariable(name: "j3", scope: !1875, file: !3, line: 775, type: !15) +!1887 = !DILocalVariable(name: "j2", scope: !1875, file: !3, line: 775, type: !15) +!1888 = !DILocalVariable(name: "j1", scope: !1875, file: !3, line: 775, type: !15) +!1889 = !DILocalVariable(name: "i3", scope: !1875, file: !3, line: 775, type: !15) +!1890 = !DILocalVariable(name: "i2", scope: !1875, file: !3, line: 775, type: !15) +!1891 = !DILocalVariable(name: "i1", scope: !1875, file: !3, line: 775, type: !15) +!1892 = !DILocalVariable(name: "d1", scope: !1875, file: !3, line: 775, type: !15) +!1893 = !DILocalVariable(name: "d2", scope: !1875, file: !3, line: 775, type: !15) +!1894 = !DILocalVariable(name: "d3", scope: !1875, file: !3, line: 775, type: !15) +!1895 = !DILocalVariable(name: "j", scope: !1875, file: !3, line: 775, type: !15) +!1896 = !DILocalVariable(name: "x1", scope: !1875, file: !3, line: 778, type: !12) +!1897 = !DILocalVariable(name: "y1", scope: !1875, file: !3, line: 778, type: !12) +!1898 = !DILocalVariable(name: "x2", scope: !1875, file: !3, line: 778, type: !13) +!1899 = !DILocalVariable(name: "y2", scope: !1875, file: !3, line: 778, type: !13) +!1900 = !DILocation(line: 0, scope: !1875) +!1901 = !DILocation(line: 783, column: 37, scope: !1875) +!1902 = !DILocation(line: 783, column: 41, scope: !1875) +!1903 = !DILocation(line: 783, column: 34, scope: !1875) +!1904 = !DILocation(line: 783, column: 45, scope: !1875) +!1905 = !DILocation(line: 783, column: 62, scope: !1875) +!1906 = !DILocation(line: 783, column: 17, scope: !1875) +!1907 = !DILocation(line: 783, column: 8, scope: !1875) +!1908 = !DILocation(line: 784, column: 37, scope: !1875) +!1909 = !DILocation(line: 784, column: 41, scope: !1875) +!1910 = !DILocation(line: 784, column: 34, scope: !1875) +!1911 = !DILocation(line: 784, column: 45, scope: !1875) +!1912 = !DILocation(line: 784, column: 62, scope: !1875) +!1913 = !DILocation(line: 784, column: 17, scope: !1875) +!1914 = !DILocation(line: 784, column: 8, scope: !1875) +!1915 = !DILocation(line: 790, column: 7, scope: !1916) +!1916 = distinct !DILexicalBlock(scope: !1875, file: !3, line: 790, column: 7) +!1917 = !DILocation(line: 790, column: 7, scope: !1875) +!1918 = !DILocation(line: 790, column: 16, scope: !1916) +!1919 = !DILocation(line: 791, column: 11, scope: !1920) +!1920 = distinct !DILexicalBlock(scope: !1875, file: !3, line: 791, column: 7) +!1921 = !DILocation(line: 791, column: 7, scope: !1875) +!1922 = !DILocation(line: 793, column: 3, scope: !1923) +!1923 = distinct !DILexicalBlock(scope: !1920, file: !3, line: 791, column: 17) +!1924 = !DILocation(line: 0, scope: !1920) +!1925 = !DILocation(line: 797, column: 11, scope: !1926) +!1926 = distinct !DILexicalBlock(scope: !1875, file: !3, line: 797, column: 7) +!1927 = !DILocation(line: 797, column: 7, scope: !1875) +!1928 = !DILocation(line: 799, column: 3, scope: !1929) +!1929 = distinct !DILexicalBlock(scope: !1926, file: !3, line: 797, column: 17) +!1930 = !DILocation(line: 0, scope: !1926) +!1931 = !DILocation(line: 803, column: 11, scope: !1932) +!1932 = distinct !DILexicalBlock(scope: !1875, file: !3, line: 803, column: 7) +!1933 = !DILocation(line: 803, column: 7, scope: !1875) +!1934 = !DILocation(line: 805, column: 3, scope: !1935) +!1935 = distinct !DILexicalBlock(scope: !1932, file: !3, line: 803, column: 17) +!1936 = !DILocation(line: 0, scope: !1932) +!1937 = !DILocation(line: 811, column: 8, scope: !1938) +!1938 = distinct !DILexicalBlock(scope: !1875, file: !3, line: 811, column: 3) +!1939 = !DILocation(line: 0, scope: !1938) +!1940 = !DILocation(line: 811, column: 24, scope: !1941) +!1941 = distinct !DILexicalBlock(scope: !1938, file: !3, line: 811, column: 3) +!1942 = !DILocation(line: 811, column: 19, scope: !1941) +!1943 = !DILocation(line: 811, column: 3, scope: !1938) +!1944 = !DILocation(line: 812, column: 10, scope: !1945) +!1945 = distinct !DILexicalBlock(scope: !1946, file: !3, line: 812, column: 5) +!1946 = distinct !DILexicalBlock(scope: !1941, file: !3, line: 811, column: 34) +!1947 = !DILocation(line: 0, scope: !1945) +!1948 = !DILocation(line: 812, column: 26, scope: !1949) +!1949 = distinct !DILexicalBlock(scope: !1945, file: !3, line: 812, column: 5) +!1950 = !DILocation(line: 812, column: 21, scope: !1949) +!1951 = !DILocation(line: 812, column: 5, scope: !1945) +!1952 = !DILocation(line: 813, column: 12, scope: !1953) +!1953 = distinct !DILexicalBlock(scope: !1954, file: !3, line: 813, column: 7) +!1954 = distinct !DILexicalBlock(scope: !1949, file: !3, line: 812, column: 36) +!1955 = !DILocation(line: 0, scope: !1953) +!1956 = !DILocation(line: 813, column: 23, scope: !1957) +!1957 = distinct !DILexicalBlock(scope: !1953, file: !3, line: 813, column: 7) +!1958 = !DILocation(line: 813, column: 7, scope: !1953) +!1959 = !DILocation(line: 814, column: 15, scope: !1960) +!1960 = distinct !DILexicalBlock(scope: !1957, file: !3, line: 813, column: 36) +!1961 = !DILocation(line: 814, column: 18, scope: !1960) +!1962 = !DILocation(line: 815, column: 15, scope: !1960) +!1963 = !DILocation(line: 815, column: 18, scope: !1960) +!1964 = !DILocation(line: 816, column: 15, scope: !1960) +!1965 = !DILocation(line: 816, column: 18, scope: !1960) +!1966 = !DILocation(line: 818, column: 41, scope: !1960) +!1967 = !DILocation(line: 818, column: 75, scope: !1960) +!1968 = !DILocation(line: 818, column: 73, scope: !1960) +!1969 = !DILocation(line: 819, column: 13, scope: !1960) +!1970 = !DILocation(line: 819, column: 11, scope: !1960) +!1971 = !DILocation(line: 819, column: 47, scope: !1960) +!1972 = !DILocation(line: 819, column: 45, scope: !1960) +!1973 = !DILocation(line: 818, column: 9, scope: !1960) +!1974 = !DILocation(line: 818, column: 39, scope: !1960) +!1975 = !DILocation(line: 820, column: 41, scope: !1960) +!1976 = !DILocation(line: 820, column: 75, scope: !1960) +!1977 = !DILocation(line: 820, column: 73, scope: !1960) +!1978 = !DILocation(line: 821, column: 13, scope: !1960) +!1979 = !DILocation(line: 821, column: 11, scope: !1960) +!1980 = !DILocation(line: 821, column: 47, scope: !1960) +!1981 = !DILocation(line: 821, column: 45, scope: !1960) +!1982 = !DILocation(line: 820, column: 9, scope: !1960) +!1983 = !DILocation(line: 820, column: 39, scope: !1960) +!1984 = !DILocation(line: 827, column: 7, scope: !1960) +!1985 = !DILocation(line: 813, column: 32, scope: !1957) +!1986 = !DILocation(line: 813, column: 7, scope: !1957) +!1987 = distinct !{!1987, !1958, !1988} +!1988 = !DILocation(line: 827, column: 7, scope: !1953) +!1989 = !DILocation(line: 828, column: 5, scope: !1954) +!1990 = !DILocation(line: 812, column: 32, scope: !1949) +!1991 = !DILocation(line: 812, column: 5, scope: !1949) +!1992 = distinct !{!1992, !1951, !1993} +!1993 = !DILocation(line: 828, column: 5, scope: !1945) +!1994 = !DILocation(line: 829, column: 3, scope: !1946) +!1995 = !DILocation(line: 811, column: 30, scope: !1941) +!1996 = !DILocation(line: 811, column: 3, scope: !1941) +!1997 = distinct !{!1997, !1943, !1998} +!1998 = !DILocation(line: 829, column: 3, scope: !1938) +!1999 = !DILocation(line: 832, column: 8, scope: !2000) +!2000 = distinct !DILexicalBlock(scope: !1875, file: !3, line: 832, column: 3) +!2001 = !DILocation(line: 0, scope: !2000) +!2002 = !DILocation(line: 832, column: 24, scope: !2003) +!2003 = distinct !DILexicalBlock(scope: !2000, file: !3, line: 832, column: 3) +!2004 = !DILocation(line: 832, column: 19, scope: !2003) +!2005 = !DILocation(line: 832, column: 3, scope: !2000) +!2006 = !DILocation(line: 833, column: 10, scope: !2007) +!2007 = distinct !DILexicalBlock(scope: !2008, file: !3, line: 833, column: 5) +!2008 = distinct !DILexicalBlock(scope: !2003, file: !3, line: 832, column: 34) +!2009 = !DILocation(line: 0, scope: !2007) +!2010 = !DILocation(line: 833, column: 26, scope: !2011) +!2011 = distinct !DILexicalBlock(scope: !2007, file: !3, line: 833, column: 5) +!2012 = !DILocation(line: 833, column: 21, scope: !2011) +!2013 = !DILocation(line: 833, column: 5, scope: !2007) +!2014 = !DILocation(line: 834, column: 12, scope: !2015) +!2015 = distinct !DILexicalBlock(scope: !2016, file: !3, line: 834, column: 7) +!2016 = distinct !DILexicalBlock(scope: !2011, file: !3, line: 833, column: 36) +!2017 = !DILocation(line: 0, scope: !2015) +!2018 = !DILocation(line: 834, column: 28, scope: !2019) +!2019 = distinct !DILexicalBlock(scope: !2015, file: !3, line: 834, column: 7) +!2020 = !DILocation(line: 834, column: 23, scope: !2019) +!2021 = !DILocation(line: 834, column: 7, scope: !2015) +!2022 = !DILocation(line: 835, column: 15, scope: !2023) +!2023 = distinct !DILexicalBlock(scope: !2019, file: !3, line: 834, column: 38) +!2024 = !DILocation(line: 835, column: 18, scope: !2023) +!2025 = !DILocation(line: 836, column: 15, scope: !2023) +!2026 = !DILocation(line: 836, column: 18, scope: !2023) +!2027 = !DILocation(line: 837, column: 15, scope: !2023) +!2028 = !DILocation(line: 837, column: 18, scope: !2023) +!2029 = !DILocation(line: 839, column: 14, scope: !2023) +!2030 = !DILocation(line: 839, column: 50, scope: !2023) +!2031 = !DILocation(line: 839, column: 48, scope: !2023) +!2032 = !DILocation(line: 840, column: 13, scope: !2023) +!2033 = !DILocation(line: 840, column: 11, scope: !2023) +!2034 = !DILocation(line: 840, column: 49, scope: !2023) +!2035 = !DILocation(line: 840, column: 47, scope: !2023) +!2036 = !DILocation(line: 841, column: 14, scope: !2023) +!2037 = !DILocation(line: 841, column: 50, scope: !2023) +!2038 = !DILocation(line: 841, column: 48, scope: !2023) +!2039 = !DILocation(line: 842, column: 13, scope: !2023) +!2040 = !DILocation(line: 842, column: 11, scope: !2023) +!2041 = !DILocation(line: 842, column: 49, scope: !2023) +!2042 = !DILocation(line: 842, column: 47, scope: !2023) +!2043 = !DILocation(line: 844, column: 17, scope: !2023) +!2044 = !DILocation(line: 844, column: 15, scope: !2023) +!2045 = !DILocation(line: 845, column: 21, scope: !2023) +!2046 = !DILocation(line: 845, column: 57, scope: !2023) +!2047 = !DILocation(line: 845, column: 55, scope: !2023) +!2048 = !DILocation(line: 845, column: 93, scope: !2023) +!2049 = !DILocation(line: 845, column: 18, scope: !2023) +!2050 = !DILocation(line: 845, column: 11, scope: !2023) +!2051 = !DILocation(line: 846, column: 23, scope: !2023) +!2052 = !DILocation(line: 846, column: 54, scope: !2023) +!2053 = !DILocation(line: 846, column: 52, scope: !2023) +!2054 = !DILocation(line: 846, column: 86, scope: !2023) +!2055 = !DILocation(line: 846, column: 19, scope: !2023) +!2056 = !DILocation(line: 846, column: 11, scope: !2023) +!2057 = !DILocation(line: 847, column: 23, scope: !2023) +!2058 = !DILocation(line: 847, column: 55, scope: !2023) +!2059 = !DILocation(line: 847, column: 53, scope: !2023) +!2060 = !DILocation(line: 847, column: 20, scope: !2023) +!2061 = !DILocation(line: 847, column: 11, scope: !2023) +!2062 = !DILocation(line: 843, column: 9, scope: !2023) +!2063 = !DILocation(line: 843, column: 39, scope: !2023) +!2064 = !DILocation(line: 858, column: 7, scope: !2023) +!2065 = !DILocation(line: 834, column: 34, scope: !2019) +!2066 = !DILocation(line: 834, column: 7, scope: !2019) +!2067 = distinct !{!2067, !2021, !2068} +!2068 = !DILocation(line: 858, column: 7, scope: !2015) +!2069 = !DILocation(line: 859, column: 5, scope: !2016) +!2070 = !DILocation(line: 833, column: 32, scope: !2011) +!2071 = !DILocation(line: 833, column: 5, scope: !2011) +!2072 = distinct !{!2072, !2013, !2073} +!2073 = !DILocation(line: 859, column: 5, scope: !2007) +!2074 = !DILocation(line: 860, column: 3, scope: !2008) +!2075 = !DILocation(line: 832, column: 30, scope: !2003) +!2076 = !DILocation(line: 832, column: 3, scope: !2003) +!2077 = distinct !{!2077, !2005, !2078} +!2078 = !DILocation(line: 860, column: 3, scope: !2000) +!2079 = !DILocation(line: 862, column: 7, scope: !2080) +!2080 = distinct !DILexicalBlock(scope: !1875, file: !3, line: 862, column: 7) +!2081 = !DILocation(line: 862, column: 7, scope: !1875) +!2082 = !DILocation(line: 862, column: 16, scope: !2080) +!2083 = !DILocation(line: 864, column: 8, scope: !1875) +!2084 = !DILocation(line: 866, column: 3, scope: !1875) +!2085 = !DILocation(line: 868, column: 7, scope: !2086) +!2086 = distinct !DILexicalBlock(scope: !1875, file: !3, line: 868, column: 7) +!2087 = !DILocation(line: 868, column: 20, scope: !2086) +!2088 = !DILocation(line: 868, column: 7, scope: !1875) +!2089 = !DILocation(line: 870, column: 45, scope: !2090) +!2090 = distinct !DILexicalBlock(scope: !2086, file: !3, line: 868, column: 26) +!2091 = !DILocation(line: 870, column: 5, scope: !2090) +!2092 = !DILocation(line: 871, column: 3, scope: !2090) +!2093 = !DILocation(line: 873, column: 7, scope: !2094) +!2094 = distinct !DILexicalBlock(scope: !1875, file: !3, line: 873, column: 7) +!2095 = !DILocation(line: 873, column: 20, scope: !2094) +!2096 = !DILocation(line: 873, column: 7, scope: !1875) +!2097 = !DILocation(line: 875, column: 5, scope: !2098) +!2098 = distinct !DILexicalBlock(scope: !2094, file: !3, line: 873, column: 26) +!2099 = !DILocation(line: 876, column: 3, scope: !2098) +!2100 = !DILocation(line: 881, column: 19, scope: !1875) +!2101 = !DILocation(line: 881, column: 23, scope: !1875) +!2102 = !DILocation(line: 881, column: 3, scope: !1875) +!2103 = !DILocation(line: 882, column: 19, scope: !1875) +!2104 = !DILocation(line: 882, column: 23, scope: !1875) +!2105 = !DILocation(line: 882, column: 3, scope: !1875) +!2106 = !DILocation(line: 887, column: 1, scope: !1875) +!2107 = distinct !DISubprogram(name: "psinv", scope: !3, file: !3, line: 518, type: !2108, scopeLine: 519, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !2110) +!2108 = !DISubroutineType(types: !2109) +!2109 = !{null, !1591, !1591, !15, !15, !15, !12, !15} +!2110 = !{!2111, !2112, !2113, !2114, !2115, !2116, !2117, !2118, !2119, !2120, !2121, !2122, !2123, !2124, !2125} +!2111 = !DILocalVariable(name: "or", arg: 1, scope: !2107, file: !3, line: 518, type: !1591) +!2112 = !DILocalVariable(name: "ou", arg: 2, scope: !2107, file: !3, line: 518, type: !1591) +!2113 = !DILocalVariable(name: "n1", arg: 3, scope: !2107, file: !3, line: 518, type: !15) +!2114 = !DILocalVariable(name: "n2", arg: 4, scope: !2107, file: !3, line: 518, type: !15) +!2115 = !DILocalVariable(name: "n3", arg: 5, scope: !2107, file: !3, line: 518, type: !15) +!2116 = !DILocalVariable(name: "c", arg: 6, scope: !2107, file: !3, line: 518, type: !12) +!2117 = !DILocalVariable(name: "k", arg: 7, scope: !2107, file: !3, line: 518, type: !15) +!2118 = !DILocalVariable(name: "i3", scope: !2107, file: !3, line: 524, type: !15) +!2119 = !DILocalVariable(name: "i2", scope: !2107, file: !3, line: 524, type: !15) +!2120 = !DILocalVariable(name: "i1", scope: !2107, file: !3, line: 524, type: !15) +!2121 = !DILocalVariable(name: "c0", scope: !2107, file: !3, line: 525, type: !13) +!2122 = !DILocalVariable(name: "c1", scope: !2107, file: !3, line: 525, type: !13) +!2123 = !DILocalVariable(name: "c2", scope: !2107, file: !3, line: 525, type: !13) +!2124 = !DILocalVariable(name: "r1", scope: !2107, file: !3, line: 528, type: !1591) +!2125 = !DILocalVariable(name: "r2", scope: !2107, file: !3, line: 528, type: !1591) +!2126 = !DILocation(line: 0, scope: !2107) +!2127 = !DILocation(line: 530, column: 8, scope: !2107) +!2128 = !DILocation(line: 531, column: 8, scope: !2107) +!2129 = !DILocation(line: 532, column: 8, scope: !2107) +!2130 = !DILocation(line: 538, column: 36, scope: !2107) +!2131 = !DILocation(line: 538, column: 39, scope: !2107) +!2132 = !DILocation(line: 538, column: 34, scope: !2107) +!2133 = !DILocation(line: 538, column: 42, scope: !2107) +!2134 = !DILocation(line: 538, column: 59, scope: !2107) +!2135 = !DILocation(line: 538, column: 17, scope: !2107) +!2136 = !DILocation(line: 538, column: 8, scope: !2107) +!2137 = !DILocation(line: 539, column: 36, scope: !2107) +!2138 = !DILocation(line: 539, column: 39, scope: !2107) +!2139 = !DILocation(line: 539, column: 34, scope: !2107) +!2140 = !DILocation(line: 539, column: 42, scope: !2107) +!2141 = !DILocation(line: 539, column: 59, scope: !2107) +!2142 = !DILocation(line: 539, column: 17, scope: !2107) +!2143 = !DILocation(line: 539, column: 8, scope: !2107) +!2144 = !DILocation(line: 546, column: 7, scope: !2145) +!2145 = distinct !DILexicalBlock(scope: !2107, file: !3, line: 546, column: 7) +!2146 = !DILocation(line: 546, column: 7, scope: !2107) +!2147 = !DILocation(line: 546, column: 16, scope: !2145) +!2148 = !DILocation(line: 553, column: 8, scope: !2149) +!2149 = distinct !DILexicalBlock(scope: !2107, file: !3, line: 553, column: 3) +!2150 = !DILocation(line: 0, scope: !2149) +!2151 = !DILocation(line: 553, column: 23, scope: !2152) +!2152 = distinct !DILexicalBlock(scope: !2149, file: !3, line: 553, column: 3) +!2153 = !DILocation(line: 553, column: 19, scope: !2152) +!2154 = !DILocation(line: 553, column: 3, scope: !2149) +!2155 = !DILocation(line: 557, column: 10, scope: !2156) +!2156 = distinct !DILexicalBlock(scope: !2157, file: !3, line: 557, column: 5) +!2157 = distinct !DILexicalBlock(scope: !2152, file: !3, line: 553, column: 33) +!2158 = !DILocation(line: 0, scope: !2156) +!2159 = !DILocation(line: 557, column: 25, scope: !2160) +!2160 = distinct !DILexicalBlock(scope: !2156, file: !3, line: 557, column: 5) +!2161 = !DILocation(line: 557, column: 21, scope: !2160) +!2162 = !DILocation(line: 557, column: 5, scope: !2156) +!2163 = !DILocation(line: 558, column: 12, scope: !2164) +!2164 = distinct !DILexicalBlock(scope: !2165, file: !3, line: 558, column: 7) +!2165 = distinct !DILexicalBlock(scope: !2160, file: !3, line: 557, column: 35) +!2166 = !DILocation(line: 0, scope: !2164) +!2167 = !DILocation(line: 558, column: 23, scope: !2168) +!2168 = distinct !DILexicalBlock(scope: !2164, file: !3, line: 558, column: 7) +!2169 = !DILocation(line: 558, column: 7, scope: !2164) +!2170 = !DILocation(line: 559, column: 39, scope: !2171) +!2171 = distinct !DILexicalBlock(scope: !2168, file: !3, line: 558, column: 35) +!2172 = !DILocation(line: 559, column: 71, scope: !2171) +!2173 = !DILocation(line: 559, column: 69, scope: !2171) +!2174 = !DILocation(line: 560, column: 13, scope: !2171) +!2175 = !DILocation(line: 560, column: 11, scope: !2171) +!2176 = !DILocation(line: 560, column: 45, scope: !2171) +!2177 = !DILocation(line: 560, column: 43, scope: !2171) +!2178 = !DILocation(line: 559, column: 9, scope: !2171) +!2179 = !DILocation(line: 559, column: 37, scope: !2171) +!2180 = !DILocation(line: 561, column: 39, scope: !2171) +!2181 = !DILocation(line: 561, column: 73, scope: !2171) +!2182 = !DILocation(line: 561, column: 71, scope: !2171) +!2183 = !DILocation(line: 562, column: 13, scope: !2171) +!2184 = !DILocation(line: 562, column: 11, scope: !2171) +!2185 = !DILocation(line: 562, column: 47, scope: !2171) +!2186 = !DILocation(line: 562, column: 45, scope: !2171) +!2187 = !DILocation(line: 561, column: 9, scope: !2171) +!2188 = !DILocation(line: 561, column: 37, scope: !2171) +!2189 = !DILocation(line: 567, column: 7, scope: !2171) +!2190 = !DILocation(line: 558, column: 31, scope: !2168) +!2191 = !DILocation(line: 558, column: 7, scope: !2168) +!2192 = distinct !{!2192, !2169, !2193} +!2193 = !DILocation(line: 567, column: 7, scope: !2164) +!2194 = !DILocation(line: 568, column: 5, scope: !2165) +!2195 = !DILocation(line: 557, column: 31, scope: !2160) +!2196 = !DILocation(line: 557, column: 5, scope: !2160) +!2197 = distinct !{!2197, !2162, !2198} +!2198 = !DILocation(line: 568, column: 5, scope: !2156) +!2199 = !DILocation(line: 569, column: 3, scope: !2157) +!2200 = !DILocation(line: 553, column: 29, scope: !2152) +!2201 = !DILocation(line: 553, column: 3, scope: !2152) +!2202 = distinct !{!2202, !2154, !2203} +!2203 = !DILocation(line: 569, column: 3, scope: !2149) +!2204 = !DILocation(line: 576, column: 8, scope: !2205) +!2205 = distinct !DILexicalBlock(scope: !2107, file: !3, line: 576, column: 3) +!2206 = !DILocation(line: 0, scope: !2205) +!2207 = !DILocation(line: 576, column: 23, scope: !2208) +!2208 = distinct !DILexicalBlock(scope: !2205, file: !3, line: 576, column: 3) +!2209 = !DILocation(line: 576, column: 19, scope: !2208) +!2210 = !DILocation(line: 576, column: 3, scope: !2205) +!2211 = !DILocation(line: 580, column: 10, scope: !2212) +!2212 = distinct !DILexicalBlock(scope: !2213, file: !3, line: 580, column: 5) +!2213 = distinct !DILexicalBlock(scope: !2208, file: !3, line: 576, column: 33) +!2214 = !DILocation(line: 0, scope: !2212) +!2215 = !DILocation(line: 580, column: 25, scope: !2216) +!2216 = distinct !DILexicalBlock(scope: !2212, file: !3, line: 580, column: 5) +!2217 = !DILocation(line: 580, column: 21, scope: !2216) +!2218 = !DILocation(line: 580, column: 5, scope: !2212) +!2219 = !DILocation(line: 581, column: 12, scope: !2220) +!2220 = distinct !DILexicalBlock(scope: !2221, file: !3, line: 581, column: 7) +!2221 = distinct !DILexicalBlock(scope: !2216, file: !3, line: 580, column: 35) +!2222 = !DILocation(line: 0, scope: !2220) +!2223 = !DILocation(line: 581, column: 27, scope: !2224) +!2224 = distinct !DILexicalBlock(scope: !2220, file: !3, line: 581, column: 7) +!2225 = !DILocation(line: 581, column: 23, scope: !2224) +!2226 = !DILocation(line: 581, column: 7, scope: !2220) +!2227 = !DILocation(line: 582, column: 39, scope: !2228) +!2228 = distinct !DILexicalBlock(scope: !2224, file: !3, line: 581, column: 37) +!2229 = !DILocation(line: 583, column: 18, scope: !2228) +!2230 = !DILocation(line: 583, column: 16, scope: !2228) +!2231 = !DILocation(line: 583, column: 11, scope: !2228) +!2232 = !DILocation(line: 584, column: 20, scope: !2228) +!2233 = !DILocation(line: 585, column: 17, scope: !2228) +!2234 = !DILocation(line: 585, column: 15, scope: !2228) +!2235 = !DILocation(line: 586, column: 17, scope: !2228) +!2236 = !DILocation(line: 586, column: 15, scope: !2228) +!2237 = !DILocation(line: 584, column: 16, scope: !2228) +!2238 = !DILocation(line: 584, column: 11, scope: !2228) +!2239 = !DILocation(line: 587, column: 20, scope: !2228) +!2240 = !DILocation(line: 588, column: 17, scope: !2228) +!2241 = !DILocation(line: 588, column: 15, scope: !2228) +!2242 = !DILocation(line: 589, column: 17, scope: !2228) +!2243 = !DILocation(line: 589, column: 15, scope: !2228) +!2244 = !DILocation(line: 587, column: 16, scope: !2228) +!2245 = !DILocation(line: 587, column: 11, scope: !2228) +!2246 = !DILocation(line: 582, column: 9, scope: !2228) +!2247 = !DILocation(line: 582, column: 37, scope: !2228) +!2248 = !DILocation(line: 600, column: 7, scope: !2228) +!2249 = !DILocation(line: 581, column: 33, scope: !2224) +!2250 = !DILocation(line: 581, column: 7, scope: !2224) +!2251 = distinct !{!2251, !2226, !2252} +!2252 = !DILocation(line: 600, column: 7, scope: !2220) +!2253 = !DILocation(line: 601, column: 5, scope: !2221) +!2254 = !DILocation(line: 580, column: 31, scope: !2216) +!2255 = !DILocation(line: 580, column: 5, scope: !2216) +!2256 = distinct !{!2256, !2218, !2257} +!2257 = !DILocation(line: 601, column: 5, scope: !2212) +!2258 = !DILocation(line: 602, column: 3, scope: !2213) +!2259 = !DILocation(line: 576, column: 29, scope: !2208) +!2260 = !DILocation(line: 576, column: 3, scope: !2208) +!2261 = distinct !{!2261, !2210, !2262} +!2262 = !DILocation(line: 602, column: 3, scope: !2205) +!2263 = !DILocation(line: 603, column: 7, scope: !2264) +!2264 = distinct !DILexicalBlock(scope: !2107, file: !3, line: 603, column: 7) +!2265 = !DILocation(line: 603, column: 7, scope: !2107) +!2266 = !DILocation(line: 603, column: 16, scope: !2264) +!2267 = !DILocation(line: 608, column: 19, scope: !2107) +!2268 = !DILocation(line: 608, column: 23, scope: !2107) +!2269 = !DILocation(line: 608, column: 3, scope: !2107) +!2270 = !DILocation(line: 609, column: 19, scope: !2107) +!2271 = !DILocation(line: 609, column: 23, scope: !2107) +!2272 = !DILocation(line: 609, column: 3, scope: !2107) +!2273 = !DILocation(line: 619, column: 3, scope: !2107) +!2274 = !DILocation(line: 621, column: 7, scope: !2275) +!2275 = distinct !DILexicalBlock(scope: !2107, file: !3, line: 621, column: 7) +!2276 = !DILocation(line: 621, column: 20, scope: !2275) +!2277 = !DILocation(line: 621, column: 7, scope: !2107) +!2278 = !DILocation(line: 623, column: 5, scope: !2279) +!2279 = distinct !DILexicalBlock(scope: !2275, file: !3, line: 621, column: 26) +!2280 = !DILocation(line: 624, column: 3, scope: !2279) +!2281 = !DILocation(line: 626, column: 7, scope: !2282) +!2282 = distinct !DILexicalBlock(scope: !2107, file: !3, line: 626, column: 7) +!2283 = !DILocation(line: 626, column: 20, scope: !2282) +!2284 = !DILocation(line: 626, column: 7, scope: !2107) +!2285 = !DILocation(line: 628, column: 5, scope: !2286) +!2286 = distinct !DILexicalBlock(scope: !2282, file: !3, line: 626, column: 26) +!2287 = !DILocation(line: 629, column: 3, scope: !2286) +!2288 = !DILocation(line: 630, column: 1, scope: !2107) +!2289 = !DILocation(line: 0, scope: !70) +!2290 = !DILocation(line: 924, column: 37, scope: !70) +!2291 = !DILocation(line: 924, column: 41, scope: !70) +!2292 = !DILocation(line: 924, column: 34, scope: !70) +!2293 = !DILocation(line: 924, column: 45, scope: !70) +!2294 = !DILocation(line: 924, column: 62, scope: !70) +!2295 = !DILocation(line: 924, column: 17, scope: !70) +!2296 = !DILocation(line: 924, column: 8, scope: !70) +!2297 = !DILocation(line: 924, column: 6, scope: !70) +!2298 = !DILocation(line: 925, column: 37, scope: !70) +!2299 = !DILocation(line: 925, column: 41, scope: !70) +!2300 = !DILocation(line: 925, column: 34, scope: !70) +!2301 = !DILocation(line: 925, column: 45, scope: !70) +!2302 = !DILocation(line: 925, column: 62, scope: !70) +!2303 = !DILocation(line: 925, column: 17, scope: !70) +!2304 = !DILocation(line: 925, column: 8, scope: !70) +!2305 = !DILocation(line: 925, column: 6, scope: !70) +!2306 = !DILocation(line: 926, column: 37, scope: !70) +!2307 = !DILocation(line: 926, column: 41, scope: !70) +!2308 = !DILocation(line: 926, column: 34, scope: !70) +!2309 = !DILocation(line: 926, column: 45, scope: !70) +!2310 = !DILocation(line: 926, column: 62, scope: !70) +!2311 = !DILocation(line: 926, column: 17, scope: !70) +!2312 = !DILocation(line: 926, column: 8, scope: !70) +!2313 = !DILocation(line: 926, column: 6, scope: !70) +!2314 = !DILocation(line: 933, column: 7, scope: !2315) +!2315 = distinct !DILexicalBlock(scope: !70, file: !3, line: 933, column: 7) +!2316 = !DILocation(line: 933, column: 7, scope: !70) +!2317 = !DILocation(line: 933, column: 16, scope: !2315) +!2318 = !DILocation(line: 935, column: 10, scope: !2319) +!2319 = distinct !DILexicalBlock(scope: !70, file: !3, line: 935, column: 7) +!2320 = !DILocation(line: 935, column: 15, scope: !2319) +!2321 = !DILocation(line: 935, column: 21, scope: !2319) +!2322 = !DILocation(line: 935, column: 26, scope: !2319) +!2323 = !DILocation(line: 935, column: 32, scope: !2319) +!2324 = !DILocation(line: 935, column: 7, scope: !70) +!2325 = !DILocation(line: 942, column: 10, scope: !2326) +!2326 = distinct !DILexicalBlock(scope: !2327, file: !3, line: 942, column: 5) +!2327 = distinct !DILexicalBlock(scope: !2319, file: !3, line: 935, column: 38) +!2328 = !DILocation(line: 0, scope: !2326) +!2329 = !DILocation(line: 942, column: 26, scope: !2330) +!2330 = distinct !DILexicalBlock(scope: !2326, file: !3, line: 942, column: 5) +!2331 = !DILocation(line: 942, column: 21, scope: !2330) +!2332 = !DILocation(line: 942, column: 5, scope: !2326) +!2333 = !DILocation(line: 946, column: 12, scope: !2334) +!2334 = distinct !DILexicalBlock(scope: !2335, file: !3, line: 946, column: 7) +!2335 = distinct !DILexicalBlock(scope: !2330, file: !3, line: 942, column: 36) +!2336 = !DILocation(line: 0, scope: !2334) +!2337 = !DILocation(line: 946, column: 28, scope: !2338) +!2338 = distinct !DILexicalBlock(scope: !2334, file: !3, line: 946, column: 7) +!2339 = !DILocation(line: 946, column: 23, scope: !2338) +!2340 = !DILocation(line: 946, column: 7, scope: !2334) +!2341 = !DILocation(line: 947, column: 14, scope: !2342) +!2342 = distinct !DILexicalBlock(scope: !2343, file: !3, line: 947, column: 9) +!2343 = distinct !DILexicalBlock(scope: !2338, file: !3, line: 946, column: 38) +!2344 = !DILocation(line: 0, scope: !2342) +!2345 = !DILocation(line: 947, column: 25, scope: !2346) +!2346 = distinct !DILexicalBlock(scope: !2342, file: !3, line: 947, column: 9) +!2347 = !DILocation(line: 947, column: 9, scope: !2342) +!2348 = !DILocation(line: 951, column: 43, scope: !2349) +!2349 = distinct !DILexicalBlock(scope: !2346, file: !3, line: 947, column: 38) +!2350 = !DILocation(line: 952, column: 15, scope: !2349) +!2351 = !DILocation(line: 952, column: 13, scope: !2349) +!2352 = !DILocation(line: 951, column: 11, scope: !2349) +!2353 = !DILocation(line: 951, column: 41, scope: !2349) +!2354 = !DILocation(line: 953, column: 43, scope: !2349) +!2355 = !DILocation(line: 954, column: 15, scope: !2349) +!2356 = !DILocation(line: 954, column: 13, scope: !2349) +!2357 = !DILocation(line: 953, column: 11, scope: !2349) +!2358 = !DILocation(line: 953, column: 41, scope: !2349) +!2359 = !DILocation(line: 955, column: 43, scope: !2349) +!2360 = !DILocation(line: 956, column: 15, scope: !2349) +!2361 = !DILocation(line: 956, column: 13, scope: !2349) +!2362 = !DILocation(line: 957, column: 15, scope: !2349) +!2363 = !DILocation(line: 957, column: 13, scope: !2349) +!2364 = !DILocation(line: 955, column: 11, scope: !2349) +!2365 = !DILocation(line: 955, column: 41, scope: !2349) +!2366 = !DILocation(line: 958, column: 9, scope: !2349) +!2367 = !DILocation(line: 947, column: 34, scope: !2346) +!2368 = !DILocation(line: 947, column: 9, scope: !2346) +!2369 = distinct !{!2369, !2347, !2370} +!2370 = !DILocation(line: 958, column: 9, scope: !2342) +!2371 = !DILocation(line: 959, column: 7, scope: !2343) +!2372 = !DILocation(line: 946, column: 34, scope: !2338) +!2373 = !DILocation(line: 946, column: 7, scope: !2338) +!2374 = distinct !{!2374, !2340, !2375} +!2375 = !DILocation(line: 959, column: 7, scope: !2334) +!2376 = !DILocation(line: 960, column: 5, scope: !2335) +!2377 = !DILocation(line: 942, column: 32, scope: !2330) +!2378 = !DILocation(line: 942, column: 5, scope: !2330) +!2379 = distinct !{!2379, !2332, !2380} +!2380 = !DILocation(line: 960, column: 5, scope: !2326) +!2381 = !DILocation(line: 967, column: 10, scope: !2382) +!2382 = distinct !DILexicalBlock(scope: !2327, file: !3, line: 967, column: 5) +!2383 = !DILocation(line: 0, scope: !2382) +!2384 = !DILocation(line: 967, column: 26, scope: !2385) +!2385 = distinct !DILexicalBlock(scope: !2382, file: !3, line: 967, column: 5) +!2386 = !DILocation(line: 967, column: 21, scope: !2385) +!2387 = !DILocation(line: 967, column: 5, scope: !2382) +!2388 = !DILocation(line: 971, column: 12, scope: !2389) +!2389 = distinct !DILexicalBlock(scope: !2390, file: !3, line: 971, column: 7) +!2390 = distinct !DILexicalBlock(scope: !2385, file: !3, line: 967, column: 36) +!2391 = !DILocation(line: 0, scope: !2389) +!2392 = !DILocation(line: 971, column: 28, scope: !2393) +!2393 = distinct !DILexicalBlock(scope: !2389, file: !3, line: 971, column: 7) +!2394 = !DILocation(line: 971, column: 23, scope: !2393) +!2395 = !DILocation(line: 971, column: 7, scope: !2389) +!2396 = !DILocation(line: 972, column: 14, scope: !2397) +!2397 = distinct !DILexicalBlock(scope: !2398, file: !3, line: 972, column: 9) +!2398 = distinct !DILexicalBlock(scope: !2393, file: !3, line: 971, column: 38) +!2399 = !DILocation(line: 0, scope: !2397) +!2400 = !DILocation(line: 972, column: 30, scope: !2401) +!2401 = distinct !DILexicalBlock(scope: !2397, file: !3, line: 972, column: 9) +!2402 = !DILocation(line: 972, column: 25, scope: !2401) +!2403 = !DILocation(line: 972, column: 9, scope: !2397) +!2404 = !DILocation(line: 977, column: 49, scope: !2405) +!2405 = distinct !DILexicalBlock(scope: !2401, file: !3, line: 972, column: 40) +!2406 = !DILocation(line: 978, column: 15, scope: !2405) +!2407 = !DILocation(line: 978, column: 13, scope: !2405) +!2408 = !DILocation(line: 977, column: 11, scope: !2405) +!2409 = !DILocation(line: 977, column: 47, scope: !2405) +!2410 = !DILocation(line: 979, column: 49, scope: !2405) +!2411 = !DILocation(line: 980, column: 20, scope: !2405) +!2412 = !DILocation(line: 981, column: 19, scope: !2405) +!2413 = !DILocation(line: 981, column: 17, scope: !2405) +!2414 = !DILocation(line: 980, column: 18, scope: !2405) +!2415 = !DILocation(line: 980, column: 13, scope: !2405) +!2416 = !DILocation(line: 979, column: 11, scope: !2405) +!2417 = !DILocation(line: 979, column: 47, scope: !2405) +!2418 = !DILocation(line: 982, column: 9, scope: !2405) +!2419 = !DILocation(line: 972, column: 36, scope: !2401) +!2420 = !DILocation(line: 972, column: 9, scope: !2401) +!2421 = distinct !{!2421, !2403, !2422} +!2422 = !DILocation(line: 982, column: 9, scope: !2397) +!2423 = !DILocation(line: 983, column: 7, scope: !2398) +!2424 = !DILocation(line: 971, column: 34, scope: !2393) +!2425 = !DILocation(line: 971, column: 7, scope: !2393) +!2426 = distinct !{!2426, !2395, !2427} +!2427 = !DILocation(line: 983, column: 7, scope: !2389) +!2428 = !DILocation(line: 984, column: 5, scope: !2390) +!2429 = !DILocation(line: 967, column: 32, scope: !2385) +!2430 = !DILocation(line: 967, column: 5, scope: !2385) +!2431 = distinct !{!2431, !2387, !2432} +!2432 = !DILocation(line: 984, column: 5, scope: !2382) +!2433 = !DILocation(line: 991, column: 10, scope: !2434) +!2434 = distinct !DILexicalBlock(scope: !2327, file: !3, line: 991, column: 5) +!2435 = !DILocation(line: 0, scope: !2434) +!2436 = !DILocation(line: 991, column: 26, scope: !2437) +!2437 = distinct !DILexicalBlock(scope: !2434, file: !3, line: 991, column: 5) +!2438 = !DILocation(line: 991, column: 21, scope: !2437) +!2439 = !DILocation(line: 991, column: 5, scope: !2434) +!2440 = !DILocation(line: 995, column: 12, scope: !2441) +!2441 = distinct !DILexicalBlock(scope: !2442, file: !3, line: 995, column: 7) +!2442 = distinct !DILexicalBlock(scope: !2437, file: !3, line: 991, column: 36) +!2443 = !DILocation(line: 0, scope: !2441) +!2444 = !DILocation(line: 995, column: 28, scope: !2445) +!2445 = distinct !DILexicalBlock(scope: !2441, file: !3, line: 995, column: 7) +!2446 = !DILocation(line: 995, column: 23, scope: !2445) +!2447 = !DILocation(line: 995, column: 7, scope: !2441) +!2448 = !DILocation(line: 996, column: 14, scope: !2449) +!2449 = distinct !DILexicalBlock(scope: !2450, file: !3, line: 996, column: 9) +!2450 = distinct !DILexicalBlock(scope: !2445, file: !3, line: 995, column: 38) +!2451 = !DILocation(line: 0, scope: !2449) +!2452 = !DILocation(line: 996, column: 30, scope: !2453) +!2453 = distinct !DILexicalBlock(scope: !2449, file: !3, line: 996, column: 9) +!2454 = !DILocation(line: 996, column: 25, scope: !2453) +!2455 = !DILocation(line: 996, column: 9, scope: !2449) +!2456 = !DILocation(line: 1001, column: 49, scope: !2457) +!2457 = distinct !DILexicalBlock(scope: !2453, file: !3, line: 996, column: 40) +!2458 = !DILocation(line: 1002, column: 21, scope: !2457) +!2459 = !DILocation(line: 1002, column: 19, scope: !2457) +!2460 = !DILocation(line: 1002, column: 13, scope: !2457) +!2461 = !DILocation(line: 1001, column: 11, scope: !2457) +!2462 = !DILocation(line: 1001, column: 47, scope: !2457) +!2463 = !DILocation(line: 1003, column: 51, scope: !2457) +!2464 = !DILocation(line: 1004, column: 23, scope: !2457) +!2465 = !DILocation(line: 1005, column: 19, scope: !2457) +!2466 = !DILocation(line: 1005, column: 17, scope: !2457) +!2467 = !DILocation(line: 1004, column: 20, scope: !2457) +!2468 = !DILocation(line: 1004, column: 13, scope: !2457) +!2469 = !DILocation(line: 1003, column: 11, scope: !2457) +!2470 = !DILocation(line: 1003, column: 49, scope: !2457) +!2471 = !DILocation(line: 1006, column: 9, scope: !2457) +!2472 = !DILocation(line: 996, column: 36, scope: !2453) +!2473 = !DILocation(line: 996, column: 9, scope: !2453) +!2474 = distinct !{!2474, !2455, !2475} +!2475 = !DILocation(line: 1006, column: 9, scope: !2449) +!2476 = !DILocation(line: 1007, column: 7, scope: !2450) +!2477 = !DILocation(line: 995, column: 34, scope: !2445) +!2478 = !DILocation(line: 995, column: 7, scope: !2445) +!2479 = distinct !{!2479, !2447, !2480} +!2480 = !DILocation(line: 1007, column: 7, scope: !2441) +!2481 = !DILocation(line: 1008, column: 5, scope: !2442) +!2482 = !DILocation(line: 991, column: 32, scope: !2437) +!2483 = !DILocation(line: 991, column: 5, scope: !2437) +!2484 = distinct !{!2484, !2439, !2485} +!2485 = !DILocation(line: 1008, column: 5, scope: !2434) +!2486 = !DILocation(line: 1015, column: 10, scope: !2487) +!2487 = distinct !DILexicalBlock(scope: !2327, file: !3, line: 1015, column: 5) +!2488 = !DILocation(line: 0, scope: !2487) +!2489 = !DILocation(line: 1015, column: 26, scope: !2490) +!2490 = distinct !DILexicalBlock(scope: !2487, file: !3, line: 1015, column: 5) +!2491 = !DILocation(line: 1015, column: 21, scope: !2490) +!2492 = !DILocation(line: 1015, column: 5, scope: !2487) +!2493 = !DILocation(line: 1019, column: 12, scope: !2494) +!2494 = distinct !DILexicalBlock(scope: !2495, file: !3, line: 1019, column: 7) +!2495 = distinct !DILexicalBlock(scope: !2490, file: !3, line: 1015, column: 36) +!2496 = !DILocation(line: 0, scope: !2494) +!2497 = !DILocation(line: 1019, column: 28, scope: !2498) +!2498 = distinct !DILexicalBlock(scope: !2494, file: !3, line: 1019, column: 7) +!2499 = !DILocation(line: 1019, column: 23, scope: !2498) +!2500 = !DILocation(line: 1019, column: 7, scope: !2494) +!2501 = !DILocation(line: 1020, column: 14, scope: !2502) +!2502 = distinct !DILexicalBlock(scope: !2503, file: !3, line: 1020, column: 9) +!2503 = distinct !DILexicalBlock(scope: !2498, file: !3, line: 1019, column: 38) +!2504 = !DILocation(line: 0, scope: !2502) +!2505 = !DILocation(line: 1020, column: 30, scope: !2506) +!2506 = distinct !DILexicalBlock(scope: !2502, file: !3, line: 1020, column: 9) +!2507 = !DILocation(line: 1020, column: 25, scope: !2506) +!2508 = !DILocation(line: 1020, column: 9, scope: !2502) +!2509 = !DILocation(line: 1025, column: 49, scope: !2510) +!2510 = distinct !DILexicalBlock(scope: !2506, file: !3, line: 1020, column: 40) +!2511 = !DILocation(line: 1026, column: 21, scope: !2510) +!2512 = !DILocation(line: 1026, column: 19, scope: !2510) +!2513 = !DILocation(line: 1026, column: 13, scope: !2510) +!2514 = !DILocation(line: 1025, column: 11, scope: !2510) +!2515 = !DILocation(line: 1025, column: 47, scope: !2510) +!2516 = !DILocation(line: 1027, column: 51, scope: !2510) +!2517 = !DILocation(line: 1028, column: 23, scope: !2510) +!2518 = !DILocation(line: 1029, column: 19, scope: !2510) +!2519 = !DILocation(line: 1029, column: 17, scope: !2510) +!2520 = !DILocation(line: 1028, column: 20, scope: !2510) +!2521 = !DILocation(line: 1028, column: 13, scope: !2510) +!2522 = !DILocation(line: 1027, column: 11, scope: !2510) +!2523 = !DILocation(line: 1027, column: 49, scope: !2510) +!2524 = !DILocation(line: 1030, column: 9, scope: !2510) +!2525 = !DILocation(line: 1020, column: 36, scope: !2506) +!2526 = !DILocation(line: 1020, column: 9, scope: !2506) +!2527 = distinct !{!2527, !2508, !2528} +!2528 = !DILocation(line: 1030, column: 9, scope: !2502) +!2529 = !DILocation(line: 1031, column: 7, scope: !2503) +!2530 = !DILocation(line: 1019, column: 34, scope: !2498) +!2531 = !DILocation(line: 1019, column: 7, scope: !2498) +!2532 = distinct !{!2532, !2500, !2533} +!2533 = !DILocation(line: 1031, column: 7, scope: !2494) +!2534 = !DILocation(line: 1032, column: 5, scope: !2495) +!2535 = !DILocation(line: 1015, column: 32, scope: !2490) +!2536 = !DILocation(line: 1015, column: 5, scope: !2490) +!2537 = distinct !{!2537, !2492, !2538} +!2538 = !DILocation(line: 1032, column: 5, scope: !2487) +!2539 = !DILocation(line: 1039, column: 10, scope: !2540) +!2540 = distinct !DILexicalBlock(scope: !2327, file: !3, line: 1039, column: 5) +!2541 = !DILocation(line: 0, scope: !2540) +!2542 = !DILocation(line: 1039, column: 26, scope: !2543) +!2543 = distinct !DILexicalBlock(scope: !2540, file: !3, line: 1039, column: 5) +!2544 = !DILocation(line: 1039, column: 21, scope: !2543) +!2545 = !DILocation(line: 1039, column: 5, scope: !2540) +!2546 = !DILocation(line: 1043, column: 12, scope: !2547) +!2547 = distinct !DILexicalBlock(scope: !2548, file: !3, line: 1043, column: 7) +!2548 = distinct !DILexicalBlock(scope: !2543, file: !3, line: 1039, column: 36) +!2549 = !DILocation(line: 0, scope: !2547) +!2550 = !DILocation(line: 1043, column: 28, scope: !2551) +!2551 = distinct !DILexicalBlock(scope: !2547, file: !3, line: 1043, column: 7) +!2552 = !DILocation(line: 1043, column: 23, scope: !2551) +!2553 = !DILocation(line: 1043, column: 7, scope: !2547) +!2554 = !DILocation(line: 1044, column: 14, scope: !2555) +!2555 = distinct !DILexicalBlock(scope: !2556, file: !3, line: 1044, column: 9) +!2556 = distinct !DILexicalBlock(scope: !2551, file: !3, line: 1043, column: 38) +!2557 = !DILocation(line: 0, scope: !2555) +!2558 = !DILocation(line: 1044, column: 30, scope: !2559) +!2559 = distinct !DILexicalBlock(scope: !2555, file: !3, line: 1044, column: 9) +!2560 = !DILocation(line: 1044, column: 25, scope: !2559) +!2561 = !DILocation(line: 1044, column: 9, scope: !2555) +!2562 = !DILocation(line: 1049, column: 51, scope: !2563) +!2563 = distinct !DILexicalBlock(scope: !2559, file: !3, line: 1044, column: 40) +!2564 = !DILocation(line: 1050, column: 22, scope: !2563) +!2565 = !DILocation(line: 1050, column: 20, scope: !2563) +!2566 = !DILocation(line: 1050, column: 13, scope: !2563) +!2567 = !DILocation(line: 1049, column: 11, scope: !2563) +!2568 = !DILocation(line: 1049, column: 49, scope: !2563) +!2569 = !DILocation(line: 1051, column: 53, scope: !2563) +!2570 = !DILocation(line: 1052, column: 24, scope: !2563) +!2571 = !DILocation(line: 1053, column: 19, scope: !2563) +!2572 = !DILocation(line: 1053, column: 17, scope: !2563) +!2573 = !DILocation(line: 1052, column: 21, scope: !2563) +!2574 = !DILocation(line: 1052, column: 13, scope: !2563) +!2575 = !DILocation(line: 1051, column: 11, scope: !2563) +!2576 = !DILocation(line: 1051, column: 51, scope: !2563) +!2577 = !DILocation(line: 1054, column: 9, scope: !2563) +!2578 = !DILocation(line: 1044, column: 36, scope: !2559) +!2579 = !DILocation(line: 1044, column: 9, scope: !2559) +!2580 = distinct !{!2580, !2561, !2581} +!2581 = !DILocation(line: 1054, column: 9, scope: !2555) +!2582 = !DILocation(line: 1055, column: 7, scope: !2556) +!2583 = !DILocation(line: 1043, column: 34, scope: !2551) +!2584 = !DILocation(line: 1043, column: 7, scope: !2551) +!2585 = distinct !{!2585, !2553, !2586} +!2586 = !DILocation(line: 1055, column: 7, scope: !2547) +!2587 = !DILocation(line: 1056, column: 5, scope: !2548) +!2588 = !DILocation(line: 1039, column: 32, scope: !2543) +!2589 = !DILocation(line: 1039, column: 5, scope: !2543) +!2590 = distinct !{!2590, !2545, !2591} +!2591 = !DILocation(line: 1056, column: 5, scope: !2540) +!2592 = !DILocation(line: 1057, column: 3, scope: !2327) +!2593 = !DILocation(line: 1058, column: 12, scope: !2594) +!2594 = distinct !DILexicalBlock(scope: !2595, file: !3, line: 1058, column: 9) +!2595 = distinct !DILexicalBlock(scope: !2319, file: !3, line: 1057, column: 10) +!2596 = !DILocation(line: 1058, column: 9, scope: !2595) +!2597 = !DILocation(line: 1061, column: 5, scope: !2598) +!2598 = distinct !DILexicalBlock(scope: !2594, file: !3, line: 1058, column: 18) +!2599 = !DILocation(line: 0, scope: !2594) +!2600 = !DILocation(line: 1066, column: 12, scope: !2601) +!2601 = distinct !DILexicalBlock(scope: !2595, file: !3, line: 1066, column: 9) +!2602 = !DILocation(line: 1066, column: 9, scope: !2595) +!2603 = !DILocation(line: 1069, column: 5, scope: !2604) +!2604 = distinct !DILexicalBlock(scope: !2601, file: !3, line: 1066, column: 18) +!2605 = !DILocation(line: 0, scope: !2601) +!2606 = !DILocation(line: 1074, column: 12, scope: !2607) +!2607 = distinct !DILexicalBlock(scope: !2595, file: !3, line: 1074, column: 9) +!2608 = !DILocation(line: 1074, column: 9, scope: !2595) +!2609 = !DILocation(line: 1077, column: 5, scope: !2610) +!2610 = distinct !DILexicalBlock(scope: !2607, file: !3, line: 1074, column: 18) +!2611 = !DILocation(line: 0, scope: !2607) +!2612 = !DILocation(line: 1089, column: 12, scope: !2613) +!2613 = distinct !DILexicalBlock(scope: !2614, file: !3, line: 1089, column: 7) +!2614 = distinct !DILexicalBlock(scope: !2595, file: !3, line: 1082, column: 5) +!2615 = !DILocation(line: 0, scope: !2613) +!2616 = !DILocation(line: 1089, column: 30, scope: !2617) +!2617 = distinct !DILexicalBlock(scope: !2613, file: !3, line: 1089, column: 7) +!2618 = !DILocation(line: 1089, column: 24, scope: !2617) +!2619 = !DILocation(line: 1089, column: 7, scope: !2613) +!2620 = !DILocation(line: 1093, column: 14, scope: !2621) +!2621 = distinct !DILexicalBlock(scope: !2622, file: !3, line: 1093, column: 9) +!2622 = distinct !DILexicalBlock(scope: !2617, file: !3, line: 1089, column: 40) +!2623 = !DILocation(line: 0, scope: !2621) +!2624 = !DILocation(line: 1093, column: 32, scope: !2625) +!2625 = distinct !DILexicalBlock(scope: !2621, file: !3, line: 1093, column: 9) +!2626 = !DILocation(line: 1093, column: 26, scope: !2625) +!2627 = !DILocation(line: 1093, column: 9, scope: !2621) +!2628 = !DILocation(line: 1094, column: 16, scope: !2629) +!2629 = distinct !DILexicalBlock(scope: !2630, file: !3, line: 1094, column: 11) +!2630 = distinct !DILexicalBlock(scope: !2625, file: !3, line: 1093, column: 42) +!2631 = !DILocation(line: 0, scope: !2629) +!2632 = !DILocation(line: 1094, column: 34, scope: !2633) +!2633 = distinct !DILexicalBlock(scope: !2629, file: !3, line: 1094, column: 11) +!2634 = !DILocation(line: 1094, column: 28, scope: !2633) +!2635 = !DILocation(line: 1094, column: 11, scope: !2629) +!2636 = !DILocation(line: 1099, column: 15, scope: !2637) +!2637 = distinct !DILexicalBlock(scope: !2633, file: !3, line: 1094, column: 44) +!2638 = !DILocation(line: 1100, column: 17, scope: !2637) +!2639 = !DILocation(line: 1100, column: 15, scope: !2637) +!2640 = !DILocation(line: 1098, column: 13, scope: !2637) +!2641 = !DILocation(line: 1098, column: 62, scope: !2637) +!2642 = !DILocation(line: 1101, column: 11, scope: !2637) +!2643 = !DILocation(line: 1094, column: 40, scope: !2633) +!2644 = !DILocation(line: 1094, column: 11, scope: !2633) +!2645 = distinct !{!2645, !2635, !2646} +!2646 = !DILocation(line: 1101, column: 11, scope: !2629) +!2647 = !DILocation(line: 1102, column: 16, scope: !2648) +!2648 = distinct !DILexicalBlock(scope: !2630, file: !3, line: 1102, column: 11) +!2649 = !DILocation(line: 0, scope: !2648) +!2650 = !DILocation(line: 1102, column: 33, scope: !2651) +!2651 = distinct !DILexicalBlock(scope: !2648, file: !3, line: 1102, column: 11) +!2652 = !DILocation(line: 1102, column: 27, scope: !2651) +!2653 = !DILocation(line: 1102, column: 11, scope: !2648) +!2654 = !DILocation(line: 1107, column: 15, scope: !2655) +!2655 = distinct !DILexicalBlock(scope: !2651, file: !3, line: 1102, column: 43) +!2656 = !DILocation(line: 1108, column: 24, scope: !2655) +!2657 = !DILocation(line: 1109, column: 21, scope: !2655) +!2658 = !DILocation(line: 1109, column: 19, scope: !2655) +!2659 = !DILocation(line: 1108, column: 21, scope: !2655) +!2660 = !DILocation(line: 1108, column: 15, scope: !2655) +!2661 = !DILocation(line: 1106, column: 13, scope: !2655) +!2662 = !DILocation(line: 1106, column: 62, scope: !2655) +!2663 = !DILocation(line: 1110, column: 11, scope: !2655) +!2664 = !DILocation(line: 1102, column: 39, scope: !2651) +!2665 = !DILocation(line: 1102, column: 11, scope: !2651) +!2666 = distinct !{!2666, !2653, !2667} +!2667 = !DILocation(line: 1110, column: 11, scope: !2648) +!2668 = !DILocation(line: 1111, column: 9, scope: !2630) +!2669 = !DILocation(line: 1093, column: 38, scope: !2625) +!2670 = !DILocation(line: 1093, column: 9, scope: !2625) +!2671 = distinct !{!2671, !2627, !2672} +!2672 = !DILocation(line: 1111, column: 9, scope: !2621) +!2673 = !DILocation(line: 1112, column: 7, scope: !2622) +!2674 = !DILocation(line: 1089, column: 36, scope: !2617) +!2675 = !DILocation(line: 1089, column: 7, scope: !2617) +!2676 = distinct !{!2676, !2619, !2677} +!2677 = !DILocation(line: 1112, column: 7, scope: !2613) +!2678 = !DILocation(line: 1119, column: 12, scope: !2679) +!2679 = distinct !DILexicalBlock(scope: !2614, file: !3, line: 1119, column: 7) +!2680 = !DILocation(line: 0, scope: !2679) +!2681 = !DILocation(line: 1119, column: 30, scope: !2682) +!2682 = distinct !DILexicalBlock(scope: !2679, file: !3, line: 1119, column: 7) +!2683 = !DILocation(line: 1119, column: 24, scope: !2682) +!2684 = !DILocation(line: 1119, column: 7, scope: !2679) +!2685 = !DILocation(line: 1123, column: 14, scope: !2686) +!2686 = distinct !DILexicalBlock(scope: !2687, file: !3, line: 1123, column: 9) +!2687 = distinct !DILexicalBlock(scope: !2682, file: !3, line: 1119, column: 40) +!2688 = !DILocation(line: 0, scope: !2686) +!2689 = !DILocation(line: 1123, column: 31, scope: !2690) +!2690 = distinct !DILexicalBlock(scope: !2686, file: !3, line: 1123, column: 9) +!2691 = !DILocation(line: 1123, column: 25, scope: !2690) +!2692 = !DILocation(line: 1123, column: 9, scope: !2686) +!2693 = !DILocation(line: 1124, column: 16, scope: !2694) +!2694 = distinct !DILexicalBlock(scope: !2695, file: !3, line: 1124, column: 11) +!2695 = distinct !DILexicalBlock(scope: !2690, file: !3, line: 1123, column: 41) +!2696 = !DILocation(line: 0, scope: !2694) +!2697 = !DILocation(line: 1124, column: 34, scope: !2698) +!2698 = distinct !DILexicalBlock(scope: !2694, file: !3, line: 1124, column: 11) +!2699 = !DILocation(line: 1124, column: 28, scope: !2698) +!2700 = !DILocation(line: 1124, column: 11, scope: !2694) +!2701 = !DILocation(line: 1129, column: 15, scope: !2702) +!2702 = distinct !DILexicalBlock(scope: !2698, file: !3, line: 1124, column: 44) +!2703 = !DILocation(line: 1130, column: 24, scope: !2702) +!2704 = !DILocation(line: 1131, column: 21, scope: !2702) +!2705 = !DILocation(line: 1131, column: 19, scope: !2702) +!2706 = !DILocation(line: 1130, column: 21, scope: !2702) +!2707 = !DILocation(line: 1130, column: 15, scope: !2702) +!2708 = !DILocation(line: 1128, column: 13, scope: !2702) +!2709 = !DILocation(line: 1128, column: 62, scope: !2702) +!2710 = !DILocation(line: 1132, column: 11, scope: !2702) +!2711 = !DILocation(line: 1124, column: 40, scope: !2698) +!2712 = !DILocation(line: 1124, column: 11, scope: !2698) +!2713 = distinct !{!2713, !2700, !2714} +!2714 = !DILocation(line: 1132, column: 11, scope: !2694) +!2715 = !DILocation(line: 1133, column: 16, scope: !2716) +!2716 = distinct !DILexicalBlock(scope: !2695, file: !3, line: 1133, column: 11) +!2717 = !DILocation(line: 0, scope: !2716) +!2718 = !DILocation(line: 1133, column: 33, scope: !2719) +!2719 = distinct !DILexicalBlock(scope: !2716, file: !3, line: 1133, column: 11) +!2720 = !DILocation(line: 1133, column: 27, scope: !2719) +!2721 = !DILocation(line: 1133, column: 11, scope: !2716) +!2722 = !DILocation(line: 1139, column: 15, scope: !2723) +!2723 = distinct !DILexicalBlock(scope: !2719, file: !3, line: 1133, column: 43) +!2724 = !DILocation(line: 1140, column: 25, scope: !2723) +!2725 = !DILocation(line: 1141, column: 21, scope: !2723) +!2726 = !DILocation(line: 1141, column: 19, scope: !2723) +!2727 = !DILocation(line: 1142, column: 21, scope: !2723) +!2728 = !DILocation(line: 1142, column: 19, scope: !2723) +!2729 = !DILocation(line: 1143, column: 21, scope: !2723) +!2730 = !DILocation(line: 1143, column: 19, scope: !2723) +!2731 = !DILocation(line: 1140, column: 22, scope: !2723) +!2732 = !DILocation(line: 1140, column: 15, scope: !2723) +!2733 = !DILocation(line: 1138, column: 13, scope: !2723) +!2734 = !DILocation(line: 1138, column: 62, scope: !2723) +!2735 = !DILocation(line: 1144, column: 11, scope: !2723) +!2736 = !DILocation(line: 1133, column: 39, scope: !2719) +!2737 = !DILocation(line: 1133, column: 11, scope: !2719) +!2738 = distinct !{!2738, !2721, !2739} +!2739 = !DILocation(line: 1144, column: 11, scope: !2716) +!2740 = !DILocation(line: 1145, column: 9, scope: !2695) +!2741 = !DILocation(line: 1123, column: 37, scope: !2690) +!2742 = !DILocation(line: 1123, column: 9, scope: !2690) +!2743 = distinct !{!2743, !2692, !2744} +!2744 = !DILocation(line: 1145, column: 9, scope: !2686) +!2745 = !DILocation(line: 1146, column: 7, scope: !2687) +!2746 = !DILocation(line: 1119, column: 36, scope: !2682) +!2747 = !DILocation(line: 1119, column: 7, scope: !2682) +!2748 = distinct !{!2748, !2684, !2749} +!2749 = !DILocation(line: 1146, column: 7, scope: !2679) +!2750 = !DILocation(line: 1154, column: 12, scope: !2751) +!2751 = distinct !DILexicalBlock(scope: !2614, file: !3, line: 1154, column: 7) +!2752 = !DILocation(line: 0, scope: !2751) +!2753 = !DILocation(line: 1154, column: 29, scope: !2754) +!2754 = distinct !DILexicalBlock(scope: !2751, file: !3, line: 1154, column: 7) +!2755 = !DILocation(line: 1154, column: 23, scope: !2754) +!2756 = !DILocation(line: 1154, column: 7, scope: !2751) +!2757 = !DILocation(line: 1158, column: 14, scope: !2758) +!2758 = distinct !DILexicalBlock(scope: !2759, file: !3, line: 1158, column: 9) +!2759 = distinct !DILexicalBlock(scope: !2754, file: !3, line: 1154, column: 39) +!2760 = !DILocation(line: 0, scope: !2758) +!2761 = !DILocation(line: 1158, column: 32, scope: !2762) +!2762 = distinct !DILexicalBlock(scope: !2758, file: !3, line: 1158, column: 9) +!2763 = !DILocation(line: 1158, column: 26, scope: !2762) +!2764 = !DILocation(line: 1158, column: 9, scope: !2758) +!2765 = !DILocation(line: 1159, column: 16, scope: !2766) +!2766 = distinct !DILexicalBlock(scope: !2767, file: !3, line: 1159, column: 11) +!2767 = distinct !DILexicalBlock(scope: !2762, file: !3, line: 1158, column: 42) +!2768 = !DILocation(line: 0, scope: !2766) +!2769 = !DILocation(line: 1159, column: 34, scope: !2770) +!2770 = distinct !DILexicalBlock(scope: !2766, file: !3, line: 1159, column: 11) +!2771 = !DILocation(line: 1159, column: 28, scope: !2770) +!2772 = !DILocation(line: 1159, column: 11, scope: !2766) +!2773 = !DILocation(line: 1164, column: 15, scope: !2774) +!2774 = distinct !DILexicalBlock(scope: !2770, file: !3, line: 1159, column: 44) +!2775 = !DILocation(line: 1165, column: 24, scope: !2774) +!2776 = !DILocation(line: 1166, column: 21, scope: !2774) +!2777 = !DILocation(line: 1166, column: 19, scope: !2774) +!2778 = !DILocation(line: 1165, column: 21, scope: !2774) +!2779 = !DILocation(line: 1165, column: 15, scope: !2774) +!2780 = !DILocation(line: 1163, column: 13, scope: !2774) +!2781 = !DILocation(line: 1163, column: 62, scope: !2774) +!2782 = !DILocation(line: 1167, column: 11, scope: !2774) +!2783 = !DILocation(line: 1159, column: 40, scope: !2770) +!2784 = !DILocation(line: 1159, column: 11, scope: !2770) +!2785 = distinct !{!2785, !2772, !2786} +!2786 = !DILocation(line: 1167, column: 11, scope: !2766) +!2787 = !DILocation(line: 1168, column: 9, scope: !2767) +!2788 = !DILocation(line: 1158, column: 38, scope: !2762) +!2789 = !DILocation(line: 1158, column: 9, scope: !2762) +!2790 = distinct !{!2790, !2764, !2791} +!2791 = !DILocation(line: 1168, column: 9, scope: !2758) +!2792 = !DILocation(line: 1169, column: 7, scope: !2759) +!2793 = !DILocation(line: 1154, column: 35, scope: !2754) +!2794 = !DILocation(line: 1154, column: 7, scope: !2754) +!2795 = distinct !{!2795, !2756, !2796} +!2796 = !DILocation(line: 1169, column: 7, scope: !2751) +!2797 = !DILocation(line: 1176, column: 12, scope: !2798) +!2798 = distinct !DILexicalBlock(scope: !2614, file: !3, line: 1176, column: 7) +!2799 = !DILocation(line: 0, scope: !2798) +!2800 = !DILocation(line: 1176, column: 29, scope: !2801) +!2801 = distinct !DILexicalBlock(scope: !2798, file: !3, line: 1176, column: 7) +!2802 = !DILocation(line: 1176, column: 23, scope: !2801) +!2803 = !DILocation(line: 1176, column: 7, scope: !2798) +!2804 = !DILocation(line: 1180, column: 14, scope: !2805) +!2805 = distinct !DILexicalBlock(scope: !2806, file: !3, line: 1180, column: 9) +!2806 = distinct !DILexicalBlock(scope: !2801, file: !3, line: 1176, column: 39) +!2807 = !DILocation(line: 0, scope: !2805) +!2808 = !DILocation(line: 1180, column: 32, scope: !2809) +!2809 = distinct !DILexicalBlock(scope: !2805, file: !3, line: 1180, column: 9) +!2810 = !DILocation(line: 1180, column: 26, scope: !2809) +!2811 = !DILocation(line: 1180, column: 9, scope: !2805) +!2812 = !DILocation(line: 1181, column: 16, scope: !2813) +!2813 = distinct !DILexicalBlock(scope: !2814, file: !3, line: 1181, column: 11) +!2814 = distinct !DILexicalBlock(scope: !2809, file: !3, line: 1180, column: 42) +!2815 = !DILocation(line: 0, scope: !2813) +!2816 = !DILocation(line: 1181, column: 33, scope: !2817) +!2817 = distinct !DILexicalBlock(scope: !2813, file: !3, line: 1181, column: 11) +!2818 = !DILocation(line: 1181, column: 27, scope: !2817) +!2819 = !DILocation(line: 1181, column: 11, scope: !2813) +!2820 = !DILocation(line: 1187, column: 15, scope: !2821) +!2821 = distinct !DILexicalBlock(scope: !2817, file: !3, line: 1181, column: 43) +!2822 = !DILocation(line: 1188, column: 25, scope: !2821) +!2823 = !DILocation(line: 1189, column: 21, scope: !2821) +!2824 = !DILocation(line: 1189, column: 19, scope: !2821) +!2825 = !DILocation(line: 1190, column: 21, scope: !2821) +!2826 = !DILocation(line: 1190, column: 19, scope: !2821) +!2827 = !DILocation(line: 1191, column: 21, scope: !2821) +!2828 = !DILocation(line: 1191, column: 19, scope: !2821) +!2829 = !DILocation(line: 1188, column: 22, scope: !2821) +!2830 = !DILocation(line: 1188, column: 15, scope: !2821) +!2831 = !DILocation(line: 1186, column: 13, scope: !2821) +!2832 = !DILocation(line: 1186, column: 62, scope: !2821) +!2833 = !DILocation(line: 1192, column: 11, scope: !2821) +!2834 = !DILocation(line: 1181, column: 39, scope: !2817) +!2835 = !DILocation(line: 1181, column: 11, scope: !2817) +!2836 = distinct !{!2836, !2819, !2837} +!2837 = !DILocation(line: 1192, column: 11, scope: !2813) +!2838 = !DILocation(line: 1193, column: 9, scope: !2814) +!2839 = !DILocation(line: 1180, column: 38, scope: !2809) +!2840 = !DILocation(line: 1180, column: 9, scope: !2809) +!2841 = distinct !{!2841, !2811, !2842} +!2842 = !DILocation(line: 1193, column: 9, scope: !2805) +!2843 = !DILocation(line: 1194, column: 7, scope: !2806) +!2844 = !DILocation(line: 1176, column: 35, scope: !2801) +!2845 = !DILocation(line: 1176, column: 7, scope: !2801) +!2846 = distinct !{!2846, !2803, !2847} +!2847 = !DILocation(line: 1194, column: 7, scope: !2798) +!2848 = !DILocation(line: 1201, column: 12, scope: !2849) +!2849 = distinct !DILexicalBlock(scope: !2614, file: !3, line: 1201, column: 7) +!2850 = !DILocation(line: 0, scope: !2849) +!2851 = !DILocation(line: 1201, column: 29, scope: !2852) +!2852 = distinct !DILexicalBlock(scope: !2849, file: !3, line: 1201, column: 7) +!2853 = !DILocation(line: 1201, column: 23, scope: !2852) +!2854 = !DILocation(line: 1201, column: 7, scope: !2849) +!2855 = !DILocation(line: 1205, column: 14, scope: !2856) +!2856 = distinct !DILexicalBlock(scope: !2857, file: !3, line: 1205, column: 9) +!2857 = distinct !DILexicalBlock(scope: !2852, file: !3, line: 1201, column: 39) +!2858 = !DILocation(line: 0, scope: !2856) +!2859 = !DILocation(line: 1205, column: 31, scope: !2860) +!2860 = distinct !DILexicalBlock(scope: !2856, file: !3, line: 1205, column: 9) +!2861 = !DILocation(line: 1205, column: 25, scope: !2860) +!2862 = !DILocation(line: 1205, column: 9, scope: !2856) +!2863 = !DILocation(line: 1206, column: 16, scope: !2864) +!2864 = distinct !DILexicalBlock(scope: !2865, file: !3, line: 1206, column: 11) +!2865 = distinct !DILexicalBlock(scope: !2860, file: !3, line: 1205, column: 41) +!2866 = !DILocation(line: 0, scope: !2864) +!2867 = !DILocation(line: 1206, column: 34, scope: !2868) +!2868 = distinct !DILexicalBlock(scope: !2864, file: !3, line: 1206, column: 11) +!2869 = !DILocation(line: 1206, column: 28, scope: !2868) +!2870 = !DILocation(line: 1206, column: 11, scope: !2864) +!2871 = !DILocation(line: 1212, column: 15, scope: !2872) +!2872 = distinct !DILexicalBlock(scope: !2868, file: !3, line: 1206, column: 44) +!2873 = !DILocation(line: 1213, column: 25, scope: !2872) +!2874 = !DILocation(line: 1214, column: 21, scope: !2872) +!2875 = !DILocation(line: 1214, column: 19, scope: !2872) +!2876 = !DILocation(line: 1215, column: 21, scope: !2872) +!2877 = !DILocation(line: 1215, column: 19, scope: !2872) +!2878 = !DILocation(line: 1216, column: 21, scope: !2872) +!2879 = !DILocation(line: 1216, column: 19, scope: !2872) +!2880 = !DILocation(line: 1213, column: 22, scope: !2872) +!2881 = !DILocation(line: 1213, column: 15, scope: !2872) +!2882 = !DILocation(line: 1211, column: 13, scope: !2872) +!2883 = !DILocation(line: 1211, column: 62, scope: !2872) +!2884 = !DILocation(line: 1217, column: 11, scope: !2872) +!2885 = !DILocation(line: 1206, column: 40, scope: !2868) +!2886 = !DILocation(line: 1206, column: 11, scope: !2868) +!2887 = distinct !{!2887, !2870, !2888} +!2888 = !DILocation(line: 1217, column: 11, scope: !2864) +!2889 = !DILocation(line: 1218, column: 9, scope: !2865) +!2890 = !DILocation(line: 1205, column: 37, scope: !2860) +!2891 = !DILocation(line: 1205, column: 9, scope: !2860) +!2892 = distinct !{!2892, !2862, !2893} +!2893 = !DILocation(line: 1218, column: 9, scope: !2856) +!2894 = !DILocation(line: 1219, column: 7, scope: !2857) +!2895 = !DILocation(line: 1201, column: 35, scope: !2852) +!2896 = !DILocation(line: 1201, column: 7, scope: !2852) +!2897 = distinct !{!2897, !2854, !2898} +!2898 = !DILocation(line: 1219, column: 7, scope: !2849) +!2899 = !DILocation(line: 1226, column: 12, scope: !2900) +!2900 = distinct !DILexicalBlock(scope: !2614, file: !3, line: 1226, column: 7) +!2901 = !DILocation(line: 0, scope: !2900) +!2902 = !DILocation(line: 1226, column: 29, scope: !2903) +!2903 = distinct !DILexicalBlock(scope: !2900, file: !3, line: 1226, column: 7) +!2904 = !DILocation(line: 1226, column: 23, scope: !2903) +!2905 = !DILocation(line: 1226, column: 7, scope: !2900) +!2906 = !DILocation(line: 1230, column: 14, scope: !2907) +!2907 = distinct !DILexicalBlock(scope: !2908, file: !3, line: 1230, column: 9) +!2908 = distinct !DILexicalBlock(scope: !2903, file: !3, line: 1226, column: 39) +!2909 = !DILocation(line: 0, scope: !2907) +!2910 = !DILocation(line: 1230, column: 31, scope: !2911) +!2911 = distinct !DILexicalBlock(scope: !2907, file: !3, line: 1230, column: 9) +!2912 = !DILocation(line: 1230, column: 25, scope: !2911) +!2913 = !DILocation(line: 1230, column: 9, scope: !2907) +!2914 = !DILocation(line: 1231, column: 16, scope: !2915) +!2915 = distinct !DILexicalBlock(scope: !2916, file: !3, line: 1231, column: 11) +!2916 = distinct !DILexicalBlock(scope: !2911, file: !3, line: 1230, column: 41) +!2917 = !DILocation(line: 0, scope: !2915) +!2918 = !DILocation(line: 1231, column: 33, scope: !2919) +!2919 = distinct !DILexicalBlock(scope: !2915, file: !3, line: 1231, column: 11) +!2920 = !DILocation(line: 1231, column: 27, scope: !2919) +!2921 = !DILocation(line: 1231, column: 11, scope: !2915) +!2922 = !DILocation(line: 1239, column: 15, scope: !2923) +!2923 = distinct !DILexicalBlock(scope: !2919, file: !3, line: 1231, column: 43) +!2924 = !DILocation(line: 1240, column: 26, scope: !2923) +!2925 = !DILocation(line: 1241, column: 21, scope: !2923) +!2926 = !DILocation(line: 1241, column: 19, scope: !2923) +!2927 = !DILocation(line: 1242, column: 21, scope: !2923) +!2928 = !DILocation(line: 1242, column: 19, scope: !2923) +!2929 = !DILocation(line: 1243, column: 21, scope: !2923) +!2930 = !DILocation(line: 1243, column: 19, scope: !2923) +!2931 = !DILocation(line: 1244, column: 21, scope: !2923) +!2932 = !DILocation(line: 1244, column: 19, scope: !2923) +!2933 = !DILocation(line: 1245, column: 21, scope: !2923) +!2934 = !DILocation(line: 1245, column: 19, scope: !2923) +!2935 = !DILocation(line: 1246, column: 21, scope: !2923) +!2936 = !DILocation(line: 1246, column: 19, scope: !2923) +!2937 = !DILocation(line: 1247, column: 21, scope: !2923) +!2938 = !DILocation(line: 1247, column: 19, scope: !2923) +!2939 = !DILocation(line: 1240, column: 23, scope: !2923) +!2940 = !DILocation(line: 1240, column: 15, scope: !2923) +!2941 = !DILocation(line: 1238, column: 13, scope: !2923) +!2942 = !DILocation(line: 1238, column: 62, scope: !2923) +!2943 = !DILocation(line: 1248, column: 11, scope: !2923) +!2944 = !DILocation(line: 1231, column: 39, scope: !2919) +!2945 = !DILocation(line: 1231, column: 11, scope: !2919) +!2946 = distinct !{!2946, !2921, !2947} +!2947 = !DILocation(line: 1248, column: 11, scope: !2915) +!2948 = !DILocation(line: 1249, column: 9, scope: !2916) +!2949 = !DILocation(line: 1230, column: 37, scope: !2911) +!2950 = !DILocation(line: 1230, column: 9, scope: !2911) +!2951 = distinct !{!2951, !2913, !2952} +!2952 = !DILocation(line: 1249, column: 9, scope: !2907) +!2953 = !DILocation(line: 1250, column: 7, scope: !2908) +!2954 = !DILocation(line: 1226, column: 35, scope: !2903) +!2955 = !DILocation(line: 1226, column: 7, scope: !2903) +!2956 = distinct !{!2956, !2905, !2957} +!2957 = !DILocation(line: 1250, column: 7, scope: !2900) +!2958 = !DILocation(line: 1260, column: 19, scope: !70) +!2959 = !DILocation(line: 1260, column: 23, scope: !70) +!2960 = !DILocation(line: 1260, column: 3, scope: !70) +!2961 = !DILocation(line: 1261, column: 19, scope: !70) +!2962 = !DILocation(line: 1261, column: 23, scope: !70) +!2963 = !DILocation(line: 1261, column: 3, scope: !70) +!2964 = !DILocation(line: 1262, column: 19, scope: !70) +!2965 = !DILocation(line: 1262, column: 23, scope: !70) +!2966 = !DILocation(line: 1262, column: 3, scope: !70) +!2967 = !DILocation(line: 1268, column: 7, scope: !2968) +!2968 = distinct !DILexicalBlock(scope: !70, file: !3, line: 1268, column: 7) +!2969 = !DILocation(line: 1268, column: 7, scope: !70) +!2970 = !DILocation(line: 1268, column: 16, scope: !2968) +!2971 = !DILocation(line: 1270, column: 7, scope: !2972) +!2972 = distinct !DILexicalBlock(scope: !70, file: !3, line: 1270, column: 7) +!2973 = !DILocation(line: 1270, column: 20, scope: !2972) +!2974 = !DILocation(line: 1270, column: 7, scope: !70) +!2975 = !DILocation(line: 1273, column: 45, scope: !2976) +!2976 = distinct !DILexicalBlock(scope: !2972, file: !3, line: 1270, column: 26) +!2977 = !DILocation(line: 1273, column: 5, scope: !2976) +!2978 = !DILocation(line: 1274, column: 5, scope: !2976) +!2979 = !DILocation(line: 1275, column: 3, scope: !2976) +!2980 = !DILocation(line: 1277, column: 7, scope: !2981) +!2981 = distinct !DILexicalBlock(scope: !70, file: !3, line: 1277, column: 7) +!2982 = !DILocation(line: 1277, column: 20, scope: !2981) +!2983 = !DILocation(line: 1277, column: 7, scope: !70) +!2984 = !DILocation(line: 1280, column: 5, scope: !2985) +!2985 = distinct !DILexicalBlock(scope: !2981, file: !3, line: 1277, column: 26) +!2986 = !DILocation(line: 1281, column: 5, scope: !2985) +!2987 = !DILocation(line: 1282, column: 3, scope: !2985) +!2988 = !DILocation(line: 1283, column: 1, scope: !70) +!2989 = distinct !DISubprogram(name: "comm3", scope: !3, file: !3, line: 1356, type: !2990, scopeLine: 1357, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !2992) +!2990 = !DISubroutineType(types: !2991) +!2991 = !{null, !12, !15, !15, !15, !15} +!2992 = !{!2993, !2994, !2995, !2996, !2997, !2998, !2999, !3000} +!2993 = !DILocalVariable(name: "ou", arg: 1, scope: !2989, file: !3, line: 1356, type: !12) +!2994 = !DILocalVariable(name: "n1", arg: 2, scope: !2989, file: !3, line: 1356, type: !15) +!2995 = !DILocalVariable(name: "n2", arg: 3, scope: !2989, file: !3, line: 1356, type: !15) +!2996 = !DILocalVariable(name: "n3", arg: 4, scope: !2989, file: !3, line: 1356, type: !15) +!2997 = !DILocalVariable(name: "kk", arg: 5, scope: !2989, file: !3, line: 1356, type: !15) +!2998 = !DILocalVariable(name: "i1", scope: !2989, file: !3, line: 1360, type: !15) +!2999 = !DILocalVariable(name: "i2", scope: !2989, file: !3, line: 1360, type: !15) +!3000 = !DILocalVariable(name: "i3", scope: !2989, file: !3, line: 1360, type: !15) +!3001 = !DILocation(line: 0, scope: !2989) +!3002 = !DILocation(line: 1361, column: 7, scope: !3003) +!3003 = distinct !DILexicalBlock(scope: !2989, file: !3, line: 1361, column: 7) +!3004 = !DILocation(line: 1361, column: 7, scope: !2989) +!3005 = !DILocation(line: 1361, column: 16, scope: !3003) +!3006 = !DILocation(line: 1371, column: 10, scope: !3007) +!3007 = distinct !DILexicalBlock(scope: !3008, file: !3, line: 1371, column: 5) +!3008 = distinct !DILexicalBlock(scope: !2989, file: !3, line: 1364, column: 3) +!3009 = !DILocation(line: 0, scope: !3007) +!3010 = !DILocation(line: 1371, column: 25, scope: !3011) +!3011 = distinct !DILexicalBlock(scope: !3007, file: !3, line: 1371, column: 5) +!3012 = !DILocation(line: 1371, column: 21, scope: !3011) +!3013 = !DILocation(line: 1371, column: 5, scope: !3007) +!3014 = !DILocation(line: 1375, column: 12, scope: !3015) +!3015 = distinct !DILexicalBlock(scope: !3016, file: !3, line: 1375, column: 7) +!3016 = distinct !DILexicalBlock(scope: !3011, file: !3, line: 1371, column: 35) +!3017 = !DILocation(line: 0, scope: !3015) +!3018 = !DILocation(line: 1375, column: 27, scope: !3019) +!3019 = distinct !DILexicalBlock(scope: !3015, file: !3, line: 1375, column: 7) +!3020 = !DILocation(line: 1375, column: 23, scope: !3019) +!3021 = !DILocation(line: 1375, column: 7, scope: !3015) +!3022 = !DILocation(line: 1378, column: 41, scope: !3023) +!3023 = distinct !DILexicalBlock(scope: !3019, file: !3, line: 1375, column: 37) +!3024 = !DILocation(line: 1378, column: 9, scope: !3023) +!3025 = !DILocation(line: 1378, column: 39, scope: !3023) +!3026 = !DILocation(line: 1379, column: 41, scope: !3023) +!3027 = !DILocation(line: 1379, column: 9, scope: !3023) +!3028 = !DILocation(line: 1379, column: 39, scope: !3023) +!3029 = !DILocation(line: 1380, column: 7, scope: !3023) +!3030 = !DILocation(line: 1375, column: 33, scope: !3019) +!3031 = !DILocation(line: 1375, column: 7, scope: !3019) +!3032 = distinct !{!3032, !3021, !3033} +!3033 = !DILocation(line: 1380, column: 7, scope: !3015) +!3034 = !DILocation(line: 1381, column: 5, scope: !3016) +!3035 = !DILocation(line: 1371, column: 31, scope: !3011) +!3036 = !DILocation(line: 1371, column: 5, scope: !3011) +!3037 = distinct !{!3037, !3013, !3038} +!3038 = !DILocation(line: 1381, column: 5, scope: !3007) +!3039 = !DILocation(line: 1389, column: 10, scope: !3040) +!3040 = distinct !DILexicalBlock(scope: !3008, file: !3, line: 1389, column: 5) +!3041 = !DILocation(line: 0, scope: !3040) +!3042 = !DILocation(line: 1389, column: 25, scope: !3043) +!3043 = distinct !DILexicalBlock(scope: !3040, file: !3, line: 1389, column: 5) +!3044 = !DILocation(line: 1389, column: 21, scope: !3043) +!3045 = !DILocation(line: 1389, column: 5, scope: !3040) +!3046 = !DILocation(line: 1393, column: 12, scope: !3047) +!3047 = distinct !DILexicalBlock(scope: !3048, file: !3, line: 1393, column: 7) +!3048 = distinct !DILexicalBlock(scope: !3043, file: !3, line: 1389, column: 35) +!3049 = !DILocation(line: 0, scope: !3047) +!3050 = !DILocation(line: 1393, column: 23, scope: !3051) +!3051 = distinct !DILexicalBlock(scope: !3047, file: !3, line: 1393, column: 7) +!3052 = !DILocation(line: 1393, column: 7, scope: !3047) +!3053 = !DILocation(line: 1396, column: 41, scope: !3054) +!3054 = distinct !DILexicalBlock(scope: !3051, file: !3, line: 1393, column: 35) +!3055 = !DILocation(line: 1396, column: 9, scope: !3054) +!3056 = !DILocation(line: 1396, column: 39, scope: !3054) +!3057 = !DILocation(line: 1397, column: 41, scope: !3054) +!3058 = !DILocation(line: 1397, column: 9, scope: !3054) +!3059 = !DILocation(line: 1397, column: 39, scope: !3054) +!3060 = !DILocation(line: 1398, column: 7, scope: !3054) +!3061 = !DILocation(line: 1393, column: 31, scope: !3051) +!3062 = !DILocation(line: 1393, column: 7, scope: !3051) +!3063 = distinct !{!3063, !3052, !3064} +!3064 = !DILocation(line: 1398, column: 7, scope: !3047) +!3065 = !DILocation(line: 1399, column: 5, scope: !3048) +!3066 = !DILocation(line: 1389, column: 31, scope: !3043) +!3067 = !DILocation(line: 1389, column: 5, scope: !3043) +!3068 = distinct !{!3068, !3045, !3069} +!3069 = !DILocation(line: 1399, column: 5, scope: !3040) +!3070 = !DILocation(line: 1408, column: 10, scope: !3071) +!3071 = distinct !DILexicalBlock(scope: !3008, file: !3, line: 1408, column: 5) +!3072 = !DILocation(line: 0, scope: !3071) +!3073 = !DILocation(line: 1408, column: 21, scope: !3074) +!3074 = distinct !DILexicalBlock(scope: !3071, file: !3, line: 1408, column: 5) +!3075 = !DILocation(line: 1408, column: 5, scope: !3071) +!3076 = !DILocation(line: 1412, column: 12, scope: !3077) +!3077 = distinct !DILexicalBlock(scope: !3078, file: !3, line: 1412, column: 7) +!3078 = distinct !DILexicalBlock(scope: !3074, file: !3, line: 1408, column: 33) +!3079 = !DILocation(line: 0, scope: !3077) +!3080 = !DILocation(line: 1412, column: 23, scope: !3081) +!3081 = distinct !DILexicalBlock(scope: !3077, file: !3, line: 1412, column: 7) +!3082 = !DILocation(line: 1412, column: 7, scope: !3077) +!3083 = !DILocation(line: 1415, column: 38, scope: !3084) +!3084 = distinct !DILexicalBlock(scope: !3081, file: !3, line: 1412, column: 35) +!3085 = !DILocation(line: 1415, column: 9, scope: !3084) +!3086 = !DILocation(line: 1415, column: 36, scope: !3084) +!3087 = !DILocation(line: 1416, column: 41, scope: !3084) +!3088 = !DILocation(line: 1416, column: 9, scope: !3084) +!3089 = !DILocation(line: 1416, column: 39, scope: !3084) +!3090 = !DILocation(line: 1417, column: 7, scope: !3084) +!3091 = !DILocation(line: 1412, column: 31, scope: !3081) +!3092 = !DILocation(line: 1412, column: 7, scope: !3081) +!3093 = distinct !{!3093, !3082, !3094} +!3094 = !DILocation(line: 1417, column: 7, scope: !3077) +!3095 = !DILocation(line: 1418, column: 5, scope: !3078) +!3096 = !DILocation(line: 1408, column: 29, scope: !3074) +!3097 = !DILocation(line: 1408, column: 5, scope: !3074) +!3098 = distinct !{!3098, !3075, !3099} +!3099 = !DILocation(line: 1418, column: 5, scope: !3071) +!3100 = !DILocation(line: 1421, column: 7, scope: !3101) +!3101 = distinct !DILexicalBlock(scope: !2989, file: !3, line: 1421, column: 7) +!3102 = !DILocation(line: 1421, column: 7, scope: !2989) +!3103 = !DILocation(line: 1421, column: 16, scope: !3101) +!3104 = !DILocation(line: 1422, column: 1, scope: !2989) +!3105 = distinct !DISubprogram(name: "rep_nrm", scope: !3, file: !3, line: 1344, type: !3106, scopeLine: 1345, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !3108) +!3106 = !DISubroutineType(types: !3107) +!3107 = !{null, !12, !15, !15, !15, !130, !15} +!3108 = !{!3109, !3110, !3111, !3112, !3113, !3114, !3115, !3116} +!3109 = !DILocalVariable(name: "u", arg: 1, scope: !3105, file: !3, line: 1344, type: !12) +!3110 = !DILocalVariable(name: "n1", arg: 2, scope: !3105, file: !3, line: 1344, type: !15) +!3111 = !DILocalVariable(name: "n2", arg: 3, scope: !3105, file: !3, line: 1344, type: !15) +!3112 = !DILocalVariable(name: "n3", arg: 4, scope: !3105, file: !3, line: 1344, type: !15) +!3113 = !DILocalVariable(name: "title", arg: 5, scope: !3105, file: !3, line: 1344, type: !130) +!3114 = !DILocalVariable(name: "kk", arg: 6, scope: !3105, file: !3, line: 1344, type: !15) +!3115 = !DILocalVariable(name: "rnm2", scope: !3105, file: !3, line: 1346, type: !13) +!3116 = !DILocalVariable(name: "rnmu", scope: !3105, file: !3, line: 1346, type: !13) +!3117 = !DILocation(line: 0, scope: !3105) +!3118 = !DILocation(line: 1346, column: 3, scope: !3105) +!3119 = !DILocation(line: 1346, column: 10, scope: !3105) +!3120 = !DILocation(line: 1346, column: 16, scope: !3105) +!3121 = !DILocation(line: 1348, column: 40, scope: !3105) +!3122 = !DILocation(line: 1348, column: 48, scope: !3105) +!3123 = !DILocation(line: 1348, column: 56, scope: !3105) +!3124 = !DILocation(line: 1348, column: 3, scope: !3105) +!3125 = !DILocation(line: 1349, column: 66, scope: !3105) +!3126 = !DILocation(line: 1349, column: 72, scope: !3105) +!3127 = !DILocation(line: 1349, column: 3, scope: !3105) +!3128 = !DILocation(line: 1350, column: 1, scope: !3105) +!3129 = distinct !DISubprogram(name: "showall", scope: !3, file: !3, line: 1665, type: !1039, scopeLine: 1666, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !3130) +!3130 = !{!3131, !3132, !3133, !3134, !3135, !3136, !3137, !3138, !3139, !3140} +!3131 = !DILocalVariable(name: "oz", arg: 1, scope: !3129, file: !3, line: 1665, type: !12) +!3132 = !DILocalVariable(name: "n1", arg: 2, scope: !3129, file: !3, line: 1665, type: !15) +!3133 = !DILocalVariable(name: "n2", arg: 3, scope: !3129, file: !3, line: 1665, type: !15) +!3134 = !DILocalVariable(name: "n3", arg: 4, scope: !3129, file: !3, line: 1665, type: !15) +!3135 = !DILocalVariable(name: "i1", scope: !3129, file: !3, line: 1669, type: !15) +!3136 = !DILocalVariable(name: "i2", scope: !3129, file: !3, line: 1669, type: !15) +!3137 = !DILocalVariable(name: "i3", scope: !3129, file: !3, line: 1669, type: !15) +!3138 = !DILocalVariable(name: "m1", scope: !3129, file: !3, line: 1670, type: !15) +!3139 = !DILocalVariable(name: "m2", scope: !3129, file: !3, line: 1670, type: !15) +!3140 = !DILocalVariable(name: "m3", scope: !3129, file: !3, line: 1670, type: !15) +!3141 = !DILocation(line: 0, scope: !3129) +!3142 = !DILocation(line: 1672, column: 8, scope: !3129) +!3143 = !DILocation(line: 1673, column: 8, scope: !3129) +!3144 = !DILocation(line: 1674, column: 8, scope: !3129) +!3145 = !DILocation(line: 1676, column: 3, scope: !3129) +!3146 = !DILocation(line: 1677, column: 8, scope: !3147) +!3147 = distinct !DILexicalBlock(scope: !3129, file: !3, line: 1677, column: 3) +!3148 = !DILocation(line: 0, scope: !3147) +!3149 = !DILocation(line: 1677, column: 19, scope: !3150) +!3150 = distinct !DILexicalBlock(scope: !3147, file: !3, line: 1677, column: 3) +!3151 = !DILocation(line: 1677, column: 3, scope: !3147) +!3152 = !DILocation(line: 1678, column: 10, scope: !3153) +!3153 = distinct !DILexicalBlock(scope: !3154, file: !3, line: 1678, column: 5) +!3154 = distinct !DILexicalBlock(scope: !3150, file: !3, line: 1677, column: 31) +!3155 = !DILocation(line: 0, scope: !3153) +!3156 = !DILocation(line: 1678, column: 21, scope: !3157) +!3157 = distinct !DILexicalBlock(scope: !3153, file: !3, line: 1678, column: 5) +!3158 = !DILocation(line: 1678, column: 5, scope: !3153) +!3159 = !DILocation(line: 1679, column: 12, scope: !3160) +!3160 = distinct !DILexicalBlock(scope: !3161, file: !3, line: 1679, column: 7) +!3161 = distinct !DILexicalBlock(scope: !3157, file: !3, line: 1678, column: 33) +!3162 = !DILocation(line: 0, scope: !3160) +!3163 = !DILocation(line: 1679, column: 23, scope: !3164) +!3164 = distinct !DILexicalBlock(scope: !3160, file: !3, line: 1679, column: 7) +!3165 = !DILocation(line: 1679, column: 7, scope: !3160) +!3166 = !DILocation(line: 1681, column: 25, scope: !3167) +!3167 = distinct !DILexicalBlock(scope: !3164, file: !3, line: 1679, column: 35) +!3168 = !DILocation(line: 1681, column: 9, scope: !3167) +!3169 = !DILocation(line: 1682, column: 7, scope: !3167) +!3170 = !DILocation(line: 1679, column: 31, scope: !3164) +!3171 = !DILocation(line: 1679, column: 7, scope: !3164) +!3172 = distinct !{!3172, !3165, !3173} +!3173 = !DILocation(line: 1682, column: 7, scope: !3160) +!3174 = !DILocation(line: 1683, column: 7, scope: !3161) +!3175 = !DILocation(line: 1684, column: 5, scope: !3161) +!3176 = !DILocation(line: 1678, column: 29, scope: !3157) +!3177 = !DILocation(line: 1678, column: 5, scope: !3157) +!3178 = distinct !{!3178, !3158, !3179} +!3179 = !DILocation(line: 1684, column: 5, scope: !3153) +!3180 = !DILocation(line: 1685, column: 5, scope: !3154) +!3181 = !DILocation(line: 1686, column: 3, scope: !3154) +!3182 = !DILocation(line: 1677, column: 27, scope: !3150) +!3183 = !DILocation(line: 1677, column: 3, scope: !3150) +!3184 = distinct !{!3184, !3151, !3185} +!3185 = !DILocation(line: 1686, column: 3, scope: !3147) +!3186 = !DILocation(line: 1687, column: 3, scope: !3129) +!3187 = !DILocation(line: 1688, column: 1, scope: !3129) +!3188 = distinct !DISubprogram(name: "power", scope: !3, file: !3, line: 1695, type: !3189, scopeLine: 1696, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !3191) +!3189 = !DISubroutineType(types: !3190) +!3190 = !{!13, !13, !15} +!3191 = !{!3192, !3193, !3194, !3195, !3196, !3197} +!3192 = !DILocalVariable(name: "a", arg: 1, scope: !3188, file: !3, line: 1695, type: !13) +!3193 = !DILocalVariable(name: "n", arg: 2, scope: !3188, file: !3, line: 1695, type: !15) +!3194 = !DILocalVariable(name: "aj", scope: !3188, file: !3, line: 1697, type: !13) +!3195 = !DILocalVariable(name: "nj", scope: !3188, file: !3, line: 1698, type: !15) +!3196 = !DILocalVariable(name: "rdummy", scope: !3188, file: !3, line: 1699, type: !13) +!3197 = !DILocalVariable(name: "power", scope: !3188, file: !3, line: 1700, type: !13) +!3198 = !DILocation(line: 0, scope: !3188) +!3199 = !DILocation(line: 1697, column: 3, scope: !3188) +!3200 = !DILocation(line: 1697, column: 10, scope: !3188) +!3201 = !DILocation(line: 1700, column: 3, scope: !3188) +!3202 = !DILocation(line: 1700, column: 10, scope: !3188) +!3203 = !DILocation(line: 1702, column: 9, scope: !3188) +!3204 = !DILocation(line: 1704, column: 6, scope: !3188) +!3205 = !DILocation(line: 1706, column: 3, scope: !3188) +!3206 = !DILocation(line: 1706, column: 13, scope: !3188) +!3207 = !DILocation(line: 1707, column: 13, scope: !3208) +!3208 = distinct !DILexicalBlock(scope: !3209, file: !3, line: 1707, column: 9) +!3209 = distinct !DILexicalBlock(scope: !3188, file: !3, line: 1706, column: 19) +!3210 = !DILocation(line: 1707, column: 18, scope: !3208) +!3211 = !DILocation(line: 1707, column: 9, scope: !3209) +!3212 = !DILocation(line: 1707, column: 48, scope: !3208) +!3213 = !DILocation(line: 1707, column: 33, scope: !3208) +!3214 = !DILocation(line: 1707, column: 24, scope: !3208) +!3215 = !DILocation(line: 1708, column: 26, scope: !3209) +!3216 = !DILocation(line: 1708, column: 14, scope: !3209) +!3217 = !DILocation(line: 1709, column: 12, scope: !3209) +!3218 = distinct !{!3218, !3205, !3219} +!3219 = !DILocation(line: 1710, column: 3, scope: !3188) +!3220 = !DILocation(line: 1712, column: 10, scope: !3188) +!3221 = !DILocation(line: 1713, column: 1, scope: !3188) +!3222 = !DILocation(line: 1712, column: 3, scope: !3188) +!3223 = distinct !DISubprogram(name: "randlc", scope: !3, file: !3, line: 1425, type: !3224, scopeLine: 1426, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !3226) +!3224 = !DISubroutineType(types: !3225) +!3225 = !{!13, !12, !13} +!3226 = !{!3227, !3228, !3229, !3230, !3231, !3232, !3233, !3234, !3235, !3236, !3237, !3238, !3239, !3240, !3241, !3242} +!3227 = !DILocalVariable(name: "x", arg: 1, scope: !3223, file: !3, line: 1425, type: !12) +!3228 = !DILocalVariable(name: "a", arg: 2, scope: !3223, file: !3, line: 1425, type: !13) +!3229 = !DILocalVariable(name: "r23", scope: !3223, file: !3, line: 1427, type: !1119) +!3230 = !DILocalVariable(name: "r46", scope: !3223, file: !3, line: 1428, type: !1119) +!3231 = !DILocalVariable(name: "t23", scope: !3223, file: !3, line: 1429, type: !1119) +!3232 = !DILocalVariable(name: "t46", scope: !3223, file: !3, line: 1430, type: !1119) +!3233 = !DILocalVariable(name: "t1", scope: !3223, file: !3, line: 1432, type: !13) +!3234 = !DILocalVariable(name: "t2", scope: !3223, file: !3, line: 1432, type: !13) +!3235 = !DILocalVariable(name: "t3", scope: !3223, file: !3, line: 1432, type: !13) +!3236 = !DILocalVariable(name: "t4", scope: !3223, file: !3, line: 1432, type: !13) +!3237 = !DILocalVariable(name: "a1", scope: !3223, file: !3, line: 1432, type: !13) +!3238 = !DILocalVariable(name: "a2", scope: !3223, file: !3, line: 1432, type: !13) +!3239 = !DILocalVariable(name: "x1", scope: !3223, file: !3, line: 1432, type: !13) +!3240 = !DILocalVariable(name: "x2", scope: !3223, file: !3, line: 1432, type: !13) +!3241 = !DILocalVariable(name: "z", scope: !3223, file: !3, line: 1432, type: !13) +!3242 = !DILocalVariable(name: "r", scope: !3223, file: !3, line: 1433, type: !13) +!3243 = !DILocation(line: 0, scope: !3223) +!3244 = !DILocation(line: 1434, column: 12, scope: !3223) +!3245 = !DILocation(line: 1435, column: 8, scope: !3223) +!3246 = !DILocation(line: 1436, column: 16, scope: !3223) +!3247 = !DILocation(line: 1436, column: 10, scope: !3223) +!3248 = !DILocation(line: 1438, column: 15, scope: !3223) +!3249 = !DILocation(line: 1438, column: 12, scope: !3223) +!3250 = !DILocation(line: 1439, column: 8, scope: !3223) +!3251 = !DILocation(line: 1440, column: 8, scope: !3223) +!3252 = !DILocation(line: 1440, column: 17, scope: !3223) +!3253 = !DILocation(line: 1440, column: 11, scope: !3223) +!3254 = !DILocation(line: 1441, column: 11, scope: !3223) +!3255 = !DILocation(line: 1441, column: 21, scope: !3223) +!3256 = !DILocation(line: 1441, column: 16, scope: !3223) +!3257 = !DILocation(line: 1442, column: 19, scope: !3223) +!3258 = !DILocation(line: 1442, column: 8, scope: !3223) +!3259 = !DILocation(line: 1443, column: 16, scope: !3223) +!3260 = !DILocation(line: 1443, column: 10, scope: !3223) +!3261 = !DILocation(line: 1444, column: 12, scope: !3223) +!3262 = !DILocation(line: 1444, column: 21, scope: !3223) +!3263 = !DILocation(line: 1444, column: 16, scope: !3223) +!3264 = !DILocation(line: 1445, column: 19, scope: !3223) +!3265 = !DILocation(line: 1445, column: 8, scope: !3223) +!3266 = !DILocation(line: 1446, column: 17, scope: !3223) +!3267 = !DILocation(line: 1446, column: 11, scope: !3223) +!3268 = !DILocation(line: 1446, column: 6, scope: !3223) +!3269 = !DILocation(line: 1447, column: 14, scope: !3223) +!3270 = !DILocation(line: 1447, column: 11, scope: !3223) +!3271 = !DILocation(line: 1449, column: 3, scope: !3223) +!3272 = distinct !DISubprogram(name: "vranlc", scope: !3, file: !3, line: 1452, type: !3273, scopeLine: 1453, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !3275) +!3273 = !DISubroutineType(types: !3274) +!3274 = !{null, !15, !12, !13, !12} +!3275 = !{!3276, !3277, !3278, !3279, !3280, !3281, !3282, !3283, !3284, !3285, !3286, !3287, !3288, !3289, !3290, !3291, !3292, !3293} +!3276 = !DILocalVariable(name: "n", arg: 1, scope: !3272, file: !3, line: 1452, type: !15) +!3277 = !DILocalVariable(name: "x", arg: 2, scope: !3272, file: !3, line: 1452, type: !12) +!3278 = !DILocalVariable(name: "a", arg: 3, scope: !3272, file: !3, line: 1452, type: !13) +!3279 = !DILocalVariable(name: "y", arg: 4, scope: !3272, file: !3, line: 1452, type: !12) +!3280 = !DILocalVariable(name: "r23", scope: !3272, file: !3, line: 1455, type: !1119) +!3281 = !DILocalVariable(name: "r46", scope: !3272, file: !3, line: 1456, type: !1119) +!3282 = !DILocalVariable(name: "t23", scope: !3272, file: !3, line: 1457, type: !1119) +!3283 = !DILocalVariable(name: "t46", scope: !3272, file: !3, line: 1458, type: !1119) +!3284 = !DILocalVariable(name: "t1", scope: !3272, file: !3, line: 1460, type: !13) +!3285 = !DILocalVariable(name: "t2", scope: !3272, file: !3, line: 1460, type: !13) +!3286 = !DILocalVariable(name: "t3", scope: !3272, file: !3, line: 1460, type: !13) +!3287 = !DILocalVariable(name: "t4", scope: !3272, file: !3, line: 1460, type: !13) +!3288 = !DILocalVariable(name: "a1", scope: !3272, file: !3, line: 1460, type: !13) +!3289 = !DILocalVariable(name: "a2", scope: !3272, file: !3, line: 1460, type: !13) +!3290 = !DILocalVariable(name: "x1", scope: !3272, file: !3, line: 1460, type: !13) +!3291 = !DILocalVariable(name: "x2", scope: !3272, file: !3, line: 1460, type: !13) +!3292 = !DILocalVariable(name: "z", scope: !3272, file: !3, line: 1460, type: !13) +!3293 = !DILocalVariable(name: "i", scope: !3272, file: !3, line: 1462, type: !15) +!3294 = !DILocation(line: 0, scope: !3272) +!3295 = !DILocation(line: 1463, column: 12, scope: !3272) +!3296 = !DILocation(line: 1464, column: 8, scope: !3272) +!3297 = !DILocation(line: 1465, column: 16, scope: !3272) +!3298 = !DILocation(line: 1465, column: 10, scope: !3272) +!3299 = !DILocation(line: 1466, column: 9, scope: !3300) +!3300 = distinct !DILexicalBlock(scope: !3272, file: !3, line: 1466, column: 3) +!3301 = !DILocation(line: 0, scope: !3300) +!3302 = !DILocation(line: 1466, column: 18, scope: !3303) +!3303 = distinct !DILexicalBlock(scope: !3300, file: !3, line: 1466, column: 3) +!3304 = !DILocation(line: 1466, column: 3, scope: !3300) +!3305 = !DILocation(line: 1467, column: 17, scope: !3306) +!3306 = distinct !DILexicalBlock(scope: !3303, file: !3, line: 1466, column: 29) +!3307 = !DILocation(line: 1467, column: 14, scope: !3306) +!3308 = !DILocation(line: 1468, column: 10, scope: !3306) +!3309 = !DILocation(line: 1469, column: 10, scope: !3306) +!3310 = !DILocation(line: 1469, column: 19, scope: !3306) +!3311 = !DILocation(line: 1469, column: 13, scope: !3306) +!3312 = !DILocation(line: 1470, column: 13, scope: !3306) +!3313 = !DILocation(line: 1470, column: 23, scope: !3306) +!3314 = !DILocation(line: 1470, column: 18, scope: !3306) +!3315 = !DILocation(line: 1471, column: 21, scope: !3306) +!3316 = !DILocation(line: 1471, column: 10, scope: !3306) +!3317 = !DILocation(line: 1472, column: 18, scope: !3306) +!3318 = !DILocation(line: 1472, column: 12, scope: !3306) +!3319 = !DILocation(line: 1473, column: 14, scope: !3306) +!3320 = !DILocation(line: 1473, column: 23, scope: !3306) +!3321 = !DILocation(line: 1473, column: 18, scope: !3306) +!3322 = !DILocation(line: 1474, column: 21, scope: !3306) +!3323 = !DILocation(line: 1474, column: 10, scope: !3306) +!3324 = !DILocation(line: 1475, column: 19, scope: !3306) +!3325 = !DILocation(line: 1475, column: 13, scope: !3306) +!3326 = !DILocation(line: 1475, column: 8, scope: !3306) +!3327 = !DILocation(line: 1476, column: 19, scope: !3306) +!3328 = !DILocation(line: 1476, column: 16, scope: !3306) +!3329 = !DILocation(line: 1476, column: 5, scope: !3306) +!3330 = !DILocation(line: 1476, column: 10, scope: !3306) +!3331 = !DILocation(line: 1477, column: 3, scope: !3306) +!3332 = !DILocation(line: 1466, column: 24, scope: !3303) +!3333 = !DILocation(line: 1466, column: 3, scope: !3303) +!3334 = distinct !{!3334, !3304, !3335} +!3335 = !DILocation(line: 1477, column: 3, scope: !3300) +!3336 = !DILocation(line: 1478, column: 1, scope: !3272) +!3337 = distinct !DISubprogram(name: "bubble", scope: !3, file: !3, line: 1719, type: !3338, scopeLine: 1721, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !3345) +!3338 = !DISubroutineType(types: !3339) +!3339 = !{null, !3340, !3343, !3343, !3343, !15, !15} +!3340 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !3341, size: 64) +!3341 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 128, elements: !3342) +!3342 = !{!1124} +!3343 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !3344, size: 64) +!3344 = !DICompositeType(tag: DW_TAG_array_type, baseType: !15, size: 64, elements: !3342) +!3345 = !{!3346, !3347, !3348, !3349, !3350, !3351, !3352, !3353, !3354} +!3346 = !DILocalVariable(name: "ten", arg: 1, scope: !3337, file: !3, line: 1719, type: !3340) +!3347 = !DILocalVariable(name: "j1", arg: 2, scope: !3337, file: !3, line: 1719, type: !3343) +!3348 = !DILocalVariable(name: "j2", arg: 3, scope: !3337, file: !3, line: 1719, type: !3343) +!3349 = !DILocalVariable(name: "j3", arg: 4, scope: !3337, file: !3, line: 1719, type: !3343) +!3350 = !DILocalVariable(name: "m", arg: 5, scope: !3337, file: !3, line: 1720, type: !15) +!3351 = !DILocalVariable(name: "ind", arg: 6, scope: !3337, file: !3, line: 1720, type: !15) +!3352 = !DILocalVariable(name: "temp", scope: !3337, file: !3, line: 1722, type: !13) +!3353 = !DILocalVariable(name: "i", scope: !3337, file: !3, line: 1723, type: !15) +!3354 = !DILocalVariable(name: "j_temp", scope: !3337, file: !3, line: 1723, type: !15) +!3355 = !DILocation(line: 0, scope: !3337) +!3356 = !DILocation(line: 1725, column: 11, scope: !3357) +!3357 = distinct !DILexicalBlock(scope: !3337, file: !3, line: 1725, column: 7) +!3358 = !DILocation(line: 1725, column: 7, scope: !3337) +!3359 = !DILocation(line: 1726, column: 10, scope: !3360) +!3360 = distinct !DILexicalBlock(scope: !3361, file: !3, line: 1726, column: 5) +!3361 = distinct !DILexicalBlock(scope: !3357, file: !3, line: 1725, column: 17) +!3362 = !DILocation(line: 0, scope: !3360) +!3363 = !DILocation(line: 1726, column: 22, scope: !3364) +!3364 = distinct !DILexicalBlock(scope: !3360, file: !3, line: 1726, column: 5) +!3365 = !DILocation(line: 1726, column: 19, scope: !3364) +!3366 = !DILocation(line: 1726, column: 5, scope: !3360) +!3367 = !DILocation(line: 1727, column: 11, scope: !3368) +!3368 = distinct !DILexicalBlock(scope: !3369, file: !3, line: 1727, column: 11) +!3369 = distinct !DILexicalBlock(scope: !3364, file: !3, line: 1726, column: 31) +!3370 = !DILocation(line: 1727, column: 30, scope: !3368) +!3371 = !DILocation(line: 1727, column: 25, scope: !3368) +!3372 = !DILocation(line: 1727, column: 23, scope: !3368) +!3373 = !DILocation(line: 1727, column: 11, scope: !3369) +!3374 = !DILocation(line: 1728, column: 21, scope: !3375) +!3375 = distinct !DILexicalBlock(scope: !3368, file: !3, line: 1727, column: 40) +!3376 = !DILocation(line: 1728, column: 16, scope: !3375) +!3377 = !DILocation(line: 1729, column: 25, scope: !3375) +!3378 = !DILocation(line: 1729, column: 14, scope: !3375) +!3379 = !DILocation(line: 1729, column: 9, scope: !3375) +!3380 = !DILocation(line: 1729, column: 23, scope: !3375) +!3381 = !DILocation(line: 1730, column: 9, scope: !3375) +!3382 = !DILocation(line: 1730, column: 21, scope: !3375) +!3383 = !DILocation(line: 1732, column: 22, scope: !3375) +!3384 = !DILocation(line: 1732, column: 18, scope: !3375) +!3385 = !DILocation(line: 1733, column: 24, scope: !3375) +!3386 = !DILocation(line: 1733, column: 13, scope: !3375) +!3387 = !DILocation(line: 1733, column: 9, scope: !3375) +!3388 = !DILocation(line: 1733, column: 22, scope: !3375) +!3389 = !DILocation(line: 1734, column: 9, scope: !3375) +!3390 = !DILocation(line: 1734, column: 20, scope: !3375) +!3391 = !DILocation(line: 1736, column: 22, scope: !3375) +!3392 = !DILocation(line: 1736, column: 18, scope: !3375) +!3393 = !DILocation(line: 1737, column: 24, scope: !3375) +!3394 = !DILocation(line: 1737, column: 13, scope: !3375) +!3395 = !DILocation(line: 1737, column: 9, scope: !3375) +!3396 = !DILocation(line: 1737, column: 22, scope: !3375) +!3397 = !DILocation(line: 1738, column: 9, scope: !3375) +!3398 = !DILocation(line: 1738, column: 20, scope: !3375) +!3399 = !DILocation(line: 1740, column: 22, scope: !3375) +!3400 = !DILocation(line: 1740, column: 18, scope: !3375) +!3401 = !DILocation(line: 1741, column: 24, scope: !3375) +!3402 = !DILocation(line: 1741, column: 13, scope: !3375) +!3403 = !DILocation(line: 1741, column: 9, scope: !3375) +!3404 = !DILocation(line: 1741, column: 22, scope: !3375) +!3405 = !DILocation(line: 1742, column: 9, scope: !3375) +!3406 = !DILocation(line: 1742, column: 20, scope: !3375) +!3407 = !DILocation(line: 1743, column: 7, scope: !3375) +!3408 = !DILocation(line: 1744, column: 9, scope: !3409) +!3409 = distinct !DILexicalBlock(scope: !3368, file: !3, line: 1743, column: 14) +!3410 = !DILocation(line: 1746, column: 5, scope: !3369) +!3411 = !DILocation(line: 1726, column: 27, scope: !3364) +!3412 = !DILocation(line: 1726, column: 5, scope: !3364) +!3413 = distinct !{!3413, !3366, !3414} +!3414 = !DILocation(line: 1746, column: 5, scope: !3360) +!3415 = !DILocation(line: 1747, column: 3, scope: !3361) +!3416 = !DILocation(line: 1748, column: 10, scope: !3417) +!3417 = distinct !DILexicalBlock(scope: !3418, file: !3, line: 1748, column: 5) +!3418 = distinct !DILexicalBlock(scope: !3357, file: !3, line: 1747, column: 10) +!3419 = !DILocation(line: 0, scope: !3417) +!3420 = !DILocation(line: 1748, column: 22, scope: !3421) +!3421 = distinct !DILexicalBlock(scope: !3417, file: !3, line: 1748, column: 5) +!3422 = !DILocation(line: 1748, column: 19, scope: !3421) +!3423 = !DILocation(line: 1748, column: 5, scope: !3417) +!3424 = !DILocation(line: 1749, column: 11, scope: !3425) +!3425 = distinct !DILexicalBlock(scope: !3426, file: !3, line: 1749, column: 11) +!3426 = distinct !DILexicalBlock(scope: !3421, file: !3, line: 1748, column: 31) +!3427 = !DILocation(line: 1749, column: 30, scope: !3425) +!3428 = !DILocation(line: 1749, column: 25, scope: !3425) +!3429 = !DILocation(line: 1749, column: 23, scope: !3425) +!3430 = !DILocation(line: 1749, column: 11, scope: !3426) +!3431 = !DILocation(line: 1751, column: 21, scope: !3432) +!3432 = distinct !DILexicalBlock(scope: !3425, file: !3, line: 1749, column: 40) +!3433 = !DILocation(line: 1751, column: 16, scope: !3432) +!3434 = !DILocation(line: 1752, column: 25, scope: !3432) +!3435 = !DILocation(line: 1752, column: 14, scope: !3432) +!3436 = !DILocation(line: 1752, column: 9, scope: !3432) +!3437 = !DILocation(line: 1752, column: 23, scope: !3432) +!3438 = !DILocation(line: 1753, column: 9, scope: !3432) +!3439 = !DILocation(line: 1753, column: 21, scope: !3432) +!3440 = !DILocation(line: 1755, column: 22, scope: !3432) +!3441 = !DILocation(line: 1755, column: 18, scope: !3432) +!3442 = !DILocation(line: 1756, column: 24, scope: !3432) +!3443 = !DILocation(line: 1756, column: 13, scope: !3432) +!3444 = !DILocation(line: 1756, column: 9, scope: !3432) +!3445 = !DILocation(line: 1756, column: 22, scope: !3432) +!3446 = !DILocation(line: 1757, column: 9, scope: !3432) +!3447 = !DILocation(line: 1757, column: 20, scope: !3432) +!3448 = !DILocation(line: 1759, column: 22, scope: !3432) +!3449 = !DILocation(line: 1759, column: 18, scope: !3432) +!3450 = !DILocation(line: 1760, column: 24, scope: !3432) +!3451 = !DILocation(line: 1760, column: 13, scope: !3432) +!3452 = !DILocation(line: 1760, column: 9, scope: !3432) +!3453 = !DILocation(line: 1760, column: 22, scope: !3432) +!3454 = !DILocation(line: 1761, column: 9, scope: !3432) +!3455 = !DILocation(line: 1761, column: 20, scope: !3432) +!3456 = !DILocation(line: 1763, column: 22, scope: !3432) +!3457 = !DILocation(line: 1763, column: 18, scope: !3432) +!3458 = !DILocation(line: 1764, column: 24, scope: !3432) +!3459 = !DILocation(line: 1764, column: 13, scope: !3432) +!3460 = !DILocation(line: 1764, column: 9, scope: !3432) +!3461 = !DILocation(line: 1764, column: 22, scope: !3432) +!3462 = !DILocation(line: 1765, column: 9, scope: !3432) +!3463 = !DILocation(line: 1765, column: 20, scope: !3432) +!3464 = !DILocation(line: 1766, column: 7, scope: !3432) +!3465 = !DILocation(line: 1767, column: 9, scope: !3466) +!3466 = distinct !DILexicalBlock(scope: !3425, file: !3, line: 1766, column: 14) +!3467 = !DILocation(line: 1769, column: 5, scope: !3426) +!3468 = !DILocation(line: 1748, column: 27, scope: !3421) +!3469 = !DILocation(line: 1748, column: 5, scope: !3421) +!3470 = distinct !{!3470, !3423, !3471} +!3471 = !DILocation(line: 1769, column: 5, scope: !3417) +!3472 = !DILocation(line: 1771, column: 1, scope: !3337) diff --git a/llvm/test/Analysis/MemUseDefAnalysis/lu.c b/llvm/test/Analysis/MemUseDefAnalysis/lu.c new file mode 100644 index 0000000000000..a44b34745fd5d --- /dev/null +++ b/llvm/test/Analysis/MemUseDefAnalysis/lu.c @@ -0,0 +1,346 @@ +//-------------------------------------------------------------------------// +// // +// This benchmark is a serial C version of the NPB LU code. This C // +// version is developed by the Center for Manycore Programming at Seoul // +// National University and derived from the serial Fortran versions in // +// "NPB3.3-SER" developed by NAS. // +// // +// Permission to use, copy, distribute and modify this software for any // +// purpose with or without fee is hereby granted. This software is // +// provided "as is" without express or implied warranty. // +// // +// Information on NPB 3.3, including the technical report, the original // +// specifications, source code, results and information on how to submit // +// new results, is available at: // +// // +// http://www.nas.nasa.gov/Software/NPB/ // +// // +// Send comments or suggestions for this C version to cmp@aces.snu.ac.kr // +// // +// Center for Manycore Programming // +// School of Computer Science and Engineering // +// Seoul National University // +// Seoul 151-744, Korea // +// // +// E-mail: cmp@aces.snu.ac.kr // +// // +//-------------------------------------------------------------------------// + +//-------------------------------------------------------------------------// +// Authors: Sangmin Seo, Jungwon Kim, Jun Lee, Jeongho Nah, Gangwon Jo, // +// and Jaejin Lee // +//-------------------------------------------------------------------------// + +//-------------------------------------------------------------------------// +//// // +//// The OpenACC C version of the NAS LU code is developed by the // +//// HPCTools Group of University of Houston and derived from the serial // +//// C version developed by SNU and Fortran versions in "NPB3.3-SER" // +//// developed by NAS. // +//// // +//// Permission to use, copy, distribute and modify this software for any // +//// purpose with or without fee is hereby granted. This software is // +//// provided "as is" without express or implied warranty. // +//// // +//// Send comments or suggestions for this OpenACC version to // +//// hpctools@cs.uh.edu // +//// +//// Information on NPB 3.3, including the technical report, the original // +//// specifications, source code, results and information on how to submit // +//// new results, is available at: // +//// // +//// http://www.nas.nasa.gov/Software/NPB/ // +//// // +////-------------------------------------------------------------------------// +// +////-------------------------------------------------------------------------// +//// Authors: Rengan Xu, Sunita Chandrasekaran, Barbara Chapman // +////-------------------------------------------------------------------------// + +//--------------------------------------------------------------------- +// program applu +//--------------------------------------------------------------------- + +//--------------------------------------------------------------------- +// +// driver for the performance evaluation of the solver for +// five coupled parabolic/elliptic partial differential equations. +// +//--------------------------------------------------------------------- + +#include +#include +#include + +#include "applu.incl" +#include "timers.h" +#include "print_results.h" +#include + +//--------------------------------------------------------------------- +// grid +//--------------------------------------------------------------------- +/* common/cgcon/ */ +double dxi, deta, dzeta; +double tx1, tx2, tx3; +double ty1, ty2, ty3; +double tz1, tz2, tz3; +int nx, ny, nz; +int nx0, ny0, nz0; +int ist, iend; +int jst, jend; +int ii1, ii2; +int ji1, ji2; +int ki1, ki2; + +//--------------------------------------------------------------------- +// dissipation +//--------------------------------------------------------------------- +/* common/disp/ */ +double dx1, dx2, dx3, dx4, dx5; +double dy1, dy2, dy3, dy4, dy5; +double dz1, dz2, dz3, dz4, dz5; +double dssp; + +//--------------------------------------------------------------------- +// field variables and residuals +// to improve cache performance, second two dimensions padded by 1 +// for even number sizes only. +// Note: corresponding array (called "v") in routines blts, buts, +// and l2norm are similarly padded +//--------------------------------------------------------------------- +/* common/cvar/ */ +double u[5][ISIZ3][ISIZ2/2*2+1][ISIZ1/2*2+1]; +double rsd[5][ISIZ3][ISIZ2/2*2+1][ISIZ1/2*2+1]; +double frct[5][ISIZ3][ISIZ2/2*2+1][ISIZ1/2*2+1]; +double flux_G[5][ISIZ3][ISIZ2][ISIZ1]; +double qs [ISIZ3][ISIZ2/2*2+1][ISIZ1/2*2+1]; +double rho_i[ISIZ3][ISIZ2/2*2+1][ISIZ1/2*2+1]; + +//--------------------------------------------------------------------- +// output control parameters +//--------------------------------------------------------------------- +/* common/cprcon/ */ +int ipr, inorm; + +//--------------------------------------------------------------------- +// newton-raphson iteration control parameters +//--------------------------------------------------------------------- +/* common/ctscon/ */ +double dt, omega, tolrsd[5], rsdnm[5], errnm[5], frc, ttotal; +int itmax, invert; + +/* common/cjac/ */ +double a[5][5][ISIZ1*ISIZ2]; +double b[5][5][ISIZ1*ISIZ2]; +double c[5][5][ISIZ1*ISIZ2]; +double d[5][5][ISIZ1*ISIZ2]; + +int np[ISIZ1+ISIZ2+ISIZ3-5]; +int indxp[ISIZ1+ISIZ2+ISIZ3-5][ISIZ1*ISIZ2*3/4]; +int jndxp[ISIZ1+ISIZ2+ISIZ3-5][ISIZ1*ISIZ2*3/4]; +double tmat[5][5][ISIZ1*ISIZ2*3/4]; +double tv[5][ISIZ1*ISIZ2*3/4]; +double utmp_G[6][ISIZ2][ISIZ1][ISIZ3]; +double rtmp_G[5][ISIZ2][ISIZ1][ISIZ3]; + +//--------------------------------------------------------------------- +// coefficients of the exact solution +//--------------------------------------------------------------------- +/* common/cexact/ */ +double ce[5][13]; + + +//--------------------------------------------------------------------- +// timers +//--------------------------------------------------------------------- +/* common/timer/ */ +double maxtime; +logical timeron; + +//--------------------------------------------------------------------- +// openMP 4.5 +//--------------------------------------------------------------------- + +void omp_device_mem_init() { + #pragma omp target enter data \ + map (alloc: u) \ + map (alloc: a) \ + map (alloc: b) \ + map (alloc: c) \ + map (alloc: d) \ + map (alloc: flux_G) \ + map (alloc: indxp) \ + map (alloc: jndxp) \ + map (alloc: rho_i) \ + map (alloc: frct) \ + map (alloc: qs) \ + map (alloc: rsd) \ + map (alloc: tmat) \ + map (alloc: tv) \ + map (alloc: utmp_G) \ + map (alloc: rtmp_G) \ + map (alloc: rsdnm) \ + map (to: ce) +} + +void omp_device_mem_delete() { + #pragma omp target exit data \ + map (delete: u) \ + map (delete: a) \ + map (delete: b) \ + map (delete: c) \ + map (delete: d) \ + map (delete: flux_G) \ + map (delete: indxp) \ + map (delete: jndxp) \ + map (delete: rho_i) \ + map (delete: frct) \ + map (delete: qs) \ + map (delete: rsd) \ + map (delete: tmat) \ + map (delete: tv) \ + map (delete: utmp_G) \ + map (delete: rtmp_G) \ + map (delete: ce) \ + map (from: rsdnm) +} // TODO: Change rsdnm to from again + +int main(int argc, char *argv[]) +{ + char Class; + logical verified; + double mflops; + + double t, tmax, trecs[t_last+1]; + int i; + char *t_names[t_last+1]; + + //--------------------------------------------------------------------- + // Setup info for timers + //--------------------------------------------------------------------- + FILE *fp; + if ((fp = fopen("timer.flag", "r")) != NULL) { + timeron = true; + t_names[t_total] = "total"; + t_names[t_rhsx] = "rhsx"; + t_names[t_rhsy] = "rhsy"; + t_names[t_rhsz] = "rhsz"; + t_names[t_rhs] = "rhs"; + t_names[t_jacld] = "jacld"; + t_names[t_blts] = "blts"; + t_names[t_jacu] = "jacu"; + t_names[t_buts] = "buts"; + t_names[t_add] = "add"; + t_names[t_l2norm] = "l2norm"; + fclose(fp); + } else { + timeron = false; + } + + //--------------------------------------------------------------------- + // read input data + //--------------------------------------------------------------------- + read_input(); + //--------------------------------------------------------------------- + // set up domain sizes + //--------------------------------------------------------------------- + domain(); + + //--------------------------------------------------------------------- + // set up coefficients + //--------------------------------------------------------------------- + setcoeff(); + + omp_device_mem_init(); + + //--------------------------------------------------------------------- + // set the boundary values for dependent variables + //--------------------------------------------------------------------- + setbv(); + + //--------------------------------------------------------------------- + // set the initial values for dependent variables + //--------------------------------------------------------------------- + setiv(); +#pragma omp target update to(u[0:5][0:ISIZ3][0:(ISIZ2/2*2+1)][0:(ISIZ1/2*2+1)]) + //--------------------------------------------------------------------- + // compute the forcing term based on prescribed exact solution + //--------------------------------------------------------------------- + erhs(); + + //--------------------------------------------------------------------- + // perform one SSOR iteration to touch all pages + //--------------------------------------------------------------------- + ssor(1); + + //--------------------------------------------------------------------- + // reset the boundary and initial values + //--------------------------------------------------------------------- + setbv(); + setiv(); + #pragma omp target update to(u[0:5][0:ISIZ3][0:(ISIZ2/2*2+1)][0:(ISIZ1/2*2+1)]) + + //--------------------------------------------------------------------- + // perform the SSOR iterations + //--------------------------------------------------------------------- + ssor(itmax); + + + //--------------------------------------------------------------------- + // compute the solution error + //--------------------------------------------------------------------- +#pragma omp target update from(u[0:5][0:ISIZ3][0:(ISIZ2/2*2+1)][0:(ISIZ1/2*2+1)]) + error(); + + //--------------------------------------------------------------------- + // compute the surface integral + //--------------------------------------------------------------------- + pintgr(); + + omp_device_mem_delete(); + + //--------------------------------------------------------------------- + // verification test + //--------------------------------------------------------------------- + verify ( rsdnm, errnm, frc, &Class, &verified ); + mflops = (double)itmax * (1984.77 * (double)nx0 + * (double)ny0 + * (double)nz0 + - 10923.3 * pow(((double)(nx0+ny0+nz0)/3.0), 2.0) + + 27770.9 * (double)(nx0+ny0+nz0)/3.0 + - 144010.0) + / (maxtime*1000000.0); + + print_results("LU", Class, nx0, + ny0, nz0, itmax, + maxtime, mflops, " floating point", verified, + NPBVERSION, COMPILETIME, CS1, CS2, CS3, CS4, CS5, CS6, + "(none)"); + + //--------------------------------------------------------------------- + // More timers + //--------------------------------------------------------------------- + if (timeron) { + for (i = 1; i <= t_last; i++) { + trecs[i] = timer_read(i); + } + tmax = maxtime; + if (tmax == 0.0) tmax = 1.0; + + printf(" SECTION Time (secs)\n"); + for (i = 1; i <= t_last; i++) { + printf(" %-8s:%9.3f (%6.2f%%)\n", + t_names[i], trecs[i], trecs[i]*100./tmax); + if (i == t_rhs) { + t = trecs[t_rhsx] + trecs[t_rhsy] + trecs[t_rhsz]; + printf(" --> %8s:%9.3f (%6.2f%%)\n", "sub-rhs", t, t*100./tmax); + t = trecs[i] - t; + printf(" --> %8s:%9.3f (%6.2f%%)\n", "rest-rhs", t, t*100./tmax); + } + } + } + + return 0; +} + diff --git a/llvm/test/Analysis/MemUseDefAnalysis/mg.c b/llvm/test/Analysis/MemUseDefAnalysis/mg.c new file mode 100644 index 0000000000000..5ddadd7dd7053 --- /dev/null +++ b/llvm/test/Analysis/MemUseDefAnalysis/mg.c @@ -0,0 +1,1798 @@ +//-------------------------------------------------------------------------// +// // +// This benchmark is a serial C version of the NPB MG code. This C // +// version is developed by the Center for Manycore Programming at Seoul // +// National University and derived from the serial Fortran versions in // +// "NPB3.3-SER" developed by NAS. // +// // +// Permission to use, copy, distribute and modify this software for any // +// purpose with or without fee is hereby granted. This software is // +// provided "as is" without express or implied warranty. // +// // +// Information on NPB 3.3, including the technical report, the original // +// specifications, source code, results and information on how to submit // +// new results, is available at: // +// // +// http://www.nas.nasa.gov/Software/NPB/ // +// // +// Send comments or suggestions for this C version to cmp@aces.snu.ac.kr // +// // +// Center for Manycore Programming // +// School of Computer Science and Engineering // +// Seoul National University // +// Seoul 151-744, Korea // +// // +// E-mail: cmp@aces.snu.ac.kr // +// // +//-------------------------------------------------------------------------// + +//-------------------------------------------------------------------------// +// Authors: Sangmin Seo, Jungwon Kim, Jun Lee, Jeongho Nah, Gangwon Jo, // +// and Jaejin Lee // +//-------------------------------------------------------------------------// + +//-------------------------------------------------------------------------// +//// // +//// The OpenACC C version of the NAS MG code is developed by the // +//// HPCTools Group of University of Houston and derived from the serial // +//// C version developed by SNU and Fortran versions in "NPB3.3-SER" // +//// developed by NAS. // +//// // +//// Permission to use, copy, distribute and modify this software for any // +//// purpose with or without fee is hereby granted. This software is // +//// provided "as is" without express or implied warranty. // +//// // +//// Send comments or suggestions for this OpenACC version to // +//// hpctools@cs.uh.edu // +//// +//// Information on NPB 3.3, including the technical report, the original // +//// specifications, source code, results and information on how to submit // +//// new results, is available at: // +//// // +//// http://www.nas.nasa.gov/Software/NPB/ // +//// // +////-------------------------------------------------------------------------// +// +////-------------------------------------------------------------------------// +//// Authors: Rengan Xu, Sunita Chandrasekaran, Barbara Chapman // +////-------------------------------------------------------------------------// + +//--------------------------------------------------------------------- +// program mg +//--------------------------------------------------------------------- + +#include +#include +#include + +#include "globals.h" +//#include "randdp.h" +#include "timers.h" +#include "print_results.h" +#include +#define OPENMP_ALLOC 1 +#undef _OPENACC + +#define I3D(array,n1,n2,i3,i2,i1) (array[(i3)*n2*n1 + (i2)*n1 + (i1)]) + +static void setup(int *n1, int *n2, int *n3); +static void mg3P(double u[], double v[], double r[], + double a[4], double c[4], int n1, int n2, int n3); +static void psinv(double *or, double *ou, int n1, int n2, int n3, + double c[4], int k); +static void resid(double *ou, double *ov, double *or, int n1, int n2, int n3, + double a[4], int k); +static void rprj3(double *or, int m1k, int m2k, int m3k, + double *os, int m1j, int m2j, int m3j, int k); +static void interp(double *oz, int mm1, int mm2, int mm3, + double *ou, int n1, int n2, int n3, int k); +static void norm2u3(double *or, int n1, int n2, int n3, + double *rnm2, double *rnmu, + int nx, int ny, int nz); +static void rep_nrm(double *u, int n1, int n2, int n3, char *title, int kk); +static void comm3(double *ou, int n1, int n2, int n3, int kk); +static void zran3(double *oz, int n1, int n2, int n3, int nx, int ny, int k); +static void showall(double *oz, int n1, int n2, int n3); +static double power(double a, int n); +static void bubble(double ten[][2], int j1[][2], int j2[][2], int j3[][2], + int m, int ind); +static void zero3(double *oz, int n1, int n2, int n3); + + +//-------------------------------------------------------------------------c +// These arrays are in common because they are quite large +// and probably shouldn't be allocated on the stack. They +// are always passed as subroutine args. +//-------------------------------------------------------------------------c +/* commcon /noautom/ */ +/* static double u[NR]; */ +/* static double v[NR]; */ +/* static double r[NR]; */ +static double* u; +static double* v; +static double* r; +int gnr = NR; + +/* common /grid/ */ +static int is1, is2, is3, ie1, ie2, ie3; + + +int main() +{ + u = (double*) malloc(NR*sizeof(double)); + v = (double*) malloc(NR*sizeof(double)); + r = (double*) malloc(NR*sizeof(double)); + //-------------------------------------------------------------------------c + // k is the current level. It is passed down through subroutine args + // and is NOT global. it is the current iteration + //-------------------------------------------------------------------------c + int k, it; + double t, tinit, mflops; + + double a[4], c[4]; + + double rnm2, rnmu, old2, oldu, epsilon; + int n1, n2, n3, nit; + double nn, verify_value, err; + logical verified; + + int i; + char *t_names[T_last]; + double tmax; + + for (i = T_init; i < T_last; i++) { + timer_clear(i); + } +#ifdef _OPENACC + acc_init(acc_device_default); +#endif + timer_start(T_init); + + //--------------------------------------------------------------------- + // Read in and broadcast input data + //--------------------------------------------------------------------- + FILE *fp; + if ((fp = fopen("timer.flag", "r")) != NULL) { + timeron = true; + t_names[T_init] = "init"; + t_names[T_bench] = "benchmk"; + t_names[T_mg3P] = "mg3P"; + t_names[T_psinv] = "psinv"; + t_names[T_resid] = "resid"; + t_names[T_rprj3] = "rprj3"; + t_names[T_interp] = "interp"; + t_names[T_norm2] = "norm2"; + t_names[T_comm3] = "comm3"; + fclose(fp); + } else { + timeron = false; + } + + printf("\n\n NAS Parallel Benchmarks (NPB3.3-ACC-C) - MG Benchmark\n\n"); + + if ((fp = fopen("mg.input", "r")) != NULL) { + int result; + printf(" Reading from input file mg.input\n"); + result = fscanf(fp, "%d\n", <); + while (fgetc(fp) != '\n'); + result = fscanf(fp, "%d%d%d", &nx[lt], &ny[lt], &nz[lt]); + while (fgetc(fp) != '\n'); + result = fscanf(fp, "%d", &nit); + while (fgetc(fp) != '\n'); + for (i = 0; i <= 7; i++) { + result = fscanf(fp, "%d", &debug_vec[i]); + } + fclose(fp); + } else { + printf(" No input file. Using compiled defaults \n"); + lt = LT_DEFAULT; + nit = NIT_DEFAULT; + nx[lt] = NX_DEFAULT; + ny[lt] = NY_DEFAULT; + nz[lt] = NZ_DEFAULT; + // debug_vec[0] = 1; + for (i = 0; i <= 7; i++) { + debug_vec[i] = DEBUG_DEFAULT; + } + } + + if ( (nx[lt] != ny[lt]) || (nx[lt] != nz[lt]) ) { + Class = 'U'; + } else if ( nx[lt] == 32 && nit == 4 ) { + Class = 'S'; + } else if ( nx[lt] == 128 && nit == 4 ) { + Class = 'W'; + } else if ( nx[lt] == 256 && nit == 4 ) { + Class = 'A'; + } else if ( nx[lt] == 256 && nit == 20 ) { + Class = 'B'; + } else if ( nx[lt] == 512 && nit == 20 ) { + Class = 'C'; + } else if ( nx[lt] == 1024 && nit == 50 ) { + Class = 'D'; + } else if ( nx[lt] == 2048 && nit == 50 ) { + Class = 'E'; + } else { + Class = 'U'; + } + + //--------------------------------------------------------------------- + // Use these for debug info: + //--------------------------------------------------------------------- + // debug_vec(0) = 1 !=> report all norms + // debug_vec(1) = 1 !=> some setup information + // debug_vec(1) = 2 !=> more setup information + // debug_vec(2) = k => at level k or below, show result of resid + // debug_vec(3) = k => at level k or below, show result of psinv + // debug_vec(4) = k => at level k or below, show result of rprj + // debug_vec(5) = k => at level k or below, show result of interp + // debug_vec(6) = 1 => (unused) + // debug_vec(7) = 1 => (unused) + //--------------------------------------------------------------------- + a[0] = -8.0/3.0; + a[1] = 0.0; + a[2] = 1.0/6.0; + a[3] = 1.0/12.0; + + if (Class == 'A' || Class == 'S' || Class =='W') { + //--------------------------------------------------------------------- + // Coefficients for the S(a) smoother + //--------------------------------------------------------------------- + c[0] = -3.0/8.0; + c[1] = +1.0/32.0; + c[2] = -1.0/64.0; + c[3] = 0.0; + } else { + //--------------------------------------------------------------------- + // Coefficients for the S(b) smoother + //--------------------------------------------------------------------- + c[0] = -3.0/17.0; + c[1] = +1.0/33.0; + c[2] = -1.0/61.0; + c[3] = 0.0; + } + lb = 1; + k = lt; + // printf("NR=%u\n", NR); + +#pragma omp target data map(alloc: u[0:gnr]) map(alloc: v[0:gnr]) map(alloc: r[0:gnr]) + { + setup(&n1, &n2, &n3); + zero3(u, n1, n2, n3); + zran3(v, n1, n2, n3, nx[lt], ny[lt], k); + + norm2u3(v, n1, n2, n3, &rnm2, &rnmu, nx[lt], ny[lt], nz[lt]); + + printf(" Size: %4dx%4dx%4d (class %c)\n", nx[lt], ny[lt], nz[lt], Class); + printf(" Iterations: %3d\n", nit); + printf("\n"); + + resid(u, v, r, n1, n2, n3, a, k); + norm2u3(r, n1, n2, n3, &rnm2, &rnmu, nx[lt], ny[lt], nz[lt]); + old2 = rnm2; + oldu = rnmu; + + //--------------------------------------------------------------------- + // One iteration for startup + //--------------------------------------------------------------------- + mg3P(u, v, r, a, c, n1, n2, n3); + resid(u, v, r, n1, n2, n3, a, k); + setup(&n1, &n2, &n3); + zero3(u, n1, n2, n3); + zran3(v, n1, n2, n3, nx[lt], ny[lt], k); + + timer_stop(T_init); + tinit = timer_read(T_init); + + printf(" Initialization time: %15.3f seconds\n\n", tinit); + + for (i = T_bench; i < T_last; i++) { + timer_clear(i); + } + + timer_start(T_bench); + + resid(u, v, r, n1, n2, n3, a, k); + norm2u3(r, n1, n2, n3, &rnm2, &rnmu, nx[lt], ny[lt], nz[lt]); + old2 = rnm2; + oldu = rnmu; + + for (it = 1; it <= nit; it++) { + if ((it == 1) || (it == nit) || ((it % 100) == 0)) { + printf(" iter %3d\n", it); + } + mg3P(u, v, r, a, c, n1, n2, n3); + resid(u, v, r, n1, n2, n3, a, k); + } + + norm2u3(r, n1, n2, n3, &rnm2, &rnmu, nx[lt], ny[lt], nz[lt]); + }/*end acc data*/ + timer_stop(T_bench); + + t = timer_read(T_bench); + + verified = false; + verify_value = 0.0; + + printf("\n Benchmark completed\n"); + + epsilon = 1.0e-8; + if (Class != 'U') { + if (Class == 'S') { + verify_value = 0.5307707005734e-04; + } else if (Class == 'W') { + verify_value = 0.6467329375339e-05; + } else if (Class == 'A') { + verify_value = 0.2433365309069e-05; + } else if (Class == 'B') { + verify_value = 0.1800564401355e-05; + } else if (Class == 'C') { + verify_value = 0.5706732285740e-06; + } else if (Class == 'D') { + verify_value = 0.1583275060440e-09; + } else if (Class == 'E') { + verify_value = 0.8157592357404e-10; + } + + err = fabs( rnm2 - verify_value ) / verify_value; + printf("EPSILON: %g\n", epsilon); + printf("err: %g, rnm2: %g, verify_value: %g\n", err, rnm2, verify_value); + // err = fabs( rnm2 - verify_value ); + if (err <= epsilon) { + verified = true; + printf(" VERIFICATION SUCCESSFUL\n"); + printf(" L2 Norm is %20.13E\n", rnm2); + printf(" Error is %20.13E\n", err); + } else { + verified = false; + printf(" VERIFICATION FAILED\n"); + printf(" L2 Norm is %20.13E\n", rnm2); + printf(" The correct L2 Norm is %20.13E\n", verify_value); + } + } else { + verified = false; + printf(" Problem size unknown\n"); + printf(" NO VERIFICATION PERFORMED\n"); + printf(" L2 Norm is %20.13E\n", rnm2); + } + + nn = 1.0 * nx[lt] * ny[lt] * nz[lt]; + + if (t != 0.0) { + mflops = 58.0 * nit * nn * 1.0e-6 / t; + } else { + mflops = 0.0; + } + + print_results("MG", Class, nx[lt], ny[lt], nz[lt], + nit, t, + mflops, " floating point", + verified, NPBVERSION, COMPILETIME, + CS1, CS2, CS3, CS4, CS5, CS6, CS7); + + //--------------------------------------------------------------------- + // More timers + //--------------------------------------------------------------------- + if (timeron) { + tmax = timer_read(T_bench); + if (tmax == 0.0) tmax = 1.0; + + printf(" SECTION Time (secs)\n"); + for (i = T_bench; i < T_last; i++) { + t = timer_read(i); + if (i == T_resid2) { + t = timer_read(T_resid) - t; + printf(" --> %8s:%9.3f (%6.2f%%)\n", "mg-resid", t, t*100./tmax); + } else { + printf(" %-8s:%9.3f (%6.2f%%)\n", t_names[i], t, t*100./tmax); + } + } + } +#ifdef _OPENACC + acc_shutdown(acc_device_default); +#endif + return 0; +} + + +static void setup(int *n1, int *n2, int *n3) +{ + int k, j; + + int ax, mi[MAXLEVEL+1][3]; + int ng[MAXLEVEL+1][3]; + + ng[lt][0] = nx[lt]; + ng[lt][1] = ny[lt]; + ng[lt][2] = nz[lt]; + for (k = lt-1; k >= 1; k--) { + for (ax = 0; ax < 3; ax++) { + ng[k][ax] = ng[k+1][ax]/2; + } + } + for (k = lt; k >= 1; k--) { + nx[k] = ng[k][0]; + ny[k] = ng[k][1]; + nz[k] = ng[k][2]; + } + + for (k = lt; k >= 1; k--) { + for (ax = 0; ax < 3; ax++) { + mi[k][ax] = 2 + ng[k][ax]; + } + + m1[k] = mi[k][0]; + m2[k] = mi[k][1]; + m3[k] = mi[k][2]; + } + + k = lt; + is1 = 2 + ng[k][0] - ng[lt][0]; + ie1 = 1 + ng[k][0]; + *n1 = 3 + ie1 - is1; + is2 = 2 + ng[k][1] - ng[lt][1]; + ie2 = 1 + ng[k][1]; + *n2 = 3 + ie2 - is2; + is3 = 2 + ng[k][2] - ng[lt][2]; + ie3 = 1 + ng[k][2]; + *n3 = 3 + ie3 - is3; + + ir[lt] = 0; + for (j = lt-1; j >= 1; j--) { + ir[j] = ir[j+1]+ONE*m1[j+1]*m2[j+1]*m3[j+1]; + } + + if (debug_vec[1] >= 1) { + printf(" in setup, \n"); + printf(" k lt nx ny nz n1 n2 n3 is1 is2 is3 ie1 ie2 ie3\n"); + printf("%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d\n", + k,lt,ng[k][0],ng[k][1],ng[k][2],*n1,*n2,*n3,is1,is2,is3,ie1,ie2,ie3); + } +} + + +//--------------------------------------------------------------------- +// multigrid V-cycle routine +//--------------------------------------------------------------------- +static void mg3P(double u[], double v[], double r[], + double a[4], double c[4], int n1, int n2, int n3) +{ + int j, k; + + //--------------------------------------------------------------------- + // down cycle. + // restrict the residual from the find grid to the coarse + //--------------------------------------------------------------------- + for (k = lt; k >= lb+1; k--) { + j = k - 1; + rprj3(&r[ir[k]], m1[k], m2[k], m3[k], + &r[ir[j]], m1[j], m2[j], m3[j], k); + } + + k = lb; + //--------------------------------------------------------------------- + // compute an approximate solution on the coarsest grid + //--------------------------------------------------------------------- + zero3(&u[ir[k]], m1[k], m2[k], m3[k]); + psinv(&r[ir[k]], &u[ir[k]], m1[k], m2[k], m3[k], c, k); + + for (k = lb+1; k <= lt-1; k++) { + j = k - 1; + + //--------------------------------------------------------------------- + // prolongate from level k-1 to k + //--------------------------------------------------------------------- + zero3(&u[ir[k]], m1[k], m2[k], m3[k]); + interp(&u[ir[j]], m1[j], m2[j], m3[j], &u[ir[k]], m1[k], m2[k], m3[k], k); + + //--------------------------------------------------------------------- + // compute residual for level k + //--------------------------------------------------------------------- + resid(&u[ir[k]], &r[ir[k]], &r[ir[k]], m1[k], m2[k], m3[k], a, k); + + //--------------------------------------------------------------------- + // apply smoother + //--------------------------------------------------------------------- + psinv(&r[ir[k]], &u[ir[k]], m1[k], m2[k], m3[k], c, k); + } + + j = lt - 1; + k = lt; + interp(&u[ir[j]], m1[j], m2[j], m3[j], u, n1, n2, n3, k); + resid(u, v, r, n1, n2, n3, a, k); + psinv(r, u, n1, n2, n3, c, k); +} + + +//--------------------------------------------------------------------- +// psinv applies an approximate inverse as smoother: u = u + Cr +// +// This implementation costs 15A + 4M per result, where +// A and M denote the costs of Addition and Multiplication. +// Presuming coefficient c(3) is zero (the NPB assumes this, +// but it is thus not a general case), 2A + 1M may be eliminated, +// resulting in 13A + 3M. +// Note that this vectorizes, and is also fine for cache +// based machines. +//--------------------------------------------------------------------- +static void psinv(double * __restrict__ or, double * __restrict__ ou, int n1, int n2, int n3, double c[4], int k) +{ + /* + double (*r)[n2][n1] = (double (*)[n2][n1])or; + double (*u)[n2][n1] = (double (*)[n2][n1])ou; + */ + int i3, i2, i1; + double c0, c1, c2; + + //double r1[M], r2[M]; + double * __restrict__ r1, * __restrict__ r2; + + c0 = c[0]; + c1 = c[1]; + c2 = c[2]; + +#ifdef _OPENACC + r1 = (double*)acc_malloc(n3*n2*n1*sizeof(double)); + r2 = (double*)acc_malloc(n3*n2*n1*sizeof(double)); +#elif OPENMP_ALLOC + r1 = (double*)omp_target_alloc(n3*n2*n1*sizeof(double), omp_get_default_device()); + r2 = (double*)omp_target_alloc(n3*n2*n1*sizeof(double), omp_get_default_device()); +#else + r1 = (double*)malloc(n3*n2*n1*sizeof(double)); + r2 = (double*)malloc(n3*n2*n1*sizeof(double)); +#endif + + + if (timeron) timer_start(T_psinv); +#pragma omp target map(tofrom: ou[0:n3*n2*n1]) map(tofrom: or[0:n3*n2*n1]) is_device_ptr(r1, r2) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(3) //private(i3,i2,i1) +#endif + for (i3 = 1; i3 < n3-1; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for collapse(2) private(i2,i1) +#endif + for (i2 = 1; i2 < n2-1; i2++) { + for (i1 = 0; i1 < n1; i1++) { + I3D(r1, n1, n2, i3, i2, i1) = I3D(or, n1, n2, i3, i2-1, i1) + I3D(or, n1, n2, i3, i2+1, i1) + + I3D(or, n1, n2, i3-1, i2, i1) + I3D(or, n1, n2, i3+1, i2, i1); + I3D(r2, n1, n2, i3, i2, i1) = I3D(or, n1, n2, i3-1, i2-1, i1) + I3D(or, n1, n2, i3-1, i2+1, i1) + + I3D(or, n1, n2, i3+1, i2-1, i1) + I3D(or, n1, n2, i3+1, i2+1, i1); + /* r1[i1] = r[i3][i2-1][i1] + r[i3][i2+1][i1] */ + /* + r[i3-1][i2][i1] + r[i3+1][i2][i1]; */ + /* r2[i1] = r[i3-1][i2-1][i1] + r[i3-1][i2+1][i1] */ + /* + r[i3+1][i2-1][i1] + r[i3+1][i2+1][i1]; */ + } + } + } +#pragma omp target map(tofrom: ou[0:n3*n2*n1]) map(tofrom: or[0:n3*n2*n1]) is_device_ptr(r1, r2) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(3) //private(i3,i2,i1) +#endif + for (i3 = 1; i3 < n3-1; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for collapse(2) private(i2,i1) +#endif + for (i2 = 1; i2 < n2-1; i2++) { + for (i1 = 1; i1 < n1-1; i1++) { + I3D(ou, n1, n2, i3, i2, i1) = I3D(ou, n1, n2, i3, i2, i1) + + c0 * I3D(or, n1, n2, i3, i2, i1) + + c1 * ( I3D(or, n1, n2, i3, i2, i1-1) + + I3D(or, n1, n2, i3, i2, i1+1) + + I3D(r1, n1, n2, i3, i2, i1) ) + + c2 * ( I3D(r2, n1, n2, i3, i2, i1) + + I3D(r1, n1, n2, i3, i2, i1-1) + + I3D(r1, n1, n2, i3, i2, i1+1)); + /* u[i3][i2][i1] = u[i3][i2][i1] */ + /* + c[0] * r[i3][i2][i1] */ + /* + c[1] * ( r[i3][i2][i1-1] + r[i3][i2][i1+1] */ + /* + r1[i1] ) */ + /* + c[2] * ( r2[i1] + r1[i1-1] + r1[i1+1] ); */ + //-------------------------------------------------------------------- + // Assume c[3] = 0 (Enable line below if c[3] not= 0) + //-------------------------------------------------------------------- + // + c[3] * ( r2[i1-1] + r2[i1+1] ) + //-------------------------------------------------------------------- + } + } + } + if (timeron) timer_stop(T_psinv); +#ifdef _OPENACC + acc_free(r1); + acc_free(r2); +#elif OPENMP_ALLOC + omp_target_free(r1, omp_get_default_device()); + omp_target_free(r2, omp_get_default_device()); +#else + free(r1); + free(r2); +#endif + + //--------------------------------------------------------------------- + // exchange boundary points + //--------------------------------------------------------------------- + //comm3(u, n1, n2, n3, k); + comm3(ou, n1, n2, n3, k); + + if (debug_vec[0] >= 1) { + //rep_nrm(u, n1, n2, n3, " psinv", k); + rep_nrm(ou, n1, n2, n3, " psinv", k); + } + + if (debug_vec[3] >= k) { + //showall(u, n1, n2, n3); + showall(ou, n1, n2, n3); + } +} + + +//--------------------------------------------------------------------- +// resid computes the residual: r = v - Au +// +// This implementation costs 15A + 4M per result, where +// A and M denote the costs of Addition (or Subtraction) and +// Multiplication, respectively. +// Presuming coefficient a(1) is zero (the NPB assumes this, +// but it is thus not a general case), 3A + 1M may be eliminated, +// resulting in 12A + 3M. +// Note that this vectorizes, and is also fine for cache +// based machines. +//--------------------------------------------------------------------- +static void resid(double * ou, double * ov, double * or, int n1, int n2, int n3, + double a[4], int k) +{ + /* + double (*u)[n2][n1] = (double (*)[n2][n1])ou; + double (*v)[n2][n1] = (double (*)[n2][n1])ov; + double (*r)[n2][n1] = (double (*)[n2][n1])or; + */ + int i3, i2, i1; + double a0, a2, a3; + //double u1[M], u2[M]; + double * __restrict__ u1, * __restrict__ u2; + + a0 = a[0]; + a2 = a[2]; + a3 = a[3]; + + if (timeron) timer_start(T_resid); +#ifdef _OPENACC + u1 = (double*)acc_malloc(n3*n2*n1*sizeof(double)); + u2 = (double*)acc_malloc(n3*n2*n1*sizeof(double)); +#elif OPENMP_ALLOC + u1 = (double*)omp_target_alloc(n3*n2*n1*sizeof(double), omp_get_default_device()); + u2 = (double*)omp_target_alloc(n3*n2*n1*sizeof(double), omp_get_default_device()); +#else + u1 = (double*)malloc(n3*n2*n1*sizeof(double)); + u2 = (double*)malloc(n3*n2*n1*sizeof(double)); +#endif + +/* #pragma omp parallel for default(shared) private(i1,i2,i3,u1,u2) */ +#pragma omp target map(tofrom: ou[0:n3*n2*n1]) map(tofrom: ov[0:n3*n2*n1]) map(tofrom: or[0:n3*n2*n1]) is_device_ptr(u1, u2) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(3) //private(i3,i2,i1) +#endif + for (i3 = 1; i3 < n3-1; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for collapse(2) private(i2,i1) +#endif + for (i2 = 1; i2 < n2-1; i2++) { + for (i1 = 0; i1 < n1; i1++) { + I3D(u1, n1, n2, i3, i2, i1) = I3D(ou, n1, n2, i3, i2-1, i1) + I3D(ou, n1, n2, i3, i2+1, i1) + + I3D(ou, n1, n2, i3-1, i2, i1) + I3D(ou, n1, n2, i3+1, i2, i1); + I3D(u2, n1, n2, i3, i2, i1) = I3D(ou, n1, n2, i3-1, i2-1, i1) + I3D(ou, n1, n2, i3-1, i2+1, i1) + + I3D(ou, n1, n2, i3+1, i2-1, i1) + I3D(ou, n1, n2, i3+1, i2+1, i1); + /* u1[i1] = u[i3][i2-1][i1] + u[i3][i2+1][i1] */ + /* + u[i3-1][i2][i1] + u[i3+1][i2][i1]; */ + /* u2[i1] = u[i3-1][i2-1][i1] + u[i3-1][i2+1][i1] */ + /* + u[i3+1][i2-1][i1] + u[i3+1][i2+1][i1]; */ + } + } + } +#pragma omp target map(tofrom: ou[0:n3*n2*n1]) map(tofrom: ov[0:n3*n2*n1]) map(tofrom: or[0:n3*n2*n1]) is_device_ptr(u1, u2) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(3) //private(i3,i2,i1) +#endif + for (i3 = 1; i3 < n3-1; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for collapse(2) private(i2,i1) +#endif + for (i2 = 1; i2 < n2-1; i2++) { + for (i1 = 1; i1 < n1-1; i1++) { + I3D(or, n1, n2, i3, i2, i1) = I3D(ov, n1, n2, i3, i2, i1) + -a0 * I3D(ou, n1, n2, i3, i2, i1) + /* r[i3][i2][i1] = v[i3][i2][i1] */ + /* - a[0] * u[i3][i2][i1] */ + //------------------------------------------------------------------- + // Assume a[1] = 0 (Enable 2 lines below if a[1] not= 0) + //------------------------------------------------------------------- + // - a[1] * ( u[i3][i2][i1-1] + u[i3][i2][i1+1] + // + u1[i1] ) + //------------------------------------------------------------------- + - a2 * ( I3D(u2, n1, n2, i3, i2, i1) + I3D(u1, n1, n2, i3, i2, i1-1) + + I3D(u1, n1, n2, i3, i2, i1+1)) + - a3 * ( I3D(u2, n1, n2, i3, i2, i1-1) + I3D(u2, n1, n2, i3, i2, i1+1)); + /* - a[2] * ( u2[i1] + u1[i1-1] + u1[i1+1] ) */ + /* - a[3] * ( u2[i1-1] + u2[i1+1] ); */ + } + } + } + +#ifdef _OPENACC + acc_free(u1); + acc_free(u2); +#elif OPENMP_ALLOC + omp_target_free(u1, omp_get_default_device()); + omp_target_free(u2, omp_get_default_device()); +#else + free(u1); + free(u2); +#endif + if (timeron) timer_stop(T_resid); + + //--------------------------------------------------------------------- + // exchange boundary data + //--------------------------------------------------------------------- + //comm3(r, n1, n2, n3, k); + comm3(or, n1, n2, n3, k); + + if (debug_vec[0] >= 1) { + //rep_nrm(r, n1, n2, n3, " resid", k); + rep_nrm(or, n1, n2, n3, " resid", k); + } + + if (debug_vec[2] >= k) { + //showall(r, n1, n2, n3); + showall(or, n1, n2, n3); + } +} + + +//--------------------------------------------------------------------- +// rprj3 projects onto the next coarser grid, +// using a trilinear Finite Element projection: s = r' = P r +// +// This implementation costs 20A + 4M per result, where +// A and M denote the costs of Addition and Multiplication. +// Note that this vectorizes, and is also fine for cache +// based machines. +//--------------------------------------------------------------------- +static void rprj3(double *or, int m1k, int m2k, int m3k, + double *os, int m1j, int m2j, int m3j, int k) +{ + /* + double (*r)[m2k][m1k] = (double (*)[m2k][m1k])or; + double (*s)[m2j][m1j] = (double (*)[m2j][m1j])os; + */ + int j3, j2, j1, i3, i2, i1, d1, d2, d3, j; + + //double x1[M], y1[M], x2, y2; + double *x1, *y1, x2, y2; +#ifdef _OPENACC + x1 = (double*)acc_malloc(m3k*m2k*m1k*sizeof(double)); + y1 = (double*)acc_malloc(m3k*m2k*m1k*sizeof(double)); +#elif OPENMP_ALLOC + x1 = (double*)omp_target_alloc(m3k*m2k*m1k*sizeof(double), omp_get_default_device()); + y1 = (double*)omp_target_alloc(m3k*m2k*m1k*sizeof(double), omp_get_default_device()); +#else + x1 = (double*)malloc(m3k*m2k*m1k*sizeof(double)); + y1 = (double*)malloc(m3k*m2k*m1k*sizeof(double)); +#endif + + if (timeron) timer_start(T_rprj3); + if (m1k == 3) { + d1 = 2; + } else { + d1 = 1; + } + + if (m2k == 3) { + d2 = 2; + } else { + d2 = 1; + } + + if (m3k == 3) { + d3 = 2; + } else { + d3 = 1; + } +/* #pragma omp parallel for default(shared) private(j1,j2,j3,i1,i2,i3,x2,y2) */ +#pragma omp target is_device_ptr(x1, y1) map(tofrom: or[0:m3k*m2k*m1k]) map(tofrom: os[0:m3j*m2j*m1j]) +#pragma omp teams distribute parallel for default(shared) private(/*j1,j2,j3,*/i1,i2,i3) collapse(3) + for (j3 = 1; j3 < m3j-1; j3++) { + for (j2 = 1; j2 < m2j-1; j2++) { + for (j1 = 1; j1 < m1j; j1++) { + i3 = 2*j3-d3; + i2 = 2*j2-d2; + i1 = 2*j1-d1; + + I3D(x1, m1k, m2k, i3, i2, i1) = I3D(or, m1k, m2k, i3+1, i2, i1) + I3D(or, m1k, m2k, i3+1, i2+2, i1) + + I3D(or, m1k, m2k, i3, i2+1, i1) + I3D(or, m1k, m2k, i3+2, i2+1, i1); + I3D(y1, m1k, m2k, i3, i2, i1) = I3D(or, m1k, m2k, i3, i2, i1) + I3D(or, m1k, m2k, i3+2, i2, i1) + + I3D(or, m1k, m2k, i3, i2+2, i1) + I3D(or, m1k, m2k, i3+2, i2+2, i1); + + /* x1[i1] = r[i3+1][i2 ][i1] + r[i3+1][i2+2][i1] */ + /* + r[i3 ][i2+1][i1] + r[i3+2][i2+1][i1]; */ + /* y1[i1] = r[i3 ][i2 ][i1] + r[i3+2][i2 ][i1] */ + /* + r[i3 ][i2+2][i1] + r[i3+2][i2+2][i1]; */ + } + } + } +#pragma omp target is_device_ptr(x1, y1) map(tofrom: or[0:m3k*m2k*m1k]) map(tofrom: os[0:m3j*m2j*m1j]) +#pragma omp teams distribute parallel for default(shared) private(/*j1,j2,j3,*/i1,i2,i3,x2,y2) collapse(3) + for (j3 = 1; j3 < m3j-1; j3++) { + for (j2 = 1; j2 < m2j-1; j2++) { + for (j1 = 1; j1 < m1j-1; j1++) { + i3 = 2*j3-d3; + i2 = 2*j2-d2; + i1 = 2*j1-d1; + + y2 = I3D(or, m1k, m2k, i3, i2, i1+1) + I3D(or, m1k, m2k, i3+2, i2, i1+1) + + I3D(or, m1k, m2k, i3, i2+2, i1+1) + I3D(or, m1k, m2k, i3+2, i2+2, i1+1); + x2 = I3D(or, m1k, m2k, i3+1, i2, i1+1) + I3D(or, m1k, m2k, i3+1, i2+2, i1+1) + + I3D(or, m1k, m2k, i3, i2+1, i1+1) + I3D(or, m1k, m2k, i3+2, i2+1, i1+1); + I3D(os, m1j, m2j, j3, j2, j1) = + 0.5 * I3D(or, m1k, m2k, i3+1, i2+1, i1+1) + + 0.25 * (I3D(or, m1k, m2k, i3+1, i2+1, i1) + I3D(or, m1k, m2k, i3+1, i2+1, i1+2) + x2) + + 0.125 * ( I3D(x1, m1k, m2k, i3, i2, i1)+ I3D(x1, m1k, m2k, i3, i2, i1+2) + y2) + + 0.0625 * (I3D(y1, m1k, m2k, i3, i2, i1) + I3D(y1, m1k, m2k, i3, i2, i1+2)); + + /* y2 = r[i3 ][i2 ][i1+1] + r[i3+2][i2 ][i1+1] */ + /* + r[i3 ][i2+2][i1+1] + r[i3+2][i2+2][i1+1]; */ + /* x2 = r[i3+1][i2 ][i1+1] + r[i3+1][i2+2][i1+1] */ + /* + r[i3 ][i2+1][i1+1] + r[i3+2][i2+1][i1+1]; */ + /* s[j3][j2][j1] = */ + /* 0.5 * r[i3+1][i2+1][i1+1] */ + /* + 0.25 * (r[i3+1][i2+1][i1] + r[i3+1][i2+1][i1+2] + x2) */ + /* + 0.125 * (x1[i1] + x1[i1+2] + y2) */ + /* + 0.0625 * (y1[i1] + y1[i1+2]); */ + } + } + } + + if (timeron) timer_stop(T_rprj3); + + j = k-1; + //comm3(s, m1j, m2j, m3j, j); + comm3(os, m1j, m2j, m3j, j); + + if (debug_vec[0] >= 1) { + //rep_nrm(s, m1j, m2j, m3j, " rprj3", k-1); + rep_nrm(os, m1j, m2j, m3j, " rprj3", k-1); + } + + if (debug_vec[4] >= k) { + //showall(s, m1j, m2j, m3j); + showall(os, m1j, m2j, m3j); + } +#ifdef _OPENACC + acc_free(x1); + acc_free(y1); +#elif OPENMP_ALLOC + omp_target_free(x1, omp_get_default_device()); + omp_target_free(y1, omp_get_default_device()); +#else + free(x1); + free(y1); +#endif +} + + +//--------------------------------------------------------------------- +// interp adds the trilinear interpolation of the correction +// from the coarser grid to the current approximation: u = u + Qu' +// +// Observe that this implementation costs 16A + 4M, where +// A and M denote the costs of Addition and Multiplication. +// Note that this vectorizes, and is also fine for cache +// based machines. Vector machines may get slightly better +// performance however, with 8 separate "do i1" loops, rather than 4. +//--------------------------------------------------------------------- +static void interp(double *oz, int mm1, int mm2, int mm3, + double *ou, int n1, int n2, int n3, int k) +{ + /* + double (*z)[mm2][mm1] = (double (*)[mm2][mm1])oz; + double (*u)[n2][n1] = (double (*)[n2][n1])ou; + */ + int i3, i2, i1, d1, d2, d3, t1, t2, t3; + + // note that m = 1037 in globals.h but for this only need to be + // 535 to handle up to 1024^3 + // integer m + // parameter( m=535 ) + //double z1[M], z2[M], z3[M]; + static double *z1, *z2, *z3; + +#ifdef _OPENACC + //if(z1==NULL) + z1 = (double*)acc_malloc(mm3*mm2*mm1*sizeof(double)); + //if(z2==NULL) + z2 = (double*)acc_malloc(mm3*mm2*mm1*sizeof(double)); + //if(z3 == NULL) + z3 = (double*)acc_malloc(mm3*mm2*mm1*sizeof(double)); +#elif OPENMP_ALLOC + z1 = (double*)omp_target_alloc(mm3*mm2*mm1*sizeof(double), omp_get_default_device()); + z2 = (double*)omp_target_alloc(mm3*mm2*mm1*sizeof(double), omp_get_default_device()); + z3 = (double*)omp_target_alloc(mm3*mm2*mm1*sizeof(double), omp_get_default_device()); +#else + z1 = (double*)malloc(mm3*mm2*mm1*sizeof(double)); + z2 = (double*)malloc(mm3*mm2*mm1*sizeof(double)); + z3 = (double*)malloc(mm3*mm2*mm1*sizeof(double)); +#endif + + if (timeron) timer_start(T_interp); + + if (n1 != 3 && n2 != 3 && n3 != 3) { +#pragma omp target is_device_ptr(z1, z2, z3) map(tofrom: oz[0:mm3*mm2*mm1]) map(tofrom: ou[0:n3*n2*n1]) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(3) //private(i3,i2,i1) +#endif + for (i3 = 0; i3 < mm3-1; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for collapse(2) private(i2,i1) +#endif + for (i2 = 0; i2 < mm2-1; i2++) { + for (i1 = 0; i1 < mm1; i1++) { + /* z1[i1] = z[i3][i2+1][i1] + z[i3][i2][i1]; */ + /* z2[i1] = z[i3+1][i2][i1] + z[i3][i2][i1]; */ + /* z3[i1] = z[i3+1][i2+1][i1] + z[i3+1][i2][i1] + z1[i1]; */ + I3D(z1, mm1, mm2, i3, i2, i1) = I3D(oz, mm1, mm2, i3, i2+1, i1) + + I3D(oz, mm1, mm2, i3, i2, i1); + I3D(z2, mm1, mm2, i3, i2, i1) = I3D(oz, mm1, mm2, i3+1, i2, i1) + + I3D(oz, mm1, mm2, i3, i2, i1); + I3D(z3, mm1, mm2, i3, i2, i1) = I3D(oz, mm1, mm2, i3+1, i2+1, i1) + + I3D(oz, mm1, mm2, i3+1, i2, i1) + + I3D(z1, mm1, mm2, i3, i2, i1); + } + } + } +#pragma omp target is_device_ptr(z1, z2, z3) map(tofrom: oz[0:mm3*mm2*mm1]) map(tofrom: ou[0:n3*n2*n1]) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(3) //private(i3,i2,i1) +#endif + for (i3 = 0; i3 < mm3-1; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for collapse(2) private(i2,i1) +#endif + for (i2 = 0; i2 < mm2-1; i2++) { + for (i1 = 0; i1 < mm1-1; i1++) { + /* u[2*i3][2*i2][2*i1] = u[2*i3][2*i2][2*i1] */ + /* + z[i3][i2][i1]; */ + /* u[2*i3][2*i2][2*i1+1] = u[2*i3][2*i2][2*i1+1] */ + /* + 0.5 * (z[i3][i2][i1+1] + z[i3][i2][i1]); */ + I3D(ou, n1, n2, 2*i3, 2*i2, 2*i1) = I3D(ou, n1, n2, 2*i3, 2*i2, 2*i1) + + I3D(oz, mm1, mm2, i3, i2, i1); + I3D(ou, n1, n2, 2*i3, 2*i2, 2*i1+1) = I3D(ou, n1, n2, 2*i3, 2*i2, 2*i1+1) + + 0.5*(I3D(oz, mm1, mm2, i3, i2, i1+1) + + I3D(oz, mm1, mm2, i3, i2, i1)); + } + } + } +#pragma omp target is_device_ptr(z1, z2, z3) map(tofrom: oz[0:mm3*mm2*mm1]) map(tofrom: ou[0:n3*n2*n1]) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(3) //private(i3,i2,i1) +#endif + for (i3 = 0; i3 < mm3-1; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for collapse(2) private(i2,i1) +#endif + for (i2 = 0; i2 < mm2-1; i2++) { + for (i1 = 0; i1 < mm1-1; i1++) { + /* u[2*i3][2*i2+1][2*i1] = u[2*i3][2*i2+1][2*i1] */ + /* + 0.5 * z1[i1]; */ + /* u[2*i3][2*i2+1][2*i1+1] = u[2*i3][2*i2+1][2*i1+1] */ + /* + 0.25 * (z1[i1] + z1[i1+1]); */ + I3D(ou, n1, n2, 2*i3, 2*i2+1, 2*i1) = I3D(ou, n1, n2, 2*i3, 2*i2+1, 2*i1) + + 0.5 * I3D(z1, mm1, mm2, i3, i2, i1); + I3D(ou, n1, n2, 2*i3, 2*i2+1, 2*i1+1) = I3D(ou, n1, n2, 2*i3, 2*i2+1, 2*i1+1) + + 0.25 * (I3D(z1, mm1, mm2, i3, i2, i1) + + I3D(z1, mm1, mm2, i3, i2, i1+1)); + } + } + } +#pragma omp target is_device_ptr(z1, z2, z3) map(tofrom: oz[0:mm3*mm2*mm1]) map(tofrom: ou[0:n3*n2*n1]) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(3) //private(i3,i2,i1) +#endif + for (i3 = 0; i3 < mm3-1; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for collapse(2) private(i2,i1) +#endif + for (i2 = 0; i2 < mm2-1; i2++) { + for (i1 = 0; i1 < mm1-1; i1++) { + /* u[2*i3+1][2*i2][2*i1] = u[2*i3+1][2*i2][2*i1] */ + /* + 0.5 * z2[i1]; */ + /* u[2*i3+1][2*i2][2*i1+1] = u[2*i3+1][2*i2][2*i1+1] */ + /* + 0.25 * (z2[i1] + z2[i1+1]); */ + I3D(ou, n1, n2, 2*i3+1, 2*i2, 2*i1) = I3D(ou, n1, n2, 2*i3+1, 2*i2, 2*i1) + + 0.5 * I3D(z2, mm1, mm2, i3, i2, i1); + I3D(ou, n1, n2, 2*i3+1, 2*i2, 2*i1+1) = I3D(ou, n1, n2, 2*i3+1, 2*i2, 2*i1+1) + + 0.25 * (I3D(z2, mm1, mm2, i3, i2, i1) + + I3D(z2, mm1, mm2, i3, i2, i1+1)); + } + } + } +#pragma omp target is_device_ptr(z1, z2, z3) map(tofrom: oz[0:mm3*mm2*mm1]) map(tofrom: ou[0:n3*n2*n1]) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(3) //private(i3,i2,i1) +#endif + for (i3 = 0; i3 < mm3-1; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for collapse(2) private(i2,i1) +#endif + for (i2 = 0; i2 < mm2-1; i2++) { + for (i1 = 0; i1 < mm1-1; i1++) { + /* u[2*i3+1][2*i2+1][2*i1] = u[2*i3+1][2*i2+1][2*i1] */ + /* + 0.25 * z3[i1]; */ + /* u[2*i3+1][2*i2+1][2*i1+1] = u[2*i3+1][2*i2+1][2*i1+1] */ + /* + 0.125 * (z3[i1] + z3[i1+1]); */ + I3D(ou, n1, n2, 2*i3+1, 2*i2+1, 2*i1) = I3D(ou, n1, n2, 2*i3+1, 2*i2+1, 2*i1) + + 0.25 * I3D(z3, mm1, mm2, i3, i2, i1); + I3D(ou, n1, n2, 2*i3+1, 2*i2+1, 2*i1+1) = I3D(ou, n1, n2, 2*i3+1, 2*i2+1, 2*i1+1) + + 0.125 * (I3D(z3, mm1, mm2, i3, i2, i1) + + I3D(z3, mm1, mm2, i3, i2, i1+1)); + } + } + } + } else { + if (n1 == 3) { + d1 = 2; + t1 = 1; + } else { + d1 = 1; + t1 = 0; + } + + if (n2 == 3) { + d2 = 2; + t2 = 1; + } else { + d2 = 1; + t2 = 0; + } + + if (n3 == 3) { + d3 = 2; + t3 = 1; + } else { + d3 = 1; + t3 = 0; + } + + { +#pragma omp target is_device_ptr(z1, z2, z3) map(tofrom: oz[0:mm3*mm2*mm1]) map(tofrom: ou[0:n3*n2*n1]) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(2) // private(i3,i2,i1) +#endif + for (i3 = d3; i3 <= mm3-1; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for private(i2,i1) +#endif + for (i2 = d2; i2 <= mm2-1; i2++) { + for (i1 = d1; i1 <= mm1-1; i1++) { + /* u[2*i3-d3-1][2*i2-d2-1][2*i1-d1-1] = */ + /* u[2*i3-d3-1][2*i2-d2-1][2*i1-d1-1] */ + /* + z[i3-1][i2-1][i1-1]; */ + I3D(ou, n1, n2, 2*i3-d3-1, 2*i2-d2-1, 2*i1-d1-1) = + I3D(ou, n1, n2, 2*i3-d3-1, 2*i2-d2-1, 2*i1-d1-1) + + I3D(ou, mm1, mm2, i3-1, i2-1, i1-1); + } + for (i1 = 1; i1 <= mm1-1; i1++) { + /* u[2*i3-d3-1][2*i2-d2-1][2*i1-t1-1] = */ + /* u[2*i3-d3-1][2*i2-d2-1][2*i1-t1-1] */ + /* + 0.5 * (z[i3-1][i2-1][i1] + z[i3-1][i2-1][i1-1]); */ + I3D(ou, n1, n2, 2*i3-d3-1, 2*i2-d2-1, 2*i1-t1-1) = + I3D(ou, n1, n2, 2*i3-d3-1, 2*i2-d2-1, 2*i1-t1-1) + + 0.5 * (I3D(oz, mm1, mm2, i3-1, i2-1, i1) + + I3D(oz, mm1, mm2, i3-1, i2-1, i1-1)); + } + } + } +#pragma omp target is_device_ptr(z1, z2, z3) map(tofrom: oz[0:mm3*mm2*mm1]) map(tofrom: ou[0:n3*n2*n1]) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(2) //private(i3,i2,i1) +#endif + for (i3 = d3; i3 <= mm3-1; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for private(i2,i1) +#endif + for (i2 = 1; i2 <= mm2-1; i2++) { + for (i1 = d1; i1 <= mm1-1; i1++) { + /* u[2*i3-d3-1][2*i2-t2-1][2*i1-d1-1] = */ + /* u[2*i3-d3-1][2*i2-t2-1][2*i1-d1-1] */ + /* + 0.5 * (z[i3-1][i2][i1-1] + z[i3-1][i2-1][i1-1]); */ + I3D(ou, n1, n2, 2*i3-d3-1, 2*i2-t2-1, 2*i1-d1-1) = + I3D(ou, n1, n2, 2*i3-d3-1, 2*i2-t2-1, 2*i1-d1-1) + + 0.5 * (I3D(oz, mm1, mm2, i3-1, i2, i1-1) + + I3D(oz, mm1, mm2, i3-1, i2-1, i1-1)); + } + for (i1 = 1; i1 <= mm1-1; i1++) { + /* u[2*i3-d3-1][2*i2-t2-1][2*i1-t1-1] = */ + /* u[2*i3-d3-1][2*i2-t2-1][2*i1-t1-1] */ + /* + 0.25 * (z[i3-1][i2][i1] + z[i3-1][i2-1][i1] */ + /* + z[i3-1][i2][i1-1] + z[i3-1][i2-1][i1-1]); */ + I3D(ou, n1, n2, 2*i3-d3-1, 2*i2-t2-1, 2*i1-t1-1) = + I3D(ou, n1, n2, 2*i3-d3-1, 2*i2-t2-1, 2*i1-t1-1) + + 0.25 * (I3D(oz, mm1, mm2, i3-1, i2, i1) + + I3D(oz, mm1, mm2, i3-1, i2-1, i1) + + I3D(oz, mm1, mm2, i3-1, i2, i1-1) + + I3D(oz, mm1, mm2, i3-1, i2-1, i1-1)); + } + } + } // end target + +#pragma omp target is_device_ptr(z1, z2, z3) map(tofrom: oz[0:mm3*mm2*mm1]) map(tofrom: ou[0:n3*n2*n1]) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(3) //private(i3,i2,i1) +#endif + for (i3 = 1; i3 <= mm3-1; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for collapse(2) private(i2,i1) +#endif + for (i2 = d2; i2 <= mm2-1; i2++) { + for (i1 = d1; i1 <= mm1-1; i1++) { + /* u[2*i3-t3-1][2*i2-d2-1][2*i1-d1-1] = */ + /* u[2*i3-t3-1][2*i2-d2-1][2*i1-d1-1] */ + /* + 0.5 * (z[i3][i2-1][i1-1] + z[i3-1][i2-1][i1-1]); */ + I3D(ou, n1, n2, 2*i3-t3-1, 2*i2-d2-1, 2*i1-d1-1) = + I3D(ou, n1, n2, 2*i3-t3-1, 2*i2-d2-1, 2*i1-d1-1) + + 0.5 * (I3D(oz, mm1, mm2, i3, i2-1, i1-1) + + I3D(oz, mm1, mm2, i3-1, i2-1, i1-1)); + } + } + } +#pragma omp target is_device_ptr(z1, z2, z3) map(tofrom: oz[0:mm3*mm2*mm1]) map(tofrom: ou[0:n3*n2*n1]) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(3) //private(i3,i2,i1) +#endif + for (i3 = 1; i3 <= mm3-1; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for collapse(2) private(i2,i1) +#endif + for (i2 = d2; i2 <= mm2-1; i2++) { + for (i1 = 1; i1 <= mm1-1; i1++) { + /* u[2*i3-t3-1][2*i2-d2-1][2*i1-t1-1] = */ + /* u[2*i3-t3-1][2*i2-d2-1][2*i1-t1-1] */ + /* + 0.25 * (z[i3 ][i2-1][i1] + z[i3 ][i2-1][i1-1] */ + /* + z[i3-1][i2-1][i1] + z[i3-1][i2-1][i1-1]); */ + I3D(ou, n1, n2, 2*i3-t3-1, 2*i2-d2-1, 2*i1-t1-1) = + I3D(ou, n1, n2, 2*i3-t3-1, 2*i2-d2-1, 2*i1-t1-1) + + 0.25 * (I3D(oz, mm1, mm2, i3, i2-1, i1) + + I3D(oz, mm1, mm2, i3, i2-1, i1-1) + + I3D(oz, mm1, mm2, i3-1, i2-1, i1) + + I3D(oz, mm1, mm2, i3-1, i2-1, i1-1)); + } + } + } +#pragma omp target is_device_ptr(z1, z2, z3) map(tofrom: oz[0:mm3*mm2*mm1]) map(tofrom: ou[0:n3*n2*n1]) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(3) //private(i3,i2,i1) +#endif + for (i3 = 1; i3 <= mm3-1; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for collapse(2) private(i2,i1) +#endif + for (i2 = 1; i2 <= mm2-1; i2++) { + for (i1 = d1; i1 <= mm1-1; i1++) { + /* u[2*i3-t3-1][2*i2-t2-1][2*i1-d1-1] = */ + /* u[2*i3-t3-1][2*i2-t2-1][2*i1-d1-1] */ + /* + 0.25 * (z[i3 ][i2][i1-1] + z[i3 ][i2-1][i1-1] */ + /* + z[i3-1][i2][i1-1] + z[i3-1][i2-1][i1-1]); */ + I3D(ou, n1, n2, 2*i3-t3-1, 2*i2-t2-1, 2*i1-d1-1) = + I3D(ou, n1, n2, 2*i3-t3-1, 2*i2-t2-1, 2*i1-d1-1) + + 0.25 * (I3D(oz, mm1, mm2, i3, i2, i1-1) + + I3D(oz, mm1, mm2, i3, i2-1, i1-1) + + I3D(oz, mm1, mm2, i3-1, i2, i1-1) + + I3D(oz, mm1, mm2, i3-1, i2-1, i1-1)); + } + } + } +#pragma omp target is_device_ptr(z1, z2, z3) map(tofrom: oz[0:mm3*mm2*mm1]) map(tofrom: ou[0:n3*n2*n1]) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(3) //private(i3,i2,i1) +#endif + for (i3 = 1; i3 <= mm3-1; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for collapse(2) private(i2,i1) +#endif + for (i2 = 1; i2 <= mm2-1; i2++) { + for (i1 = 1; i1 <= mm1-1; i1++) { + /* u[2*i3-t3-1][2*i2-t2-1][2*i1-t1-1] = */ + /* u[2*i3-t3-1][2*i2-t2-1][2*i1-t1-1] */ + /* + 0.125 * (z[i3 ][i2][i1 ] + z[i3 ][i2-1][i1 ] */ + /* + z[i3 ][i2][i1-1] + z[i3 ][i2-1][i1-1] */ + /* + z[i3-1][i2][i1 ] + z[i3-1][i2-1][i1 ] */ + /* + z[i3-1][i2][i1-1] + z[i3-1][i2-1][i1-1]); */ + I3D(ou, n1, n2, 2*i3-t3-1, 2*i2-t2-1, 2*i1-t1-1) = + I3D(ou, n1, n2, 2*i3-t3-1, 2*i2-t2-1, 2*i1-t1-1) + + 0.125 * (I3D(oz, mm1, mm2, i3, i2, i1) + + I3D(oz, mm1, mm2, i3, i2-1, i1) + + I3D(oz, mm1, mm2, i3, i2, i1-1) + + I3D(oz, mm1, mm2, i3, i2-1, i1-1) + + I3D(oz, mm1, mm2, i3-1, i2, i1) + + I3D(oz, mm1, mm2, i3-1, i2-1, i1) + + I3D(oz, mm1, mm2, i3-1, i2, i1-1) + + I3D(oz, mm1, mm2, i3-1, i2-1, i1-1)); + } + } + } // end target + } + } + + +#ifdef _OPENACC + acc_free(z1); + acc_free(z2); + acc_free(z3); +#elif OPENMP_ALLOC + omp_target_free(z1, omp_get_default_device()); + omp_target_free(z2, omp_get_default_device()); + omp_target_free(z3, omp_get_default_device()); +#else + free(z1); + free(z2); + free(z3); +#endif + if (timeron) timer_stop(T_interp); + + if (debug_vec[0] >= 1) { + //rep_nrm(z, mm1, mm2, mm3, "z: inter", k-1); + //rep_nrm(u, n1, n2, n3, "u: inter", k); + rep_nrm(oz, mm1, mm2, mm3, "z: inter", k-1); + rep_nrm(ou, n1, n2, n3, "u: inter", k); + } + + if (debug_vec[5] >= k) { + //showall(z, mm1, mm2, mm3); + //showall(u, n1, n2, n3); + showall(oz, mm1, mm2, mm3); + showall(ou, n1, n2, n3); + } +} + + +//--------------------------------------------------------------------- +// norm2u3 evaluates approximations to the L2 norm and the +// uniform (or L-infinity or Chebyshev) norm, under the +// assumption that the boundaries are periodic or zero. Add the +// boundaries in with half weight (quarter weight on the edges +// and eighth weight at the corners) for inhomogeneous boundaries. +//--------------------------------------------------------------------- +static void norm2u3(double *or, int n1, int n2, int n3, + double *rnm2, double *rnmu, + int nx, int ny, int nz) +{ + //double (*r)[n2][n1] = (double (*)[n2][n1])or; + + double s, a; + double temp; + int i3, i2, i1; + + double dn; + + if (timeron) timer_start(T_norm2); + dn = 1.0*nx*ny*nz; + + s = 0.0; + *rnmu = 0.0; + temp = *rnmu; + +#pragma omp target map(tofrom: or[0:n3*n2*n1]) map(tofrom: s, temp) + { +#ifndef CRPL_COMP +#pragma omp teams distribute reduction(+:s) reduction(max:temp) private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for reduction(+:s) reduction(max:temp) /*private(i3,i2,i1)*/ collapse(3) +#endif + for (i3 = 1; i3 < n3-1; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for reduction(+:s) reduction(max:temp) private(i2,i1) collapse(2) +#endif + for (i2 = 1; i2 < n2-1; i2++) { + for (i1 = 1; i1 < n1-1; i1++) { + //s = s + pow(r[i3][i2][i1], 2.0); + //a = fabs(r[i3][i2][i1]); + s = s + pow(I3D(or, n1, n2, i3, i2, i1), 2.0); + a = fabs(I3D(or, n1, n2, i3, i2, i1)); + //if (a > temp) temp = a; + temp = max(temp, a); + } + } + } + }/*end acc data*/ + *rnmu = temp; + *rnm2 = sqrt(s / dn); + if (timeron) timer_stop(T_norm2); +} + + +//--------------------------------------------------------------------- +// report on norm +//--------------------------------------------------------------------- +static void rep_nrm(double *u, int n1, int n2, int n3, char *title, int kk) +{ + double rnm2, rnmu; + + norm2u3(u, n1, n2, n3, &rnm2, &rnmu, nx[kk], ny[kk], nz[kk]); + printf(" Level%2d in %8s: norms =%21.14E%21.14E\n", kk, title, rnm2, rnmu); +} + + +//--------------------------------------------------------------------- +// comm3 organizes the communication on all borders +//--------------------------------------------------------------------- +static void comm3(double *ou, int n1, int n2, int n3, int kk) +{ + // double (*u)[n2][n1] = (double (*)[n2][n1])ou; + + int i1, i2, i3; + if (timeron) timer_start(T_comm3); + +/* #pragma omp parallel default(shared) private(i1,i2,i3) */ + { +#pragma omp target map(tofrom:ou[0:n3*n2*n1]) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(2) //private(i3,i2) +#endif + for (i3 = 1; i3 < n3-1; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for private(i2) +#endif + for (i2 = 1; i2 < n2-1; i2++) { + /* u[i3][i2][ 0] = u[i3][i2][n1-2]; */ + /* u[i3][i2][n1-1] = u[i3][i2][ 1]; */ + I3D(ou, n1, n2, i3, i2, 0) = I3D(ou, n1, n2, i3, i2, n1-2); + I3D(ou, n1, n2, i3, i2, n1-1) = I3D(ou, n1, n2, i3, i2, 1); + } + } + +#pragma omp target map(tofrom:ou[0:n3*n2*n1]) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for /*private(i3,i1)*/ collapse(2) +#endif + for (i3 = 1; i3 < n3-1; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for private(i1) +#endif + for (i1 = 0; i1 < n1; i1++) { + /* u[i3][ 0][i1] = u[i3][n2-2][i1]; */ + /* u[i3][n2-1][i1] = u[i3][ 1][i1]; */ + I3D(ou, n1, n2, i3, 0, i1) = I3D(ou, n1, n2, i3, n2-2, i1); + I3D(ou, n1, n2, i3, n2-1, i1) = I3D(ou, n1, n2, i3, 1, i1); + } + } + +/* #pragma omp for nowait */ +#pragma omp target map(tofrom:ou[0:n3*n2*n1]) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i2) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(2) //private(i2,i1) +#endif + for (i2 = 0; i2 < n2; i2++) { +#ifndef CRPL_COMP +#pragma omp parallel for private(i1) +#endif + for (i1 = 0; i1 < n1; i1++) { + /* u[ 0][i2][i1] = u[n3-2][i2][i1]; */ + /* u[n3-1][i2][i1] = u[ 1][i2][i1]; */ + I3D(ou, n1, n2, 0, i2, i1) = I3D(ou, n1, n2, n3-2, i2, i1); + I3D(ou, n1, n2, n3-1, i2, i1) = I3D(ou, n1, n2, 1, i2, i1); + } + } + } + + if (timeron) timer_stop(T_comm3); +} + + +inline __attribute__((always_inline)) double randlc( double *x, double a ) +{ + const double r23 = 1.1920928955078125e-07; + const double r46 = r23 * r23; + const double t23 = 8.388608e+06; + const double t46 = t23 * t23; + + double t1, t2, t3, t4, a1, a2, x1, x2, z; + double r; + t1 = r23 * a; + a1 = (int) t1; + a2 = a - t23 * a1; + + t1 = r23 * (*x); + x1 = (int) t1; + x2 = *x - t23 * x1; + t1 = a1 * x2 + a2 * x1; + t2 = (int) (r23 * t1); + z = t1 - t23 * t2; + t3 = t23 * z + a2 * x2; + t4 = (int) (r46 * t3); + *x = t3 - t46 * t4; + r = r46 * (*x); + + return r; +} + +inline __attribute__((always_inline)) void vranlc( int n, double *x, double a, double y[] ) +{ + + const double r23 = 1.1920928955078125e-07; + const double r46 = r23 * r23; + const double t23 = 8.388608e+06; + const double t46 = t23 * t23; + + double t1, t2, t3, t4, a1, a2, x1, x2, z; + + int i; + t1 = r23 * a; + a1 = (int) t1; + a2 = a - t23 * a1; + for ( i = 0; i < n; i++ ) { + t1 = r23 * (*x); + x1 = (int) t1; + x2 = *x - t23 * x1; + t1 = a1 * x2 + a2 * x1; + t2 = (int) (r23 * t1); + z = t1 - t23 * t2; + t3 = t23 * z + a2 * x2; + t4 = (int) (r46 * t3) ; + *x = t3 - t46 * t4; + y[i] = r46 * (*x); + } +} + +//--------------------------------------------------------------------- +// zran3 loads +1 at ten randomly chosen points, +// loads -1 at a different ten random points, +// and zero elsewhere. +//--------------------------------------------------------------------- +static void zran3(double *oz, int n1, int n2, int n3, int nx, int ny, int k) +{ + //double (*z)[n2][n1] = (double (*)[n2][n1])oz; + + int i0, m0, m1; + + int i1, i2, i3, d1, e1, e2, e3; + double xx, x0, x1, a1, a2, ai; + + const int mm = 10; + const double a = pow(5.0, 13.0); + const double x = 314159265.0; + double ten[mm][2], best; + int i, j1[mm][2], j2[mm][2], j3[mm][2]; + int jg[4][mm][2]; + + double rdummy; + + a1 = power(a, nx); + a2 = power(a, nx*ny); + + //zero3(z, n1, n2, n3); + zero3(oz, n1, n2, n3); + //#pragma acc update host(oz[0:n3*n2*n1]) + /* #pragma omp target update from(oz[0:n3*n2*n1]) */ + i = is1-2+nx*(is2-2+ny*(is3-2)); + + ai = power(a, i); + d1 = ie1 - is1 + 1; + e1 = ie1 - is1 + 2; + e2 = ie2 - is2 + 2; + e3 = ie3 - is3 + 2; + x0 = x; + rdummy = randlc(&x0, ai); + + for (i3 = 1; i3 < e3; i3++) { + x1 = x0; + for (i2 = 1; i2 < e2; i2++) { + xx = x1; + //vranlc(d1, &xx, a, &(z[i3][i2][1])); + vranlc(d1, &xx, a, &(I3D(oz, n1, n2, i3, i2, 1))); + rdummy = randlc(&x1,a1); + } + rdummy = randlc(&x0, a2); + } + + //--------------------------------------------------------------------- + // comm3(z,n1,n2,n3); + // showall(z,n1,n2,n3); + //--------------------------------------------------------------------- + + //--------------------------------------------------------------------- + // each processor looks for twenty candidates + //--------------------------------------------------------------------- + for (i = 0; i < mm; i++) { + ten[i][1] = 0.0; + j1[i][1] = 0; + j2[i][1] = 0; + j3[i][1] = 0; + ten[i][0] = 1.0; + j1[i][0] = 0; + j2[i][0] = 0; + j3[i][0] = 0; + } + + for (i3 = 1; i3 < n3-1; i3++) { + for (i2 = 1; i2 < n2-1; i2++) { + for (i1 = 1; i1 < n1-1; i1++) { + //if (z[i3][i2][i1] > ten[0][1]) { + if(I3D(oz, n1, n2, i3, i2, i1) > ten[0][1]){ + //ten[0][1] = z[i3][i2][i1]; + ten[0][1] = I3D(oz, n1, n2, i3, i2, i1); + j1[0][1] = i1; + j2[0][1] = i2; + j3[0][1] = i3; + bubble(ten, j1, j2, j3, mm, 1); + } + //if (z[i3][i2][i1] < ten[0][0]) { + if (I3D(oz, n1, n2, i3, i2, i1) < ten[0][0]) { + //ten[0][0] = z[i3][i2][i1]; + ten[0][0] = I3D(oz, n1, n2, i3, i2, i1); + j1[0][0] = i1; + j2[0][0] = i2; + j3[0][0] = i3; + bubble(ten, j1, j2, j3, mm, 0); + } + } + } + } + + + //--------------------------------------------------------------------- + // Now which of these are globally best? + //--------------------------------------------------------------------- + i1 = mm - 1; + i0 = mm - 1; + for (i = mm - 1; i >= 0; i--) { + best = 0.0; + if (best < ten[i1][1]) { + jg[0][i][1] = 0; + jg[1][i][1] = is1 - 2 + j1[i1][1]; + jg[2][i][1] = is2 - 2 + j2[i1][1]; + jg[3][i][1] = is3 - 2 + j3[i1][1]; + i1 = i1-1; + } else { + jg[0][i][1] = 0; + jg[1][i][1] = 0; + jg[2][i][1] = 0; + jg[3][i][1] = 0; + } + + best = 1.0; + if (best > ten[i0][0]) { + jg[0][i][0] = 0; + jg[1][i][0] = is1 - 2 + j1[i0][0]; + jg[2][i][0] = is2 - 2 + j2[i0][0]; + jg[3][i][0] = is3 - 2 + j3[i0][0]; + i0 = i0-1; + } else { + jg[0][i][0] = 0; + jg[1][i][0] = 0; + jg[2][i][0] = 0; + jg[3][i][0] = 0; + } + + } + // m1 = i1+1; + // m0 = i0+1; + m1 = 0; + m0 = 0; + +#pragma omp target map(tofrom: oz[0:n3*n2*n1]) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(3) //private(i3,i2,i1) +#endif + for (i3 = 0; i3 < n3; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for collapse(2) private(i2,i1) +#endif + for (i2 = 0; i2 < n2; i2++) { + for (i1 = 0; i1 < n1; i1++) { + //z[i3][i2][i1] = 0.0; + I3D(oz, n1, n2, i3, i2, i1) = 0.0; + } + } + } + +#pragma omp target data map(tofrom: oz[0:n3*n2*n1]) map(to: jg[0:4][0:mm][0:2]) + { +#pragma omp target teams distribute parallel for map(tofrom: oz[0:n3*n2*n1]) map(to: jg[0:4][0:mm][0:2]) //private(i) + for (i = mm-1; i >= m0; i--) { + //z[jg[3][i][0]][jg[2][i][0]][jg[1][i][0]] = -1.0; + i3 = jg[3][i][0]; + i2 = jg[2][i][0]; + i1 = jg[1][i][0]; + I3D(oz, n1, n2, i3, i2, i1) = -1.0; + } + +#pragma omp target teams distribute parallel for map(tofrom: oz[0:n3*n2*n1]) map(to: jg[0:4][0:mm][0:2]) //private(i) + for (i = mm-1; i >= m1; i--) { + //z[jg[3][i][1]][jg[2][i][1]][jg[1][i][1]] = +1.0; + i3 = jg[3][i][1]; + i2 = jg[2][i][1]; + i1 = jg[1][i][1]; + I3D(oz, n1, n2, i3, i2, i1) = +1.0; + } + } + /* #pragma omp target update to(oz[0:n3*n2*n1]) */ + + //comm3(z, n1, n2, n3, k); + comm3(oz, n1, n2, n3, k); + + //--------------------------------------------------------------------- + // showall(z,n1,n2,n3); + //--------------------------------------------------------------------- +} + + +static void showall(double *oz, int n1, int n2, int n3) +{ + //double (*z)[n2][n1] = (double (*)[n2][n1])oz; + + int i1, i2, i3; + int m1, m2, m3; + + m1 = min(n1, 18); + m2 = min(n2, 14); + m3 = min(n3, 18); + + printf(" \n"); + for (i3 = 0; i3 < m3; i3++) { + for (i1 = 0; i1 < m1; i1++) { + for (i2 = 0; i2 < m2; i2++) { + // printf("%6.3f", z[i3][i2][i1]); + printf("%6.3f", I3D(oz, n1, n2, i3, i2, i2)); + } + printf("\n"); + } + printf(" - - - - - - - \n"); + } + printf(" \n"); +} + + +//--------------------------------------------------------------------- +// power raises an integer, disguised as a double +// precision real, to an integer power +//--------------------------------------------------------------------- +static double power(double a, int n) +{ + double aj; + int nj; + double rdummy; + double power; + + power = 1.0; + nj = n; + aj = a; + + while (nj != 0) { + if ((nj % 2) == 1) rdummy = randlc(&power, aj); + rdummy = randlc(&aj, aj); + nj = nj/2; + } + + return power; +} + + +//--------------------------------------------------------------------- +// bubble does a bubble sort in direction dir +//--------------------------------------------------------------------- +static void bubble(double ten[][2], int j1[][2], int j2[][2], int j3[][2], + int m, int ind) +{ + double temp; + int i, j_temp; + + if (ind == 1) { + for (i = 0; i < m-1; i++) { + if (ten[i][ind] > ten[i+1][ind]) { + temp = ten[i+1][ind]; + ten[i+1][ind] = ten[i][ind]; + ten[i][ind] = temp; + + j_temp = j1[i+1][ind]; + j1[i+1][ind] = j1[i][ind]; + j1[i][ind] = j_temp; + + j_temp = j2[i+1][ind]; + j2[i+1][ind] = j2[i][ind]; + j2[i][ind] = j_temp; + + j_temp = j3[i+1][ind]; + j3[i+1][ind] = j3[i][ind]; + j3[i][ind] = j_temp; + } else { + return; + } + } + } else { + for (i = 0; i < m-1; i++) { + if (ten[i][ind] < ten[i+1][ind]) { + + temp = ten[i+1][ind]; + ten[i+1][ind] = ten[i][ind]; + ten[i][ind] = temp; + + j_temp = j1[i+1][ind]; + j1[i+1][ind] = j1[i][ind]; + j1[i][ind] = j_temp; + + j_temp = j2[i+1][ind]; + j2[i+1][ind] = j2[i][ind]; + j2[i][ind] = j_temp; + + j_temp = j3[i+1][ind]; + j3[i+1][ind] = j3[i][ind]; + j3[i][ind] = j_temp; + } else { + return; + } + } + } +} + + +static void zero3(double *oz, int n1, int n2, int n3) +{ + //double (*z)[n2][n1] = (double (*)[n2][n1])oz; + + int i1, i2, i3; + +#pragma omp target map(tofrom: oz[0:n3*n2*n1]) +#ifndef CRPL_COMP +#pragma omp teams distribute private(i3) +#elif CRPL_COMP == 0 +#pragma omp teams distribute parallel for collapse(3) //private(i3,i2,i1) +#endif + for (i3 = 0; i3 < n3; i3++) { +#ifndef CRPL_COMP +#pragma omp parallel for collapse(2) private(i2,i1) +#endif + for (i2 = 0; i2 < n2; i2++) { + for (i1 = 0; i1 < n1; i1++) { + // z[i3][i2][i1] = 0.0; + I3D(oz, n1, n2, i3, i2, i1) = 0.0; + } + } + } +} + diff --git a/llvm/utils/gn/secondary/llvm/lib/Analysis/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/Analysis/BUILD.gn index 0b439ce450c49..206ac25ae337f 100644 --- a/llvm/utils/gn/secondary/llvm/lib/Analysis/BUILD.gn +++ b/llvm/utils/gn/secondary/llvm/lib/Analysis/BUILD.gn @@ -81,6 +81,7 @@ static_library("Analysis") { "ObjCARCAliasAnalysis.cpp", "ObjCARCAnalysisUtils.cpp", "ObjCARCInstKind.cpp", + "OmpDiagnosticsAnalysis.cpp", "OptimizationRemarkEmitter.cpp", "OrderedBasicBlock.cpp", "OrderedInstructions.cpp",