xref: /llvm-project/llvm/test/CodeGen/RISCV/double_reduct.ll (revision 9122c5235ec85ce0c0ad337e862b006e7b349d84)
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