1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py 2; RUN: opt < %s -mtriple=aarch64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=throughput | FileCheck %s --check-prefixes=CHECK,CHECK-NOF16 3; RUN: opt < %s -mtriple=aarch64-unknown-linux-gnu -mattr=+fullfp16 -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=throughput | FileCheck %s --check-prefixes=CHECK,CHECK-F16 4 5target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" 6 7define void @umin() { 8; CHECK-LABEL: 'umin' 9; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i8 = call i8 @llvm.umin.i8(i8 undef, i8 undef) 10; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i16 = call i16 @llvm.umin.i16(i16 undef, i16 undef) 11; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i32 = call i32 @llvm.umin.i32(i32 undef, i32 undef) 12; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i64 = call i64 @llvm.umin.i64(i64 undef, i64 undef) 13; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1i8 = call <1 x i8> @llvm.umin.v1i8(<1 x i8> undef, <1 x i8> undef) 14; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V3i8 = call <3 x i8> @llvm.umin.v3i8(<3 x i8> undef, <3 x i8> undef) 15; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4i8 = call <4 x i8> @llvm.umin.v4i8(<4 x i8> undef, <4 x i8> undef) 16; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8i8 = call <8 x i8> @llvm.umin.v8i8(<8 x i8> undef, <8 x i8> undef) 17; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V16i8 = call <16 x i8> @llvm.umin.v16i8(<16 x i8> undef, <16 x i8> undef) 18; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32i8 = call <32 x i8> @llvm.umin.v32i8(<32 x i8> undef, <32 x i8> undef) 19; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V64i8 = call <64 x i8> @llvm.umin.v64i8(<64 x i8> undef, <64 x i8> undef) 20; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2i16 = call <2 x i16> @llvm.umin.v2i16(<2 x i16> undef, <2 x i16> undef) 21; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4i16 = call <4 x i16> @llvm.umin.v4i16(<4 x i16> undef, <4 x i16> undef) 22; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8i16 = call <8 x i16> @llvm.umin.v8i16(<8 x i16> undef, <8 x i16> undef) 23; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16i16 = call <16 x i16> @llvm.umin.v16i16(<16 x i16> undef, <16 x i16> undef) 24; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2i32 = call <2 x i32> @llvm.umin.v2i32(<2 x i32> undef, <2 x i32> undef) 25; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4i32 = call <4 x i32> @llvm.umin.v4i32(<4 x i32> undef, <4 x i32> undef) 26; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8i32 = call <8 x i32> @llvm.umin.v8i32(<8 x i32> undef, <8 x i32> undef) 27; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2i64 = call <2 x i64> @llvm.umin.v2i64(<2 x i64> undef, <2 x i64> undef) 28; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4i64 = call <4 x i64> @llvm.umin.v4i64(<4 x i64> undef, <4 x i64> undef) 29; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 30; 31 %i8 = call i8 @llvm.umin.i8(i8 undef, i8 undef) 32 %i16 = call i16 @llvm.umin.i16(i16 undef, i16 undef) 33 %i32 = call i32 @llvm.umin.i32(i32 undef, i32 undef) 34 %i64 = call i64 @llvm.umin.i64(i64 undef, i64 undef) 35 %V1i8 = call <1 x i8> @llvm.umin.v1i8(<1 x i8> undef, <1 x i8> undef) 36 %V3i8 = call <3 x i8> @llvm.umin.v3i8(<3 x i8> undef, <3 x i8> undef) 37 %V4i8 = call <4 x i8> @llvm.umin.v4i8(<4 x i8> undef, <4 x i8> undef) 38 %V8i8 = call <8 x i8> @llvm.umin.v8i8(<8 x i8> undef, <8 x i8> undef) 39 %V16i8 = call <16 x i8> @llvm.umin.v16i8(<16 x i8> undef, <16 x i8> undef) 40 %V32i8 = call <32 x i8> @llvm.umin.v32i8(<32 x i8> undef, <32 x i8> undef) 41 %V64i8 = call <64 x i8> @llvm.umin.v64i8(<64 x i8> undef, <64 x i8> undef) 42 %V2i16 = call <2 x i16> @llvm.umin.v2i16(<2 x i16> undef, <2 x i16> undef) 43 %V4i16 = call <4 x i16> @llvm.umin.v4i16(<4 x i16> undef, <4 x i16> undef) 44 %V8i16 = call <8 x i16> @llvm.umin.v8i16(<8 x i16> undef, <8 x i16> undef) 45 %V16i16 = call <16 x i16> @llvm.umin.v16i16(<16 x i16> undef, <16 x i16> undef) 46 %V2i32 = call <2 x i32> @llvm.umin.v2i32(<2 x i32> undef, <2 x i32> undef) 47 %V4i32 = call <4 x i32> @llvm.umin.v4i32(<4 x i32> undef, <4 x i32> undef) 48 %V8i32 = call <8 x i32> @llvm.umin.v8i32(<8 x i32> undef, <8 x i32> undef) 49 %V2i64 = call <2 x i64> @llvm.umin.v2i64(<2 x i64> undef, <2 x i64> undef) 50 %V4i64 = call <4 x i64> @llvm.umin.v4i64(<4 x i64> undef, <4 x i64> undef) 51 ret void 52} 53 54define void @umax() { 55; CHECK-LABEL: 'umax' 56; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i8 = call i8 @llvm.umax.i8(i8 undef, i8 undef) 57; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i16 = call i16 @llvm.umax.i16(i16 undef, i16 undef) 58; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i32 = call i32 @llvm.umax.i32(i32 undef, i32 undef) 59; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i64 = call i64 @llvm.umax.i64(i64 undef, i64 undef) 60; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1i8 = call <1 x i8> @llvm.umax.v1i8(<1 x i8> undef, <1 x i8> undef) 61; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V3i8 = call <3 x i8> @llvm.umax.v3i8(<3 x i8> undef, <3 x i8> undef) 62; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4i8 = call <4 x i8> @llvm.umax.v4i8(<4 x i8> undef, <4 x i8> undef) 63; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8i8 = call <8 x i8> @llvm.umax.v8i8(<8 x i8> undef, <8 x i8> undef) 64; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V16i8 = call <16 x i8> @llvm.umax.v16i8(<16 x i8> undef, <16 x i8> undef) 65; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32i8 = call <32 x i8> @llvm.umax.v32i8(<32 x i8> undef, <32 x i8> undef) 66; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V64i8 = call <64 x i8> @llvm.umax.v64i8(<64 x i8> undef, <64 x i8> undef) 67; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2i16 = call <2 x i16> @llvm.umax.v2i16(<2 x i16> undef, <2 x i16> undef) 68; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4i16 = call <4 x i16> @llvm.umax.v4i16(<4 x i16> undef, <4 x i16> undef) 69; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8i16 = call <8 x i16> @llvm.umax.v8i16(<8 x i16> undef, <8 x i16> undef) 70; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16i16 = call <16 x i16> @llvm.umax.v16i16(<16 x i16> undef, <16 x i16> undef) 71; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2i32 = call <2 x i32> @llvm.umax.v2i32(<2 x i32> undef, <2 x i32> undef) 72; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4i32 = call <4 x i32> @llvm.umax.v4i32(<4 x i32> undef, <4 x i32> undef) 73; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8i32 = call <8 x i32> @llvm.umax.v8i32(<8 x i32> undef, <8 x i32> undef) 74; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2i64 = call <2 x i64> @llvm.umax.v2i64(<2 x i64> undef, <2 x i64> undef) 75; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4i64 = call <4 x i64> @llvm.umax.v4i64(<4 x i64> undef, <4 x i64> undef) 76; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 77; 78 %i8 = call i8 @llvm.umax.i8(i8 undef, i8 undef) 79 %i16 = call i16 @llvm.umax.i16(i16 undef, i16 undef) 80 %i32 = call i32 @llvm.umax.i32(i32 undef, i32 undef) 81 %i64 = call i64 @llvm.umax.i64(i64 undef, i64 undef) 82 %V1i8 = call <1 x i8> @llvm.umax.v1i8(<1 x i8> undef, <1 x i8> undef) 83 %V3i8 = call <3 x i8> @llvm.umax.v3i8(<3 x i8> undef, <3 x i8> undef) 84 %V4i8 = call <4 x i8> @llvm.umax.v4i8(<4 x i8> undef, <4 x i8> undef) 85 %V8i8 = call <8 x i8> @llvm.umax.v8i8(<8 x i8> undef, <8 x i8> undef) 86 %V16i8 = call <16 x i8> @llvm.umax.v16i8(<16 x i8> undef, <16 x i8> undef) 87 %V32i8 = call <32 x i8> @llvm.umax.v32i8(<32 x i8> undef, <32 x i8> undef) 88 %V64i8 = call <64 x i8> @llvm.umax.v64i8(<64 x i8> undef, <64 x i8> undef) 89 %V2i16 = call <2 x i16> @llvm.umax.v2i16(<2 x i16> undef, <2 x i16> undef) 90 %V4i16 = call <4 x i16> @llvm.umax.v4i16(<4 x i16> undef, <4 x i16> undef) 91 %V8i16 = call <8 x i16> @llvm.umax.v8i16(<8 x i16> undef, <8 x i16> undef) 92 %V16i16 = call <16 x i16> @llvm.umax.v16i16(<16 x i16> undef, <16 x i16> undef) 93 %V2i32 = call <2 x i32> @llvm.umax.v2i32(<2 x i32> undef, <2 x i32> undef) 94 %V4i32 = call <4 x i32> @llvm.umax.v4i32(<4 x i32> undef, <4 x i32> undef) 95 %V8i32 = call <8 x i32> @llvm.umax.v8i32(<8 x i32> undef, <8 x i32> undef) 96 %V2i64 = call <2 x i64> @llvm.umax.v2i64(<2 x i64> undef, <2 x i64> undef) 97 %V4i64 = call <4 x i64> @llvm.umax.v4i64(<4 x i64> undef, <4 x i64> undef) 98 ret void 99} 100 101define void @smin() { 102; CHECK-LABEL: 'smin' 103; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i8 = call i8 @llvm.smin.i8(i8 undef, i8 undef) 104; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i16 = call i16 @llvm.smin.i16(i16 undef, i16 undef) 105; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i32 = call i32 @llvm.smin.i32(i32 undef, i32 undef) 106; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i64 = call i64 @llvm.smin.i64(i64 undef, i64 undef) 107; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1i8 = call <1 x i8> @llvm.smin.v1i8(<1 x i8> undef, <1 x i8> undef) 108; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V3i8 = call <3 x i8> @llvm.smin.v3i8(<3 x i8> undef, <3 x i8> undef) 109; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4i8 = call <4 x i8> @llvm.smin.v4i8(<4 x i8> undef, <4 x i8> undef) 110; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8i8 = call <8 x i8> @llvm.smin.v8i8(<8 x i8> undef, <8 x i8> undef) 111; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V16i8 = call <16 x i8> @llvm.smin.v16i8(<16 x i8> undef, <16 x i8> undef) 112; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32i8 = call <32 x i8> @llvm.smin.v32i8(<32 x i8> undef, <32 x i8> undef) 113; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V64i8 = call <64 x i8> @llvm.smin.v64i8(<64 x i8> undef, <64 x i8> undef) 114; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2i16 = call <2 x i16> @llvm.smin.v2i16(<2 x i16> undef, <2 x i16> undef) 115; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4i16 = call <4 x i16> @llvm.smin.v4i16(<4 x i16> undef, <4 x i16> undef) 116; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8i16 = call <8 x i16> @llvm.smin.v8i16(<8 x i16> undef, <8 x i16> undef) 117; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16i16 = call <16 x i16> @llvm.smin.v16i16(<16 x i16> undef, <16 x i16> undef) 118; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2i32 = call <2 x i32> @llvm.smin.v2i32(<2 x i32> undef, <2 x i32> undef) 119; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4i32 = call <4 x i32> @llvm.smin.v4i32(<4 x i32> undef, <4 x i32> undef) 120; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8i32 = call <8 x i32> @llvm.smin.v8i32(<8 x i32> undef, <8 x i32> undef) 121; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2i64 = call <2 x i64> @llvm.smin.v2i64(<2 x i64> undef, <2 x i64> undef) 122; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4i64 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> undef, <4 x i64> undef) 123; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 124; 125 %i8 = call i8 @llvm.smin.i8(i8 undef, i8 undef) 126 %i16 = call i16 @llvm.smin.i16(i16 undef, i16 undef) 127 %i32 = call i32 @llvm.smin.i32(i32 undef, i32 undef) 128 %i64 = call i64 @llvm.smin.i64(i64 undef, i64 undef) 129 %V1i8 = call <1 x i8> @llvm.smin.v1i8(<1 x i8> undef, <1 x i8> undef) 130 %V3i8 = call <3 x i8> @llvm.smin.v3i8(<3 x i8> undef, <3 x i8> undef) 131 %V4i8 = call <4 x i8> @llvm.smin.v4i8(<4 x i8> undef, <4 x i8> undef) 132 %V8i8 = call <8 x i8> @llvm.smin.v8i8(<8 x i8> undef, <8 x i8> undef) 133 %V16i8 = call <16 x i8> @llvm.smin.v16i8(<16 x i8> undef, <16 x i8> undef) 134 %V32i8 = call <32 x i8> @llvm.smin.v32i8(<32 x i8> undef, <32 x i8> undef) 135 %V64i8 = call <64 x i8> @llvm.smin.v64i8(<64 x i8> undef, <64 x i8> undef) 136 %V2i16 = call <2 x i16> @llvm.smin.v2i16(<2 x i16> undef, <2 x i16> undef) 137 %V4i16 = call <4 x i16> @llvm.smin.v4i16(<4 x i16> undef, <4 x i16> undef) 138 %V8i16 = call <8 x i16> @llvm.smin.v8i16(<8 x i16> undef, <8 x i16> undef) 139 %V16i16 = call <16 x i16> @llvm.smin.v16i16(<16 x i16> undef, <16 x i16> undef) 140 %V2i32 = call <2 x i32> @llvm.smin.v2i32(<2 x i32> undef, <2 x i32> undef) 141 %V4i32 = call <4 x i32> @llvm.smin.v4i32(<4 x i32> undef, <4 x i32> undef) 142 %V8i32 = call <8 x i32> @llvm.smin.v8i32(<8 x i32> undef, <8 x i32> undef) 143 %V2i64 = call <2 x i64> @llvm.smin.v2i64(<2 x i64> undef, <2 x i64> undef) 144 %V4i64 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> undef, <4 x i64> undef) 145 ret void 146} 147 148define void @smax() { 149; CHECK-LABEL: 'smax' 150; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i8 = call i8 @llvm.smax.i8(i8 undef, i8 undef) 151; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i16 = call i16 @llvm.smax.i16(i16 undef, i16 undef) 152; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i32 = call i32 @llvm.smax.i32(i32 undef, i32 undef) 153; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i64 = call i64 @llvm.smax.i64(i64 undef, i64 undef) 154; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1i8 = call <1 x i8> @llvm.smax.v1i8(<1 x i8> undef, <1 x i8> undef) 155; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V3i8 = call <3 x i8> @llvm.smax.v3i8(<3 x i8> undef, <3 x i8> undef) 156; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4i8 = call <4 x i8> @llvm.smax.v4i8(<4 x i8> undef, <4 x i8> undef) 157; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8i8 = call <8 x i8> @llvm.smax.v8i8(<8 x i8> undef, <8 x i8> undef) 158; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V16i8 = call <16 x i8> @llvm.smax.v16i8(<16 x i8> undef, <16 x i8> undef) 159; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32i8 = call <32 x i8> @llvm.smax.v32i8(<32 x i8> undef, <32 x i8> undef) 160; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V64i8 = call <64 x i8> @llvm.smax.v64i8(<64 x i8> undef, <64 x i8> undef) 161; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2i16 = call <2 x i16> @llvm.smax.v2i16(<2 x i16> undef, <2 x i16> undef) 162; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4i16 = call <4 x i16> @llvm.smax.v4i16(<4 x i16> undef, <4 x i16> undef) 163; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8i16 = call <8 x i16> @llvm.smax.v8i16(<8 x i16> undef, <8 x i16> undef) 164; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16i16 = call <16 x i16> @llvm.smax.v16i16(<16 x i16> undef, <16 x i16> undef) 165; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2i32 = call <2 x i32> @llvm.smax.v2i32(<2 x i32> undef, <2 x i32> undef) 166; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4i32 = call <4 x i32> @llvm.smax.v4i32(<4 x i32> undef, <4 x i32> undef) 167; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8i32 = call <8 x i32> @llvm.smax.v8i32(<8 x i32> undef, <8 x i32> undef) 168; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2i64 = call <2 x i64> @llvm.smax.v2i64(<2 x i64> undef, <2 x i64> undef) 169; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4i64 = call <4 x i64> @llvm.smax.v4i64(<4 x i64> undef, <4 x i64> undef) 170; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 171; 172 %i8 = call i8 @llvm.smax.i8(i8 undef, i8 undef) 173 %i16 = call i16 @llvm.smax.i16(i16 undef, i16 undef) 174 %i32 = call i32 @llvm.smax.i32(i32 undef, i32 undef) 175 %i64 = call i64 @llvm.smax.i64(i64 undef, i64 undef) 176 %V1i8 = call <1 x i8> @llvm.smax.v1i8(<1 x i8> undef, <1 x i8> undef) 177 %V3i8 = call <3 x i8> @llvm.smax.v3i8(<3 x i8> undef, <3 x i8> undef) 178 %V4i8 = call <4 x i8> @llvm.smax.v4i8(<4 x i8> undef, <4 x i8> undef) 179 %V8i8 = call <8 x i8> @llvm.smax.v8i8(<8 x i8> undef, <8 x i8> undef) 180 %V16i8 = call <16 x i8> @llvm.smax.v16i8(<16 x i8> undef, <16 x i8> undef) 181 %V32i8 = call <32 x i8> @llvm.smax.v32i8(<32 x i8> undef, <32 x i8> undef) 182 %V64i8 = call <64 x i8> @llvm.smax.v64i8(<64 x i8> undef, <64 x i8> undef) 183 %V2i16 = call <2 x i16> @llvm.smax.v2i16(<2 x i16> undef, <2 x i16> undef) 184 %V4i16 = call <4 x i16> @llvm.smax.v4i16(<4 x i16> undef, <4 x i16> undef) 185 %V8i16 = call <8 x i16> @llvm.smax.v8i16(<8 x i16> undef, <8 x i16> undef) 186 %V16i16 = call <16 x i16> @llvm.smax.v16i16(<16 x i16> undef, <16 x i16> undef) 187 %V2i32 = call <2 x i32> @llvm.smax.v2i32(<2 x i32> undef, <2 x i32> undef) 188 %V4i32 = call <4 x i32> @llvm.smax.v4i32(<4 x i32> undef, <4 x i32> undef) 189 %V8i32 = call <8 x i32> @llvm.smax.v8i32(<8 x i32> undef, <8 x i32> undef) 190 %V2i64 = call <2 x i64> @llvm.smax.v2i64(<2 x i64> undef, <2 x i64> undef) 191 %V4i64 = call <4 x i64> @llvm.smax.v4i64(<4 x i64> undef, <4 x i64> undef) 192 ret void 193} 194 195define void @minnum16() { 196; CHECK-NOF16-LABEL: 'minnum16' 197; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16 = call half @llvm.minnum.f16(half undef, half undef) 198; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V2f16 = call <2 x half> @llvm.minnum.v2f16(<2 x half> undef, <2 x half> undef) 199; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %V4f16 = call <4 x half> @llvm.minnum.v4f16(<4 x half> undef, <4 x half> undef) 200; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %V8f16 = call <8 x half> @llvm.minnum.v8f16(<8 x half> undef, <8 x half> undef) 201; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %V16f16 = call <16 x half> @llvm.minnum.v16f16(<16 x half> undef, <16 x half> undef) 202; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 203; 204; CHECK-F16-LABEL: 'minnum16' 205; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16 = call half @llvm.minnum.f16(half undef, half undef) 206; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2f16 = call <2 x half> @llvm.minnum.v2f16(<2 x half> undef, <2 x half> undef) 207; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4f16 = call <4 x half> @llvm.minnum.v4f16(<4 x half> undef, <4 x half> undef) 208; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8f16 = call <8 x half> @llvm.minnum.v8f16(<8 x half> undef, <8 x half> undef) 209; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V16f16 = call <16 x half> @llvm.minnum.v16f16(<16 x half> undef, <16 x half> undef) 210; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 211; 212 %f16 = call half @llvm.minnum.f16(half undef, half undef) 213 %V2f16 = call <2 x half> @llvm.minnum.v2f16(<2 x half> undef, <2 x half> undef) 214 %V4f16 = call <4 x half> @llvm.minnum.v4f16(<4 x half> undef, <4 x half> undef) 215 %V8f16 = call <8 x half> @llvm.minnum.v8f16(<8 x half> undef, <8 x half> undef) 216 %V16f16 = call <16 x half> @llvm.minnum.v16f16(<16 x half> undef, <16 x half> undef) 217 ret void 218} 219 220define void @maxnum16() { 221; CHECK-NOF16-LABEL: 'maxnum16' 222; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16 = call half @llvm.maxnum.f16(half undef, half undef) 223; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V2f16 = call <2 x half> @llvm.maxnum.v2f16(<2 x half> undef, <2 x half> undef) 224; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %V4f16 = call <4 x half> @llvm.maxnum.v4f16(<4 x half> undef, <4 x half> undef) 225; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %V8f16 = call <8 x half> @llvm.maxnum.v8f16(<8 x half> undef, <8 x half> undef) 226; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %V16f16 = call <16 x half> @llvm.maxnum.v16f16(<16 x half> undef, <16 x half> undef) 227; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 228; 229; CHECK-F16-LABEL: 'maxnum16' 230; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16 = call half @llvm.maxnum.f16(half undef, half undef) 231; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2f16 = call <2 x half> @llvm.maxnum.v2f16(<2 x half> undef, <2 x half> undef) 232; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4f16 = call <4 x half> @llvm.maxnum.v4f16(<4 x half> undef, <4 x half> undef) 233; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8f16 = call <8 x half> @llvm.maxnum.v8f16(<8 x half> undef, <8 x half> undef) 234; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V16f16 = call <16 x half> @llvm.maxnum.v16f16(<16 x half> undef, <16 x half> undef) 235; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 236; 237 %f16 = call half @llvm.maxnum.f16(half undef, half undef) 238 %V2f16 = call <2 x half> @llvm.maxnum.v2f16(<2 x half> undef, <2 x half> undef) 239 %V4f16 = call <4 x half> @llvm.maxnum.v4f16(<4 x half> undef, <4 x half> undef) 240 %V8f16 = call <8 x half> @llvm.maxnum.v8f16(<8 x half> undef, <8 x half> undef) 241 %V16f16 = call <16 x half> @llvm.maxnum.v16f16(<16 x half> undef, <16 x half> undef) 242 ret void 243} 244 245define void @minnum() { 246; CHECK-LABEL: 'minnum' 247; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32 = call float @llvm.minnum.f32(float undef, float undef) 248; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f64 = call double @llvm.minnum.f64(double undef, double undef) 249; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2f32 = call <2 x float> @llvm.minnum.v2f32(<2 x float> undef, <2 x float> undef) 250; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4f32 = call <4 x float> @llvm.minnum.v4f32(<4 x float> undef, <4 x float> undef) 251; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8f32 = call <8 x float> @llvm.minnum.v8f32(<8 x float> undef, <8 x float> undef) 252; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2f64 = call <2 x double> @llvm.minnum.v2f64(<2 x double> undef, <2 x double> undef) 253; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4f64 = call <4 x double> @llvm.minnum.v4f64(<4 x double> undef, <4 x double> undef) 254; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 255; 256 %f32 = call float @llvm.minnum.f32(float undef, float undef) 257 %f64 = call double @llvm.minnum.f64(double undef, double undef) 258 %V2f32 = call <2 x float> @llvm.minnum.v2f32(<2 x float> undef, <2 x float> undef) 259 %V4f32 = call <4 x float> @llvm.minnum.v4f32(<4 x float> undef, <4 x float> undef) 260 %V8f32 = call <8 x float> @llvm.minnum.v8f32(<8 x float> undef, <8 x float> undef) 261 %V2f64 = call <2 x double> @llvm.minnum.v2f64(<2 x double> undef, <2 x double> undef) 262 %V4f64 = call <4 x double> @llvm.minnum.v4f64(<4 x double> undef, <4 x double> undef) 263 ret void 264} 265 266define void @maxnum() { 267; CHECK-LABEL: 'maxnum' 268; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32 = call float @llvm.maxnum.f32(float undef, float undef) 269; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f64 = call double @llvm.maxnum.f64(double undef, double undef) 270; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2f32 = call <2 x float> @llvm.maxnum.v2f32(<2 x float> undef, <2 x float> undef) 271; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4f32 = call <4 x float> @llvm.maxnum.v4f32(<4 x float> undef, <4 x float> undef) 272; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8f32 = call <8 x float> @llvm.maxnum.v8f32(<8 x float> undef, <8 x float> undef) 273; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2f64 = call <2 x double> @llvm.maxnum.v2f64(<2 x double> undef, <2 x double> undef) 274; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4f64 = call <4 x double> @llvm.maxnum.v4f64(<4 x double> undef, <4 x double> undef) 275; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 276; 277 %f32 = call float @llvm.maxnum.f32(float undef, float undef) 278 %f64 = call double @llvm.maxnum.f64(double undef, double undef) 279 %V2f32 = call <2 x float> @llvm.maxnum.v2f32(<2 x float> undef, <2 x float> undef) 280 %V4f32 = call <4 x float> @llvm.maxnum.v4f32(<4 x float> undef, <4 x float> undef) 281 %V8f32 = call <8 x float> @llvm.maxnum.v8f32(<8 x float> undef, <8 x float> undef) 282 %V2f64 = call <2 x double> @llvm.maxnum.v2f64(<2 x double> undef, <2 x double> undef) 283 %V4f64 = call <4 x double> @llvm.maxnum.v4f64(<4 x double> undef, <4 x double> undef) 284 ret void 285} 286 287 288define void @minimum16() { 289; CHECK-NOF16-LABEL: 'minimum16' 290; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16 = call half @llvm.minimum.f16(half undef, half undef) 291; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V2f16 = call <2 x half> @llvm.minimum.v2f16(<2 x half> undef, <2 x half> undef) 292; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %V4f16 = call <4 x half> @llvm.minimum.v4f16(<4 x half> undef, <4 x half> undef) 293; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %V8f16 = call <8 x half> @llvm.minimum.v8f16(<8 x half> undef, <8 x half> undef) 294; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %V16f16 = call <16 x half> @llvm.minimum.v16f16(<16 x half> undef, <16 x half> undef) 295; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 296; 297; CHECK-F16-LABEL: 'minimum16' 298; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16 = call half @llvm.minimum.f16(half undef, half undef) 299; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2f16 = call <2 x half> @llvm.minimum.v2f16(<2 x half> undef, <2 x half> undef) 300; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4f16 = call <4 x half> @llvm.minimum.v4f16(<4 x half> undef, <4 x half> undef) 301; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8f16 = call <8 x half> @llvm.minimum.v8f16(<8 x half> undef, <8 x half> undef) 302; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V16f16 = call <16 x half> @llvm.minimum.v16f16(<16 x half> undef, <16 x half> undef) 303; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 304; 305 %f16 = call half @llvm.minimum.f16(half undef, half undef) 306 %V2f16 = call <2 x half> @llvm.minimum.v2f16(<2 x half> undef, <2 x half> undef) 307 %V4f16 = call <4 x half> @llvm.minimum.v4f16(<4 x half> undef, <4 x half> undef) 308 %V8f16 = call <8 x half> @llvm.minimum.v8f16(<8 x half> undef, <8 x half> undef) 309 %V16f16 = call <16 x half> @llvm.minimum.v16f16(<16 x half> undef, <16 x half> undef) 310 ret void 311} 312 313define void @maximum16() { 314; CHECK-NOF16-LABEL: 'maximum16' 315; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16 = call half @llvm.maximum.f16(half undef, half undef) 316; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V2f16 = call <2 x half> @llvm.maximum.v2f16(<2 x half> undef, <2 x half> undef) 317; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %V4f16 = call <4 x half> @llvm.maximum.v4f16(<4 x half> undef, <4 x half> undef) 318; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %V8f16 = call <8 x half> @llvm.maximum.v8f16(<8 x half> undef, <8 x half> undef) 319; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %V16f16 = call <16 x half> @llvm.maximum.v16f16(<16 x half> undef, <16 x half> undef) 320; CHECK-NOF16-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 321; 322; CHECK-F16-LABEL: 'maximum16' 323; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16 = call half @llvm.maximum.f16(half undef, half undef) 324; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2f16 = call <2 x half> @llvm.maximum.v2f16(<2 x half> undef, <2 x half> undef) 325; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4f16 = call <4 x half> @llvm.maximum.v4f16(<4 x half> undef, <4 x half> undef) 326; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8f16 = call <8 x half> @llvm.maximum.v8f16(<8 x half> undef, <8 x half> undef) 327; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V16f16 = call <16 x half> @llvm.maximum.v16f16(<16 x half> undef, <16 x half> undef) 328; CHECK-F16-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 329; 330 %f16 = call half @llvm.maximum.f16(half undef, half undef) 331 %V2f16 = call <2 x half> @llvm.maximum.v2f16(<2 x half> undef, <2 x half> undef) 332 %V4f16 = call <4 x half> @llvm.maximum.v4f16(<4 x half> undef, <4 x half> undef) 333 %V8f16 = call <8 x half> @llvm.maximum.v8f16(<8 x half> undef, <8 x half> undef) 334 %V16f16 = call <16 x half> @llvm.maximum.v16f16(<16 x half> undef, <16 x half> undef) 335 ret void 336} 337 338define void @minimum() { 339; CHECK-LABEL: 'minimum' 340; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32 = call float @llvm.minimum.f32(float undef, float undef) 341; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f64 = call double @llvm.minimum.f64(double undef, double undef) 342; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2f32 = call <2 x float> @llvm.minimum.v2f32(<2 x float> undef, <2 x float> undef) 343; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4f32 = call <4 x float> @llvm.minimum.v4f32(<4 x float> undef, <4 x float> undef) 344; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8f32 = call <8 x float> @llvm.minimum.v8f32(<8 x float> undef, <8 x float> undef) 345; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2f64 = call <2 x double> @llvm.minimum.v2f64(<2 x double> undef, <2 x double> undef) 346; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4f64 = call <4 x double> @llvm.minimum.v4f64(<4 x double> undef, <4 x double> undef) 347; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 348; 349 %f32 = call float @llvm.minimum.f32(float undef, float undef) 350 %f64 = call double @llvm.minimum.f64(double undef, double undef) 351 %V2f32 = call <2 x float> @llvm.minimum.v2f32(<2 x float> undef, <2 x float> undef) 352 %V4f32 = call <4 x float> @llvm.minimum.v4f32(<4 x float> undef, <4 x float> undef) 353 %V8f32 = call <8 x float> @llvm.minimum.v8f32(<8 x float> undef, <8 x float> undef) 354 %V2f64 = call <2 x double> @llvm.minimum.v2f64(<2 x double> undef, <2 x double> undef) 355 %V4f64 = call <4 x double> @llvm.minimum.v4f64(<4 x double> undef, <4 x double> undef) 356 ret void 357} 358 359define void @maximum() { 360; CHECK-LABEL: 'maximum' 361; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32 = call float @llvm.maximum.f32(float undef, float undef) 362; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f64 = call double @llvm.maximum.f64(double undef, double undef) 363; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2f32 = call <2 x float> @llvm.maximum.v2f32(<2 x float> undef, <2 x float> undef) 364; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4f32 = call <4 x float> @llvm.maximum.v4f32(<4 x float> undef, <4 x float> undef) 365; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8f32 = call <8 x float> @llvm.maximum.v8f32(<8 x float> undef, <8 x float> undef) 366; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2f64 = call <2 x double> @llvm.maximum.v2f64(<2 x double> undef, <2 x double> undef) 367; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4f64 = call <4 x double> @llvm.maximum.v4f64(<4 x double> undef, <4 x double> undef) 368; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 369; 370 %f32 = call float @llvm.maximum.f32(float undef, float undef) 371 %f64 = call double @llvm.maximum.f64(double undef, double undef) 372 %V2f32 = call <2 x float> @llvm.maximum.v2f32(<2 x float> undef, <2 x float> undef) 373 %V4f32 = call <4 x float> @llvm.maximum.v4f32(<4 x float> undef, <4 x float> undef) 374 %V8f32 = call <8 x float> @llvm.maximum.v8f32(<8 x float> undef, <8 x float> undef) 375 %V2f64 = call <2 x double> @llvm.maximum.v2f64(<2 x double> undef, <2 x double> undef) 376 %V4f64 = call <4 x double> @llvm.maximum.v4f64(<4 x double> undef, <4 x double> undef) 377 ret void 378} 379 380declare i8 @llvm.umin.i8(i8, i8) 381declare i16 @llvm.umin.i16(i16, i16) 382declare i32 @llvm.umin.i32(i32, i32) 383declare i64 @llvm.umin.i64(i64, i64) 384declare <1 x i8> @llvm.umin.v1i8(<1 x i8>, <1 x i8>) 385declare <3 x i8> @llvm.umin.v3i8(<3 x i8>, <3 x i8>) 386declare <4 x i8> @llvm.umin.v4i8(<4 x i8>, <4 x i8>) 387declare <8 x i8> @llvm.umin.v8i8(<8 x i8>, <8 x i8>) 388declare <16 x i8> @llvm.umin.v16i8(<16 x i8>, <16 x i8>) 389declare <32 x i8> @llvm.umin.v32i8(<32 x i8>, <32 x i8>) 390declare <64 x i8> @llvm.umin.v64i8(<64 x i8>, <64 x i8>) 391declare <2 x i16> @llvm.umin.v2i16(<2 x i16>, <2 x i16>) 392declare <4 x i16> @llvm.umin.v4i16(<4 x i16>, <4 x i16>) 393declare <8 x i16> @llvm.umin.v8i16(<8 x i16>, <8 x i16>) 394declare <16 x i16> @llvm.umin.v16i16(<16 x i16>, <16 x i16>) 395declare <2 x i32> @llvm.umin.v2i32(<2 x i32>, <2 x i32>) 396declare <4 x i32> @llvm.umin.v4i32(<4 x i32>, <4 x i32>) 397declare <8 x i32> @llvm.umin.v8i32(<8 x i32>, <8 x i32>) 398declare <2 x i64> @llvm.umin.v2i64(<2 x i64>, <2 x i64>) 399declare <4 x i64> @llvm.umin.v4i64(<4 x i64>, <4 x i64>) 400 401declare i8 @llvm.umax.i8(i8, i8) 402declare i16 @llvm.umax.i16(i16, i16) 403declare i32 @llvm.umax.i32(i32, i32) 404declare i64 @llvm.umax.i64(i64, i64) 405declare <1 x i8> @llvm.umax.v1i8(<1 x i8>, <1 x i8>) 406declare <3 x i8> @llvm.umax.v3i8(<3 x i8>, <3 x i8>) 407declare <4 x i8> @llvm.umax.v4i8(<4 x i8>, <4 x i8>) 408declare <8 x i8> @llvm.umax.v8i8(<8 x i8>, <8 x i8>) 409declare <16 x i8> @llvm.umax.v16i8(<16 x i8>, <16 x i8>) 410declare <32 x i8> @llvm.umax.v32i8(<32 x i8>, <32 x i8>) 411declare <64 x i8> @llvm.umax.v64i8(<64 x i8>, <64 x i8>) 412declare <2 x i16> @llvm.umax.v2i16(<2 x i16>, <2 x i16>) 413declare <4 x i16> @llvm.umax.v4i16(<4 x i16>, <4 x i16>) 414declare <8 x i16> @llvm.umax.v8i16(<8 x i16>, <8 x i16>) 415declare <16 x i16> @llvm.umax.v16i16(<16 x i16>, <16 x i16>) 416declare <2 x i32> @llvm.umax.v2i32(<2 x i32>, <2 x i32>) 417declare <4 x i32> @llvm.umax.v4i32(<4 x i32>, <4 x i32>) 418declare <8 x i32> @llvm.umax.v8i32(<8 x i32>, <8 x i32>) 419declare <2 x i64> @llvm.umax.v2i64(<2 x i64>, <2 x i64>) 420declare <4 x i64> @llvm.umax.v4i64(<4 x i64>, <4 x i64>) 421 422declare i8 @llvm.smin.i8(i8, i8) 423declare i16 @llvm.smin.i16(i16, i16) 424declare i32 @llvm.smin.i32(i32, i32) 425declare i64 @llvm.smin.i64(i64, i64) 426declare <1 x i8> @llvm.smin.v1i8(<1 x i8>, <1 x i8>) 427declare <3 x i8> @llvm.smin.v3i8(<3 x i8>, <3 x i8>) 428declare <4 x i8> @llvm.smin.v4i8(<4 x i8>, <4 x i8>) 429declare <8 x i8> @llvm.smin.v8i8(<8 x i8>, <8 x i8>) 430declare <16 x i8> @llvm.smin.v16i8(<16 x i8>, <16 x i8>) 431declare <32 x i8> @llvm.smin.v32i8(<32 x i8>, <32 x i8>) 432declare <64 x i8> @llvm.smin.v64i8(<64 x i8>, <64 x i8>) 433declare <2 x i16> @llvm.smin.v2i16(<2 x i16>, <2 x i16>) 434declare <4 x i16> @llvm.smin.v4i16(<4 x i16>, <4 x i16>) 435declare <8 x i16> @llvm.smin.v8i16(<8 x i16>, <8 x i16>) 436declare <16 x i16> @llvm.smin.v16i16(<16 x i16>, <16 x i16>) 437declare <2 x i32> @llvm.smin.v2i32(<2 x i32>, <2 x i32>) 438declare <4 x i32> @llvm.smin.v4i32(<4 x i32>, <4 x i32>) 439declare <8 x i32> @llvm.smin.v8i32(<8 x i32>, <8 x i32>) 440declare <2 x i64> @llvm.smin.v2i64(<2 x i64>, <2 x i64>) 441declare <4 x i64> @llvm.smin.v4i64(<4 x i64>, <4 x i64>) 442 443declare i8 @llvm.smax.i8(i8, i8) 444declare i16 @llvm.smax.i16(i16, i16) 445declare i32 @llvm.smax.i32(i32, i32) 446declare i64 @llvm.smax.i64(i64, i64) 447declare <1 x i8> @llvm.smax.v1i8(<1 x i8>, <1 x i8>) 448declare <3 x i8> @llvm.smax.v3i8(<3 x i8>, <3 x i8>) 449declare <4 x i8> @llvm.smax.v4i8(<4 x i8>, <4 x i8>) 450declare <8 x i8> @llvm.smax.v8i8(<8 x i8>, <8 x i8>) 451declare <16 x i8> @llvm.smax.v16i8(<16 x i8>, <16 x i8>) 452declare <32 x i8> @llvm.smax.v32i8(<32 x i8>, <32 x i8>) 453declare <64 x i8> @llvm.smax.v64i8(<64 x i8>, <64 x i8>) 454declare <2 x i16> @llvm.smax.v2i16(<2 x i16>, <2 x i16>) 455declare <4 x i16> @llvm.smax.v4i16(<4 x i16>, <4 x i16>) 456declare <8 x i16> @llvm.smax.v8i16(<8 x i16>, <8 x i16>) 457declare <16 x i16> @llvm.smax.v16i16(<16 x i16>, <16 x i16>) 458declare <2 x i32> @llvm.smax.v2i32(<2 x i32>, <2 x i32>) 459declare <4 x i32> @llvm.smax.v4i32(<4 x i32>, <4 x i32>) 460declare <8 x i32> @llvm.smax.v8i32(<8 x i32>, <8 x i32>) 461declare <2 x i64> @llvm.smax.v2i64(<2 x i64>, <2 x i64>) 462declare <4 x i64> @llvm.smax.v4i64(<4 x i64>, <4 x i64>) 463 464declare half @llvm.minnum.f16(half, half) 465declare float @llvm.minnum.f32(float, float) 466declare double @llvm.minnum.f64(double, double) 467declare <2 x half> @llvm.minnum.v2f16(<2 x half>, <2 x half>) 468declare <4 x half> @llvm.minnum.v4f16(<4 x half>, <4 x half>) 469declare <8 x half> @llvm.minnum.v8f16(<8 x half>, <8 x half>) 470declare <16 x half> @llvm.minnum.v16f16(<16 x half>, <16 x half>) 471declare <2 x float> @llvm.minnum.v2f32(<2 x float>, <2 x float>) 472declare <4 x float> @llvm.minnum.v4f32(<4 x float>, <4 x float>) 473declare <8 x float> @llvm.minnum.v8f32(<8 x float>, <8 x float>) 474declare <2 x double> @llvm.minnum.v2f64(<2 x double>, <2 x double>) 475declare <4 x double> @llvm.minnum.v4f64(<4 x double>, <4 x double>) 476 477declare half @llvm.maxnum.f16(half, half) 478declare float @llvm.maxnum.f32(float, float) 479declare double @llvm.maxnum.f64(double, double) 480declare <2 x half> @llvm.maxnum.v2f16(<2 x half>, <2 x half>) 481declare <4 x half> @llvm.maxnum.v4f16(<4 x half>, <4 x half>) 482declare <8 x half> @llvm.maxnum.v8f16(<8 x half>, <8 x half>) 483declare <16 x half> @llvm.maxnum.v16f16(<16 x half>, <16 x half>) 484declare <2 x float> @llvm.maxnum.v2f32(<2 x float>, <2 x float>) 485declare <4 x float> @llvm.maxnum.v4f32(<4 x float>, <4 x float>) 486declare <8 x float> @llvm.maxnum.v8f32(<8 x float>, <8 x float>) 487declare <2 x double> @llvm.maxnum.v2f64(<2 x double>, <2 x double>) 488declare <4 x double> @llvm.maxnum.v4f64(<4 x double>, <4 x double>) 489 490declare half @llvm.minimum.f16(half, half) 491declare float @llvm.minimum.f32(float, float) 492declare double @llvm.minimum.f64(double, double) 493declare <2 x half> @llvm.minimum.v2f16(<2 x half>, <2 x half>) 494declare <4 x half> @llvm.minimum.v4f16(<4 x half>, <4 x half>) 495declare <8 x half> @llvm.minimum.v8f16(<8 x half>, <8 x half>) 496declare <16 x half> @llvm.minimum.v16f16(<16 x half>, <16 x half>) 497declare <2 x float> @llvm.minimum.v2f32(<2 x float>, <2 x float>) 498declare <4 x float> @llvm.minimum.v4f32(<4 x float>, <4 x float>) 499declare <8 x float> @llvm.minimum.v8f32(<8 x float>, <8 x float>) 500declare <2 x double> @llvm.minimum.v2f64(<2 x double>, <2 x double>) 501declare <4 x double> @llvm.minimum.v4f64(<4 x double>, <4 x double>) 502 503declare half @llvm.maximum.f16(half, half) 504declare float @llvm.maximum.f32(float, float) 505declare double @llvm.maximum.f64(double, double) 506declare <2 x half> @llvm.maximum.v2f16(<2 x half>, <2 x half>) 507declare <4 x half> @llvm.maximum.v4f16(<4 x half>, <4 x half>) 508declare <8 x half> @llvm.maximum.v8f16(<8 x half>, <8 x half>) 509declare <16 x half> @llvm.maximum.v16f16(<16 x half>, <16 x half>) 510declare <2 x float> @llvm.maximum.v2f32(<2 x float>, <2 x float>) 511declare <4 x float> @llvm.maximum.v4f32(<4 x float>, <4 x float>) 512declare <8 x float> @llvm.maximum.v8f32(<8 x float>, <8 x float>) 513declare <2 x double> @llvm.maximum.v2f64(<2 x double>, <2 x double>) 514declare <4 x double> @llvm.maximum.v4f64(<4 x double>, <4 x double>) 515