345 lines · plain
1; RUN: llc -mtriple=hexagon < %s | FileCheck %s2 3; minb4 5; CHECK: test_00:6; CHECK: v0.b = vmin(v0.b,v1.b)7define <64 x i8> @test_00(<64 x i8> %v0, <64 x i8> %v1) #0 {8 %t0 = icmp slt <64 x i8> %v0, %v19 %t1 = select <64 x i1> %t0, <64 x i8> %v0, <64 x i8> %v110 ret <64 x i8> %t111}12 13; CHECK: test_01:14; CHECK: v0.b = vmin(v0.b,v1.b)15define <64 x i8> @test_01(<64 x i8> %v0, <64 x i8> %v1) #0 {16 %t0 = icmp sle <64 x i8> %v0, %v117 %t1 = select <64 x i1> %t0, <64 x i8> %v0, <64 x i8> %v118 ret <64 x i8> %t119}20 21; CHECK: test_02:22; CHECK: v0.b = vmin(v0.b,v1.b)23define <64 x i8> @test_02(<64 x i8> %v0, <64 x i8> %v1) #0 {24 %t0 = icmp sgt <64 x i8> %v0, %v125 %t1 = select <64 x i1> %t0, <64 x i8> %v1, <64 x i8> %v026 ret <64 x i8> %t127}28 29; CHECK: test_03:30; CHECK: v0.b = vmin(v0.b,v1.b)31define <64 x i8> @test_03(<64 x i8> %v0, <64 x i8> %v1) #0 {32 %t0 = icmp sge <64 x i8> %v0, %v133 %t1 = select <64 x i1> %t0, <64 x i8> %v1, <64 x i8> %v034 ret <64 x i8> %t135}36 37; maxb38 39; CHECK: test_04:40; CHECK: v0.b = vmax(v0.b,v1.b)41define <64 x i8> @test_04(<64 x i8> %v0, <64 x i8> %v1) #0 {42 %t0 = icmp slt <64 x i8> %v0, %v143 %t1 = select <64 x i1> %t0, <64 x i8> %v1, <64 x i8> %v044 ret <64 x i8> %t145}46 47; CHECK: test_05:48; CHECK: v0.b = vmax(v0.b,v1.b)49define <64 x i8> @test_05(<64 x i8> %v0, <64 x i8> %v1) #0 {50 %t0 = icmp sle <64 x i8> %v0, %v151 %t1 = select <64 x i1> %t0, <64 x i8> %v1, <64 x i8> %v052 ret <64 x i8> %t153}54 55; CHECK: test_06:56; CHECK: v0.b = vmax(v0.b,v1.b)57define <64 x i8> @test_06(<64 x i8> %v0, <64 x i8> %v1) #0 {58 %t0 = icmp sgt <64 x i8> %v0, %v159 %t1 = select <64 x i1> %t0, <64 x i8> %v0, <64 x i8> %v160 ret <64 x i8> %t161}62 63; CHECK: test_07:64; CHECK: v0.b = vmax(v0.b,v1.b)65define <64 x i8> @test_07(<64 x i8> %v0, <64 x i8> %v1) #0 {66 %t0 = icmp sge <64 x i8> %v0, %v167 %t1 = select <64 x i1> %t0, <64 x i8> %v0, <64 x i8> %v168 ret <64 x i8> %t169}70 71; minub72 73; CHECK: test_08:74; CHECK: v0.ub = vmin(v0.ub,v1.ub)75define <64 x i8> @test_08(<64 x i8> %v0, <64 x i8> %v1) #0 {76 %t0 = icmp ult <64 x i8> %v0, %v177 %t1 = select <64 x i1> %t0, <64 x i8> %v0, <64 x i8> %v178 ret <64 x i8> %t179}80 81; CHECK: test_09:82; CHECK: v0.ub = vmin(v0.ub,v1.ub)83define <64 x i8> @test_09(<64 x i8> %v0, <64 x i8> %v1) #0 {84 %t0 = icmp ule <64 x i8> %v0, %v185 %t1 = select <64 x i1> %t0, <64 x i8> %v0, <64 x i8> %v186 ret <64 x i8> %t187}88 89; CHECK: test_0a:90; CHECK: v0.ub = vmin(v0.ub,v1.ub)91define <64 x i8> @test_0a(<64 x i8> %v0, <64 x i8> %v1) #0 {92 %t0 = icmp ugt <64 x i8> %v0, %v193 %t1 = select <64 x i1> %t0, <64 x i8> %v1, <64 x i8> %v094 ret <64 x i8> %t195}96 97; CHECK: test_0b:98; CHECK: v0.ub = vmin(v0.ub,v1.ub)99define <64 x i8> @test_0b(<64 x i8> %v0, <64 x i8> %v1) #0 {100 %t0 = icmp uge <64 x i8> %v0, %v1101 %t1 = select <64 x i1> %t0, <64 x i8> %v1, <64 x i8> %v0102 ret <64 x i8> %t1103}104 105; maxub106 107; CHECK: test_0c:108; CHECK: v0.ub = vmax(v0.ub,v1.ub)109define <64 x i8> @test_0c(<64 x i8> %v0, <64 x i8> %v1) #0 {110 %t0 = icmp ult <64 x i8> %v0, %v1111 %t1 = select <64 x i1> %t0, <64 x i8> %v1, <64 x i8> %v0112 ret <64 x i8> %t1113}114 115; CHECK: test_0d:116; CHECK: v0.ub = vmax(v0.ub,v1.ub)117define <64 x i8> @test_0d(<64 x i8> %v0, <64 x i8> %v1) #0 {118 %t0 = icmp ule <64 x i8> %v0, %v1119 %t1 = select <64 x i1> %t0, <64 x i8> %v1, <64 x i8> %v0120 ret <64 x i8> %t1121}122 123; CHECK: test_0e:124; CHECK: v0.ub = vmax(v0.ub,v1.ub)125define <64 x i8> @test_0e(<64 x i8> %v0, <64 x i8> %v1) #0 {126 %t0 = icmp ugt <64 x i8> %v0, %v1127 %t1 = select <64 x i1> %t0, <64 x i8> %v0, <64 x i8> %v1128 ret <64 x i8> %t1129}130 131; CHECK: test_0f:132; CHECK: v0.ub = vmax(v0.ub,v1.ub)133define <64 x i8> @test_0f(<64 x i8> %v0, <64 x i8> %v1) #0 {134 %t0 = icmp uge <64 x i8> %v0, %v1135 %t1 = select <64 x i1> %t0, <64 x i8> %v0, <64 x i8> %v1136 ret <64 x i8> %t1137}138 139; minh140 141; CHECK: test_10:142; CHECK: v0.h = vmin(v0.h,v1.h)143define <32 x i16> @test_10(<32 x i16> %v0, <32 x i16> %v1) #0 {144 %t0 = icmp slt <32 x i16> %v0, %v1145 %t1 = select <32 x i1> %t0, <32 x i16> %v0, <32 x i16> %v1146 ret <32 x i16> %t1147}148 149; CHECK: test_11:150; CHECK: v0.h = vmin(v0.h,v1.h)151define <32 x i16> @test_11(<32 x i16> %v0, <32 x i16> %v1) #0 {152 %t0 = icmp sle <32 x i16> %v0, %v1153 %t1 = select <32 x i1> %t0, <32 x i16> %v0, <32 x i16> %v1154 ret <32 x i16> %t1155}156 157; CHECK: test_12:158; CHECK: v0.h = vmin(v0.h,v1.h)159define <32 x i16> @test_12(<32 x i16> %v0, <32 x i16> %v1) #0 {160 %t0 = icmp sgt <32 x i16> %v0, %v1161 %t1 = select <32 x i1> %t0, <32 x i16> %v1, <32 x i16> %v0162 ret <32 x i16> %t1163}164 165; CHECK: test_13:166; CHECK: v0.h = vmin(v0.h,v1.h)167define <32 x i16> @test_13(<32 x i16> %v0, <32 x i16> %v1) #0 {168 %t0 = icmp sge <32 x i16> %v0, %v1169 %t1 = select <32 x i1> %t0, <32 x i16> %v1, <32 x i16> %v0170 ret <32 x i16> %t1171}172 173; maxh174 175; CHECK: test_14:176; CHECK: v0.h = vmax(v0.h,v1.h)177define <32 x i16> @test_14(<32 x i16> %v0, <32 x i16> %v1) #0 {178 %t0 = icmp slt <32 x i16> %v0, %v1179 %t1 = select <32 x i1> %t0, <32 x i16> %v1, <32 x i16> %v0180 ret <32 x i16> %t1181}182 183; CHECK: test_15:184; CHECK: v0.h = vmax(v0.h,v1.h)185define <32 x i16> @test_15(<32 x i16> %v0, <32 x i16> %v1) #0 {186 %t0 = icmp sle <32 x i16> %v0, %v1187 %t1 = select <32 x i1> %t0, <32 x i16> %v1, <32 x i16> %v0188 ret <32 x i16> %t1189}190 191; CHECK: test_16:192; CHECK: v0.h = vmax(v0.h,v1.h)193define <32 x i16> @test_16(<32 x i16> %v0, <32 x i16> %v1) #0 {194 %t0 = icmp sgt <32 x i16> %v0, %v1195 %t1 = select <32 x i1> %t0, <32 x i16> %v0, <32 x i16> %v1196 ret <32 x i16> %t1197}198 199; CHECK: test_17:200; CHECK: v0.h = vmax(v0.h,v1.h)201define <32 x i16> @test_17(<32 x i16> %v0, <32 x i16> %v1) #0 {202 %t0 = icmp sge <32 x i16> %v0, %v1203 %t1 = select <32 x i1> %t0, <32 x i16> %v0, <32 x i16> %v1204 ret <32 x i16> %t1205}206 207; minuh208 209; CHECK: test_18:210; CHECK: v0.uh = vmin(v0.uh,v1.uh)211define <32 x i16> @test_18(<32 x i16> %v0, <32 x i16> %v1) #0 {212 %t0 = icmp ult <32 x i16> %v0, %v1213 %t1 = select <32 x i1> %t0, <32 x i16> %v0, <32 x i16> %v1214 ret <32 x i16> %t1215}216 217; CHECK: test_19:218; CHECK: v0.uh = vmin(v0.uh,v1.uh)219define <32 x i16> @test_19(<32 x i16> %v0, <32 x i16> %v1) #0 {220 %t0 = icmp ule <32 x i16> %v0, %v1221 %t1 = select <32 x i1> %t0, <32 x i16> %v0, <32 x i16> %v1222 ret <32 x i16> %t1223}224 225; CHECK: test_1a:226; CHECK: v0.uh = vmin(v0.uh,v1.uh)227define <32 x i16> @test_1a(<32 x i16> %v0, <32 x i16> %v1) #0 {228 %t0 = icmp ugt <32 x i16> %v0, %v1229 %t1 = select <32 x i1> %t0, <32 x i16> %v1, <32 x i16> %v0230 ret <32 x i16> %t1231}232 233; CHECK: test_1b:234; CHECK: v0.uh = vmin(v0.uh,v1.uh)235define <32 x i16> @test_1b(<32 x i16> %v0, <32 x i16> %v1) #0 {236 %t0 = icmp uge <32 x i16> %v0, %v1237 %t1 = select <32 x i1> %t0, <32 x i16> %v1, <32 x i16> %v0238 ret <32 x i16> %t1239}240 241; maxuh242 243; CHECK: test_1c:244; CHECK: v0.uh = vmax(v0.uh,v1.uh)245define <32 x i16> @test_1c(<32 x i16> %v0, <32 x i16> %v1) #0 {246 %t0 = icmp ult <32 x i16> %v0, %v1247 %t1 = select <32 x i1> %t0, <32 x i16> %v1, <32 x i16> %v0248 ret <32 x i16> %t1249}250 251; CHECK: test_1d:252; CHECK: v0.uh = vmax(v0.uh,v1.uh)253define <32 x i16> @test_1d(<32 x i16> %v0, <32 x i16> %v1) #0 {254 %t0 = icmp ule <32 x i16> %v0, %v1255 %t1 = select <32 x i1> %t0, <32 x i16> %v1, <32 x i16> %v0256 ret <32 x i16> %t1257}258 259; CHECK: test_1e:260; CHECK: v0.uh = vmax(v0.uh,v1.uh)261define <32 x i16> @test_1e(<32 x i16> %v0, <32 x i16> %v1) #0 {262 %t0 = icmp ugt <32 x i16> %v0, %v1263 %t1 = select <32 x i1> %t0, <32 x i16> %v0, <32 x i16> %v1264 ret <32 x i16> %t1265}266 267; CHECK: test_1f:268; CHECK: v0.uh = vmax(v0.uh,v1.uh)269define <32 x i16> @test_1f(<32 x i16> %v0, <32 x i16> %v1) #0 {270 %t0 = icmp uge <32 x i16> %v0, %v1271 %t1 = select <32 x i1> %t0, <32 x i16> %v0, <32 x i16> %v1272 ret <32 x i16> %t1273}274 275; minw276 277; CHECK: test_20:278; CHECK: v0.w = vmin(v0.w,v1.w)279define <16 x i32> @test_20(<16 x i32> %v0, <16 x i32> %v1) #0 {280 %t0 = icmp slt <16 x i32> %v0, %v1281 %t1 = select <16 x i1> %t0, <16 x i32> %v0, <16 x i32> %v1282 ret <16 x i32> %t1283}284 285; CHECK: test_21:286; CHECK: v0.w = vmin(v0.w,v1.w)287define <16 x i32> @test_21(<16 x i32> %v0, <16 x i32> %v1) #0 {288 %t0 = icmp sle <16 x i32> %v0, %v1289 %t1 = select <16 x i1> %t0, <16 x i32> %v0, <16 x i32> %v1290 ret <16 x i32> %t1291}292 293; CHECK: test_22:294; CHECK: v0.w = vmin(v0.w,v1.w)295define <16 x i32> @test_22(<16 x i32> %v0, <16 x i32> %v1) #0 {296 %t0 = icmp sgt <16 x i32> %v0, %v1297 %t1 = select <16 x i1> %t0, <16 x i32> %v1, <16 x i32> %v0298 ret <16 x i32> %t1299}300 301; CHECK: test_23:302; CHECK: v0.w = vmin(v0.w,v1.w)303define <16 x i32> @test_23(<16 x i32> %v0, <16 x i32> %v1) #0 {304 %t0 = icmp sge <16 x i32> %v0, %v1305 %t1 = select <16 x i1> %t0, <16 x i32> %v1, <16 x i32> %v0306 ret <16 x i32> %t1307}308 309; maxw310 311; CHECK: test_24:312; CHECK: v0.w = vmax(v0.w,v1.w)313define <16 x i32> @test_24(<16 x i32> %v0, <16 x i32> %v1) #0 {314 %t0 = icmp slt <16 x i32> %v0, %v1315 %t1 = select <16 x i1> %t0, <16 x i32> %v1, <16 x i32> %v0316 ret <16 x i32> %t1317}318 319; CHECK: test_25:320; CHECK: v0.w = vmax(v0.w,v1.w)321define <16 x i32> @test_25(<16 x i32> %v0, <16 x i32> %v1) #0 {322 %t0 = icmp sle <16 x i32> %v0, %v1323 %t1 = select <16 x i1> %t0, <16 x i32> %v1, <16 x i32> %v0324 ret <16 x i32> %t1325}326 327; CHECK: test_26:328; CHECK: v0.w = vmax(v0.w,v1.w)329define <16 x i32> @test_26(<16 x i32> %v0, <16 x i32> %v1) #0 {330 %t0 = icmp sgt <16 x i32> %v0, %v1331 %t1 = select <16 x i1> %t0, <16 x i32> %v0, <16 x i32> %v1332 ret <16 x i32> %t1333}334 335; CHECK: test_27:336; CHECK: v0.w = vmax(v0.w,v1.w)337define <16 x i32> @test_27(<16 x i32> %v0, <16 x i32> %v1) #0 {338 %t0 = icmp sge <16 x i32> %v0, %v1339 %t1 = select <16 x i1> %t0, <16 x i32> %v0, <16 x i32> %v1340 ret <16 x i32> %t1341}342 343attributes #0 = { readnone nounwind "target-cpu"="hexagonv62" "target-features"="+hvx,+hvx-length64b" }344 345