1*ad1b19fcSSilviu Baranga; RUN: llc < %s -mtriple=armv8-linux-gnu -mattr=+neon | FileCheck %s 2*ad1b19fcSSilviu Baranga 3*ad1b19fcSSilviu Baranga; CHECK-LABEL: t1 4*ad1b19fcSSilviu Baranga; CHECK: vmax.s32 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}} 5*ad1b19fcSSilviu Barangadefine <4 x i32> @t1(<4 x i32> %a, <4 x i32> %b) { 6*ad1b19fcSSilviu Baranga %t1 = icmp sgt <4 x i32> %a, %b 7*ad1b19fcSSilviu Baranga %t2 = select <4 x i1> %t1, <4 x i32> %a, <4 x i32> %b 8*ad1b19fcSSilviu Baranga ret <4 x i32> %t2 9*ad1b19fcSSilviu Baranga} 10*ad1b19fcSSilviu Baranga 11*ad1b19fcSSilviu Baranga; CHECK-LABEL: t2 12*ad1b19fcSSilviu Baranga; CHECK: vmin.s32 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}} 13*ad1b19fcSSilviu Barangadefine <4 x i32> @t2(<4 x i32> %a, <4 x i32> %b) { 14*ad1b19fcSSilviu Baranga %t1 = icmp slt <4 x i32> %a, %b 15*ad1b19fcSSilviu Baranga %t2 = select <4 x i1> %t1, <4 x i32> %a, <4 x i32> %b 16*ad1b19fcSSilviu Baranga ret <4 x i32> %t2 17*ad1b19fcSSilviu Baranga} 18*ad1b19fcSSilviu Baranga 19*ad1b19fcSSilviu Baranga; CHECK-LABEL: t3 20*ad1b19fcSSilviu Baranga; CHECK: vmax.u32 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}} 21*ad1b19fcSSilviu Barangadefine <4 x i32> @t3(<4 x i32> %a, <4 x i32> %b) { 22*ad1b19fcSSilviu Baranga %t1 = icmp ugt <4 x i32> %a, %b 23*ad1b19fcSSilviu Baranga %t2 = select <4 x i1> %t1, <4 x i32> %a, <4 x i32> %b 24*ad1b19fcSSilviu Baranga ret <4 x i32> %t2 25*ad1b19fcSSilviu Baranga} 26*ad1b19fcSSilviu Baranga 27*ad1b19fcSSilviu Baranga; CHECK-LABEL: t4 28*ad1b19fcSSilviu Baranga; CHECK: vmin.u32 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}} 29*ad1b19fcSSilviu Barangadefine <4 x i32> @t4(<4 x i32> %a, <4 x i32> %b) { 30*ad1b19fcSSilviu Baranga %t1 = icmp ult <4 x i32> %a, %b 31*ad1b19fcSSilviu Baranga %t2 = select <4 x i1> %t1, <4 x i32> %a, <4 x i32> %b 32*ad1b19fcSSilviu Baranga ret <4 x i32> %t2 33*ad1b19fcSSilviu Baranga} 34*ad1b19fcSSilviu Baranga 35*ad1b19fcSSilviu Baranga; CHECK-LABEL: t5 36*ad1b19fcSSilviu Baranga; CHECK: vmax.s32 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 37*ad1b19fcSSilviu Barangadefine <2 x i32> @t5(<2 x i32> %a, <2 x i32> %b) { 38*ad1b19fcSSilviu Baranga %t1 = icmp sgt <2 x i32> %a, %b 39*ad1b19fcSSilviu Baranga %t2 = select <2 x i1> %t1, <2 x i32> %a, <2 x i32> %b 40*ad1b19fcSSilviu Baranga ret <2 x i32> %t2 41*ad1b19fcSSilviu Baranga} 42*ad1b19fcSSilviu Baranga 43*ad1b19fcSSilviu Baranga; CHECK-LABEL: t6 44*ad1b19fcSSilviu Baranga; CHECK: vmin.s32 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 45*ad1b19fcSSilviu Barangadefine <2 x i32> @t6(<2 x i32> %a, <2 x i32> %b) { 46*ad1b19fcSSilviu Baranga %t1 = icmp slt <2 x i32> %a, %b 47*ad1b19fcSSilviu Baranga %t2 = select <2 x i1> %t1, <2 x i32> %a, <2 x i32> %b 48*ad1b19fcSSilviu Baranga ret <2 x i32> %t2 49*ad1b19fcSSilviu Baranga} 50*ad1b19fcSSilviu Baranga 51*ad1b19fcSSilviu Baranga; CHECK-LABEL: t7 52*ad1b19fcSSilviu Baranga; CHECK: vmax.u32 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 53*ad1b19fcSSilviu Barangadefine <2 x i32> @t7(<2 x i32> %a, <2 x i32> %b) { 54*ad1b19fcSSilviu Baranga %t1 = icmp ugt <2 x i32> %a, %b 55*ad1b19fcSSilviu Baranga %t2 = select <2 x i1> %t1, <2 x i32> %a, <2 x i32> %b 56*ad1b19fcSSilviu Baranga ret <2 x i32> %t2 57*ad1b19fcSSilviu Baranga} 58*ad1b19fcSSilviu Baranga 59*ad1b19fcSSilviu Baranga; CHECK-LABEL: t8 60*ad1b19fcSSilviu Baranga; CHECK: vmin.u32 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 61*ad1b19fcSSilviu Barangadefine <2 x i32> @t8(<2 x i32> %a, <2 x i32> %b) { 62*ad1b19fcSSilviu Baranga %t1 = icmp ult <2 x i32> %a, %b 63*ad1b19fcSSilviu Baranga %t2 = select <2 x i1> %t1, <2 x i32> %a, <2 x i32> %b 64*ad1b19fcSSilviu Baranga ret <2 x i32> %t2 65*ad1b19fcSSilviu Baranga} 66*ad1b19fcSSilviu Baranga 67*ad1b19fcSSilviu Baranga; CHECK-LABEL: t9 68*ad1b19fcSSilviu Baranga; CHECK: vmax.s16 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}} 69*ad1b19fcSSilviu Barangadefine <8 x i16> @t9(<8 x i16> %a, <8 x i16> %b) { 70*ad1b19fcSSilviu Baranga %t1 = icmp sgt <8 x i16> %a, %b 71*ad1b19fcSSilviu Baranga %t2 = select <8 x i1> %t1, <8 x i16> %a, <8 x i16> %b 72*ad1b19fcSSilviu Baranga ret <8 x i16> %t2 73*ad1b19fcSSilviu Baranga} 74*ad1b19fcSSilviu Baranga 75*ad1b19fcSSilviu Baranga; CHECK-LABEL: t10 76*ad1b19fcSSilviu Baranga; CHECK: vmin.s16 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}} 77*ad1b19fcSSilviu Barangadefine <8 x i16> @t10(<8 x i16> %a, <8 x i16> %b) { 78*ad1b19fcSSilviu Baranga %t1 = icmp slt <8 x i16> %a, %b 79*ad1b19fcSSilviu Baranga %t2 = select <8 x i1> %t1, <8 x i16> %a, <8 x i16> %b 80*ad1b19fcSSilviu Baranga ret <8 x i16> %t2 81*ad1b19fcSSilviu Baranga} 82*ad1b19fcSSilviu Baranga 83*ad1b19fcSSilviu Baranga; CHECK-LABEL: t11 84*ad1b19fcSSilviu Baranga; CHECK: vmax.u16 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}} 85*ad1b19fcSSilviu Barangadefine <8 x i16> @t11(<8 x i16> %a, <8 x i16> %b) { 86*ad1b19fcSSilviu Baranga %t1 = icmp ugt <8 x i16> %a, %b 87*ad1b19fcSSilviu Baranga %t2 = select <8 x i1> %t1, <8 x i16> %a, <8 x i16> %b 88*ad1b19fcSSilviu Baranga ret <8 x i16> %t2 89*ad1b19fcSSilviu Baranga} 90*ad1b19fcSSilviu Baranga 91*ad1b19fcSSilviu Baranga; CHECK-LABEL: t12 92*ad1b19fcSSilviu Baranga; CHECK: vmin.u16 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}} 93*ad1b19fcSSilviu Barangadefine <8 x i16> @t12(<8 x i16> %a, <8 x i16> %b) { 94*ad1b19fcSSilviu Baranga %t1 = icmp ult <8 x i16> %a, %b 95*ad1b19fcSSilviu Baranga %t2 = select <8 x i1> %t1, <8 x i16> %a, <8 x i16> %b 96*ad1b19fcSSilviu Baranga ret <8 x i16> %t2 97*ad1b19fcSSilviu Baranga} 98*ad1b19fcSSilviu Baranga 99*ad1b19fcSSilviu Baranga; CHECK-LABEL: t13 100*ad1b19fcSSilviu Baranga; CHECK: vmax.s16 101*ad1b19fcSSilviu Barangadefine <4 x i16> @t13(<4 x i16> %a, <4 x i16> %b) { 102*ad1b19fcSSilviu Baranga %t1 = icmp sgt <4 x i16> %a, %b 103*ad1b19fcSSilviu Baranga %t2 = select <4 x i1> %t1, <4 x i16> %a, <4 x i16> %b 104*ad1b19fcSSilviu Baranga ret <4 x i16> %t2 105*ad1b19fcSSilviu Baranga} 106*ad1b19fcSSilviu Baranga 107*ad1b19fcSSilviu Baranga; CHECK-LABEL: t14 108*ad1b19fcSSilviu Baranga; CHECK: vmin.s16 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 109*ad1b19fcSSilviu Barangadefine <4 x i16> @t14(<4 x i16> %a, <4 x i16> %b) { 110*ad1b19fcSSilviu Baranga %t1 = icmp slt <4 x i16> %a, %b 111*ad1b19fcSSilviu Baranga %t2 = select <4 x i1> %t1, <4 x i16> %a, <4 x i16> %b 112*ad1b19fcSSilviu Baranga ret <4 x i16> %t2 113*ad1b19fcSSilviu Baranga} 114*ad1b19fcSSilviu Baranga 115*ad1b19fcSSilviu Baranga; CHECK-LABEL: t15 116*ad1b19fcSSilviu Baranga; CHECK: vmax.u16 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 117*ad1b19fcSSilviu Barangadefine <4 x i16> @t15(<4 x i16> %a, <4 x i16> %b) { 118*ad1b19fcSSilviu Baranga %t1 = icmp ugt <4 x i16> %a, %b 119*ad1b19fcSSilviu Baranga %t2 = select <4 x i1> %t1, <4 x i16> %a, <4 x i16> %b 120*ad1b19fcSSilviu Baranga ret <4 x i16> %t2 121*ad1b19fcSSilviu Baranga} 122*ad1b19fcSSilviu Baranga 123*ad1b19fcSSilviu Baranga; CHECK-LABEL: t16 124*ad1b19fcSSilviu Baranga; CHECK: vmin.u16 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 125*ad1b19fcSSilviu Barangadefine <4 x i16> @t16(<4 x i16> %a, <4 x i16> %b) { 126*ad1b19fcSSilviu Baranga %t1 = icmp ult <4 x i16> %a, %b 127*ad1b19fcSSilviu Baranga %t2 = select <4 x i1> %t1, <4 x i16> %a, <4 x i16> %b 128*ad1b19fcSSilviu Baranga ret <4 x i16> %t2 129*ad1b19fcSSilviu Baranga} 130*ad1b19fcSSilviu Baranga 131*ad1b19fcSSilviu Baranga; CHECK-LABEL: t17 132*ad1b19fcSSilviu Baranga; CHECK: vmax.s8 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}} 133*ad1b19fcSSilviu Barangadefine <16 x i8> @t17(<16 x i8> %a, <16 x i8> %b) { 134*ad1b19fcSSilviu Baranga %t1 = icmp sgt <16 x i8> %a, %b 135*ad1b19fcSSilviu Baranga %t2 = select <16 x i1> %t1, <16 x i8> %a, <16 x i8> %b 136*ad1b19fcSSilviu Baranga ret <16 x i8> %t2 137*ad1b19fcSSilviu Baranga} 138*ad1b19fcSSilviu Baranga 139*ad1b19fcSSilviu Baranga; CHECK-LABEL: t18 140*ad1b19fcSSilviu Baranga; CHECK: vmin.s8 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}} 141*ad1b19fcSSilviu Barangadefine <16 x i8> @t18(<16 x i8> %a, <16 x i8> %b) { 142*ad1b19fcSSilviu Baranga %t1 = icmp slt <16 x i8> %a, %b 143*ad1b19fcSSilviu Baranga %t2 = select <16 x i1> %t1, <16 x i8> %a, <16 x i8> %b 144*ad1b19fcSSilviu Baranga ret <16 x i8> %t2 145*ad1b19fcSSilviu Baranga} 146*ad1b19fcSSilviu Baranga 147*ad1b19fcSSilviu Baranga; CHECK-LABEL: t19 148*ad1b19fcSSilviu Baranga; CHECK: vmax.u8 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}} 149*ad1b19fcSSilviu Barangadefine <16 x i8> @t19(<16 x i8> %a, <16 x i8> %b) { 150*ad1b19fcSSilviu Baranga %t1 = icmp ugt <16 x i8> %a, %b 151*ad1b19fcSSilviu Baranga %t2 = select <16 x i1> %t1, <16 x i8> %a, <16 x i8> %b 152*ad1b19fcSSilviu Baranga ret <16 x i8> %t2 153*ad1b19fcSSilviu Baranga} 154*ad1b19fcSSilviu Baranga 155*ad1b19fcSSilviu Baranga; CHECK-LABEL: t20 156*ad1b19fcSSilviu Baranga; CHECK: vmin.u8 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}} 157*ad1b19fcSSilviu Barangadefine <16 x i8> @t20(<16 x i8> %a, <16 x i8> %b) { 158*ad1b19fcSSilviu Baranga %t1 = icmp ult <16 x i8> %a, %b 159*ad1b19fcSSilviu Baranga %t2 = select <16 x i1> %t1, <16 x i8> %a, <16 x i8> %b 160*ad1b19fcSSilviu Baranga ret <16 x i8> %t2 161*ad1b19fcSSilviu Baranga} 162*ad1b19fcSSilviu Baranga 163*ad1b19fcSSilviu Baranga; CHECK-LABEL: t21 164*ad1b19fcSSilviu Baranga; CHECK: vmax.s8 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 165*ad1b19fcSSilviu Barangadefine <8 x i8> @t21(<8 x i8> %a, <8 x i8> %b) { 166*ad1b19fcSSilviu Baranga %t1 = icmp sgt <8 x i8> %a, %b 167*ad1b19fcSSilviu Baranga %t2 = select <8 x i1> %t1, <8 x i8> %a, <8 x i8> %b 168*ad1b19fcSSilviu Baranga ret <8 x i8> %t2 169*ad1b19fcSSilviu Baranga} 170*ad1b19fcSSilviu Baranga 171*ad1b19fcSSilviu Baranga; CHECK-LABEL: t22 172*ad1b19fcSSilviu Baranga; CHECK: vmin.s8 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 173*ad1b19fcSSilviu Barangadefine <8 x i8> @t22(<8 x i8> %a, <8 x i8> %b) { 174*ad1b19fcSSilviu Baranga %t1 = icmp slt <8 x i8> %a, %b 175*ad1b19fcSSilviu Baranga %t2 = select <8 x i1> %t1, <8 x i8> %a, <8 x i8> %b 176*ad1b19fcSSilviu Baranga ret <8 x i8> %t2 177*ad1b19fcSSilviu Baranga} 178*ad1b19fcSSilviu Baranga 179*ad1b19fcSSilviu Baranga; CHECK-LABEL: t23 180*ad1b19fcSSilviu Baranga; CHECK: vmax.u8 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 181*ad1b19fcSSilviu Barangadefine <8 x i8> @t23(<8 x i8> %a, <8 x i8> %b) { 182*ad1b19fcSSilviu Baranga %t1 = icmp ugt <8 x i8> %a, %b 183*ad1b19fcSSilviu Baranga %t2 = select <8 x i1> %t1, <8 x i8> %a, <8 x i8> %b 184*ad1b19fcSSilviu Baranga ret <8 x i8> %t2 185*ad1b19fcSSilviu Baranga} 186*ad1b19fcSSilviu Baranga 187*ad1b19fcSSilviu Baranga; CHECK-LABEL: t24 188*ad1b19fcSSilviu Baranga; CHECK: vmin.u8 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 189*ad1b19fcSSilviu Barangadefine <8 x i8> @t24(<8 x i8> %a, <8 x i8> %b) { 190*ad1b19fcSSilviu Baranga %t1 = icmp ult <8 x i8> %a, %b 191*ad1b19fcSSilviu Baranga %t2 = select <8 x i1> %t1, <8 x i8> %a, <8 x i8> %b 192*ad1b19fcSSilviu Baranga ret <8 x i8> %t2 193*ad1b19fcSSilviu Baranga} 194