You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
define <vscale x 8 x bfloat> @fmla_nxv8bf16(<vscale x 8 x bfloat> %acc, <vscale x 8 x bfloat> %m1, <vscale x 8 x bfloat> %m2) {
7
7
; CHECK-LABEL: fmla_nxv8bf16:
8
8
; CHECK: // %bb.0:
9
-
; CHECK-NEXT: bfmul z1.h, z1.h, z2.h
10
-
; CHECK-NEXT: bfadd z0.h, z0.h, z1.h
9
+
; CHECK-NEXT: ptrue p0.h
10
+
; CHECK-NEXT: bfmla z0.h, p0/m, z1.h, z2.h
11
11
; CHECK-NEXT: ret
12
12
%mul = fmul contract <vscale x 8 x bfloat> %m1, %m2
13
13
%res = fadd contract <vscale x 8 x bfloat> %acc, %mul
@@ -17,8 +17,8 @@ define <vscale x 8 x bfloat> @fmla_nxv8bf16(<vscale x 8 x bfloat> %acc, <vscale
17
17
define <vscale x 4 x bfloat> @fmla_nxv4bf16(<vscale x 4 x bfloat> %acc, <vscale x 4 x bfloat> %m1, <vscale x 4 x bfloat> %m2) {
18
18
; CHECK-LABEL: fmla_nxv4bf16:
19
19
; CHECK: // %bb.0:
20
-
; CHECK-NEXT: bfmul z1.h, z1.h, z2.h
21
-
; CHECK-NEXT: bfadd z0.h, z0.h, z1.h
20
+
; CHECK-NEXT: ptrue p0.s
21
+
; CHECK-NEXT: bfmla z0.h, p0/m, z1.h, z2.h
22
22
; CHECK-NEXT: ret
23
23
%mul = fmul contract <vscale x 4 x bfloat> %m1, %m2
24
24
%res = fadd contract <vscale x 4 x bfloat> %acc, %mul
@@ -28,8 +28,8 @@ define <vscale x 4 x bfloat> @fmla_nxv4bf16(<vscale x 4 x bfloat> %acc, <vscale
28
28
define <vscale x 2 x bfloat> @fmla_nxv2bf16(<vscale x 2 x bfloat> %acc, <vscale x 2 x bfloat> %m1, <vscale x 2 x bfloat> %m2) {
29
29
; CHECK-LABEL: fmla_nxv2bf16:
30
30
; CHECK: // %bb.0:
31
-
; CHECK-NEXT: bfmul z1.h, z1.h, z2.h
32
-
; CHECK-NEXT: bfadd z0.h, z0.h, z1.h
31
+
; CHECK-NEXT: ptrue p0.d
32
+
; CHECK-NEXT: bfmla z0.h, p0/m, z1.h, z2.h
33
33
; CHECK-NEXT: ret
34
34
%mul = fmul contract <vscale x 2 x bfloat> %m1, %m2
35
35
%res = fadd contract <vscale x 2 x bfloat> %acc, %mul
@@ -39,8 +39,8 @@ define <vscale x 2 x bfloat> @fmla_nxv2bf16(<vscale x 2 x bfloat> %acc, <vscale
39
39
define <vscale x 8 x bfloat> @fmls_nxv8bf16(<vscale x 8 x bfloat> %acc, <vscale x 8 x bfloat> %m1, <vscale x 8 x bfloat> %m2) {
40
40
; CHECK-LABEL: fmls_nxv8bf16:
41
41
; CHECK: // %bb.0:
42
-
; CHECK-NEXT: bfmul z1.h, z1.h, z2.h
43
-
; CHECK-NEXT: bfsub z0.h, z0.h, z1.h
42
+
; CHECK-NEXT: ptrue p0.h
43
+
; CHECK-NEXT: bfmls z0.h, p0/m, z1.h, z2.h
44
44
; CHECK-NEXT: ret
45
45
%mul = fmul contract <vscale x 8 x bfloat> %m1, %m2
46
46
%res = fsub contract <vscale x 8 x bfloat> %acc, %mul
@@ -50,8 +50,8 @@ define <vscale x 8 x bfloat> @fmls_nxv8bf16(<vscale x 8 x bfloat> %acc, <vscale
50
50
define <vscale x 4 x bfloat> @fmls_nxv4bf16(<vscale x 4 x bfloat> %acc, <vscale x 4 x bfloat> %m1, <vscale x 4 x bfloat> %m2) {
51
51
; CHECK-LABEL: fmls_nxv4bf16:
52
52
; CHECK: // %bb.0:
53
-
; CHECK-NEXT: bfmul z1.h, z1.h, z2.h
54
-
; CHECK-NEXT: bfsub z0.h, z0.h, z1.h
53
+
; CHECK-NEXT: ptrue p0.s
54
+
; CHECK-NEXT: bfmls z0.h, p0/m, z1.h, z2.h
55
55
; CHECK-NEXT: ret
56
56
%mul = fmul contract <vscale x 4 x bfloat> %m1, %m2
57
57
%res = fsub contract <vscale x 4 x bfloat> %acc, %mul
@@ -61,8 +61,8 @@ define <vscale x 4 x bfloat> @fmls_nxv4bf16(<vscale x 4 x bfloat> %acc, <vscale
61
61
define <vscale x 2 x bfloat> @fmls_nxv2bf16(<vscale x 2 x bfloat> %acc, <vscale x 2 x bfloat> %m1, <vscale x 2 x bfloat> %m2) {
62
62
; CHECK-LABEL: fmls_nxv2bf16:
63
63
; CHECK: // %bb.0:
64
-
; CHECK-NEXT: bfmul z1.h, z1.h, z2.h
65
-
; CHECK-NEXT: bfsub z0.h, z0.h, z1.h
64
+
; CHECK-NEXT: ptrue p0.d
65
+
; CHECK-NEXT: bfmls z0.h, p0/m, z1.h, z2.h
66
66
; CHECK-NEXT: ret
67
67
%mul = fmul contract <vscale x 2 x bfloat> %m1, %m2
68
68
%res = fsub contract <vscale x 2 x bfloat> %acc, %mul
@@ -72,9 +72,7 @@ define <vscale x 2 x bfloat> @fmls_nxv2bf16(<vscale x 2 x bfloat> %acc, <vscale
72
72
define <vscale x 8 x bfloat> @fmla_sel_nxv8bf16(<vscale x 8 x i1> %pred, <vscale x 8 x bfloat> %acc, <vscale x 8 x bfloat> %m1, <vscale x 8 x bfloat> %m2) {
73
73
; CHECK-LABEL: fmla_sel_nxv8bf16:
74
74
; CHECK: // %bb.0:
75
-
; CHECK-NEXT: bfmul z1.h, z1.h, z2.h
76
-
; CHECK-NEXT: bfadd z1.h, z0.h, z1.h
77
-
; CHECK-NEXT: mov z0.h, p0/m, z1.h
75
+
; CHECK-NEXT: bfmla z0.h, p0/m, z1.h, z2.h
78
76
; CHECK-NEXT: ret
79
77
%mul = fmul contract <vscale x 8 x bfloat> %m1, %m2
80
78
%add = fadd contract <vscale x 8 x bfloat> %acc, %mul
@@ -85,9 +83,7 @@ define <vscale x 8 x bfloat> @fmla_sel_nxv8bf16(<vscale x 8 x i1> %pred, <vscale
85
83
define <vscale x 4 x bfloat> @fmla_sel_nxv4bf16(<vscale x 4 x i1> %pred, <vscale x 4 x bfloat> %acc, <vscale x 4 x bfloat> %m1, <vscale x 4 x bfloat> %m2) {
86
84
; CHECK-LABEL: fmla_sel_nxv4bf16:
87
85
; CHECK: // %bb.0:
88
-
; CHECK-NEXT: bfmul z1.h, z1.h, z2.h
89
-
; CHECK-NEXT: bfadd z1.h, z0.h, z1.h
90
-
; CHECK-NEXT: mov z0.s, p0/m, z1.s
86
+
; CHECK-NEXT: bfmla z0.h, p0/m, z1.h, z2.h
91
87
; CHECK-NEXT: ret
92
88
%mul = fmul contract <vscale x 4 x bfloat> %m1, %m2
93
89
%add = fadd contract <vscale x 4 x bfloat> %acc, %mul
@@ -98,9 +94,7 @@ define <vscale x 4 x bfloat> @fmla_sel_nxv4bf16(<vscale x 4 x i1> %pred, <vscale
98
94
define <vscale x 2 x bfloat> @fmla_sel_nxv2bf16(<vscale x 2 x i1> %pred, <vscale x 2 x bfloat> %acc, <vscale x 2 x bfloat> %m1, <vscale x 2 x bfloat> %m2) {
99
95
; CHECK-LABEL: fmla_sel_nxv2bf16:
100
96
; CHECK: // %bb.0:
101
-
; CHECK-NEXT: bfmul z1.h, z1.h, z2.h
102
-
; CHECK-NEXT: bfadd z1.h, z0.h, z1.h
103
-
; CHECK-NEXT: mov z0.d, p0/m, z1.d
97
+
; CHECK-NEXT: bfmla z0.h, p0/m, z1.h, z2.h
104
98
; CHECK-NEXT: ret
105
99
%mul = fmul contract <vscale x 2 x bfloat> %m1, %m2
106
100
%add = fadd contract <vscale x 2 x bfloat> %acc, %mul
@@ -111,9 +105,7 @@ define <vscale x 2 x bfloat> @fmla_sel_nxv2bf16(<vscale x 2 x i1> %pred, <vscale
111
105
define <vscale x 8 x bfloat> @fmls_sel_nxv8bf16(<vscale x 8 x i1> %pred, <vscale x 8 x bfloat> %acc, <vscale x 8 x bfloat> %m1, <vscale x 8 x bfloat> %m2) {
112
106
; CHECK-LABEL: fmls_sel_nxv8bf16:
113
107
; CHECK: // %bb.0:
114
-
; CHECK-NEXT: bfmul z1.h, z1.h, z2.h
115
-
; CHECK-NEXT: bfsub z1.h, z0.h, z1.h
116
-
; CHECK-NEXT: mov z0.h, p0/m, z1.h
108
+
; CHECK-NEXT: bfmls z0.h, p0/m, z1.h, z2.h
117
109
; CHECK-NEXT: ret
118
110
%mul = fmul contract <vscale x 8 x bfloat> %m1, %m2
119
111
%sub = fsub contract <vscale x 8 x bfloat> %acc, %mul
@@ -124,9 +116,7 @@ define <vscale x 8 x bfloat> @fmls_sel_nxv8bf16(<vscale x 8 x i1> %pred, <vscale
124
116
define <vscale x 4 x bfloat> @fmls_sel_nxv4bf16(<vscale x 4 x i1> %pred, <vscale x 4 x bfloat> %acc, <vscale x 4 x bfloat> %m1, <vscale x 4 x bfloat> %m2) {
125
117
; CHECK-LABEL: fmls_sel_nxv4bf16:
126
118
; CHECK: // %bb.0:
127
-
; CHECK-NEXT: bfmul z1.h, z1.h, z2.h
128
-
; CHECK-NEXT: bfsub z1.h, z0.h, z1.h
129
-
; CHECK-NEXT: mov z0.s, p0/m, z1.s
119
+
; CHECK-NEXT: bfmls z0.h, p0/m, z1.h, z2.h
130
120
; CHECK-NEXT: ret
131
121
%mul = fmul contract <vscale x 4 x bfloat> %m1, %m2
132
122
%sub = fsub contract <vscale x 4 x bfloat> %acc, %mul
@@ -137,9 +127,7 @@ define <vscale x 4 x bfloat> @fmls_sel_nxv4bf16(<vscale x 4 x i1> %pred, <vscale
137
127
define <vscale x 2 x bfloat> @fmls_sel_nxv2bf16(<vscale x 2 x i1> %pred, <vscale x 2 x bfloat> %acc, <vscale x 2 x bfloat> %m1, <vscale x 2 x bfloat> %m2) {
138
128
; CHECK-LABEL: fmls_sel_nxv2bf16:
139
129
; CHECK: // %bb.0:
140
-
; CHECK-NEXT: bfmul z1.h, z1.h, z2.h
141
-
; CHECK-NEXT: bfsub z1.h, z0.h, z1.h
142
-
; CHECK-NEXT: mov z0.d, p0/m, z1.d
130
+
; CHECK-NEXT: bfmls z0.h, p0/m, z1.h, z2.h
143
131
; CHECK-NEXT: ret
144
132
%mul = fmul contract <vscale x 2 x bfloat> %m1, %m2
145
133
%sub = fsub contract <vscale x 2 x bfloat> %acc, %mul
0 commit comments