|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
2 |
| -; RUN: llc -mtriple=riscv64 -mattr=+v,+zvfh,+f,+d -verify-machineinstrs %s -o - --riscv-lower-ext-max-web-size=1 | FileCheck %s --check-prefixes=NO_FOLDING |
3 |
| -; RUN: llc -mtriple=riscv64 -mattr=+v,+zvfh,+f,+d -verify-machineinstrs %s -o - --riscv-lower-ext-max-web-size=2 | FileCheck %s --check-prefixes=NO_FOLDING |
| 2 | +; RUN: llc -mtriple=riscv64 -mattr=+v,+zvfh,+f,+d -verify-machineinstrs %s -o - --riscv-lower-ext-max-web-size=1 | FileCheck %s --check-prefixes=NO_FOLDING,NO_FOLDING1 |
| 3 | +; RUN: llc -mtriple=riscv64 -mattr=+v,+zvfh,+f,+d -verify-machineinstrs %s -o - --riscv-lower-ext-max-web-size=2 | FileCheck %s --check-prefixes=NO_FOLDING,NO_FOLDING2 |
4 | 4 | ; RUN: llc -mtriple=riscv64 -mattr=+v,+zvfh,+f,+d -verify-machineinstrs %s -o - --riscv-lower-ext-max-web-size=3 | FileCheck %s --check-prefixes=FOLDING,ZVFH
|
5 | 5 | ; RUN: llc -mtriple=riscv64 -mattr=+v,+zvfhmin,+f,+d -verify-machineinstrs %s -o - --riscv-lower-ext-max-web-size=3 | FileCheck %s --check-prefixes=FOLDING,ZVFHMIN
|
6 | 6 | ; Check that the default value enables the web folding and
|
7 | 7 | ; that it is bigger than 3.
|
8 | 8 | ; RUN: llc -mtriple=riscv64 -mattr=+v,+zvfh,+f,+d -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=FOLDING
|
9 | 9 |
|
10 | 10 | define void @vfwmul_v2f116_multiple_users(ptr %x, ptr %y, ptr %z, <2 x half> %a, <2 x half> %b, <2 x half> %b2) {
|
11 |
| -; NO_FOLDING-LABEL: vfwmul_v2f116_multiple_users: |
12 |
| -; NO_FOLDING: # %bb.0: |
13 |
| -; NO_FOLDING-NEXT: vsetivli zero, 2, e16, mf4, ta, ma |
14 |
| -; NO_FOLDING-NEXT: vfwcvt.f.f.v v11, v8 |
15 |
| -; NO_FOLDING-NEXT: vfwcvt.f.f.v v8, v9 |
16 |
| -; NO_FOLDING-NEXT: vfwcvt.f.f.v v9, v10 |
17 |
| -; NO_FOLDING-NEXT: vsetvli zero, zero, e32, mf2, ta, ma |
18 |
| -; NO_FOLDING-NEXT: vfmul.vv v10, v11, v8 |
19 |
| -; NO_FOLDING-NEXT: vfadd.vv v11, v11, v9 |
20 |
| -; NO_FOLDING-NEXT: vfsub.vv v8, v8, v9 |
21 |
| -; NO_FOLDING-NEXT: vse32.v v10, (a0) |
22 |
| -; NO_FOLDING-NEXT: vse32.v v11, (a1) |
23 |
| -; NO_FOLDING-NEXT: vse32.v v8, (a2) |
24 |
| -; NO_FOLDING-NEXT: ret |
| 11 | +; NO_FOLDING1-LABEL: vfwmul_v2f116_multiple_users: |
| 12 | +; NO_FOLDING1: # %bb.0: |
| 13 | +; NO_FOLDING1-NEXT: vsetivli zero, 2, e16, mf4, ta, ma |
| 14 | +; NO_FOLDING1-NEXT: vfwcvt.f.f.v v11, v8 |
| 15 | +; NO_FOLDING1-NEXT: vfwcvt.f.f.v v8, v9 |
| 16 | +; NO_FOLDING1-NEXT: vfwcvt.f.f.v v9, v10 |
| 17 | +; NO_FOLDING1-NEXT: vsetvli zero, zero, e32, mf2, ta, ma |
| 18 | +; NO_FOLDING1-NEXT: vfmul.vv v10, v11, v8 |
| 19 | +; NO_FOLDING1-NEXT: vfadd.vv v11, v11, v9 |
| 20 | +; NO_FOLDING1-NEXT: vfsub.vv v8, v8, v9 |
| 21 | +; NO_FOLDING1-NEXT: vse32.v v10, (a0) |
| 22 | +; NO_FOLDING1-NEXT: vse32.v v11, (a1) |
| 23 | +; NO_FOLDING1-NEXT: vse32.v v8, (a2) |
| 24 | +; NO_FOLDING1-NEXT: ret |
| 25 | +; |
| 26 | +; NO_FOLDING2-LABEL: vfwmul_v2f116_multiple_users: |
| 27 | +; NO_FOLDING2: # %bb.0: |
| 28 | +; NO_FOLDING2-NEXT: vsetivli zero, 2, e16, mf4, ta, ma |
| 29 | +; NO_FOLDING2-NEXT: vfwcvt.f.f.v v11, v8 |
| 30 | +; NO_FOLDING2-NEXT: vfwcvt.f.f.v v8, v9 |
| 31 | +; NO_FOLDING2-NEXT: vsetvli zero, zero, e32, mf2, ta, ma |
| 32 | +; NO_FOLDING2-NEXT: vfmul.vv v9, v11, v8 |
| 33 | +; NO_FOLDING2-NEXT: vsetvli zero, zero, e16, mf4, ta, ma |
| 34 | +; NO_FOLDING2-NEXT: vfwadd.wv v11, v11, v10 |
| 35 | +; NO_FOLDING2-NEXT: vfwsub.wv v8, v8, v10 |
| 36 | +; NO_FOLDING2-NEXT: vse32.v v9, (a0) |
| 37 | +; NO_FOLDING2-NEXT: vse32.v v11, (a1) |
| 38 | +; NO_FOLDING2-NEXT: vse32.v v8, (a2) |
| 39 | +; NO_FOLDING2-NEXT: ret |
25 | 40 | ;
|
26 | 41 | ; ZVFH-LABEL: vfwmul_v2f116_multiple_users:
|
27 | 42 | ; ZVFH: # %bb.0:
|
@@ -61,20 +76,35 @@ define void @vfwmul_v2f116_multiple_users(ptr %x, ptr %y, ptr %z, <2 x half> %a,
|
61 | 76 | }
|
62 | 77 |
|
63 | 78 | define void @vfwmul_v2f32_multiple_users(ptr %x, ptr %y, ptr %z, <2 x float> %a, <2 x float> %b, <2 x float> %b2) {
|
64 |
| -; NO_FOLDING-LABEL: vfwmul_v2f32_multiple_users: |
65 |
| -; NO_FOLDING: # %bb.0: |
66 |
| -; NO_FOLDING-NEXT: vsetivli zero, 2, e32, mf2, ta, ma |
67 |
| -; NO_FOLDING-NEXT: vfwcvt.f.f.v v11, v8 |
68 |
| -; NO_FOLDING-NEXT: vfwcvt.f.f.v v8, v9 |
69 |
| -; NO_FOLDING-NEXT: vfwcvt.f.f.v v9, v10 |
70 |
| -; NO_FOLDING-NEXT: vsetvli zero, zero, e64, m1, ta, ma |
71 |
| -; NO_FOLDING-NEXT: vfmul.vv v10, v11, v8 |
72 |
| -; NO_FOLDING-NEXT: vfadd.vv v11, v11, v9 |
73 |
| -; NO_FOLDING-NEXT: vfsub.vv v8, v8, v9 |
74 |
| -; NO_FOLDING-NEXT: vse64.v v10, (a0) |
75 |
| -; NO_FOLDING-NEXT: vse64.v v11, (a1) |
76 |
| -; NO_FOLDING-NEXT: vse64.v v8, (a2) |
77 |
| -; NO_FOLDING-NEXT: ret |
| 79 | +; NO_FOLDING1-LABEL: vfwmul_v2f32_multiple_users: |
| 80 | +; NO_FOLDING1: # %bb.0: |
| 81 | +; NO_FOLDING1-NEXT: vsetivli zero, 2, e32, mf2, ta, ma |
| 82 | +; NO_FOLDING1-NEXT: vfwcvt.f.f.v v11, v8 |
| 83 | +; NO_FOLDING1-NEXT: vfwcvt.f.f.v v8, v9 |
| 84 | +; NO_FOLDING1-NEXT: vfwcvt.f.f.v v9, v10 |
| 85 | +; NO_FOLDING1-NEXT: vsetvli zero, zero, e64, m1, ta, ma |
| 86 | +; NO_FOLDING1-NEXT: vfmul.vv v10, v11, v8 |
| 87 | +; NO_FOLDING1-NEXT: vfadd.vv v11, v11, v9 |
| 88 | +; NO_FOLDING1-NEXT: vfsub.vv v8, v8, v9 |
| 89 | +; NO_FOLDING1-NEXT: vse64.v v10, (a0) |
| 90 | +; NO_FOLDING1-NEXT: vse64.v v11, (a1) |
| 91 | +; NO_FOLDING1-NEXT: vse64.v v8, (a2) |
| 92 | +; NO_FOLDING1-NEXT: ret |
| 93 | +; |
| 94 | +; NO_FOLDING2-LABEL: vfwmul_v2f32_multiple_users: |
| 95 | +; NO_FOLDING2: # %bb.0: |
| 96 | +; NO_FOLDING2-NEXT: vsetivli zero, 2, e32, mf2, ta, ma |
| 97 | +; NO_FOLDING2-NEXT: vfwcvt.f.f.v v11, v8 |
| 98 | +; NO_FOLDING2-NEXT: vfwcvt.f.f.v v8, v9 |
| 99 | +; NO_FOLDING2-NEXT: vsetvli zero, zero, e64, m1, ta, ma |
| 100 | +; NO_FOLDING2-NEXT: vfmul.vv v9, v11, v8 |
| 101 | +; NO_FOLDING2-NEXT: vsetvli zero, zero, e32, mf2, ta, ma |
| 102 | +; NO_FOLDING2-NEXT: vfwadd.wv v11, v11, v10 |
| 103 | +; NO_FOLDING2-NEXT: vfwsub.wv v8, v8, v10 |
| 104 | +; NO_FOLDING2-NEXT: vse64.v v9, (a0) |
| 105 | +; NO_FOLDING2-NEXT: vse64.v v11, (a1) |
| 106 | +; NO_FOLDING2-NEXT: vse64.v v8, (a2) |
| 107 | +; NO_FOLDING2-NEXT: ret |
78 | 108 | ;
|
79 | 109 | ; FOLDING-LABEL: vfwmul_v2f32_multiple_users:
|
80 | 110 | ; FOLDING: # %bb.0:
|
|
0 commit comments