xref: /llvm-project/llvm/test/CodeGen/RISCV/rvv/vmv.v.v-peephole.mir (revision 3d729571fdc86a40218e5743d4386d7d8edc36ae)
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