@@ -33,3 +33,81 @@ body: |
3333 %y:vr = PseudoVREDSUM_VS_M1_E64 $noreg, %x, $noreg, -1, 6 /* e64 */, 0 /* tu, mu */
3434 %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl, 5 /* e32 */, 0 /* tu, mu */
3535 ...
36+ ---
37+ name : use_largest_common_vl_imm_imm
38+ body : |
39+ bb.0:
40+ ; CHECK-LABEL: name: use_largest_common_vl_imm_imm
41+ ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 2, 3 /* e8 */, 0 /* tu, mu */
42+ ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
43+ ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 2, 3 /* e8 */, 0 /* tu, mu */
44+ %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0
45+ %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0
46+ %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 2, 3 /* e8 */, 0
47+ ...
48+ ---
49+ name : use_largest_common_vl_same_reg
50+ body : |
51+ bb.0:
52+ liveins: $x1
53+ ; CHECK-LABEL: name: use_largest_common_vl_same_reg
54+ ; CHECK: liveins: $x1
55+ ; CHECK-NEXT: {{ $}}
56+ ; CHECK-NEXT: %vl:gprnox0 = COPY $x1
57+ ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, %vl, 3 /* e8 */, 0 /* tu, mu */
58+ ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl, 3 /* e8 */, 0 /* tu, mu */
59+ ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl, 3 /* e8 */, 0 /* tu, mu */
60+ %vl:gprnox0 = COPY $x1
61+ %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0
62+ %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl, 3 /* e8 */, 0
63+ %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl, 3 /* e8 */, 0
64+ ...
65+ ---
66+ name : use_largest_common_vl_diff_regs
67+ body : |
68+ bb.0:
69+ liveins: $x1, $x2
70+ ; CHECK-LABEL: name: use_largest_common_vl_diff_regs
71+ ; CHECK: liveins: $x1, $x2
72+ ; CHECK-NEXT: {{ $}}
73+ ; CHECK-NEXT: %vl0:gprnox0 = COPY $x1
74+ ; CHECK-NEXT: %vl1:gprnox0 = COPY $x2
75+ ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
76+ ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl0, 3 /* e8 */, 0 /* tu, mu */
77+ ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl1, 3 /* e8 */, 0 /* tu, mu */
78+ %vl0:gprnox0 = COPY $x1
79+ %vl1:gprnox0 = COPY $x2
80+ %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0
81+ %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl0, 3 /* e8 */, 0
82+ %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl1, 3 /* e8 */, 0
83+ ...
84+ ---
85+ name : use_largest_common_vl_imm_reg
86+ body : |
87+ bb.0:
88+ liveins: $x1
89+ ; CHECK-LABEL: name: use_largest_common_vl_imm_reg
90+ ; CHECK: liveins: $x1
91+ ; CHECK-NEXT: {{ $}}
92+ ; CHECK-NEXT: %vl:gprnox0 = COPY $x1
93+ ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
94+ ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl, 3 /* e8 */, 0 /* tu, mu */
95+ ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
96+ %vl:gprnox0 = COPY $x1
97+ %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0
98+ %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl, 3 /* e8 */, 0
99+ %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0
100+ ...
101+ ---
102+ name : use_largest_common_vl_imm_vlmax
103+ body : |
104+ bb.0:
105+ ; CHECK-LABEL: name: use_largest_common_vl_imm_vlmax
106+ ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
107+ ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
108+ ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
109+ %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0
110+ %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0
111+ %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, -1, 3 /* e8 */, 0
112+ ...
113+
0 commit comments