|
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 |
| 2 | +; RUN: llc -mtriple=riscv64 -mattr='+v,+zvl512b' < %s | FileCheck %s |
| 3 | + |
| 4 | +define <2 x float> @redundant_vfmv(<2 x float> %arg0, <64 x float> %arg1, <64 x float> %arg2) { |
| 5 | +; CHECK-LABEL: redundant_vfmv: |
| 6 | +; CHECK: # %bb.0: |
| 7 | +; CHECK-NEXT: li a0, 64 |
| 8 | +; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma |
| 9 | +; CHECK-NEXT: vfredusum.vs v9, v12, v8 |
| 10 | +; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma |
| 11 | +; CHECK-NEXT: vslidedown.vi v8, v8, 1 |
| 12 | +; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma |
| 13 | +; CHECK-NEXT: vfredusum.vs v8, v16, v8 |
| 14 | +; CHECK-NEXT: vfmv.f.s fa5, v8 |
| 15 | +; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma |
| 16 | +; CHECK-NEXT: vrgather.vi v8, v9, 0 |
| 17 | +; CHECK-NEXT: vfslide1down.vf v8, v8, fa5 |
| 18 | +; CHECK-NEXT: ret |
| 19 | + %s0 = extractelement <2 x float> %arg0, i64 0 |
| 20 | + %r0 = tail call reassoc float @llvm.vector.reduce.fadd.v64f32(float %s0, <64 x float> %arg1) |
| 21 | + %a0 = insertelement <2 x float> poison, float %r0, i64 0 |
| 22 | + %s1 = extractelement <2 x float> %arg0, i64 1 |
| 23 | + %r1 = tail call reassoc float @llvm.vector.reduce.fadd.v64f32(float %s1, <64 x float> %arg2) |
| 24 | + %a1 = insertelement <2 x float> %a0, float %r1, i64 1 |
| 25 | + ret <2 x float> %a1 |
| 26 | +} |
0 commit comments