1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 3 2# RUN: llc %s -o - -mtriple=riscv64 -mattr=+v -run-pass=riscv-vector-peephole \ 3# RUN: -verify-machineinstrs | FileCheck %s 4 5--- 6name: move_src 7body: | 8 bb.0: 9 liveins: $v8 10 ; CHECK-LABEL: name: move_src 11 ; CHECK: liveins: $v8 12 ; CHECK-NEXT: {{ $}} 13 ; CHECK-NEXT: %passthru:vr = COPY $v8 14 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 %passthru, $noreg, $noreg, 4, 5 /* e32 */, 0 /* tu, mu */ 15 ; CHECK-NEXT: %y:gpr = ADDI $x0, 1 16 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 4, 5 /* e32 */, 0 /* tu, mu */ 17 %passthru:vr = COPY $v8 18 %y:gpr = ADDI $x0, 1 19 %z:vr = PseudoVMV_V_V_M1 %passthru, %x, 4, 5 /* e32 */, 0 /* tu, mu */ 20... 21--- 22name: tail_agnostic 23body: | 24 bb.0: 25 liveins: $v8 26 ; CHECK-LABEL: name: tail_agnostic 27 ; CHECK: liveins: $v8 28 ; CHECK-NEXT: {{ $}} 29 ; CHECK-NEXT: %passthru:vr = COPY $v8 30 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 %passthru, $noreg, $noreg, 4, 5 /* e32 */, 1 /* ta, mu */ 31 %passthru:vr = COPY $v8 32 %x:vr = PseudoVADD_VV_M1 %passthru, $noreg, $noreg, 4, 5 /* e32 */, 0 /* tu, mu */ 33 %y:vr = PseudoVMV_V_V_M1 %passthru, %x, 4, 5 /* e32 */, 1 /* ta, mu */ 34... 35--- 36name: tail_agnostic_larger_vl 37body: | 38 bb.0: 39 liveins: $v8 40 ; CHECK-LABEL: name: tail_agnostic_larger_vl 41 ; CHECK: liveins: $v8 42 ; CHECK-NEXT: {{ $}} 43 ; CHECK-NEXT: %passthru:vr = COPY $v8 44 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 %passthru, $noreg, $noreg, 4, 5 /* e32 */, 0 /* tu, mu */ 45 %passthru:vr = COPY $v8 46 %x:vr = PseudoVADD_VV_M1 %passthru, $noreg, $noreg, 4, 5 /* e32 */, 0 /* tu, mu */ 47 %y:vr = PseudoVMV_V_V_M1 %passthru, %x, 5, 5 /* e32 */, 1 /* ta, mu */ 48... 49--- 50name: undef_passthru_src_undef_passthru 51body: | 52 bb.0: 53 liveins: $v8 54 ; CHECK-LABEL: name: undef_passthru_src_undef_passthru 55 ; CHECK: liveins: $v8 56 ; CHECK-NEXT: {{ $}} 57 ; CHECK-NEXT: %passthru:vr = COPY $v8 58 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 4, 5 /* e32 */, 1 /* ta, mu */ 59 %passthru:vr = COPY $v8 60 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 4, 5 /* e32 */, 0 /* tu, mu */ 61 %y:vr = PseudoVMV_V_V_M1 $noreg, %x, 4, 5 /* e32 */, 0 /* tu, mu */ 62... 63--- 64name: undef_passthru 65body: | 66 bb.0: 67 liveins: $v8 68 ; CHECK-LABEL: name: undef_passthru 69 ; CHECK: liveins: $v8 70 ; CHECK-NEXT: {{ $}} 71 ; CHECK-NEXT: %passthru:vr = COPY $v8 72 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 %passthru, $noreg, $noreg, 4, 5 /* e32 */, 1 /* ta, mu */ 73 %passthru:vr = COPY $v8 74 %x:vr = PseudoVADD_VV_M1 %passthru, $noreg, $noreg, 4, 5 /* e32 */, 0 /* tu, mu */ 75 %y:vr = PseudoVMV_V_V_M1 $noreg, %x, 4, 5 /* e32 */, 1 /* ta, mu */ 76... 77--- 78# Shouldn't be folded because the EEWs don't match 79name: different_eew 80body: | 81 bb.0: 82 liveins: $v8 83 ; CHECK-LABEL: name: different_eew 84 ; CHECK: liveins: $v8 85 ; CHECK-NEXT: {{ $}} 86 ; CHECK-NEXT: %passthru:vr = COPY $v8 87 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_MF4 %passthru, $noreg, $noreg, 4, 4 /* e16 */, 0 /* tu, mu */ 88 ; CHECK-NEXT: %y:vr = PseudoVMV_V_V_MF8 %passthru, %x, 4, 3 /* e8 */, 0 /* tu, mu */ 89 %passthru:vr = COPY $v8 90 %x:vr = PseudoVADD_VV_MF4 %passthru, $noreg, $noreg, 4, 4 /* e16 */, 0 /* tu, mu */ 91 %y:vr = PseudoVMV_V_V_MF8 %passthru, %x, 4, 3 /* e8 */, 0 /* tu, mu */ 92