@@ -6,15 +6,15 @@ tracksRegLiveness: true
6
6
body : |
7
7
bb.1:
8
8
liveins: $x0
9
-
10
9
; CHECK-LABEL: name: add_v16s8
11
10
; CHECK: liveins: $x0
12
- ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
13
- ; CHECK: [[LOAD:%[0-9]+]]:_(<16 x s8>) = G_LOAD [[COPY]](p0) :: (load (<16 x s8>))
14
- ; CHECK: [[VECREDUCE_ADD:%[0-9]+]]:_(s8) = G_VECREDUCE_ADD [[LOAD]](<16 x s8>)
15
- ; CHECK: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[VECREDUCE_ADD]](s8)
16
- ; CHECK: $w0 = COPY [[ANYEXT]](s32)
17
- ; CHECK: RET_ReallyLR implicit $w0
11
+ ; CHECK-NEXT: {{ $}}
12
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
13
+ ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<16 x s8>) = G_LOAD [[COPY]](p0) :: (load (<16 x s8>))
14
+ ; CHECK-NEXT: [[VECREDUCE_ADD:%[0-9]+]]:_(s8) = G_VECREDUCE_ADD [[LOAD]](<16 x s8>)
15
+ ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[VECREDUCE_ADD]](s8)
16
+ ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
17
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
18
18
%0:_(p0) = COPY $x0
19
19
%1:_(<16 x s8>) = G_LOAD %0(p0) :: (load (<16 x s8>))
20
20
%2:_(s8) = G_VECREDUCE_ADD %1(<16 x s8>)
@@ -29,15 +29,15 @@ tracksRegLiveness: true
29
29
body : |
30
30
bb.1:
31
31
liveins: $x0
32
-
33
32
; CHECK-LABEL: name: add_v8s16
34
33
; CHECK: liveins: $x0
35
- ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
36
- ; CHECK: [[LOAD:%[0-9]+]]:_(<8 x s16>) = G_LOAD [[COPY]](p0) :: (load (<8 x s16>))
37
- ; CHECK: [[VECREDUCE_ADD:%[0-9]+]]:_(s16) = G_VECREDUCE_ADD [[LOAD]](<8 x s16>)
38
- ; CHECK: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[VECREDUCE_ADD]](s16)
39
- ; CHECK: $w0 = COPY [[ANYEXT]](s32)
40
- ; CHECK: RET_ReallyLR implicit $w0
34
+ ; CHECK-NEXT: {{ $}}
35
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
36
+ ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<8 x s16>) = G_LOAD [[COPY]](p0) :: (load (<8 x s16>))
37
+ ; CHECK-NEXT: [[VECREDUCE_ADD:%[0-9]+]]:_(s16) = G_VECREDUCE_ADD [[LOAD]](<8 x s16>)
38
+ ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[VECREDUCE_ADD]](s16)
39
+ ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
40
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
41
41
%0:_(p0) = COPY $x0
42
42
%1:_(<8 x s16>) = G_LOAD %0(p0) :: (load (<8 x s16>))
43
43
%2:_(s16) = G_VECREDUCE_ADD %1(<8 x s16>)
@@ -52,14 +52,14 @@ tracksRegLiveness: true
52
52
body : |
53
53
bb.1:
54
54
liveins: $x0
55
-
56
55
; CHECK-LABEL: name: add_v4s32
57
56
; CHECK: liveins: $x0
58
- ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
59
- ; CHECK: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[COPY]](p0) :: (load (<4 x s32>))
60
- ; CHECK: [[VECREDUCE_ADD:%[0-9]+]]:_(s32) = G_VECREDUCE_ADD [[LOAD]](<4 x s32>)
61
- ; CHECK: $w0 = COPY [[VECREDUCE_ADD]](s32)
62
- ; CHECK: RET_ReallyLR implicit $w0
57
+ ; CHECK-NEXT: {{ $}}
58
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
59
+ ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[COPY]](p0) :: (load (<4 x s32>))
60
+ ; CHECK-NEXT: [[VECREDUCE_ADD:%[0-9]+]]:_(s32) = G_VECREDUCE_ADD [[LOAD]](<4 x s32>)
61
+ ; CHECK-NEXT: $w0 = COPY [[VECREDUCE_ADD]](s32)
62
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
63
63
%0:_(p0) = COPY $x0
64
64
%1:_(<4 x s32>) = G_LOAD %0(p0) :: (load (<4 x s32>))
65
65
%2:_(s32) = G_VECREDUCE_ADD %1(<4 x s32>)
@@ -73,14 +73,14 @@ tracksRegLiveness: true
73
73
body : |
74
74
bb.1:
75
75
liveins: $x0
76
-
77
76
; CHECK-LABEL: name: add_v2s64
78
77
; CHECK: liveins: $x0
79
- ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
80
- ; CHECK: [[LOAD:%[0-9]+]]:_(<2 x s64>) = G_LOAD [[COPY]](p0) :: (load (<2 x s64>))
81
- ; CHECK: [[VECREDUCE_ADD:%[0-9]+]]:_(s64) = G_VECREDUCE_ADD [[LOAD]](<2 x s64>)
82
- ; CHECK: $x0 = COPY [[VECREDUCE_ADD]](s64)
83
- ; CHECK: RET_ReallyLR implicit $x0
78
+ ; CHECK-NEXT: {{ $}}
79
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
80
+ ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s64>) = G_LOAD [[COPY]](p0) :: (load (<2 x s64>))
81
+ ; CHECK-NEXT: [[VECREDUCE_ADD:%[0-9]+]]:_(s64) = G_VECREDUCE_ADD [[LOAD]](<2 x s64>)
82
+ ; CHECK-NEXT: $x0 = COPY [[VECREDUCE_ADD]](s64)
83
+ ; CHECK-NEXT: RET_ReallyLR implicit $x0
84
84
%0:_(p0) = COPY $x0
85
85
%1:_(<2 x s64>) = G_LOAD %0(p0) :: (load (<2 x s64>))
86
86
%2:_(s64) = G_VECREDUCE_ADD %1(<2 x s64>)
@@ -94,14 +94,14 @@ tracksRegLiveness: true
94
94
body : |
95
95
bb.1:
96
96
liveins: $x0
97
-
98
97
; CHECK-LABEL: name: add_v2s32
99
98
; CHECK: liveins: $x0
100
- ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
101
- ; CHECK: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[COPY]](p0) :: (load (<2 x s32>))
102
- ; CHECK: [[VECREDUCE_ADD:%[0-9]+]]:_(s32) = G_VECREDUCE_ADD [[LOAD]](<2 x s32>)
103
- ; CHECK: $w0 = COPY [[VECREDUCE_ADD]](s32)
104
- ; CHECK: RET_ReallyLR implicit $w0
99
+ ; CHECK-NEXT: {{ $}}
100
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
101
+ ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[COPY]](p0) :: (load (<2 x s32>))
102
+ ; CHECK-NEXT: [[VECREDUCE_ADD:%[0-9]+]]:_(s32) = G_VECREDUCE_ADD [[LOAD]](<2 x s32>)
103
+ ; CHECK-NEXT: $w0 = COPY [[VECREDUCE_ADD]](s32)
104
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
105
105
%0:_(p0) = COPY $x0
106
106
%1:_(<2 x s32>) = G_LOAD %0(p0) :: (load (<2 x s32>))
107
107
%2:_(s32) = G_VECREDUCE_ADD %1(<2 x s32>)
@@ -111,24 +111,25 @@ body: |
111
111
...
112
112
---
113
113
name : test_v8i64
114
+ # This is a power-of-2 legalization, so use a tree reduction.
114
115
alignment : 4
115
116
tracksRegLiveness : true
116
117
body : |
117
118
bb.1:
118
119
liveins: $q0, $q1, $q2, $q3
119
- ; This is a power-of-2 legalization, so use a tree reduction.
120
120
; CHECK-LABEL: name: test_v8i64
121
121
; CHECK: liveins: $q0, $q1, $q2, $q3
122
- ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0
123
- ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $q1
124
- ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x s64>) = COPY $q2
125
- ; CHECK: [[COPY3:%[0-9]+]]:_(<2 x s64>) = COPY $q3
126
- ; CHECK: [[ADD:%[0-9]+]]:_(<2 x s64>) = G_ADD [[COPY]], [[COPY1]]
127
- ; CHECK: [[ADD1:%[0-9]+]]:_(<2 x s64>) = G_ADD [[COPY2]], [[COPY3]]
128
- ; CHECK: [[ADD2:%[0-9]+]]:_(<2 x s64>) = G_ADD [[ADD]], [[ADD1]]
129
- ; CHECK: [[VECREDUCE_ADD:%[0-9]+]]:_(s64) = G_VECREDUCE_ADD [[ADD2]](<2 x s64>)
130
- ; CHECK: $x0 = COPY [[VECREDUCE_ADD]](s64)
131
- ; CHECK: RET_ReallyLR implicit $x0
122
+ ; CHECK-NEXT: {{ $}}
123
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0
124
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $q1
125
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s64>) = COPY $q2
126
+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s64>) = COPY $q3
127
+ ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<2 x s64>) = G_ADD [[COPY]], [[COPY1]]
128
+ ; CHECK-NEXT: [[ADD1:%[0-9]+]]:_(<2 x s64>) = G_ADD [[COPY2]], [[COPY3]]
129
+ ; CHECK-NEXT: [[ADD2:%[0-9]+]]:_(<2 x s64>) = G_ADD [[ADD]], [[ADD1]]
130
+ ; CHECK-NEXT: [[VECREDUCE_ADD:%[0-9]+]]:_(s64) = G_VECREDUCE_ADD [[ADD2]](<2 x s64>)
131
+ ; CHECK-NEXT: $x0 = COPY [[VECREDUCE_ADD]](s64)
132
+ ; CHECK-NEXT: RET_ReallyLR implicit $x0
132
133
%0:_(<2 x s64>) = COPY $q0
133
134
%1:_(<2 x s64>) = COPY $q1
134
135
%2:_(<2 x s64>) = COPY $q2
@@ -143,25 +144,26 @@ body: |
143
144
...
144
145
---
145
146
name : test_v6i64
147
+ # This is a non-power-of-2 legalization, generate multiple vector reductions
148
+ # and combine them with scalar ops.
146
149
alignment : 4
147
150
tracksRegLiveness : true
148
151
body : |
149
152
bb.1:
150
153
liveins: $q0, $q1, $q2, $q3
151
- ; This is a non-power-of-2 legalization, generate multiple vector reductions
152
- ; and combine them with scalar ops.
153
154
; CHECK-LABEL: name: test_v6i64
154
155
; CHECK: liveins: $q0, $q1, $q2, $q3
155
- ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0
156
- ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $q1
157
- ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x s64>) = COPY $q2
158
- ; CHECK: [[VECREDUCE_ADD:%[0-9]+]]:_(s64) = G_VECREDUCE_ADD [[COPY]](<2 x s64>)
159
- ; CHECK: [[VECREDUCE_ADD1:%[0-9]+]]:_(s64) = G_VECREDUCE_ADD [[COPY1]](<2 x s64>)
160
- ; CHECK: [[VECREDUCE_ADD2:%[0-9]+]]:_(s64) = G_VECREDUCE_ADD [[COPY2]](<2 x s64>)
161
- ; CHECK: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[VECREDUCE_ADD]], [[VECREDUCE_ADD1]]
162
- ; CHECK: [[ADD1:%[0-9]+]]:_(s64) = G_ADD [[ADD]], [[VECREDUCE_ADD2]]
163
- ; CHECK: $x0 = COPY [[ADD1]](s64)
164
- ; CHECK: RET_ReallyLR implicit $x0
156
+ ; CHECK-NEXT: {{ $}}
157
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0
158
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $q1
159
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s64>) = COPY $q2
160
+ ; CHECK-NEXT: [[VECREDUCE_ADD:%[0-9]+]]:_(s64) = G_VECREDUCE_ADD [[COPY]](<2 x s64>)
161
+ ; CHECK-NEXT: [[VECREDUCE_ADD1:%[0-9]+]]:_(s64) = G_VECREDUCE_ADD [[COPY1]](<2 x s64>)
162
+ ; CHECK-NEXT: [[VECREDUCE_ADD2:%[0-9]+]]:_(s64) = G_VECREDUCE_ADD [[COPY2]](<2 x s64>)
163
+ ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[VECREDUCE_ADD]], [[VECREDUCE_ADD1]]
164
+ ; CHECK-NEXT: [[ADD1:%[0-9]+]]:_(s64) = G_ADD [[ADD]], [[VECREDUCE_ADD2]]
165
+ ; CHECK-NEXT: $x0 = COPY [[ADD1]](s64)
166
+ ; CHECK-NEXT: RET_ReallyLR implicit $x0
165
167
%0:_(<2 x s64>) = COPY $q0
166
168
%1:_(<2 x s64>) = COPY $q1
167
169
%2:_(<2 x s64>) = COPY $q2
0 commit comments