/llvm-project/llvm/test/CodeGen/AArch64/ |
H A D | aarch64-dup-ext-scalable.ll | 14 %broadcast.splatinsert = insertelement <vscale x 2 x i16> undef, i16 %in, i16 0 15 …%broadcast.splat = shufflevector <vscale x 2 x i16> %broadcast.splatinsert, <vscale x 2 x i16> und… 16 %out = mul nsw <vscale x 2 x i16> %broadcast.splat, %b 30 %broadcast.splatinsert = insertelement <vscale x 4 x i16> undef, i16 %in, i16 0 31 …%broadcast.splat = shufflevector <vscale x 4 x i16> %broadcast.splatinsert, <vscale x 4 x i16> und… 32 %out = mul nsw <vscale x 4 x i16> %broadcast.splat, %b 46 %broadcast.splatinsert = insertelement <vscale x 8 x i16> undef, i16 %in, i16 0 47 …%broadcast.splat = shufflevector <vscale x 8 x i16> %broadcast.splatinsert, <vscale x 8 x i16> und… 48 %out = mul nsw <vscale x 8 x i16> %broadcast.splat, %b 62 %broadcast.splatinsert = insertelement <vscale x 2 x i32> undef, i32 %in, i32 0 [all …]
|
H A D | aarch64-dup-ext.ll | 25 %broadcast.splatinsert = insertelement <8 x i16> undef, i16 %in, i16 0 26 %broadcast.splat = shufflevector <8 x i16> %broadcast.splatinsert, <8 x i16> undef, <8 x i32> zeroinitializer 27 %out = mul nsw <8 x i16> %broadcast.splat, %ext.b 48 %broadcast.splatinsert = insertelement <8 x i16> undef, i16 %in, i16 0 49 %broadcast.splat = shufflevector <8 x i16> %broadcast.splatinsert, <8 x i16> undef, <8 x i32> zeroinitializer 50 %out = mul nuw <8 x i16> %broadcast.splat, %ext.b 71 %broadcast.splatinsert = insertelement <4 x i32> undef, i32 %in, i32 0 72 %broadcast [all...] |
H A D | aarch64-matrix-umull-smull.ll | 54 %broadcast.splatinsert = insertelement <4 x i32> undef, i32 %conv4, i32 0 55 %broadcast.splat = shufflevector <4 x i32> %broadcast.splatinsert, <4 x i32> undef, <4 x i32> zeroinitializer 56 %broadcast.splatinsert31 = insertelement <4 x i32> undef, i32 %conv4, i32 0 57 %broadcast.splat32 = shufflevector <4 x i32> %broadcast.splatinsert31, <4 x i32> undef, <4 x i32> zeroinitializer 74 %12 = mul nuw nsw <4 x i32> %broadcast.splat, %10 75 %13 = mul nuw nsw <4 x i32> %broadcast.splat32, %11 140 %broadcast.splatinsert = insertelement <4 x i32> undef, i32 %conv4, i32 0 141 %broadcast [all...] |
/llvm-project/llvm/test/CodeGen/PowerPC/ |
H A D | lsr-ctrloop.ll | 87 %broadcast.splatinsert16 = insertelement <4 x float> undef, float %d, i32 0 88 …%broadcast.splat17 = shufflevector <4 x float> %broadcast.splatinsert16, <4 x float> undef, <4 x i… 89 %broadcast.splatinsert18 = insertelement <4 x float> undef, float %d, i32 0 90 …%broadcast.splat19 = shufflevector <4 x float> %broadcast.splatinsert18, <4 x float> undef, <4 x i… 91 %broadcast.splatinsert20 = insertelement <4 x float> undef, float %d, i32 0 92 …%broadcast.splat21 = shufflevector <4 x float> %broadcast.splatinsert20, <4 x float> undef, <4 x i… 93 %broadcast.splatinsert22 = insertelement <4 x float> undef, float %d, i32 0 94 …%broadcast.splat23 = shufflevector <4 x float> %broadcast.splatinsert22, <4 x float> undef, <4 x i… 95 %broadcast.splatinsert24 = insertelement <4 x float> undef, float %d, i32 0 96 …%broadcast.splat25 = shufflevector <4 x float> %broadcast.splatinsert24, <4 x float> undef, <4 x i… [all …]
|
/llvm-project/llvm/test/CodeGen/Thumb2/LowOverheadLoops/ |
H A D | tail-pred-pattern-fail.ll | 21 %broadcast.splatinsert10 = insertelement <4 x i32> undef, i32 %trip.count.minus.1, i32 1 22 …%broadcast.splat11 = shufflevector <4 x i32> %broadcast.splatinsert10, <4 x i32> undef, <4 x i32> … 29 %broadcast.splatinsert = insertelement <4 x i32> undef, i32 %index, i32 0 30 …%broadcast.splat = shufflevector <4 x i32> %broadcast.splatinsert, <4 x i32> undef, <4 x i32> zero… 31 %induction = add <4 x i32> %broadcast.splat, <i32 0, i32 1, i32 2, i32 3> 33 %tmp1 = icmp ule <4 x i32> %induction, %broadcast.splat11 63 …%broadcast.splatinsert10 = insertelement <4 x i32> <i32 1, i32 1, i32 1, i32 1>, i32 %trip.count.m… 64 …%broadcast.splat11 = shufflevector <4 x i32> %broadcast.splatinsert10, <4 x i32> undef, <4 x i32> … 71 %broadcast.splatinsert = insertelement <4 x i32> undef, i32 %index, i32 0 72 …%broadcast.splat = shufflevector <4 x i32> %broadcast.splatinsert, <4 x i32> undef, <4 x i32> zero… [all …]
|
H A D | vector-unroll.ll | 19 %broadcast.splatinsert10 = insertelement <16 x i32> undef, i32 %trip.count.minus.1, i32 0 20 …%broadcast.splat11 = shufflevector <16 x i32> %broadcast.splatinsert10, <16 x i32> undef, <16 x i3… 33 %broadcast.splatinsert = insertelement <16 x i32> undef, i32 %index, i32 0 34 …%broadcast.splat = shufflevector <16 x i32> %broadcast.splatinsert, <16 x i32> undef, <16 x i32> z… 35 …%induction = add <16 x i32> %broadcast.splat, <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i3… 37 %tmp1 = icmp ule <16 x i32> %induction, %broadcast.splat11 46 %broadcast.splatinsert.1 = insertelement <16 x i32> undef, i32 %index.next, i32 0 47 …%broadcast.splat.1 = shufflevector <16 x i32> %broadcast.splatinsert.1, <16 x i32> undef, <16 x i3… 48 …%induction.1 = add <16 x i32> %broadcast.splat.1, <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6… 50 %tmp1.1 = icmp ule <16 x i32> %induction.1, %broadcast.splat11 [all …]
|
H A D | spillingmove.ll | 136 %broadcast.splatinsert75 = insertelement <8 x i16> poison, i16 %5, i32 0 137 …%broadcast.splat76 = shufflevector <8 x i16> %broadcast.splatinsert75, <8 x i16> poison, <8 x i32>… 138 %broadcast.splatinsert77 = insertelement <8 x i16> poison, i16 %conv15.us, i32 0 139 …%broadcast.splat78 = shufflevector <8 x i16> %broadcast.splatinsert77, <8 x i16> poison, <8 x i32>… 140 %broadcast.splatinsert79 = insertelement <8 x i16> poison, i16 %conv15.us.1, i32 0 141 …%broadcast.splat80 = shufflevector <8 x i16> %broadcast.splatinsert79, <8 x i16> poison, <8 x i32>… 142 %broadcast.splatinsert81 = insertelement <8 x i16> poison, i16 %conv15.us.2, i32 0 143 …%broadcast.splat82 = shufflevector <8 x i16> %broadcast.splatinsert81, <8 x i16> poison, <8 x i32>… 162 %13 = mul <8 x i16> %8, %broadcast.splat76 163 %14 = add <8 x i16> %13, %broadcast.splat78 [all …]
|
H A D | tail-pred-narrow.ll | 19 %broadcast.splatinsert10 = insertelement <4 x i32> undef, i32 %trip.count.minus.1, i32 0 20 …%broadcast.splat11 = shufflevector <4 x i32> %broadcast.splatinsert10, <4 x i32> undef, <4 x i32> … 27 %broadcast.splatinsert = insertelement <4 x i32> undef, i32 %index, i32 0 28 …%broadcast.splat = shufflevector <4 x i32> %broadcast.splatinsert, <4 x i32> undef, <4 x i32> zero… 29 %induction = add <4 x i32> %broadcast.splat, <i32 0, i32 1, i32 2, i32 3> 31 %tmp1 = icmp ule <4 x i32> %induction, %broadcast.splat11
|
/llvm-project/llvm/test/CodeGen/Thumb2/ |
H A D | mve-pred-threshold.ll | 36 %broadcast.splatinsert17 = insertelement <4 x i32> undef, i32 %T, i32 0 37 …%broadcast.splat18 = shufflevector <4 x i32> %broadcast.splatinsert17, <4 x i32> undef, <4 x i32> … 38 %broadcast.splatinsert19 = insertelement <4 x i32> undef, i32 %sub, i32 0 39 …%broadcast.splat20 = shufflevector <4 x i32> %broadcast.splatinsert19, <4 x i32> undef, <4 x i32> … 46 %1 = icmp slt <4 x i32> %wide.load, %broadcast.splat18 47 %2 = icmp sgt <4 x i32> %wide.load, %broadcast.splat20 90 %broadcast.splatinsert24 = insertelement <8 x i16> undef, i16 %T, i32 0 91 …%broadcast.splat25 = shufflevector <8 x i16> %broadcast.splatinsert24, <8 x i16> undef, <8 x i32> … 92 %broadcast.splatinsert26 = insertelement <8 x i16> undef, i16 %sub, i32 0 93 …%broadcast.splat27 = shufflevector <8 x i16> %broadcast.splatinsert26, <8 x i16> undef, <8 x i32> … [all …]
|
H A D | mve-shifts-scalar.ll | 26 %broadcast.splatinsert10 = insertelement <4 x i32> undef, i32 %shift, i32 0 27 …%broadcast.splat11 = shufflevector <4 x i32> %broadcast.splatinsert10, <4 x i32> undef, <4 x i32> … 34 %res = shl <4 x i32> %wide.load, %broadcast.splat11 67 %broadcast.splatinsert10 = insertelement <8 x i16> undef, i16 %shift, i32 0 68 …%broadcast.splat11 = shufflevector <8 x i16> %broadcast.splatinsert10, <8 x i16> undef, <8 x i32> … 75 %res = shl <8 x i16> %wide.load, %broadcast.splat11 108 %broadcast.splatinsert10 = insertelement <16 x i8> undef, i8 %shift, i32 0 109 …%broadcast.splat11 = shufflevector <16 x i8> %broadcast.splatinsert10, <16 x i8> undef, <16 x i32>… 116 %res = shl <16 x i8> %wide.load, %broadcast.splat11 150 %broadcast.splatinsert10 = insertelement <4 x i32> undef, i32 %shift, i32 0 [all …]
|
H A D | mve-fma-loops.ll | 31 %broadcast.splatinsert13 = insertelement <4 x float> undef, float %a, i32 0 32 …%broadcast.splat14 = shufflevector <4 x float> %broadcast.splatinsert13, <4 x float> undef, <4 x i… 42 …f32(<4 x float> %wide.masked.load, <4 x float> %wide.masked.load12, <4 x float> %broadcast.splat14) 80 %broadcast.splatinsert13 = insertelement <4 x float> undef, float %a, i32 0 81 …%broadcast.splat14 = shufflevector <4 x float> %broadcast.splatinsert13, <4 x float> undef, <4 x i… 92 %4 = fadd fast <4 x float> %3, %broadcast.splat14 130 %broadcast.splatinsert13 = insertelement <4 x float> undef, float %a, i32 0 131 …%broadcast.splat14 = shufflevector <4 x float> %broadcast.splatinsert13, <4 x float> undef, <4 x i… 141 …%3 = call fast <4 x float> @llvm.fma.v4f32(<4 x float> %wide.masked.load, <4 x float> %broadcast.s… 179 %broadcast.splatinsert12 = insertelement <4 x float> undef, float %a, i32 0 [all …]
|
H A D | mve-vmla.ll | 96 %broadcast.splatinsert8 = insertelement <4 x i32> undef, i32 %x, i32 0 97 …%broadcast.splat9 = shufflevector <4 x i32> %broadcast.splatinsert8, <4 x i32> undef, <4 x i32> ze… 104 %1 = mul nsw <4 x i32> %wide.load, %broadcast.splat9 131 %broadcast.splatinsert11 = insertelement <8 x i16> undef, i16 %x, i32 0 132 …%broadcast.splat12 = shufflevector <8 x i16> %broadcast.splatinsert11, <8 x i16> undef, <8 x i32> … 139 %1 = mul <8 x i16> %wide.load, %broadcast.splat12 166 %broadcast.splatinsert11 = insertelement <16 x i8> undef, i8 %x, i32 0 167 …%broadcast.splat12 = shufflevector <16 x i8> %broadcast.splatinsert11, <16 x i8> undef, <16 x i32>… 174 %1 = mul <16 x i8> %wide.load, %broadcast.splat12 280 %broadcast.splatinsert8 = insertelement <4 x i32> undef, i32 %x, i32 0 [all …]
|
/llvm-project/mlir/test/Dialect/Vector/ |
H A D | sink-vector-broadcast.mlir |
|
/llvm-project/llvm/test/CodeGen/RISCV/rvv/ |
H A D | sink-splat-operands.ll | 21 %broadcast.splatinsert = insertelement <4 x i32> poison, i32 %x, i32 0 22 %broadcast.splat = shufflevector <4 x i32> %broadcast.splatinsert, <4 x i32> poison, <4 x i32> zeroinitializer 29 %1 = mul <4 x i32> %wide.load, %broadcast.splat 55 %broadcast.splatinsert = insertelement <4 x i32> poison, i32 %x, i32 0 56 %broadcast.splat = shufflevector <4 x i32> %broadcast.splatinsert, <4 x i32> poison, <4 x i32> zeroinitializer 63 %1 = add <4 x i32> %wide.load, %broadcast.splat 89 %broadcast.splatinsert = insertelement <4 x i32> poison, i32 %x, i32 0 90 %broadcast [all...] |
/llvm-project/llvm/test/Transforms/LoopVectorize/AArch64/ |
H A D | extractvalue-no-scalarization-required.ll | 27 ; FORCED-NEXT: %broadcast.splatinsert = insertelement <2 x i64> poison, i64 [[E1]], i64 0 28 ; FORCED-NEXT: %broadcast.splat = shufflevector <2 x i64> %broadcast.splatinsert, <2 x i64> poison, <2 x i32> zeroinitializer 29 ; FORCED-NEXT: %broadcast.splatinsert1 = insertelement <2 x i64> poison, i64 [[E2]], i64 0 30 ; FORCED-NEXT: %broadcast.splat2 = shufflevector <2 x i64> %broadcast.splatinsert1, <2 x i64> poison, <2 x i32> zeroinitializer 31 ; FORCED-NEXT: [[ADD:%.+]] = add <2 x i64> %broadcast.splat, %broadcast.splat2 79 ; FORCED-NEXT: %broadcast.splatinsert = insertelement <2 x float> poison, float [[E1]], i64 0 80 ; FORCED-NEXT: %broadcast [all...] |
/llvm-project/mlir/test/Integration/Dialect/Vector/CPU/ |
H A D | broadcast.mlir | 18 %vi = vector.broadcast %i : i32 to vector<2xi32> 19 %vl = vector.broadcast %l : i64 to vector<2xi64> 20 %vf = vector.broadcast %f1 : f32 to vector<2x2x2xf32> 29 %v0 = vector.broadcast %f1 : f32 to vector<4xf32> 33 %v4 = vector.broadcast %v3 : vector<4xf32> to vector<3x4xf32> 34 %v5 = vector.broadcast %v3 : vector<4xf32> to vector<2x2x4xf32> 43 %x = vector.broadcast %f5 : f32 to vector<1xf32> 44 %y = vector.broadcast %x : vector<1xf32> to vector<8xf32> 49 %s = vector.broadcast %v3 : vector<4xf32> to vector<1x4xf32> 50 %t = vector.broadcast [all...] |
/llvm-project/lldb/include/lldb/Utility/ |
H A D | Predicate.h | 28 eBroadcastNever, ///< No broadcast will be sent when the value is modified. 29 eBroadcastAlways, ///< Always send a broadcast when the value is modified. 30 eBroadcastOnChange ///< Only broadcast if the value changes when the value is 80 /// way and broadcast if needed. 86 /// A value indicating when and if to broadcast. See the 89 /// \see Predicate::Broadcast() 99 Broadcast(old_value, broadcast_type); in SetValue() 200 /// Broadcast if needed. 202 /// Check to see if we need to broadcast to our condition variable 205 /// If \a broadcast_type is eBroadcastNever, no broadcast will be [all …]
|
/llvm-project/llvm/test/Transforms/CodeGenPrepare/ARM/ |
H A D | sink-add-mul-shufflevector-inseltpoison.ll | 18 %broadcast.splatinsert8 = insertelement <4 x i32> poison, i32 %x, i32 0 19 …%broadcast.splat9 = shufflevector <4 x i32> %broadcast.splatinsert8, <4 x i32> poison, <4 x i32> z… 26 %1 = mul nsw <4 x i32> %wide.load, %broadcast.splat9 58 %broadcast.splatinsert15 = insertelement <4 x i32> poison, i32 %x, i32 0 59 …%broadcast.splat16 = shufflevector <4 x i32> %broadcast.splatinsert15, <4 x i32> poison, <4 x i32>… 66 %1 = mul nsw <4 x i32> %wide.load, %broadcast.splat16 73 %5 = mul nsw <4 x i32> %wide.load18, %broadcast.splat16 104 %broadcast.splatinsert15 = insertelement <4 x i32> poison, i32 %x, i32 0 105 …%broadcast.splat16 = shufflevector <4 x i32> %broadcast.splatinsert15, <4 x i32> poison, <4 x i32>… 112 %1 = mul nsw <4 x i32> %wide.load, %broadcast.splat16 [all …]
|
H A D | sink-add-mul-shufflevector.ll | 18 %broadcast.splatinsert8 = insertelement <4 x i32> undef, i32 %x, i32 0 19 …%broadcast.splat9 = shufflevector <4 x i32> %broadcast.splatinsert8, <4 x i32> undef, <4 x i32> ze… 26 %1 = mul nsw <4 x i32> %wide.load, %broadcast.splat9 58 %broadcast.splatinsert15 = insertelement <4 x i32> undef, i32 %x, i32 0 59 …%broadcast.splat16 = shufflevector <4 x i32> %broadcast.splatinsert15, <4 x i32> undef, <4 x i32> … 66 %1 = mul nsw <4 x i32> %wide.load, %broadcast.splat16 73 %5 = mul nsw <4 x i32> %wide.load18, %broadcast.splat16 104 %broadcast.splatinsert15 = insertelement <4 x i32> undef, i32 %x, i32 0 105 …%broadcast.splat16 = shufflevector <4 x i32> %broadcast.splatinsert15, <4 x i32> undef, <4 x i32> … 112 %1 = mul nsw <4 x i32> %wide.load, %broadcast.splat16 [all …]
|
/llvm-project/llvm/test/CodeGen/X86/ |
H A D | pr50374.ll | 21 %broadcast.splatinsert2024 = insertelement <8 x float> poison, float %add.10961.i.2.2, i32 0 22 %broadcast.splat2025 = shufflevector <8 x float> %broadcast.splatinsert2024, <8 x float> poison, <8 x i32> zeroinitializer 23 %broadcast.splatinsert2049 = insertelement <8 x i8> poison, i8 %1, i32 0 24 %broadcast.splat2050 = shufflevector <8 x i8> %broadcast.splatinsert2049, <8 x i8> poison, <8 x i32> zeroinitializer 28 %predphi2026 = select <8 x i1> undef, <8 x float> undef, <8 x float> %broadcast.splat2025 29 %predphi2051 = select <8 x i1> undef, <8 x i8> %broadcast.splat2050, <8 x i8> undef
|
/llvm-project/llvm/test/Transforms/SLPVectorizer/AArch64/ |
H A D | phi-use-order-scalable.ll | 35 %broadcast.splatinsert78 = insertelement <vscale x 8 x i32> poison, i32 %srcBLen.addr.0, i64 0 36 %broadcast.splatinsert82 = insertelement <vscale x 8 x i32> poison, i32 %srcALen.addr.0, i64 0 37 …%broadcast.splat83 = shufflevector <vscale x 8 x i32> %broadcast.splatinsert82, <vscale x 8 x i32>… 38 ret <vscale x 8 x i32> %broadcast.splat83 71 %broadcast.splatinsert78 = insertelement <vscale x 8 x i32> poison, i32 %srcBLen.addr.0, i64 0 72 %broadcast.splatinsert82 = insertelement <vscale x 8 x i32> poison, i32 %srcALen.addr.0, i64 0 73 …%broadcast.splat83 = shufflevector <vscale x 8 x i32> %broadcast.splatinsert82, <vscale x 8 x i32>… 75 …%broadcast.splat84 = insertelement <vscale x 8 x i32> %broadcast.splat83, i32 %srcBLen.addr.0, i64… 76 ret <vscale x 8 x i32> %broadcast.splat84
|
/llvm-project/llvm/test/Transforms/InstCombine/ |
H A D | masked_intrinsics.ll | 284 %broadcast.splatinsert = insertelement <4 x ptr> poison, ptr %dst, i32 0 285 %broadcast.splat = shufflevector <4 x ptr> %broadcast.splatinsert, <4 x ptr> poison, <4 x i32> zeroinitializer 286 %broadcast.value = insertelement <4 x i16> poison, i16 %val, i32 0 287 %broadcast.splatvalue = shufflevector <4 x i16> %broadcast.value, <4 x i16> poison, <4 x i32> zeroinitializer 288 call void @llvm.masked.scatter.v4i16.v4p0(<4 x i16> %broadcast.splatvalue, <4 x ptr> %broadcast.splat, i32 2, <4 x i1> <i1 0, i1 0, i1 1, i1 1>) 299 %broadcast.splatinsert = insertelement <vscale x 4 x ptr> poison, ptr %dst, i32 0 300 %broadcast [all...] |
/llvm-project/mlir/lib/Dialect/Vector/Transforms/ |
H A D | LowerVectorBroadcast.cpp | 1 //===- LowerVectorBroadcast.cpp - Lower 'vector.broadcast' operation ------===// 10 // 'vector.broadcast' operation. 36 #define DEBUG_TYPE "vector-broadcast-lowering" 77 // %x = broadcast %y : k-D to n-D, k < n in matchAndRewrite() 79 // %b = broadcast %y : k-D to (n-1)-D in matchAndRewrite() 114 // %x = broadcast %y : vector<4x1x2xf32> to vector<4x2x2xf32> in matchAndRewrite() 116 // %a = broadcast %y[0] : vector<1x2xf32> to vector<2x2xf32> in matchAndRewrite() 117 // %b = broadcast %y[1] : vector<1x2xf32> to vector<2x2xf32> in matchAndRewrite() 118 // %c = broadcast %y[2] : vector<1x2xf32> to vector<2x2xf32> in matchAndRewrite() 119 // %d = broadcast in matchAndRewrite() [all...] |
/llvm-project/llvm/test/Transforms/VectorCombine/AArch64/ |
H A D | scalarize-scalable.ll | 15 %broadcast.splatinsert = insertelement <vscale x 4 x float> poison, float %0, i64 0 16 %broadcast.splatinsert28 = insertelement <vscale x 4 x float> poison, float %1, i64 0 17 %broadcast.splatinsert30 = insertelement <vscale x 4 x float> poison, float %2, i64 0 18 %broadcast.splatinsert32 = insertelement <vscale x 4 x float> poison, float %3, i64 0 19 %4 = fadd fast <vscale x 4 x float> %broadcast.splatinsert28, %broadcast.splatinsert 20 %5 = fadd fast <vscale x 4 x float> %broadcast.splatinsert30, %4 21 %6 = fadd fast <vscale x 4 x float> %broadcast.splatinsert32, %5
|
/llvm-project/mlir/include/mlir/Dialect/ |
H A D | Traits.h | 31 /// given shapes if they are broadcast compatible. Returns false and clears 41 /// correct, and the other dimension will be broadcast to match it. 50 /// Returns true if a broadcast between n shapes is guaranteed to be 61 /// fail to broadcast. 66 /// Returns the result broadcast composition type from the two given types by 67 /// following NumPy broadcast semantics. Returned type may have dynamic shape if 69 /// given types are not broadcast-compatible. 79 /// Trait for ops that are known to have broadcast compatible operands and 86 /// type has broadcast compatible operands ns result types.
|