19bd58f6fSDavid Green; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 23055c581SCraig Topper; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfh,+v,+m -target-abi=ilp32d \ 39bd58f6fSDavid Green; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV32 43055c581SCraig Topper; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfh,+v,+m -target-abi=lp64d \ 59bd58f6fSDavid Green; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV64 69bd58f6fSDavid Green 79bd58f6fSDavid Greendefine float @add_f32(<4 x float> %a, <4 x float> %b) { 89bd58f6fSDavid Green; CHECK-LABEL: add_f32: 99bd58f6fSDavid Green; CHECK: # %bb.0: 109bd58f6fSDavid Green; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma 111af3f596SDavid Green; CHECK-NEXT: vfadd.vv v8, v8, v9 121af3f596SDavid Green; CHECK-NEXT: vmv.s.x v9, zero 131af3f596SDavid Green; CHECK-NEXT: vfredusum.vs v8, v8, v9 141af3f596SDavid Green; CHECK-NEXT: vfmv.f.s fa0, v8 159bd58f6fSDavid Green; CHECK-NEXT: ret 169bd58f6fSDavid Green %r1 = call fast float @llvm.vector.reduce.fadd.f32.v4f32(float -0.0, <4 x float> %a) 179bd58f6fSDavid Green %r2 = call fast float @llvm.vector.reduce.fadd.f32.v4f32(float -0.0, <4 x float> %b) 189bd58f6fSDavid Green %r = fadd fast float %r1, %r2 199bd58f6fSDavid Green ret float %r 209bd58f6fSDavid Green} 219bd58f6fSDavid Green 229bd58f6fSDavid Greendefine float @fmul_f32(<4 x float> %a, <4 x float> %b) { 239bd58f6fSDavid Green; CHECK-LABEL: fmul_f32: 249bd58f6fSDavid Green; CHECK: # %bb.0: 259bd58f6fSDavid Green; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma 269bd58f6fSDavid Green; CHECK-NEXT: vslidedown.vi v10, v8, 2 279bd58f6fSDavid Green; CHECK-NEXT: vfmul.vv v8, v8, v10 28*9122c523SPengcheng Wang; CHECK-NEXT: vslidedown.vi v10, v9, 2 29*9122c523SPengcheng Wang; CHECK-NEXT: vfmul.vv v9, v9, v10 309bd58f6fSDavid Green; CHECK-NEXT: vrgather.vi v10, v8, 1 319bd58f6fSDavid Green; CHECK-NEXT: vfmul.vv v8, v8, v10 32*9122c523SPengcheng Wang; CHECK-NEXT: vrgather.vi v10, v9, 1 33*9122c523SPengcheng Wang; CHECK-NEXT: vfmul.vv v9, v9, v10 347b0c4184SCraig Topper; CHECK-NEXT: vfmv.f.s fa5, v8 35*9122c523SPengcheng Wang; CHECK-NEXT: vfmv.f.s fa4, v9 367b0c4184SCraig Topper; CHECK-NEXT: fmul.s fa0, fa5, fa4 379bd58f6fSDavid Green; CHECK-NEXT: ret 389bd58f6fSDavid Green %r1 = call fast float @llvm.vector.reduce.fmul.f32.v4f32(float 1.0, <4 x float> %a) 399bd58f6fSDavid Green %r2 = call fast float @llvm.vector.reduce.fmul.f32.v4f32(float 1.0, <4 x float> %b) 409bd58f6fSDavid Green %r = fmul fast float %r1, %r2 419bd58f6fSDavid Green ret float %r 429bd58f6fSDavid Green} 439bd58f6fSDavid Green 449bd58f6fSDavid Greendefine float @fmin_f32(<4 x float> %a, <4 x float> %b) { 459bd58f6fSDavid Green; CHECK-LABEL: fmin_f32: 469bd58f6fSDavid Green; CHECK: # %bb.0: 479bd58f6fSDavid Green; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma 48589c940eSDavid Green; CHECK-NEXT: vfmin.vv v8, v8, v9 494c8cf920SYeting Kuo; CHECK-NEXT: vfredmin.vs v8, v8, v8 50589c940eSDavid Green; CHECK-NEXT: vfmv.f.s fa0, v8 519bd58f6fSDavid Green; CHECK-NEXT: ret 529bd58f6fSDavid Green %r1 = call fast float @llvm.vector.reduce.fmin.v4f32(<4 x float> %a) 539bd58f6fSDavid Green %r2 = call fast float @llvm.vector.reduce.fmin.v4f32(<4 x float> %b) 549bd58f6fSDavid Green %r = call float @llvm.minnum.f32(float %r1, float %r2) 559bd58f6fSDavid Green ret float %r 569bd58f6fSDavid Green} 579bd58f6fSDavid Green 589bd58f6fSDavid Greendefine float @fmax_f32(<4 x float> %a, <4 x float> %b) { 599bd58f6fSDavid Green; CHECK-LABEL: fmax_f32: 609bd58f6fSDavid Green; CHECK: # %bb.0: 619bd58f6fSDavid Green; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma 62589c940eSDavid Green; CHECK-NEXT: vfmax.vv v8, v8, v9 634c8cf920SYeting Kuo; CHECK-NEXT: vfredmax.vs v8, v8, v8 64589c940eSDavid Green; CHECK-NEXT: vfmv.f.s fa0, v8 659bd58f6fSDavid Green; CHECK-NEXT: ret 669bd58f6fSDavid Green %r1 = call fast float @llvm.vector.reduce.fmax.v4f32(<4 x float> %a) 679bd58f6fSDavid Green %r2 = call fast float @llvm.vector.reduce.fmax.v4f32(<4 x float> %b) 689bd58f6fSDavid Green %r = call float @llvm.maxnum.f32(float %r1, float %r2) 699bd58f6fSDavid Green ret float %r 709bd58f6fSDavid Green} 719bd58f6fSDavid Green 729bd58f6fSDavid Green 739bd58f6fSDavid Greendefine i32 @add_i32(<4 x i32> %a, <4 x i32> %b) { 741af3f596SDavid Green; CHECK-LABEL: add_i32: 751af3f596SDavid Green; CHECK: # %bb.0: 761af3f596SDavid Green; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma 771af3f596SDavid Green; CHECK-NEXT: vadd.vv v8, v8, v9 785cd41dc6SPhilip Reames; CHECK-NEXT: vmv.s.x v9, zero 795cd41dc6SPhilip Reames; CHECK-NEXT: vredsum.vs v8, v8, v9 801af3f596SDavid Green; CHECK-NEXT: vmv.x.s a0, v8 811af3f596SDavid Green; CHECK-NEXT: ret 829bd58f6fSDavid Green %r1 = call i32 @llvm.vector.reduce.add.i32.v4i32(<4 x i32> %a) 839bd58f6fSDavid Green %r2 = call i32 @llvm.vector.reduce.add.i32.v4i32(<4 x i32> %b) 849bd58f6fSDavid Green %r = add i32 %r1, %r2 859bd58f6fSDavid Green ret i32 %r 869bd58f6fSDavid Green} 879bd58f6fSDavid Green 889bd58f6fSDavid Greendefine i16 @add_ext_i16(<16 x i8> %a, <16 x i8> %b) { 899bd58f6fSDavid Green; CHECK-LABEL: add_ext_i16: 909bd58f6fSDavid Green; CHECK: # %bb.0: 919bd58f6fSDavid Green; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma 925cd41dc6SPhilip Reames; CHECK-NEXT: vwaddu.vv v10, v8, v9 93c8e1fbc3SLuke Lau; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma 945cd41dc6SPhilip Reames; CHECK-NEXT: vmv.s.x v8, zero 955cd41dc6SPhilip Reames; CHECK-NEXT: vredsum.vs v8, v10, v8 969bd58f6fSDavid Green; CHECK-NEXT: vmv.x.s a0, v8 979bd58f6fSDavid Green; CHECK-NEXT: ret 989bd58f6fSDavid Green %ae = zext <16 x i8> %a to <16 x i16> 999bd58f6fSDavid Green %be = zext <16 x i8> %b to <16 x i16> 1009bd58f6fSDavid Green %r1 = call i16 @llvm.vector.reduce.add.i16.v16i16(<16 x i16> %ae) 1019bd58f6fSDavid Green %r2 = call i16 @llvm.vector.reduce.add.i16.v16i16(<16 x i16> %be) 1029bd58f6fSDavid Green %r = add i16 %r1, %r2 1039bd58f6fSDavid Green ret i16 %r 1049bd58f6fSDavid Green} 1059bd58f6fSDavid Green 1069bd58f6fSDavid Greendefine i16 @add_ext_v32i16(<32 x i8> %a, <16 x i8> %b) { 1079bd58f6fSDavid Green; CHECK-LABEL: add_ext_v32i16: 1089bd58f6fSDavid Green; CHECK: # %bb.0: 1099bd58f6fSDavid Green; CHECK-NEXT: vsetivli zero, 16, e16, m1, ta, ma 1109bd58f6fSDavid Green; CHECK-NEXT: vmv.s.x v11, zero 1119bd58f6fSDavid Green; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma 1129bd58f6fSDavid Green; CHECK-NEXT: vwredsumu.vs v10, v10, v11 1134c8cf920SYeting Kuo; CHECK-NEXT: li a0, 32 1144c8cf920SYeting Kuo; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma 1159bd58f6fSDavid Green; CHECK-NEXT: vwredsumu.vs v8, v8, v10 11639445046SLuke Lau; CHECK-NEXT: vsetvli zero, zero, e16, m4, ta, ma 1179bd58f6fSDavid Green; CHECK-NEXT: vmv.x.s a0, v8 1189bd58f6fSDavid Green; CHECK-NEXT: ret 1199bd58f6fSDavid Green %ae = zext <32 x i8> %a to <32 x i16> 1209bd58f6fSDavid Green %be = zext <16 x i8> %b to <16 x i16> 1219bd58f6fSDavid Green %r1 = call i16 @llvm.vector.reduce.add.i16.v32i16(<32 x i16> %ae) 1229bd58f6fSDavid Green %r2 = call i16 @llvm.vector.reduce.add.i16.v16i16(<16 x i16> %be) 1239bd58f6fSDavid Green %r = add i16 %r1, %r2 1249bd58f6fSDavid Green ret i16 %r 1259bd58f6fSDavid Green} 1269bd58f6fSDavid Green 1279bd58f6fSDavid Greendefine i32 @mul_i32(<4 x i32> %a, <4 x i32> %b) { 1289bd58f6fSDavid Green; RV32-LABEL: mul_i32: 1299bd58f6fSDavid Green; RV32: # %bb.0: 1309bd58f6fSDavid Green; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma 1319bd58f6fSDavid Green; RV32-NEXT: vslidedown.vi v10, v8, 2 1329bd58f6fSDavid Green; RV32-NEXT: vmul.vv v8, v8, v10 133*9122c523SPengcheng Wang; RV32-NEXT: vslidedown.vi v10, v9, 2 134*9122c523SPengcheng Wang; RV32-NEXT: vmul.vv v9, v9, v10 1359bd58f6fSDavid Green; RV32-NEXT: vrgather.vi v10, v8, 1 1369bd58f6fSDavid Green; RV32-NEXT: vmul.vv v8, v8, v10 137*9122c523SPengcheng Wang; RV32-NEXT: vrgather.vi v10, v9, 1 138*9122c523SPengcheng Wang; RV32-NEXT: vmul.vv v9, v9, v10 1399bd58f6fSDavid Green; RV32-NEXT: vmv.x.s a0, v8 140*9122c523SPengcheng Wang; RV32-NEXT: vmv.x.s a1, v9 1419bd58f6fSDavid Green; RV32-NEXT: mul a0, a0, a1 1429bd58f6fSDavid Green; RV32-NEXT: ret 1439bd58f6fSDavid Green; 1449bd58f6fSDavid Green; RV64-LABEL: mul_i32: 1459bd58f6fSDavid Green; RV64: # %bb.0: 1469bd58f6fSDavid Green; RV64-NEXT: vsetivli zero, 4, e32, m1, ta, ma 1479bd58f6fSDavid Green; RV64-NEXT: vslidedown.vi v10, v8, 2 1489bd58f6fSDavid Green; RV64-NEXT: vmul.vv v8, v8, v10 149*9122c523SPengcheng Wang; RV64-NEXT: vslidedown.vi v10, v9, 2 150*9122c523SPengcheng Wang; RV64-NEXT: vmul.vv v9, v9, v10 1519bd58f6fSDavid Green; RV64-NEXT: vrgather.vi v10, v8, 1 1529bd58f6fSDavid Green; RV64-NEXT: vmul.vv v8, v8, v10 153*9122c523SPengcheng Wang; RV64-NEXT: vrgather.vi v10, v9, 1 154*9122c523SPengcheng Wang; RV64-NEXT: vmul.vv v9, v9, v10 1559bd58f6fSDavid Green; RV64-NEXT: vmv.x.s a0, v8 156*9122c523SPengcheng Wang; RV64-NEXT: vmv.x.s a1, v9 1579bd58f6fSDavid Green; RV64-NEXT: mulw a0, a0, a1 1589bd58f6fSDavid Green; RV64-NEXT: ret 1599bd58f6fSDavid Green %r1 = call i32 @llvm.vector.reduce.mul.i32.v4i32(<4 x i32> %a) 1609bd58f6fSDavid Green %r2 = call i32 @llvm.vector.reduce.mul.i32.v4i32(<4 x i32> %b) 1619bd58f6fSDavid Green %r = mul i32 %r1, %r2 1629bd58f6fSDavid Green ret i32 %r 1639bd58f6fSDavid Green} 1649bd58f6fSDavid Green 1659bd58f6fSDavid Greendefine i32 @and_i32(<4 x i32> %a, <4 x i32> %b) { 1669bd58f6fSDavid Green; CHECK-LABEL: and_i32: 1679bd58f6fSDavid Green; CHECK: # %bb.0: 1689bd58f6fSDavid Green; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma 1691af3f596SDavid Green; CHECK-NEXT: vand.vv v8, v8, v9 1704c8cf920SYeting Kuo; CHECK-NEXT: vredand.vs v8, v8, v8 1719bd58f6fSDavid Green; CHECK-NEXT: vmv.x.s a0, v8 1729bd58f6fSDavid Green; CHECK-NEXT: ret 1739bd58f6fSDavid Green %r1 = call i32 @llvm.vector.reduce.and.i32.v4i32(<4 x i32> %a) 1749bd58f6fSDavid Green %r2 = call i32 @llvm.vector.reduce.and.i32.v4i32(<4 x i32> %b) 1759bd58f6fSDavid Green %r = and i32 %r1, %r2 1769bd58f6fSDavid Green ret i32 %r 1779bd58f6fSDavid Green} 1789bd58f6fSDavid Green 1799bd58f6fSDavid Greendefine i32 @or_i32(<4 x i32> %a, <4 x i32> %b) { 1809bd58f6fSDavid Green; CHECK-LABEL: or_i32: 1819bd58f6fSDavid Green; CHECK: # %bb.0: 1829bd58f6fSDavid Green; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma 1831af3f596SDavid Green; CHECK-NEXT: vor.vv v8, v8, v9 1844c8cf920SYeting Kuo; CHECK-NEXT: vredor.vs v8, v8, v8 1859bd58f6fSDavid Green; CHECK-NEXT: vmv.x.s a0, v8 1869bd58f6fSDavid Green; CHECK-NEXT: ret 1879bd58f6fSDavid Green %r1 = call i32 @llvm.vector.reduce.or.i32.v4i32(<4 x i32> %a) 1889bd58f6fSDavid Green %r2 = call i32 @llvm.vector.reduce.or.i32.v4i32(<4 x i32> %b) 1899bd58f6fSDavid Green %r = or i32 %r1, %r2 1909bd58f6fSDavid Green ret i32 %r 1919bd58f6fSDavid Green} 1929bd58f6fSDavid Green 1939bd58f6fSDavid Greendefine i32 @xor_i32(<4 x i32> %a, <4 x i32> %b) { 1949bd58f6fSDavid Green; CHECK-LABEL: xor_i32: 1959bd58f6fSDavid Green; CHECK: # %bb.0: 1969bd58f6fSDavid Green; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma 1971af3f596SDavid Green; CHECK-NEXT: vxor.vv v8, v8, v9 1985cd41dc6SPhilip Reames; CHECK-NEXT: vmv.s.x v9, zero 1995cd41dc6SPhilip Reames; CHECK-NEXT: vredxor.vs v8, v8, v9 2009bd58f6fSDavid Green; CHECK-NEXT: vmv.x.s a0, v8 2019bd58f6fSDavid Green; CHECK-NEXT: ret 2029bd58f6fSDavid Green %r1 = call i32 @llvm.vector.reduce.xor.i32.v4i32(<4 x i32> %a) 2039bd58f6fSDavid Green %r2 = call i32 @llvm.vector.reduce.xor.i32.v4i32(<4 x i32> %b) 2049bd58f6fSDavid Green %r = xor i32 %r1, %r2 2059bd58f6fSDavid Green ret i32 %r 2069bd58f6fSDavid Green} 2079bd58f6fSDavid Green 2089bd58f6fSDavid Greendefine i32 @umin_i32(<4 x i32> %a, <4 x i32> %b) { 2099bd58f6fSDavid Green; CHECK-LABEL: umin_i32: 2109bd58f6fSDavid Green; CHECK: # %bb.0: 2119bd58f6fSDavid Green; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma 2121af3f596SDavid Green; CHECK-NEXT: vminu.vv v8, v8, v9 2134c8cf920SYeting Kuo; CHECK-NEXT: vredminu.vs v8, v8, v8 2149bd58f6fSDavid Green; CHECK-NEXT: vmv.x.s a0, v8 2159bd58f6fSDavid Green; CHECK-NEXT: ret 2169bd58f6fSDavid Green %r1 = call i32 @llvm.vector.reduce.umin.i32.v4i32(<4 x i32> %a) 2179bd58f6fSDavid Green %r2 = call i32 @llvm.vector.reduce.umin.i32.v4i32(<4 x i32> %b) 2189bd58f6fSDavid Green %r = call i32 @llvm.umin.i32(i32 %r1, i32 %r2) 2199bd58f6fSDavid Green ret i32 %r 2209bd58f6fSDavid Green} 2219bd58f6fSDavid Green 2229bd58f6fSDavid Greendefine i32 @umax_i32(<4 x i32> %a, <4 x i32> %b) { 2239bd58f6fSDavid Green; CHECK-LABEL: umax_i32: 2249bd58f6fSDavid Green; CHECK: # %bb.0: 2259bd58f6fSDavid Green; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma 2261af3f596SDavid Green; CHECK-NEXT: vmaxu.vv v8, v8, v9 2274c8cf920SYeting Kuo; CHECK-NEXT: vredmaxu.vs v8, v8, v8 2289bd58f6fSDavid Green; CHECK-NEXT: vmv.x.s a0, v8 2299bd58f6fSDavid Green; CHECK-NEXT: ret 2309bd58f6fSDavid Green %r1 = call i32 @llvm.vector.reduce.umax.i32.v4i32(<4 x i32> %a) 2319bd58f6fSDavid Green %r2 = call i32 @llvm.vector.reduce.umax.i32.v4i32(<4 x i32> %b) 2329bd58f6fSDavid Green %r = call i32 @llvm.umax.i32(i32 %r1, i32 %r2) 2339bd58f6fSDavid Green ret i32 %r 2349bd58f6fSDavid Green} 2359bd58f6fSDavid Green 2369bd58f6fSDavid Greendefine i32 @smin_i32(<4 x i32> %a, <4 x i32> %b) { 2374c8cf920SYeting Kuo; CHECK-LABEL: smin_i32: 2384c8cf920SYeting Kuo; CHECK: # %bb.0: 2394c8cf920SYeting Kuo; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma 2404c8cf920SYeting Kuo; CHECK-NEXT: vmin.vv v8, v8, v9 2414c8cf920SYeting Kuo; CHECK-NEXT: vredmin.vs v8, v8, v8 2424c8cf920SYeting Kuo; CHECK-NEXT: vmv.x.s a0, v8 2434c8cf920SYeting Kuo; CHECK-NEXT: ret 2449bd58f6fSDavid Green %r1 = call i32 @llvm.vector.reduce.smin.i32.v4i32(<4 x i32> %a) 2459bd58f6fSDavid Green %r2 = call i32 @llvm.vector.reduce.smin.i32.v4i32(<4 x i32> %b) 2469bd58f6fSDavid Green %r = call i32 @llvm.smin.i32(i32 %r1, i32 %r2) 2479bd58f6fSDavid Green ret i32 %r 2489bd58f6fSDavid Green} 2499bd58f6fSDavid Green 2509bd58f6fSDavid Greendefine i32 @smax_i32(<4 x i32> %a, <4 x i32> %b) { 2519bd58f6fSDavid Green; CHECK-LABEL: smax_i32: 2529bd58f6fSDavid Green; CHECK: # %bb.0: 2539bd58f6fSDavid Green; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma 2541af3f596SDavid Green; CHECK-NEXT: vmax.vv v8, v8, v9 2554c8cf920SYeting Kuo; CHECK-NEXT: vredmax.vs v8, v8, v8 2569bd58f6fSDavid Green; CHECK-NEXT: vmv.x.s a0, v8 2579bd58f6fSDavid Green; CHECK-NEXT: ret 2589bd58f6fSDavid Green %r1 = call i32 @llvm.vector.reduce.smax.i32.v4i32(<4 x i32> %a) 2599bd58f6fSDavid Green %r2 = call i32 @llvm.vector.reduce.smax.i32.v4i32(<4 x i32> %b) 2609bd58f6fSDavid Green %r = call i32 @llvm.smax.i32(i32 %r1, i32 %r2) 2619bd58f6fSDavid Green ret i32 %r 2629bd58f6fSDavid Green} 2639bd58f6fSDavid Green 2649bd58f6fSDavid Greendeclare float @llvm.vector.reduce.fadd.f32.v4f32(float, <4 x float>) 2659bd58f6fSDavid Greendeclare float @llvm.vector.reduce.fmul.f32.v4f32(float, <4 x float>) 2669bd58f6fSDavid Greendeclare float @llvm.vector.reduce.fmin.v4f32(<4 x float>) 2679bd58f6fSDavid Greendeclare float @llvm.vector.reduce.fmax.v4f32(<4 x float>) 2689bd58f6fSDavid Greendeclare i32 @llvm.vector.reduce.add.i32.v4i32(<4 x i32>) 2699bd58f6fSDavid Greendeclare i16 @llvm.vector.reduce.add.i16.v32i16(<32 x i16>) 2709bd58f6fSDavid Greendeclare i16 @llvm.vector.reduce.add.i16.v16i16(<16 x i16>) 2719bd58f6fSDavid Greendeclare i32 @llvm.vector.reduce.mul.i32.v4i32(<4 x i32>) 2729bd58f6fSDavid Greendeclare i32 @llvm.vector.reduce.and.i32.v4i32(<4 x i32>) 2739bd58f6fSDavid Greendeclare i32 @llvm.vector.reduce.or.i32.v4i32(<4 x i32>) 2749bd58f6fSDavid Greendeclare i32 @llvm.vector.reduce.xor.i32.v4i32(<4 x i32>) 2759bd58f6fSDavid Greendeclare i32 @llvm.vector.reduce.umin.i32.v4i32(<4 x i32>) 2769bd58f6fSDavid Greendeclare i32 @llvm.vector.reduce.umax.i32.v4i32(<4 x i32>) 2779bd58f6fSDavid Greendeclare i32 @llvm.vector.reduce.smin.i32.v4i32(<4 x i32>) 2789bd58f6fSDavid Greendeclare i32 @llvm.vector.reduce.smax.i32.v4i32(<4 x i32>) 2799bd58f6fSDavid Greendeclare float @llvm.minnum.f32(float, float) 2809bd58f6fSDavid Greendeclare float @llvm.maxnum.f32(float, float) 2819bd58f6fSDavid Greendeclare i32 @llvm.umin.i32(i32, i32) 2829bd58f6fSDavid Greendeclare i32 @llvm.umax.i32(i32, i32) 2839bd58f6fSDavid Greendeclare i32 @llvm.smin.i32(i32, i32) 2849bd58f6fSDavid Greendeclare i32 @llvm.smax.i32(i32, i32) 285