15 November 2004

Altivec

ลองบน Mac บ้าง G4 มีส่วนประมวลผลเวคเตอร์ที่เรียกว่า Altivec ซึ่ง ทำหน้าที่คล้าย MMX และ SSE เลยลองเขียนโปรแกรมแบบเดียวกัน อาศัยข้อมูลจาก G4 Tutorial

#include <stdio.h>
#include <math.h>

union float4 {
  vector float v;
  float f[4];
};

int main (int argc, const char * argv[]) {
  vector float z;
  union float4 x, y, w;
  float d, d2;
  int i;
	
  x.v = (vector float)(1.0, 1.1, 2.3, 1.3);
  y.v = (vector float)(1.2, 2.1, 3.1, 0.9);
	
  z = vec_sub(x.v, y.v);
  w.v = vec_madd(z,z,(vector float)(0.0));
  d2=0.0;
  for(i=0; i<4; i++)
    d2 += w.f[i];
  d = sqrt(d2);
	
  printf("%f\n", d);
  return 0;
}

No comments: