| Function: sortAtomsById | Module: exec | Source: haloExchange.c:654-661 | Coverage (incl. loops): 0.06% | (excl. loops): 0.06% |
|---|
| Function: sortAtomsById | Module: exec | Source: haloExchange.c:654-661 | Coverage (incl. loops): 0.06% | (excl. loops): 0.06% |
|---|
/home/hbollore/qaas/qaas-runs/174-108-7908/intel/CoMD/build/CoMD/CoMD/src-openmp/haloExchange.c: 654 - 661 |
-------------------------------------------------------------------------------- |
654: int aId = ((AtomMsg*) a)->gid; |
655: int bId = ((AtomMsg*) b)->gid; |
656: assert(aId != bId); |
657: |
658: if (aId < bId) |
659: return -1; |
660: return 1; |
661: } |
0x4068d0 LDR W8, [X0] |
0x4068d4 LDR W9, [X1] |
0x4068d8 CMP W8, W9 |
0x4068dc B.EQ 4068ec |
0x4068e0 MOVN W8, #0 |
0x4068e4 CSNEG W0, W8, W8, #11 |
0x4068e8 RET |
0x4068ec STP X29, X30, [SP, #1008]! |
0x4068f0 ADD X29, SP, #0 |
0x4068f4 ADRP X0, |
0x4068f8 ADD X0, X0, #2812 |
0x4068fc ADRP X1, |
0x406900 ADD X1, X1, #2358 |
0x406904 ADRP X3, |
0x406908 ADD X3, X3, #2823 |
0x40690c MOVZ W2, #656 |
0x406910 BL 4021f0 |
0x406914 HINT #0 |
0x406918 HINT #0 |
0x40691c HINT #0 |
| Coverage (%) | Name | Source Location | Module |
|---|---|---|---|
| ►10.24+ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | __GI___qsort_r | libc.so.6 | |
| ○ | sortAtomsInCell | haloExchange.c:633 | exec |
| ○ | redistributeAtoms.omp_outlined | timestep.c:153 | exec |
| ○ | __kmp_invoke_microtask | libomp.so | |
| ►10.24+ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | __GI___qsort_r | libc.so.6 | |
| ○ | sortAtomsInCell | haloExchange.c:633 | exec |
| ○ | redistributeAtoms.omp_outlined | timestep.c:153 | exec |
| ○ | __kmp_invoke_microtask | libomp.so | |
| ►9.45+ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | __GI___qsort_r | libc.so.6 | |
| ○ | sortAtomsInCell | haloExchange.c:633 | exec |
| ○ | redistributeAtoms.omp_outlined | timestep.c:153 | exec |
| ○ | __kmp_invoke_microtask | libomp.so | |
| ►7.87+ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | __GI___qsort_r | libc.so.6 | |
| ○ | sortAtomsInCell | haloExchange.c:633 | exec |
| ○ | redistributeAtoms.omp_outlined | timestep.c:153 | exec |
| ○ | __kmp_invoke_microtask | libomp.so | |
| ►7.09+ | __GI___qsort_r | libc.so.6 | |
| ○ | sortAtomsInCell | haloExchange.c:633 | exec |
| ○ | redistributeAtoms.omp_outlined | timestep.c:153 | exec |
| ○ | __kmp_invoke_microtask | libomp.so | |
| ►6.30+ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | __GI___qsort_r | libc.so.6 | |
| ○ | sortAtomsInCell | haloExchange.c:633 | exec |
| ○ | redistributeAtoms.omp_outlined | timestep.c:153 | exec |
| ○ | __kmp_invoke_microtask | libomp.so | |
| ►5.51+ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | __GI___qsort_r | libc.so.6 | |
| ○ | sortAtomsInCell | haloExchange.c:633 | exec |
| ○ | redistributeAtoms.omp_outlined | timestep.c:153 | exec |
| ○ | __kmp_invoke_microtask | libomp.so | |
| ►5.51+ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | __GI___qsort_r | libc.so.6 | |
| ○ | sortAtomsInCell | haloExchange.c:633 | exec |
| ○ | redistributeAtoms.omp_outlined | timestep.c:153 | exec |
| ○ | __kmp_invoke_microtask | libomp.so | |
| ►5.51+ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | __GI___qsort_r | libc.so.6 | |
| ○ | sortAtomsInCell | haloExchange.c:633 | exec |
| ○ | redistributeAtoms.omp_outlined | timestep.c:153 | exec |
| ○ | __kmp_invoke_microtask | libomp.so | |
| ►5.51+ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | __GI___qsort_r | libc.so.6 | |
| ○ | sortAtomsInCell | haloExchange.c:633 | exec |
| ○ | redistributeAtoms.omp_outlined | timestep.c:153 | exec |
| ○ | __kmp_invoke_microtask | libomp.so | |
| ►4.72+ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | __GI___qsort_r | libc.so.6 | |
| ○ | sortAtomsInCell | haloExchange.c:633 | exec |
| ○ | redistributeAtoms.omp_outlined | timestep.c:153 | exec |
| ○ | __kmp_invoke_microtask | libomp.so | |
| ►3.94+ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | __GI___qsort_r | libc.so.6 | |
| ○ | sortAtomsInCell | haloExchange.c:633 | exec |
| ○ | redistributeAtoms.omp_outlined | timestep.c:153 | exec |
| ○ | __kmp_invoke_microtask | libomp.so | |
| ►3.15+ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | __GI___qsort_r | libc.so.6 | |
| ○ | sortAtomsInCell | haloExchange.c:633 | exec |
| ○ | redistributeAtoms.omp_outlined | timestep.c:153 | exec |
| ○ | __kmp_invoke_microtask | libomp.so | |
| ►3.15+ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | __GI___qsort_r | libc.so.6 | |
| ○ | sortAtomsInCell | haloExchange.c:633 | exec |
| ○ | redistributeAtoms.omp_outlined | timestep.c:153 | exec |
| ○ | __kmp_invoke_microtask | libomp.so | |
| ►3.15+ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | __GI___qsort_r | libc.so.6 | |
| ○ | sortAtomsInCell | haloExchange.c:633 | exec |
| ○ | redistributeAtoms.omp_outlined | timestep.c:153 | exec |
| ○ | __kmp_invoke_microtask | libomp.so | |
| ►2.36+ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | __GI___qsort_r | libc.so.6 | |
| ○ | sortAtomsInCell | haloExchange.c:633 | exec |
| ○ | redistributeAtoms.omp_outlined | timestep.c:153 | exec |
| ○ | __kmp_invoke_microtask | libomp.so | |
| ►1.57+ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | __GI___qsort_r | libc.so.6 | |
| ○ | sortAtomsInCell | haloExchange.c:633 | exec |
| ○ | redistributeAtoms.omp_outlined | timestep.c:153 | exec |
| ○ | __kmp_invoke_microtask | libomp.so | |
| ►1.57+ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | msort_with_tmp.part.0 | libc.so.6 | |
| ○ | __GI___qsort_r | libc.so.6 | |
| ○ | sortAtomsInCell | haloExchange.c:633 | exec |
| ○ | redistributeAtoms.omp_outlined | timestep.c:153 | exec |
| ○ | __kmp_invoke_microtask | libomp.so |
| min | med | avg | max |
|---|---|---|---|
| Percentile Index | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 |
|---|---|---|---|---|---|---|---|---|---|---|
| Value |
| min | med | avg | max |
|---|---|---|---|
| Percentile Index | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 |
|---|---|---|---|---|---|---|---|---|---|---|
| Value |
| Path / |
The code analyzed by CQA in that panel excludes loops and represents 0.06% of application time for run orig_0
| Source file and lines | haloExchange.c:654-661 |
| Module | exec |
| nb instructions | 18.50 |
| loop length | 74 |
| nb stack references | 0 |
| front end | 1.94 cycles |
| P0 | P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10 | P11 | P12 | P13 | P14 | P15 | P16 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| uops | 1.25 | 1.25 | 2.08 | 2.08 | 2.00 | 2.00 | 1.92 | 1.92 | 0.00 | 0.00 | 0.00 | 0.00 | 1.17 | 0.83 | 1.00 | 0.50 | 0.50 |
| cycles | 1.25 | 1.25 | 2.08 | 2.08 | 2.00 | 2.00 | 1.92 | 1.92 | 0.00 | 0.00 | 0.00 | 0.00 | 1.17 | 0.83 | 1.00 | 0.50 | 0.50 |
| Cycles executing div or sqrt instructions | NA |
| Front-end | 1.94 |
| Overall L1 | 2.08 |
| all | 0% |
| load | 0% |
| store | 0% |
| mul | NA (no mul vectorizable/vectorized instructions) |
| add-sub | 0% |
| fma | NA (no fma vectorizable/vectorized instructions) |
| div/sqrt | NA (no div/sqrt vectorizable/vectorized instructions) |
| other | 0% |
The code analyzed by CQA in that panel excludes loops and represents 0.06% of application time for run orig_0
| Source file and lines | haloExchange.c:654-661 |
| Module | exec |
| nb instructions | 20 |
| loop length | 80 |
| nb stack references | 0 |
| front end | 2.13 cycles |
| P0 | P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10 | P11 | P12 | P13 | P14 | P15 | P16 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| uops | 1.50 | 1.50 | 2.25 | 2.25 | 2.17 | 2.17 | 2.08 | 2.08 | 0.00 | 0.00 | 0.00 | 0.00 | 1.17 | 0.83 | 1.00 | 0.50 | 0.50 |
| cycles | 1.50 | 1.50 | 2.25 | 2.25 | 2.17 | 2.17 | 2.08 | 2.08 | 0.00 | 0.00 | 0.00 | 0.00 | 1.17 | 0.83 | 1.00 | 0.50 | 0.50 |
| Cycles executing div or sqrt instructions | NA |
| Front-end | 2.13 |
| Overall L1 | 2.25 |
| all | 0% |
| load | 0% |
| store | 0% |
| mul | NA (no mul vectorizable/vectorized instructions) |
| add-sub | 0% |
| fma | NA (no fma vectorizable/vectorized instructions) |
| div/sqrt | NA (no div/sqrt vectorizable/vectorized instructions) |
| other | 0% |
| Instruction | Nb FU | P0 | P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10 | P11 | P12 | P13 | P14 | P15 | P16 | Latency | Recip. throughput | Vectorization |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| LDR W8, [X0] | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.33 | 0.33 | 0.33 | 0 | 0 | 4 | 0.33 | scal (25.0%) |
| LDR W9, [X1] | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.33 | 0.33 | 0.33 | 0 | 0 | 4 | 0.33 | scal (25.0%) |
| CMP W8, W9 | 1 | 0 | 0 | 0.25 | 0.25 | 0 | 0 | 0.25 | 0.25 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.33 | scal (25.0%) |
| B.EQ 4068ec <sortAtomsById+0x1c> | 1 | 0.50 | 0.50 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.50 | N/A |
| MOVN W8, #0 | 1 | 0 | 0 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.17 | scal (25.0%) |
| CSNEG W0, W8, W8, #11 | 1 | 0 | 0 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.17 | N/A |
| RET | 1 | 0.50 | 0.50 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.50 | N/A |
| STP X29, X30, [SP, #1008]! | 1 | 0 | 0 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0 | 0 | 0 | 0 | 0.50 | 0.50 | 0 | 0.50 | 0.50 | 1 | 0.50 | scal (100.0%) |
| ADD X29, SP, #0 | 1 | 0 | 0 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.17 | scal (50.0%) |
| ADRP X0, <40c8f4> | 1 | 0 | 0 | 0.25 | 0.25 | 0 | 0 | 0.25 | 0.25 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.25 | N/A |
| ADD X0, X0, #2812 | 1 | 0 | 0 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.17 | N/A |
| ADRP X1, <40c8fc> | 1 | 0 | 0 | 0.25 | 0.25 | 0 | 0 | 0.25 | 0.25 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.25 | N/A |
| ADD X1, X1, #2358 | 1 | 0 | 0 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.17 | N/A |
| ADRP X3, <40c904> | 1 | 0 | 0 | 0.25 | 0.25 | 0 | 0 | 0.25 | 0.25 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.25 | N/A |
| ADD X3, X3, #2823 | 1 | 0 | 0 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.17 | N/A |
| MOVZ W2, #656 | 1 | 0 | 0 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.17 | scal (25.0%) |
| BL 4021f0 <@plt_start@+0xa0> | 1 | 0.50 | 0.50 | 0.50 | 0.50 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.50 | N/A |
| HINT #0 | N/A | ||||||||||||||||||||
| HINT #0 | N/A | ||||||||||||||||||||
| HINT #0 | N/A |
The code analyzed by CQA in that panel excludes loops and represents 0.06% of application time for run orig_0
| Source file and lines | haloExchange.c:654-661 |
| Module | exec |
| nb instructions | 17 |
| loop length | 68 |
| nb stack references | 0 |
| front end | 1.75 cycles |
| P0 | P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10 | P11 | P12 | P13 | P14 | P15 | P16 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| uops | 1.00 | 1.00 | 1.92 | 1.92 | 1.83 | 1.83 | 1.75 | 1.75 | 0.00 | 0.00 | 0.00 | 0.00 | 1.17 | 0.83 | 1.00 | 0.50 | 0.50 |
| cycles | 1.00 | 1.00 | 1.92 | 1.92 | 1.83 | 1.83 | 1.75 | 1.75 | 0.00 | 0.00 | 0.00 | 0.00 | 1.17 | 0.83 | 1.00 | 0.50 | 0.50 |
| Cycles executing div or sqrt instructions | NA |
| Front-end | 1.75 |
| Overall L1 | 1.92 |
| all | 0% |
| load | 0% |
| store | 0% |
| mul | NA (no mul vectorizable/vectorized instructions) |
| add-sub | 0% |
| fma | NA (no fma vectorizable/vectorized instructions) |
| div/sqrt | NA (no div/sqrt vectorizable/vectorized instructions) |
| other | 0% |
| Instruction | Nb FU | P0 | P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10 | P11 | P12 | P13 | P14 | P15 | P16 | Latency | Recip. throughput | Vectorization |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| LDR W8, [X0] | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.33 | 0.33 | 0.33 | 0 | 0 | 4 | 0.33 | scal (25.0%) |
| LDR W9, [X1] | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.33 | 0.33 | 0.33 | 0 | 0 | 4 | 0.33 | scal (25.0%) |
| CMP W8, W9 | 1 | 0 | 0 | 0.25 | 0.25 | 0 | 0 | 0.25 | 0.25 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.33 | scal (25.0%) |
| B.EQ 4068ec <sortAtomsById+0x1c> | 1 | 0.50 | 0.50 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.50 | N/A |
| STP X29, X30, [SP, #1008]! | 1 | 0 | 0 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0 | 0 | 0 | 0 | 0.50 | 0.50 | 0 | 0.50 | 0.50 | 1 | 0.50 | scal (100.0%) |
| ADD X29, SP, #0 | 1 | 0 | 0 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.17 | scal (50.0%) |
| ADRP X0, <40c8f4> | 1 | 0 | 0 | 0.25 | 0.25 | 0 | 0 | 0.25 | 0.25 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.25 | N/A |
| ADD X0, X0, #2812 | 1 | 0 | 0 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.17 | N/A |
| ADRP X1, <40c8fc> | 1 | 0 | 0 | 0.25 | 0.25 | 0 | 0 | 0.25 | 0.25 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.25 | N/A |
| ADD X1, X1, #2358 | 1 | 0 | 0 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.17 | N/A |
| ADRP X3, <40c904> | 1 | 0 | 0 | 0.25 | 0.25 | 0 | 0 | 0.25 | 0.25 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.25 | N/A |
| ADD X3, X3, #2823 | 1 | 0 | 0 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.17 | N/A |
| MOVZ W2, #656 | 1 | 0 | 0 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0.17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.17 | scal (25.0%) |
| BL 4021f0 <@plt_start@+0xa0> | 1 | 0.50 | 0.50 | 0.50 | 0.50 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0.50 | N/A |
| HINT #0 | N/A | ||||||||||||||||||||
| HINT #0 | N/A | ||||||||||||||||||||
| HINT #0 | N/A |
| Name | Coverage (%) | Time (s) |
|---|---|---|
| ○sortAtomsById | 0.06 | 0.01 |
