aboutsummaryrefslogtreecommitdiff
path: root/tests/programs/f32o3.zc
blob: 8f1ec2b7f1b16f813fb966c94ffd52df0538ffc6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// f32 packed arrays and rounding inside an o3 region
fn put_f(x) { asm { x @ #1220 } return 0; }
o3 float dot(f32* p, int n) {
	float s = 0;
	f32 acc = 0;
	for (int i = 0; i < n; i++) { s += p[i] * p[i]; acc = acc + p[i]; p[i] = p[i] + 0.1; }
	return s + acc;
}
fn main() {
	f32* p = new(f32, 50);
	for (int i = 0; i < 50; i++) p[i] = i * 0.5;
	put_f(dot(p, 50)); put_c(' '); put_f(p[3]); put_c(' '); put_n(p[3] == 1.6); put_c(10);
	free(d*p);
}