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 2 x i64> @signed_wide_add_nxv4i32(<vscale x 2 x i64> %acc, <vscale x 4 x i32> %input){
5
+
; CHECK-LABEL: signed_wide_add_nxv4i32:
6
+
; CHECK: // %bb.0: // %entry
7
+
; CHECK-NEXT: saddwb z0.d, z0.d, z1.s
8
+
; CHECK-NEXT: saddwt z0.d, z0.d, z1.s
9
+
; CHECK-NEXT: ret
10
+
entry:
11
+
%input.wide = sext <vscale x 4 x i32> %inputto <vscale x 4 x i64>
12
+
%partial.reduce = tailcall <vscale x 2 x i64> @llvm.experimental.vector.partial.reduce.add.nxv2i64.nxv4i64(<vscale x 2 x i64> %acc, <vscale x 4 x i64> %input.wide)
13
+
ret <vscale x 2 x i64> %partial.reduce
14
+
}
15
+
16
+
define <vscale x 2 x i64> @unsigned_wide_add_nxv4i32(<vscale x 2 x i64> %acc, <vscale x 4 x i32> %input){
17
+
; CHECK-LABEL: unsigned_wide_add_nxv4i32:
18
+
; CHECK: // %bb.0: // %entry
19
+
; CHECK-NEXT: uaddwb z0.d, z0.d, z1.s
20
+
; CHECK-NEXT: uaddwt z0.d, z0.d, z1.s
21
+
; CHECK-NEXT: ret
22
+
entry:
23
+
%input.wide = zext <vscale x 4 x i32> %inputto <vscale x 4 x i64>
24
+
%partial.reduce = tailcall <vscale x 2 x i64> @llvm.experimental.vector.partial.reduce.add.nxv2i64.nxv4i64(<vscale x 2 x i64> %acc, <vscale x 4 x i64> %input.wide)
25
+
ret <vscale x 2 x i64> %partial.reduce
26
+
}
27
+
28
+
define <vscale x 4 x i32> @signed_wide_add_nxv8i16(<vscale x 4 x i32> %acc, <vscale x 8 x i16> %input){
29
+
; CHECK-LABEL: signed_wide_add_nxv8i16:
30
+
; CHECK: // %bb.0: // %entry
31
+
; CHECK-NEXT: saddwb z0.s, z0.s, z1.h
32
+
; CHECK-NEXT: saddwt z0.s, z0.s, z1.h
33
+
; CHECK-NEXT: ret
34
+
entry:
35
+
%input.wide = sext <vscale x 8 x i16> %inputto <vscale x 8 x i32>
36
+
%partial.reduce = tailcall <vscale x 4 x i32> @llvm.experimental.vector.partial.reduce.add.nxv4i32.nxv8i32(<vscale x 4 x i32> %acc, <vscale x 8 x i32> %input.wide)
37
+
ret <vscale x 4 x i32> %partial.reduce
38
+
}
39
+
40
+
define <vscale x 4 x i32> @unsigned_wide_add_nxv8i16(<vscale x 4 x i32> %acc, <vscale x 8 x i16> %input){
41
+
; CHECK-LABEL: unsigned_wide_add_nxv8i16:
42
+
; CHECK: // %bb.0: // %entry
43
+
; CHECK-NEXT: uaddwb z0.s, z0.s, z1.h
44
+
; CHECK-NEXT: uaddwt z0.s, z0.s, z1.h
45
+
; CHECK-NEXT: ret
46
+
entry:
47
+
%input.wide = zext <vscale x 8 x i16> %inputto <vscale x 8 x i32>
48
+
%partial.reduce = tailcall <vscale x 4 x i32> @llvm.experimental.vector.partial.reduce.add.nxv4i32.nxv8i32(<vscale x 4 x i32> %acc, <vscale x 8 x i32> %input.wide)
49
+
ret <vscale x 4 x i32> %partial.reduce
50
+
}
51
+
52
+
define <vscale x 8 x i16> @signed_wide_add_nxv16i8(<vscale x 8 x i16> %acc, <vscale x 16 x i8> %input){
53
+
; CHECK-LABEL: signed_wide_add_nxv16i8:
54
+
; CHECK: // %bb.0: // %entry
55
+
; CHECK-NEXT: saddwb z0.h, z0.h, z1.b
56
+
; CHECK-NEXT: saddwt z0.h, z0.h, z1.b
57
+
; CHECK-NEXT: ret
58
+
entry:
59
+
%input.wide = sext <vscale x 16 x i8> %inputto <vscale x 16 x i16>
60
+
%partial.reduce = tailcall <vscale x 8 x i16> @llvm.experimental.vector.partial.reduce.add.nxv8i16.nxv16i16(<vscale x 8 x i16> %acc, <vscale x 16 x i16> %input.wide)
61
+
ret <vscale x 8 x i16> %partial.reduce
62
+
}
63
+
64
+
define <vscale x 8 x i16> @unsigned_wide_add_nxv16i8(<vscale x 8 x i16> %acc, <vscale x 16 x i8> %input){
65
+
; CHECK-LABEL: unsigned_wide_add_nxv16i8:
66
+
; CHECK: // %bb.0: // %entry
67
+
; CHECK-NEXT: uaddwb z0.h, z0.h, z1.b
68
+
; CHECK-NEXT: uaddwt z0.h, z0.h, z1.b
69
+
; CHECK-NEXT: ret
70
+
entry:
71
+
%input.wide = zext <vscale x 16 x i8> %inputto <vscale x 16 x i16>
72
+
%partial.reduce = tailcall <vscale x 8 x i16> @llvm.experimental.vector.partial.reduce.add.nxv8i16.nxv16i16(<vscale x 8 x i16> %acc, <vscale x 16 x i16> %input.wide)
0 commit comments