📄 testvmx.c
字号:
vector unsigned short UScons2 = (vector unsigned short)(1, 1, 1, 1, 1, 1, 1, 1); vector unsigned short UScons3 = (vector unsigned short)(1, 2, 3, 4, 1, 2, 3, 4); vector signed int Icons1 = (vector signed int)(-4, -1, 1, 4); vector signed int Icons2 = (vector signed int)(1, 1, 1, 1); vector signed int Icons3 = (vector signed int)(0x80000000, 0x7FFFFFFF, 0x80000000, 0x7FFFFFFF); vector unsigned int UIcons1 = (vector unsigned int)(0xFFFFFFFE, 0xFFFFFFFF, 0, 1); vector unsigned int UIcons2 = (vector unsigned int)(1, 1, 1, 1); vector unsigned int UIcons3 = (vector unsigned int)(1, 2, 1, 2);#if defined TEST_FLOATS vector float Fcons1 = (vector float)(-1.5, 1.0, 0.5, -3.999); vector float Fcons2 = (vector float)(1.0, 1.0, 1.0, 1.0); vector float Fcons3 = (vector float)(100000000000.0, 1.0, -1.0, -1234567890.0);#endif#endif/* Function vec_abs */ printf("\n:::::::::::::::::::::::::::::::::::::::\n"); err = 0; Caux1.v = vec_abs( Ccons1 ); Caux2.v = Ccons1; for( i=0; i< 16; i++ ) if (Caux1.e[i] != abs( Caux2.e[i] )) err++; if (err) printf("Function vec_abs [type char] ===> Error\n"); else printf("Function vec_abs [type char] ===> OK\n"); err = 0; Saux1.v = vec_abs( Scons1 ); Saux2.v = Scons1; for( i=0; i< 8; i++ ) if (Saux1.e[i] != abs( Saux2.e[i] )) err++; if (err) printf("Function vec_abs [type short] ===> Error\n"); else printf("Function vec_abs [type short] ===> OK\n"); err = 0; Iaux1.v = vec_abs( Icons1 ); Iaux2.v = Icons1; for( i=0; i< 4; i++ ) if (Iaux1.e[i] != abs( Iaux2.e[i] )) err++; if (err) printf("Function vec_abs [type integer] ===> Error\n"); else printf("Function vec_abs [type integer] ===> OK\n");#if defined TEST_FLOATS err = 0; Faux1.v = vec_abs( Fcons1 ); Faux2.v = Fcons1; for( i=0; i< 4; i++ ) if (Faux1.e[i] != fabs( Faux2.e[i] )) err++; if (err) printf("Function vec_abs [type float] ===> Error\n"); else printf("Function vec_abs [type float] ===> OK\n");#endif/* Function vec_abss */ printf("\n:::::::::::::::::::::::::::::::::::::::\n"); err = 0; Caux1.v = vec_abss( Ccons1 ); Caux2.v = Ccons1; for( i=0; i< 16; i++ ) if (Caux1.e[i] != abs( Caux2.e[i] )) err++; if (err) printf("Function vec_abss [type char] ===> Error\n"); else printf("Function vec_abss [type char] ===> OK\n"); err = 0; Saux1.v = vec_abss( Scons1 ); Saux2.v = Scons1; for( i=0; i< 8; i++ ) if (Saux1.e[i] != abs( Saux2.e[i] )) err++; if (err) printf("Function vec_abss [type short] ===> Error\n"); else printf("Function vec_abss [type short] ===> OK\n"); err = 0; Iaux1.v = vec_abss( Icons1 ); Iaux2.v = Icons1; for( i=0; i< 4; i++ ) if (Iaux1.e[i] != abs( Iaux2.e[i] )) err++; if (err) printf("Function vec_abss [type integer] ===> Error\n"); else printf("Function vec_abss [type integer] ===> OK\n");/* Function vec_add */ printf("\n:::::::::::::::::::::::::::::::::::::::\n"); err = 0; Caux1.v = vec_add( Ccons1, Ccons2 ); Caux2.v = Ccons1; Caux3.v = Ccons2; for( i=0; i< 16; i++ ) { Caux = Caux2.e[i]+Caux3.e[i]; if (Caux1.e[i] != Caux) err++; } if (err) printf("Function vec_add [type char] ===> Error\n"); else printf("Function vec_add [type char] ===> OK\n"); err = 0; UCaux1.v = vec_add( UCcons1, UCcons2 ); UCaux2.v = UCcons1; UCaux3.v = UCcons2; for( i=0; i< 16; i++ ) { UCaux = UCaux2.e[i]+UCaux3.e[i]; if (UCaux1.e[i] != UCaux) err++; } if (err) printf("Function vec_add [type unsigned char] ===> Error\n"); else printf("Function vec_add [type unsigned char] ===> OK\n"); err = 0; Saux1.v = vec_add( Scons1, Scons2 ); Saux2.v = Scons1; Saux3.v = Scons2; for( i=0; i< 8; i++ ) { Saux = Saux2.e[i]+Saux3.e[i]; if (Saux1.e[i] != Saux) err++; } if (err) printf("Function vec_add [type short] ===> Error\n"); else printf("Function vec_add [type short] ===> OK\n"); err = 0; USaux1.v = vec_add( UScons1, UScons2 ); USaux2.v = UScons1; USaux3.v = UScons2; for( i=0; i< 8; i++ ) { USaux = USaux2.e[i]+USaux3.e[i]; if (USaux1.e[i] != USaux) err++; } if (err) printf("Function vec_add [type unsigned short] ===> Error\n"); else printf("Function vec_add [type unsigned short] ===> OK\n"); err = 0; Iaux1.v = vec_add( Icons1, Icons2 ); Iaux2.v = Icons1; Iaux3.v = Icons2; for( i=0; i< 4; i++ ) { Iaux = Iaux2.e[i]+Iaux3.e[i]; if (Iaux1.e[i] != Iaux) err++; } if (err) printf("Function vec_add [type integer] ===> Error\n"); else printf("Function vec_add [type integer] ===> OK\n"); err = 0; UIaux1.v = vec_add( UIcons1, UIcons3 ); UIaux2.v = UIcons1; UIaux3.v = UIcons3; for( i=0; i< 4; i++ ) { UIaux = UIaux2.e[i]+UIaux3.e[i]; if (UIaux1.e[i] != UIaux) err++; } if (err) printf("Function vec_add [type unsigned int] ===> Error\n"); else printf("Function vec_add [type unsigned int] ===> OK\n");#if defined TEST_FLOATS err = 0; Faux1.v = vec_add( Fcons1, Fcons2 ); Faux2.v = Fcons1; Faux3.v = Fcons2; for( i=0; i< 4; i++ ) { Faux = Faux2.e[i]+Faux3.e[i]; if (Faux1.e[i] != Faux) err++; } if (err) printf("Function vec_add [type float] ===> Error\n"); else printf("Function vec_add [type float] ===> OK\n");#endif/* Function vec_addc */ printf("\n:::::::::::::::::::::::::::::::::::::::\n"); err = 0; UIaux1.v = vec_addc( UIcons1, UIcons3 ); UIaux2.v = UIcons1; UIaux3.v = UIcons3; for( i=0; i< 4; i++ ) { UIaux = (unsigned int)(UIaux2.e[i]+UIaux3.e[i]); if ((UIaux< UIaux2.e[i]) || (UIaux< UIaux3.e[i])) UIaux=1; else UIaux=0; if (UIaux1.e[i] != UIaux) err++; } if (err) printf("Function vec_addc [type unsigned int] ===> Error\n"); else printf("Function vec_addc [type unsigned int] ===> OK\n");/* Function vec_adds */ printf("\n:::::::::::::::::::::::::::::::::::::::\n"); err = 0; Caux1.v = vec_adds( Ccons1, Ccons3 ); Caux2.v = Ccons1; Caux3.v = Ccons3; for( i=0; i< 16; i++ ) { Caux = Caux2.e[i]+Caux3.e[i]; if ((Caux2.e[i]>0)&&(Caux3.e[i]>0)) { if (Caux< 0) Caux=0x7F; } else if ((Caux2.e[i]<0)&&(Caux3.e[i]<0)) { if (Caux> 0) Caux=0x80; } if (Caux1.e[i] != Caux) err++; } if (err) printf("Function vec_adds [type char] ===> Error\n"); else printf("Function vec_adds [type char] ===> OK\n"); err = 0; UCaux1.v = vec_adds( UCcons1, UCcons3 ); UCaux2.v = UCcons1; UCaux3.v = UCcons3; for( i=0; i< 16; i++ ) { UCaux = (unsigned char)(UCaux2.e[i]+UCaux3.e[i]); if ((UCaux< UCaux2.e[i]) || (UCaux< UCaux3.e[i])) UCaux=0xFF; if (UCaux1.e[i] != UCaux) err++; } if (err) printf("Function vec_adds [type unsigned char] ===> Error\n"); else printf("Function vec_adds [type unsigned char] ===> OK\n"); err = 0; Saux1.v = vec_adds( Scons1, Scons3 ); Saux2.v = Scons1; Saux3.v = Scons3; for( i=0; i< 8; i++ ) { Saux = Saux2.e[i]+Saux3.e[i]; if ((Saux2.e[i]>0)&&(Saux3.e[i]>0)) { if (Saux< 0) Saux=0x7FFF; } else if ((Saux2.e[i]<0)&&(Saux3.e[i]<0)) { if (Saux> 0) Saux=0x8000; } if (Saux1.e[i] != Saux) err++; } if (err) printf("Function vec_adds [type short] ===> Error\n"); else printf("Function vec_adds [type short] ===> OK\n"); err = 0; USaux1.v = vec_adds( UScons1, UScons3 ); USaux2.v = UScons1; USaux3.v = UScons3; for( i=0; i< 8; i++ ) { USaux = (unsigned short)(USaux2.e[i]+USaux3.e[i]); if ((USaux< USaux2.e[i]) || (USaux< USaux3.e[i])) USaux=0xFFFF; if (USaux1.e[i] != USaux) err++; } if (err) printf("Function vec_adds [type unsigned short] ===> Error\n"); else printf("Function vec_adds [type unsigned short] ===> OK\n"); err = 0; Iaux1.v = vec_adds( Icons1, Icons3 ); Iaux2.v = Icons1; Iaux3.v = Icons3; for( i=0; i< 4; i++ ) { Iaux = Iaux2.e[i]+Iaux3.e[i]; if ((Iaux2.e[i]>0)&&(Iaux3.e[i]>0)) { if (Iaux< 0) Iaux=0x7FFFFFFF; } else if ((Iaux2.e[i]<0)&&(Iaux3.e[i]<0)) { if (Iaux> 0) Iaux=0x80000000; } if (Iaux1.e[i] != Iaux) err++; } if (err) printf("Function vec_adds [type integer] ===> Error\n"); else printf("Function vec_adds [type integer] ===> OK\n"); err = 0; UIaux1.v = vec_adds( UIcons1, UIcons3 ); UIaux2.v = UIcons1; UIaux3.v = UIcons3; for( i=0; i< 4; i++ ) { UIaux = (unsigned int)(UIaux2.e[i]+UIaux3.e[i]); if ((UIaux< UIaux2.e[i]) || (UIaux< UIaux3.e[i])) UIaux=0xFFFFFFFF; if (UIaux1.e[i] != UIaux) err++; } if (err) printf("Function vec_adds [type unsigned int] ===> Error\n"); else printf("Function vec_adds [type unsigned int] ===> OK\n");/* Function vec_and */ printf("\n:::::::::::::::::::::::::::::::::::::::\n"); err = 0; Caux1.v = vec_and( Ccons1, Ccons2 ); Caux2.v = Ccons1; Caux3.v = Ccons2; for( i=0; i< 16; i++ ) if (Caux1.e[i] != (Caux2.e[i] & Caux3.e[i])) err++; if (err) printf("Function vec_and [type char] ===> Error\n"); else printf("Function vec_and [type char] ===> OK\n"); err = 0; UCaux1.v = vec_and( UCcons1, UCcons2 ); UCaux2.v = UCcons1; UCaux3.v = UCcons2; for( i=0; i< 16; i++ ) if (UCaux1.e[i] != (UCaux2.e[i] & UCaux3.e[i])) err++; if (err) printf("Function vec_and [type unsigned char] ===> Error\n"); else printf("Function vec_and [type unsigned char] ===> OK\n"); err = 0; Saux1.v = vec_and( Scons1, Scons2 ); Saux2.v = Scons1; Saux3.v = Scons2; for( i=0; i< 8; i++ ) if (Saux1.e[i] != (Saux2.e[i] & Saux3.e[i])) err++; if (err) printf("Function vec_and [type short] ===> Error\n"); else printf("Function vec_and [type short] ===> OK\n"); err = 0; USaux1.v = vec_and( UScons1, UScons2 ); USaux2.v = UScons1; USaux3.v = UScons2; for( i=0; i< 8; i++ ) if (USaux1.e[i] != (USaux2.e[i] & USaux3.e[i])) err++; if (err) printf("Function vec_and [type unsigned short] ===> Error\n"); else printf("Function vec_and [type unsigned short] ===> OK\n"); err = 0; Iaux1.v = vec_and( Icons1, Icons2 ); Iaux2.v = Icons1; Iaux3.v = Icons2; for( i=0; i< 4; i++ ) if (Iaux1.e[i] != (Iaux2.e[i] & Iaux3.e[i])) err++; if (err) printf("Function vec_and [type integer] ===> Error\n"); else printf("Function vec_and [type integer] ===> OK\n"); err = 0; UIaux1.v = vec_and( UIcons1, UIcons2 ); UIaux2.v = UIcons1; UIaux3.v = UIcons2; for( i=0; i< 4; i++ ) if (UIaux1.e[i] != (UIaux2.e[i] & UIaux3.e[i])) err++; if (err) printf("Function vec_and [type unsigned int] ===> Error\n"); else printf("Function vec_and [type unsigned int] ===> OK\n");#if defined TEST_FLOATS err = 0; Faux1.v = vec_and( Fcons1, Fcons2 ); Faux2.v = Fcons1; Faux3.v = Fcons2; for( i=0; i< 4; i++ ) { Ivec1 = Faux1.i[i]; Ivec2 = Faux2.i[i]; Ivec3 = Faux3.i[i]; if ((Ivec1) != ((Ivec2) & (Ivec3))) err++; } if (err) printf("Function vec_and [type float] ===> Error\n"); else printf("Function vec_and [type float] ===> OK\n");#endif/* Function vec_andc */ printf("\n:::::::::::::::::::::::::::::::::::::::\n"); err = 0; Caux1.v = vec_andc( Ccons1, Ccons2 ); Caux2.v = Ccons1; Caux3.v = Ccons2; for( i=0; i< 16; i++ ) if (Caux1.e[i] != (Caux2.e[i] & ~Caux3.e[i])) err++; if (err)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -