Skip to content

Commit 5169b8c

Browse files
committed
disable llvm add reduction for aarch64
1 parent a74f06e commit 5169b8c

File tree

4 files changed

+12
-20
lines changed

4 files changed

+12
-20
lines changed

Cargo.toml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,3 @@ opt-level = 3
1111
[profile.bench]
1212
debug = 1
1313
opt-level = 3
14-
15-
[profile.test]
16-
opt-level = 0
17-
lto = false
18-
debug-assertions = true
19-
codegen-units = 1
20-
panic = 'unwind'

coresimd/ppsv/codegen/min.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,5 +193,4 @@ mod tests {
193193
let v = f32x4::new(4., 2., -1., 3.);
194194
assert_eq!(v.reduce_min(), -1.);
195195
}
196-
197196
}

coresimd/ppsv/codegen/product.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ macro_rules! red_mul {
117117
fn reduce_mul(self) -> Self::Acc {
118118
let mut x = self.extract(0);
119119
for i in 1..$id::lanes() {
120-
x += self.extract(i);
120+
x *= self.extract(i);
121121
}
122122
x
123123
}

coresimd/ppsv/codegen/sum.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,21 @@ macro_rules! red_add {
104104
($id:ident, $elem_ty:ident, $llvm_intr:ident) => {
105105
impl ReduceAdd for $id {
106106
type Acc = $elem_ty;
107+
#[cfg(not(target_arch = "aarch64"))]
107108
#[inline]
108109
fn reduce_add(self) -> Self::Acc {
109110
unsafe { $llvm_intr(self) }
110111
}
112+
// FIXME: broken in AArch64
113+
#[cfg(target_arch = "aarch64")]
114+
#[inline]
115+
fn reduce_add(self) -> Self::Acc {
116+
let mut x = self.extract(0) as Self::Acc;
117+
for i in 1..$id::lanes() {
118+
x += self.extract(i) as Self::Acc;
119+
}
120+
x
121+
}
111122
}
112123
};
113124
}
@@ -152,7 +163,6 @@ macro_rules! red_fadd {
152163
($id:ident, $elem_ty:ident, $llvm_intr:ident) => {
153164
impl ReduceAdd for $id {
154165
type Acc = $elem_ty;
155-
#[cfg(not(target_arch = "aarch64"))]
156166
#[inline]
157167
fn reduce_add(self) -> Self::Acc {
158168
// FIXME:
@@ -163,16 +173,6 @@ macro_rules! red_fadd {
163173
}
164174
x
165175
}
166-
// FIXME: broken in AArch64
167-
#[cfg(target_arch = "aarch64")]
168-
#[inline]
169-
fn reduce_add(self) -> Self::Acc {
170-
let mut x = self.extract(0) as Self::Acc;
171-
for i in 1..$id::lanes() {
172-
x += self.extract(i) as Self::Acc;
173-
}
174-
x
175-
}
176176
}
177177
};
178178
}

0 commit comments

Comments
 (0)