Intel(R) Advisor can now assist with vectorization and show optimization report messages with your source code. See "https://software.intel.com/en-us/intel-advisor-xe" for details. Report from: Interprocedural optimizations [ipo] INLINING OPTION VALUES: -inline-factor: 100 -inline-min-size: 30 -inline-max-size: 230 -inline-max-total-size: 2000 -inline-max-per-routine: 10000 -inline-max-per-compile: 500000 Begin optimization report for: tsunami_lab::patches::WavePropagation::~WavePropagation(tsunami_lab::patches::WavePropagation *) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation::~WavePropagation(tsunami_lab::patches::WavePropagation *)) [1] build/src/patches/WavePropagation.h(33,29) Report from: Code generation optimizations [cg] build/src/patches/WavePropagation.h(33,29):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches15WavePropagationD1Ev] build/src/patches/WavePropagation.h:33 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 1[ rdi] Routine temporaries Total : 8 Global : 0 Local : 8 Regenerable : 0 Spilled : 0 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation::~WavePropagation(tsunami_lab::patches::WavePropagation *const) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation::~WavePropagation(tsunami_lab::patches::WavePropagation *const)) [2] build/src/patches/WavePropagation.h(33,11) -> INLINE: (33,11) tsunami_lab::patches::WavePropagation::~WavePropagation(tsunami_lab::patches::WavePropagation *) Report from: Code generation optimizations [cg] build/src/patches/WavePropagation.h(33,11):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches15WavePropagationD0Ev] build/src/patches/WavePropagation.h:33 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 1[ rdi] Routine temporaries Total : 9 Global : 0 Local : 9 Regenerable : 0 Spilled : 0 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation::WavePropagation(tsunami_lab::patches::WavePropagation *) Report from: Interprocedural optimizations [ipo] DEAD STATIC FUNCTION: (tsunami_lab::patches::WavePropagation::WavePropagation(tsunami_lab::patches::WavePropagation *)) build/src/patches/WavePropagation.h(21,29) =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation::WavePropagation(tsunami_lab::patches::WavePropagation *const) Report from: Interprocedural optimizations [ipo] DEAD STATIC FUNCTION: (tsunami_lab::patches::WavePropagation::WavePropagation(tsunami_lab::patches::WavePropagation *const)) build/src/patches/WavePropagation.h(21,29) =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation2d::handleReflections(tsunami_lab::patches::WavePropagation2d *, tsunami_lab::t_real *, tsunami_lab::t_real *, tsunami_lab::t_idx, tsunami_lab::t_idx, tsunami_lab::t_real &, tsunami_lab::t_real &, tsunami_lab::t_real &, tsunami_lab::t_real &, tsunami_lab::t_real &, tsunami_lab::t_real &) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation2d::handleReflections(tsunami_lab::patches::WavePropagation2d *, tsunami_lab::t_real *, tsunami_lab::t_real *, tsunami_lab::t_idx, tsunami_lab::t_idx, tsunami_lab::t_real &, tsunami_lab::t_real &, tsunami_lab::t_real &, tsunami_lab::t_real &, tsunami_lab::t_real &, tsunami_lab::t_real &)) [5] build/src/patches/WavePropagation2d.cpp(267,1) Report from: Code generation optimizations [cg] build/src/patches/WavePropagation2d.cpp(267,1):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches17WavePropagation2d17handleReflectionsEPfS2_mmRfS3_S3_S3_S3_S3_] build/src/patches/WavePropagation2d.cpp:267 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 10[ rax rdx rcx rsi rdi r8-r10 zmm0-zmm1] Routine temporaries Total : 34 Global : 14 Local : 20 Regenerable : 6 Spilled : 0 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation2d::WavePropagation2d(tsunami_lab::patches::WavePropagation2d *, tsunami_lab::t_idx, tsunami_lab::t_idx, tsunami_lab::patches::WavePropagation::Boundary, tsunami_lab::patches::WavePropagation::Boundary, tsunami_lab::patches::WavePropagation::Boundary, tsunami_lab::patches::WavePropagation::Boundary) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation2d::WavePropagation2d(tsunami_lab::patches::WavePropagation2d *, tsunami_lab::t_idx, tsunami_lab::t_idx, tsunami_lab::patches::WavePropagation::Boundary, tsunami_lab::patches::WavePropagation::Boundary, tsunami_lab::patches::WavePropagation::Boundary, tsunami_lab::patches::WavePropagation::Boundary)) [6] build/src/patches/WavePropagation2d.cpp(18,1) -> INLINE: (12,42) tsunami_lab::patches::WavePropagation::WavePropagation(tsunami_lab::patches::WavePropagation *const) -> INLINE: build/src/patches/WavePropagation.h:(21,29) tsunami_lab::patches::WavePropagation::WavePropagation(tsunami_lab::patches::WavePropagation *) Report from: Loop nest, Vector & Auto-parallelization optimizations [loop, vec, par] LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(12,42) remark #15301: MATERIALIZED LOOP WAS VECTORIZED LOOP END LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(28,3) remark #15344: loop was not vectorized: vector dependence prevents vectorization. First dependence is shown below. Use level 5 report for details remark #25436: completely unrolled by 2 LOOP END LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(37,3) remark #15541: outer loop was not auto-vectorized: consider using SIMD directive LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(39,5) remark #15344: loop was not vectorized: vector dependence prevents vectorization. First dependence is shown below. Use level 5 report for details remark #15346: vector dependence: assumed OUTPUT dependence between this->m_h[l_st][l_ce] (41:7) and this (44:7) remark #25439: unrolled with remainder by 2 LOOP END LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(39,5) LOOP END LOOP END Report from: Code generation optimizations [cg] build/src/patches/WavePropagation2d.cpp(12,42):remark #34000: call to memset implemented inline with stores with proven (alignment, offset): (1, 0) build/src/patches/WavePropagation2d.cpp(12,42):remark #34000: call to memset implemented inline with stores with proven (alignment, offset): (1, 0) build/src/patches/WavePropagation2d.cpp(12,42):remark #34000: call to memset implemented inline with stores with proven (alignment, offset): (1, 0) build/src/patches/WavePropagation2d.cpp(18,1):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches17WavePropagation2dC1EmmNS0_15WavePropagation8BoundaryES3_S3_S3_] build/src/patches/WavePropagation2d.cpp:18 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 15[ rax rdx rcx rbx rbp rsi rdi r8-r11 r13-r15 zmm0] Routine temporaries Total : 66 Global : 38 Local : 28 Regenerable : 4 Spilled : 5 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation2d::WavePropagation2d(tsunami_lab::patches::WavePropagation2d *const, tsunami_lab::t_idx, tsunami_lab::t_idx, tsunami_lab::patches::WavePropagation::Boundary, tsunami_lab::patches::WavePropagation::Boundary, tsunami_lab::patches::WavePropagation::Boundary, tsunami_lab::patches::WavePropagation::Boundary) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation2d::WavePropagation2d(tsunami_lab::patches::WavePropagation2d *const, tsunami_lab::t_idx, tsunami_lab::t_idx, tsunami_lab::patches::WavePropagation::Boundary, tsunami_lab::patches::WavePropagation::Boundary, tsunami_lab::patches::WavePropagation::Boundary, tsunami_lab::patches::WavePropagation::Boundary)) [7] build/src/patches/WavePropagation2d.cpp(12,42) -> INLINE: (12,42) tsunami_lab::patches::WavePropagation2d::WavePropagation2d(tsunami_lab::patches::WavePropagation2d *, tsunami_lab::t_idx, tsunami_lab::t_idx, tsunami_lab::patches::WavePropagation::Boundary, tsunami_lab::patches::WavePropagation::Boundary, tsunami_lab::patches::WavePropagation::Boundary, tsunami_lab::patches::WavePropagation::Boundary) -> INLINE: (12,42) tsunami_lab::patches::WavePropagation::WavePropagation(tsunami_lab::patches::WavePropagation *const) -> INLINE: build/src/patches/WavePropagation.h:(21,29) tsunami_lab::patches::WavePropagation::WavePropagation(tsunami_lab::patches::WavePropagation *) Report from: Loop nest, Vector & Auto-parallelization optimizations [loop, vec, par] LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(12,42) inlined into build/src/patches/WavePropagation2d.cpp(12,42) remark #15301: MATERIALIZED LOOP WAS VECTORIZED LOOP END LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(28,3) inlined into build/src/patches/WavePropagation2d.cpp(12,42) remark #15344: loop was not vectorized: vector dependence prevents vectorization. First dependence is shown below. Use level 5 report for details remark #25436: completely unrolled by 2 LOOP END LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(37,3) inlined into build/src/patches/WavePropagation2d.cpp(12,42) remark #15541: outer loop was not auto-vectorized: consider using SIMD directive LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(39,5) inlined into build/src/patches/WavePropagation2d.cpp(12,42) remark #15344: loop was not vectorized: vector dependence prevents vectorization. First dependence is shown below. Use level 5 report for details remark #15346: vector dependence: assumed OUTPUT dependence between this->m_h[l_st][l_ce] (41:7) and this (44:7) remark #25439: unrolled with remainder by 2 LOOP END LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(39,5) inlined into build/src/patches/WavePropagation2d.cpp(12,42) LOOP END LOOP END Report from: Code generation optimizations [cg] build/src/patches/WavePropagation2d.cpp(12,42):remark #34000: call to memset implemented inline with stores with proven (alignment, offset): (1, 0) build/src/patches/WavePropagation2d.cpp(12,42):remark #34000: call to memset implemented inline with stores with proven (alignment, offset): (1, 0) build/src/patches/WavePropagation2d.cpp(12,42):remark #34000: call to memset implemented inline with stores with proven (alignment, offset): (1, 0) build/src/patches/WavePropagation2d.cpp(12,42):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches17WavePropagation2dC2EmmNS0_15WavePropagation8BoundaryES3_S3_S3_] build/src/patches/WavePropagation2d.cpp:12 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 15[ rax rdx rcx rbx rbp rsi rdi r8-r11 r13-r15 zmm0] Routine temporaries Total : 66 Global : 38 Local : 28 Regenerable : 4 Spilled : 5 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation2d::~WavePropagation2d(tsunami_lab::patches::WavePropagation2d *) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation2d::~WavePropagation2d(tsunami_lab::patches::WavePropagation2d *)) [8] build/src/patches/WavePropagation2d.cpp(50,1) Report from: Loop nest, Vector & Auto-parallelization optimizations [loop, vec, par] LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(51,3) remark #15344: loop was not vectorized: vector dependence prevents vectorization. First dependence is shown below. Use level 5 report for details remark #15346: vector dependence: assumed ANTI dependence between this->m_h[l_st] (53:14) and call:operator delete[](void *) (55:5) remark #25436: completely unrolled by 2 LOOP END Report from: Code generation optimizations [cg] build/src/patches/WavePropagation2d.cpp(50,1):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches17WavePropagation2dD1Ev] build/src/patches/WavePropagation2d.cpp:50 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 2[ rdi r13] Routine temporaries Total : 22 Global : 14 Local : 8 Regenerable : 0 Spilled : 1 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation2d::~WavePropagation2d(tsunami_lab::patches::WavePropagation2d *const) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation2d::~WavePropagation2d(tsunami_lab::patches::WavePropagation2d *const)) [9] build/src/patches/WavePropagation2d.cpp(49,42) -> INLINE: (49,42) tsunami_lab::patches::WavePropagation2d::~WavePropagation2d(tsunami_lab::patches::WavePropagation2d *) Report from: Loop nest, Vector & Auto-parallelization optimizations [loop, vec, par] LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(51,3) inlined into build/src/patches/WavePropagation2d.cpp(49,42) remark #15344: loop was not vectorized: vector dependence prevents vectorization. First dependence is shown below. Use level 5 report for details remark #25436: completely unrolled by 2 LOOP END Report from: Code generation optimizations [cg] build/src/patches/WavePropagation2d.cpp(49,42):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches17WavePropagation2dD0Ev] build/src/patches/WavePropagation2d.cpp:49 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 2[ rdi r15] Routine temporaries Total : 23 Global : 14 Local : 9 Regenerable : 0 Spilled : 1 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation2d::~WavePropagation2d(tsunami_lab::patches::WavePropagation2d *const) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation2d::~WavePropagation2d(tsunami_lab::patches::WavePropagation2d *const)) [10] build/src/patches/WavePropagation2d.cpp(49,42) -> INLINE: (49,42) tsunami_lab::patches::WavePropagation2d::~WavePropagation2d(tsunami_lab::patches::WavePropagation2d *) Report from: Loop nest, Vector & Auto-parallelization optimizations [loop, vec, par] LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(51,3) inlined into build/src/patches/WavePropagation2d.cpp(49,42) remark #15344: loop was not vectorized: vector dependence prevents vectorization. First dependence is shown below. Use level 5 report for details remark #25436: completely unrolled by 2 LOOP END Report from: Code generation optimizations [cg] build/src/patches/WavePropagation2d.cpp(49,42):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches17WavePropagation2dD2Ev] build/src/patches/WavePropagation2d.cpp:49 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 2[ rdi r13] Routine temporaries Total : 22 Global : 14 Local : 8 Regenerable : 0 Spilled : 1 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation2d::timeStep(tsunami_lab::patches::WavePropagation2d *, tsunami_lab::t_real, tsunami_lab::t_real) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation2d::timeStep(tsunami_lab::patches::WavePropagation2d *, tsunami_lab::t_real, tsunami_lab::t_real)) [11] build/src/patches/WavePropagation2d.cpp(62,1) -> INDIRECT- (VIRTUAL): (91,28) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) -> INLINE: (102,7) tsunami_lab::patches::WavePropagation2d::handleReflections(tsunami_lab::patches::WavePropagation2d *, tsunami_lab::t_real *, tsunami_lab::t_real *, tsunami_lab::t_idx, tsunami_lab::t_idx, tsunami_lab::t_real &, tsunami_lab::t_real &, tsunami_lab::t_real &, tsunami_lab::t_real &, tsunami_lab::t_real &, tsunami_lab::t_real &) -> INDIRECT- (VIRTUAL): (157,28) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) -> INDIRECT- (VIRTUAL): (158,29) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) -> INLINE: (168,7) tsunami_lab::patches::WavePropagation2d::handleReflections(tsunami_lab::patches::WavePropagation2d *, tsunami_lab::t_real *, tsunami_lab::t_real *, tsunami_lab::t_idx, tsunami_lab::t_idx, tsunami_lab::t_real &, tsunami_lab::t_real &, tsunami_lab::t_real &, tsunami_lab::t_real &, tsunami_lab::t_real &, tsunami_lab::t_real &) Report from: Loop nest, Vector & Auto-parallelization optimizations [loop, vec, par] LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(74,3) remark #15344: loop was not vectorized: vector dependence prevents vectorization. First dependence is shown below. Use level 5 report for details remark #15346: vector dependence: assumed OUTPUT dependence between l_hNew[l_ce] (76:5) and l_huNewY[l_ce] (78:5) remark #25439: unrolled with remainder by 2 LOOP END LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(74,3) LOOP END Non-optimizable loops: LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(86,3) remark #15543: loop was not vectorized: loop with function call not considered an optimization candidate. LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(88,5) remark #15523: loop was not vectorized: loop control variable l_ec was found, but loop iteration count cannot be computed before executing the loop LOOP END LOOP END LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(152,3) remark #15543: loop was not vectorized: loop with function call not considered an optimization candidate. LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(154,5) remark #15523: loop was not vectorized: loop control variable l_ed was found, but loop iteration count cannot be computed before executing the loop LOOP END LOOP END Report from: Code generation optimizations [cg] build/src/patches/WavePropagation2d.cpp(62,1):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches17WavePropagation2d8timeStepEff] build/src/patches/WavePropagation2d.cpp:62 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 22[ rax rdx rcx rbx rbp rsi rdi r8-r15 zmm0-zmm6] Routine temporaries Total : 143 Global : 59 Local : 84 Regenerable : 15 Spilled : 14 Routine stack Variables : 32 bytes* Reads : 8 [8.38e+01 ~ 2.6%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 64 bytes* Reads : 16 [1.70e+02 ~ 5.4%] Writes : 10 [1.62e+01 ~ 0.5%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation2d::setGhostOutflow(tsunami_lab::patches::WavePropagation2d *) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation2d::setGhostOutflow(tsunami_lab::patches::WavePropagation2d *)) [12] build/src/patches/WavePropagation2d.cpp(219,1) -> INDIRECT- (VIRTUAL): (227,17) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) -> INDIRECT- (VIRTUAL): (243,39) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) -> INDIRECT- (VIRTUAL): (245,52) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) -> INDIRECT- (VIRTUAL): (246,30) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) -> INDIRECT- (VIRTUAL): (247,30) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) -> INDIRECT- (VIRTUAL): (248,26) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) -> INDIRECT- (VIRTUAL): (250,52) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) -> INDIRECT- (VIRTUAL): (251,30) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) -> INDIRECT- (VIRTUAL): (252,30) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) -> INDIRECT- (VIRTUAL): (253,26) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) Report from: Loop nest, Vector & Auto-parallelization optimizations [loop, vec, par] Non-optimizable loops: LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(225,3) remark #15523: loop was not vectorized: loop control variable i was found, but loop iteration count cannot be computed before executing the loop LOOP END LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(240,3) remark #15523: loop was not vectorized: loop control variable i was found, but loop iteration count cannot be computed before executing the loop LOOP END Report from: Code generation optimizations [cg] build/src/patches/WavePropagation2d.cpp(219,1):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches17WavePropagation2d15setGhostOutflowEv] build/src/patches/WavePropagation2d.cpp:219 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 16[ rax rdx rcx rbx rbp rsi rdi r8-r15 zmm0] Routine temporaries Total : 90 Global : 40 Local : 50 Regenerable : 1 Spilled : 7 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 8 bytes* Reads : 2 [1.00e+01 ~ 1.8%] Writes : 1 [9.00e-01 ~ 0.2%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *)) [13] build/src/patches/WavePropagation2d.h(124,3) Report from: Code generation optimizations [cg] build/src/patches/WavePropagation2d.h(124,3):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches17WavePropagation2d9getStrideEv] build/src/patches/WavePropagation2d.h:124 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 2[ rax rdi] Routine temporaries Total : 11 Global : 0 Local : 11 Regenerable : 0 Spilled : 0 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation2d::getHeight(tsunami_lab::patches::WavePropagation2d *) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation2d::getHeight(tsunami_lab::patches::WavePropagation2d *)) [14] build/src/patches/WavePropagation2d.h(134,3) -> INDIRECT- (VIRTUAL): (135,30) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) Report from: Code generation optimizations [cg] build/src/patches/WavePropagation2d.h(134,3):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches17WavePropagation2d9getHeightEv] build/src/patches/WavePropagation2d.h:134 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 5[ rax rdx rcx rdi r14] Routine temporaries Total : 16 Global : 9 Local : 7 Regenerable : 0 Spilled : 1 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation2d::getMomentumX(tsunami_lab::patches::WavePropagation2d *) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation2d::getMomentumX(tsunami_lab::patches::WavePropagation2d *)) [15] build/src/patches/WavePropagation2d.h(144,3) -> INDIRECT- (VIRTUAL): (145,32) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) Report from: Code generation optimizations [cg] build/src/patches/WavePropagation2d.h(144,3):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches17WavePropagation2d12getMomentumXEv] build/src/patches/WavePropagation2d.h:144 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 5[ rax rdx rcx rdi r14] Routine temporaries Total : 16 Global : 9 Local : 7 Regenerable : 0 Spilled : 1 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation2d::getMomentumY(tsunami_lab::patches::WavePropagation2d *) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation2d::getMomentumY(tsunami_lab::patches::WavePropagation2d *)) [16] build/src/patches/WavePropagation2d.h(152,3) -> INDIRECT- (VIRTUAL): (153,32) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) Report from: Code generation optimizations [cg] build/src/patches/WavePropagation2d.h(152,3):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches17WavePropagation2d12getMomentumYEv] build/src/patches/WavePropagation2d.h:152 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 5[ rax rdx rcx rdi r14] Routine temporaries Total : 16 Global : 9 Local : 7 Regenerable : 0 Spilled : 1 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation2d::getBathymetry(tsunami_lab::patches::WavePropagation2d *) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation2d::getBathymetry(tsunami_lab::patches::WavePropagation2d *)) [17] build/src/patches/WavePropagation2d.h(162,3) -> INDIRECT- (VIRTUAL): (163,22) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) Report from: Code generation optimizations [cg] build/src/patches/WavePropagation2d.h(162,3):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches17WavePropagation2d13getBathymetryEv] build/src/patches/WavePropagation2d.h:162 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 4[ rax rdx rdi r15] Routine temporaries Total : 15 Global : 9 Local : 6 Regenerable : 0 Spilled : 1 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation2d::setHeight(tsunami_lab::patches::WavePropagation2d *, tsunami_lab::t_idx, tsunami_lab::t_idx, tsunami_lab::t_real) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation2d::setHeight(tsunami_lab::patches::WavePropagation2d *, tsunami_lab::t_idx, tsunami_lab::t_idx, tsunami_lab::t_real)) [18] build/src/patches/WavePropagation2d.h(176,3) -> INDIRECT- (VIRTUAL): (177,39) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) Report from: Code generation optimizations [cg] build/src/patches/WavePropagation2d.h(176,3):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches17WavePropagation2d9setHeightEmmf] build/src/patches/WavePropagation2d.h:176 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 8[ rax rdx rsi rdi r13-r15 zmm0] Routine temporaries Total : 23 Global : 12 Local : 11 Regenerable : 0 Spilled : 4 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 8 bytes* Reads : 1 [1.00e+00 ~ 2.9%] Writes : 1 [1.00e+00 ~ 2.9%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation2d::setMomentumX(tsunami_lab::patches::WavePropagation2d *, tsunami_lab::t_idx, tsunami_lab::t_idx, tsunami_lab::t_real) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation2d::setMomentumX(tsunami_lab::patches::WavePropagation2d *, tsunami_lab::t_idx, tsunami_lab::t_idx, tsunami_lab::t_real)) [19] build/src/patches/WavePropagation2d.h(190,3) -> INDIRECT- (VIRTUAL): (191,41) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) Report from: Code generation optimizations [cg] build/src/patches/WavePropagation2d.h(190,3):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches17WavePropagation2d12setMomentumXEmmf] build/src/patches/WavePropagation2d.h:190 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 8[ rax rdx rsi rdi r13-r15 zmm0] Routine temporaries Total : 23 Global : 12 Local : 11 Regenerable : 0 Spilled : 4 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 8 bytes* Reads : 1 [1.00e+00 ~ 2.9%] Writes : 1 [1.00e+00 ~ 2.9%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation2d::setMomentumY(tsunami_lab::patches::WavePropagation2d *, tsunami_lab::t_idx, tsunami_lab::t_idx, tsunami_lab::t_real) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation2d::setMomentumY(tsunami_lab::patches::WavePropagation2d *, tsunami_lab::t_idx, tsunami_lab::t_idx, tsunami_lab::t_real)) [20] build/src/patches/WavePropagation2d.h(203,3) -> INDIRECT- (VIRTUAL): (204,41) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) Report from: Code generation optimizations [cg] build/src/patches/WavePropagation2d.h(203,3):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches17WavePropagation2d12setMomentumYEmmf] build/src/patches/WavePropagation2d.h:203 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 8[ rax rdx rsi rdi r13-r15 zmm0] Routine temporaries Total : 23 Global : 12 Local : 11 Regenerable : 0 Spilled : 4 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 8 bytes* Reads : 1 [1.00e+00 ~ 2.9%] Writes : 1 [1.00e+00 ~ 2.9%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation2d::setBathymetry(tsunami_lab::patches::WavePropagation2d *, tsunami_lab::t_idx, tsunami_lab::t_idx, tsunami_lab::t_real) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation2d::setBathymetry(tsunami_lab::patches::WavePropagation2d *, tsunami_lab::t_idx, tsunami_lab::t_idx, tsunami_lab::t_real)) [21] build/src/patches/WavePropagation2d.h(217,3) -> INDIRECT- (VIRTUAL): (218,31) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) Report from: Code generation optimizations [cg] build/src/patches/WavePropagation2d.h(217,3):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches17WavePropagation2d13setBathymetryEmmf] build/src/patches/WavePropagation2d.h:217 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 8[ rax rdx rbx rsi rdi r14-r15 zmm0] Routine temporaries Total : 22 Global : 12 Local : 10 Regenerable : 0 Spilled : 4 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 8 bytes* Reads : 1 [1.00e+00 ~ 3.0%] Writes : 1 [1.00e+00 ~ 3.0%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. =========================================================================== Begin optimization report for: tsunami_lab::patches::WavePropagation2d::adjustWaterHeight(tsunami_lab::patches::WavePropagation2d *) Report from: Interprocedural optimizations [ipo] INLINE REPORT: (tsunami_lab::patches::WavePropagation2d::adjustWaterHeight(tsunami_lab::patches::WavePropagation2d *)) [22] build/src/patches/WavePropagation2d.cpp(287,1) -> INDIRECT- (VIRTUAL): (293,33) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) -> INDIRECT- (VIRTUAL): (293,67) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) -> INDIRECT- (VIRTUAL): (294,37) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) -> INDIRECT- (VIRTUAL): (295,35) tsunami_lab::patches::WavePropagation2d::getStride(tsunami_lab::patches::WavePropagation2d *) (5) Report from: Loop nest, Vector & Auto-parallelization optimizations [loop, vec, par] Non-optimizable loops: LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(288,3) remark #15543: loop was not vectorized: loop with function call not considered an optimization candidate. LOOP BEGIN at build/src/patches/WavePropagation2d.cpp(290,5) remark #15523: loop was not vectorized: loop control variable l_ix was found, but loop iteration count cannot be computed before executing the loop LOOP END LOOP END Report from: Code generation optimizations [cg] build/src/patches/WavePropagation2d.cpp(287,1):remark #34051: REGISTER ALLOCATION : [_ZN11tsunami_lab7patches17WavePropagation2d17adjustWaterHeightEv] build/src/patches/WavePropagation2d.cpp:287 Hardware registers Reserved : 2[ rsp rip] Available : 39[ rax rdx rcx rbx rbp rsi rdi r8-r15 mm0-mm7 zmm0-zmm15] Callee-save : 6[ rbx rbp r12-r15] Assigned : 11[ rax rdx rcx rsi rdi r8 r12-r15 zmm0] Routine temporaries Total : 51 Global : 21 Local : 30 Regenerable : 2 Spilled : 4 Routine stack Variables : 0 bytes* Reads : 0 [0.00e+00 ~ 0.0%] Writes : 0 [0.00e+00 ~ 0.0%] Spills : 32 bytes* Reads : 4 [3.60e+00 ~ 0.3%] Writes : 4 [3.60e+00 ~ 0.3%] Notes *Non-overlapping variables and spills may share stack space, so the total stack size might be less than this. ===========================================================================