1; RUN: llc -march=hexagon < %s | FileCheck %s 2 3; min 4 5; CHECK-LABEL: test_00: 6; CHECK: r1:0 = vminb(r1:0,r3:2) 7define <8 x i8> @test_00(<8 x i8> %a0, <8 x i8> %a1) #0 { 8 %v0 = icmp slt <8 x i8> %a0, %a1 9 %v1 = select <8 x i1> %v0, <8 x i8> %a0, <8 x i8> %a1 10 ret <8 x i8> %v1 11} 12 13; CHECK-LABEL: test_01: 14; CHECK: r1:0 = vminb(r1:0,r3:2) 15define <8 x i8> @test_01(<8 x i8> %a0, <8 x i8> %a1) #0 { 16 %v0 = icmp sle <8 x i8> %a0, %a1 17 %v1 = select <8 x i1> %v0, <8 x i8> %a0, <8 x i8> %a1 18 ret <8 x i8> %v1 19} 20 21; CHECK-LABEL: test_02: 22; CHECK: r1:0 = vminh(r1:0,r3:2) 23define <4 x i16> @test_02(<4 x i16> %a0, <4 x i16> %a1) #0 { 24 %v0 = icmp slt <4 x i16> %a0, %a1 25 %v1 = select <4 x i1> %v0, <4 x i16> %a0, <4 x i16> %a1 26 ret <4 x i16> %v1 27} 28 29; CHECK-LABEL: test_03: 30; CHECK: r1:0 = vminh(r1:0,r3:2) 31define <4 x i16> @test_03(<4 x i16> %a0, <4 x i16> %a1) #0 { 32 %v0 = icmp sle <4 x i16> %a0, %a1 33 %v1 = select <4 x i1> %v0, <4 x i16> %a0, <4 x i16> %a1 34 ret <4 x i16> %v1 35} 36 37; CHECK-LABEL: test_04: 38; CHECK: r1:0 = vminw(r1:0,r3:2) 39define <2 x i32> @test_04(<2 x i32> %a0, <2 x i32> %a1) #0 { 40 %v0 = icmp slt <2 x i32> %a0, %a1 41 %v1 = select <2 x i1> %v0, <2 x i32> %a0, <2 x i32> %a1 42 ret <2 x i32> %v1 43} 44 45; CHECK-LABEL: test_05: 46; CHECK: r1:0 = vminw(r1:0,r3:2) 47define <2 x i32> @test_05(<2 x i32> %a0, <2 x i32> %a1) #0 { 48 %v0 = icmp sle <2 x i32> %a0, %a1 49 %v1 = select <2 x i1> %v0, <2 x i32> %a0, <2 x i32> %a1 50 ret <2 x i32> %v1 51} 52 53; minu 54 55; CHECK-LABEL: test_06: 56; CHECK: r1:0 = vminub(r1:0,r3:2) 57define <8 x i8> @test_06(<8 x i8> %a0, <8 x i8> %a1) #0 { 58 %v0 = icmp ult <8 x i8> %a0, %a1 59 %v1 = select <8 x i1> %v0, <8 x i8> %a0, <8 x i8> %a1 60 ret <8 x i8> %v1 61} 62 63; CHECK-LABEL: test_07: 64; CHECK: r1:0 = vminub(r1:0,r3:2) 65define <8 x i8> @test_07(<8 x i8> %a0, <8 x i8> %a1) #0 { 66 %v0 = icmp ule <8 x i8> %a0, %a1 67 %v1 = select <8 x i1> %v0, <8 x i8> %a0, <8 x i8> %a1 68 ret <8 x i8> %v1 69} 70 71; CHECK-LABEL: test_08: 72; CHECK: r1:0 = vminuh(r1:0,r3:2) 73define <4 x i16> @test_08(<4 x i16> %a0, <4 x i16> %a1) #0 { 74 %v0 = icmp ult <4 x i16> %a0, %a1 75 %v1 = select <4 x i1> %v0, <4 x i16> %a0, <4 x i16> %a1 76 ret <4 x i16> %v1 77} 78 79; CHECK-LABEL: test_09: 80; CHECK: r1:0 = vminuh(r1:0,r3:2) 81define <4 x i16> @test_09(<4 x i16> %a0, <4 x i16> %a1) #0 { 82 %v0 = icmp ule <4 x i16> %a0, %a1 83 %v1 = select <4 x i1> %v0, <4 x i16> %a0, <4 x i16> %a1 84 ret <4 x i16> %v1 85} 86 87; CHECK-LABEL: test_0a: 88; CHECK: r1:0 = vminuw(r1:0,r3:2) 89define <2 x i32> @test_0a(<2 x i32> %a0, <2 x i32> %a1) #0 { 90 %v0 = icmp ult <2 x i32> %a0, %a1 91 %v1 = select <2 x i1> %v0, <2 x i32> %a0, <2 x i32> %a1 92 ret <2 x i32> %v1 93} 94 95; CHECK-LABEL: test_0b: 96; CHECK: r1:0 = vminuw(r1:0,r3:2) 97define <2 x i32> @test_0b(<2 x i32> %a0, <2 x i32> %a1) #0 { 98 %v0 = icmp ule <2 x i32> %a0, %a1 99 %v1 = select <2 x i1> %v0, <2 x i32> %a0, <2 x i32> %a1 100 ret <2 x i32> %v1 101} 102 103; max 104 105; CHECK-LABEL: test_0c: 106; CHECK: r1:0 = vmaxb(r1:0,r3:2) 107define <8 x i8> @test_0c(<8 x i8> %a0, <8 x i8> %a1) #0 { 108 %v0 = icmp sgt <8 x i8> %a0, %a1 109 %v1 = select <8 x i1> %v0, <8 x i8> %a0, <8 x i8> %a1 110 ret <8 x i8> %v1 111} 112 113; CHECK-LABEL: test_0d: 114; CHECK: r1:0 = vmaxb(r1:0,r3:2) 115define <8 x i8> @test_0d(<8 x i8> %a0, <8 x i8> %a1) #0 { 116 %v0 = icmp sge <8 x i8> %a0, %a1 117 %v1 = select <8 x i1> %v0, <8 x i8> %a0, <8 x i8> %a1 118 ret <8 x i8> %v1 119} 120 121; CHECK-LABEL: test_0e: 122; CHECK: r1:0 = vmaxh(r1:0,r3:2) 123define <4 x i16> @test_0e(<4 x i16> %a0, <4 x i16> %a1) #0 { 124 %v0 = icmp sgt <4 x i16> %a0, %a1 125 %v1 = select <4 x i1> %v0, <4 x i16> %a0, <4 x i16> %a1 126 ret <4 x i16> %v1 127} 128 129; CHECK-LABEL: test_0f: 130; CHECK: r1:0 = vmaxh(r1:0,r3:2) 131define <4 x i16> @test_0f(<4 x i16> %a0, <4 x i16> %a1) #0 { 132 %v0 = icmp sge <4 x i16> %a0, %a1 133 %v1 = select <4 x i1> %v0, <4 x i16> %a0, <4 x i16> %a1 134 ret <4 x i16> %v1 135} 136 137; CHECK-LABEL: test_10: 138; CHECK: r1:0 = vmaxw(r1:0,r3:2) 139define <2 x i32> @test_10(<2 x i32> %a0, <2 x i32> %a1) #0 { 140 %v0 = icmp sgt <2 x i32> %a0, %a1 141 %v1 = select <2 x i1> %v0, <2 x i32> %a0, <2 x i32> %a1 142 ret <2 x i32> %v1 143} 144 145; CHECK-LABEL: test_11: 146; CHECK: r1:0 = vmaxw(r1:0,r3:2) 147define <2 x i32> @test_11(<2 x i32> %a0, <2 x i32> %a1) #0 { 148 %v0 = icmp sge <2 x i32> %a0, %a1 149 %v1 = select <2 x i1> %v0, <2 x i32> %a0, <2 x i32> %a1 150 ret <2 x i32> %v1 151} 152 153; maxu 154 155; CHECK-LABEL: test_12: 156; CHECK: r1:0 = vmaxub(r1:0,r3:2) 157define <8 x i8> @test_12(<8 x i8> %a0, <8 x i8> %a1) #0 { 158 %v0 = icmp ugt <8 x i8> %a0, %a1 159 %v1 = select <8 x i1> %v0, <8 x i8> %a0, <8 x i8> %a1 160 ret <8 x i8> %v1 161} 162 163; CHECK-LABEL: test_13: 164; CHECK: r1:0 = vmaxub(r1:0,r3:2) 165define <8 x i8> @test_13(<8 x i8> %a0, <8 x i8> %a1) #0 { 166 %v0 = icmp uge <8 x i8> %a0, %a1 167 %v1 = select <8 x i1> %v0, <8 x i8> %a0, <8 x i8> %a1 168 ret <8 x i8> %v1 169} 170 171; CHECK-LABEL: test_14: 172; CHECK: r1:0 = vmaxuh(r1:0,r3:2) 173define <4 x i16> @test_14(<4 x i16> %a0, <4 x i16> %a1) #0 { 174 %v0 = icmp ugt <4 x i16> %a0, %a1 175 %v1 = select <4 x i1> %v0, <4 x i16> %a0, <4 x i16> %a1 176 ret <4 x i16> %v1 177} 178 179; CHECK-LABEL: test_15: 180; CHECK: r1:0 = vmaxuh(r1:0,r3:2) 181define <4 x i16> @test_15(<4 x i16> %a0, <4 x i16> %a1) #0 { 182 %v0 = icmp uge <4 x i16> %a0, %a1 183 %v1 = select <4 x i1> %v0, <4 x i16> %a0, <4 x i16> %a1 184 ret <4 x i16> %v1 185} 186 187; CHECK-LABEL: test_16: 188; CHECK: r1:0 = vmaxuw(r1:0,r3:2) 189define <2 x i32> @test_16(<2 x i32> %a0, <2 x i32> %a1) #0 { 190 %v0 = icmp ugt <2 x i32> %a0, %a1 191 %v1 = select <2 x i1> %v0, <2 x i32> %a0, <2 x i32> %a1 192 ret <2 x i32> %v1 193} 194 195; CHECK-LABEL: test_17: 196; CHECK: r1:0 = vmaxuw(r1:0,r3:2) 197define <2 x i32> @test_17(<2 x i32> %a0, <2 x i32> %a1) #0 { 198 %v0 = icmp uge <2 x i32> %a0, %a1 199 %v1 = select <2 x i1> %v0, <2 x i32> %a0, <2 x i32> %a1 200 ret <2 x i32> %v1 201} 202 203