X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FPowerPC%2FREADME_ALTIVEC.txt;h=78505120f7cd48b512b0de8cf52634f7599cd28d;hb=d8242b49b24a46f685599834b6ca33dfbeba9382;hp=5aca1f4c3ce45ec42ba5124d3e546311da271214;hpb=02b72556d738b9086129518eef4991b5b6012666;p=oota-llvm.git diff --git a/lib/Target/PowerPC/README_ALTIVEC.txt b/lib/Target/PowerPC/README_ALTIVEC.txt index 5aca1f4c3ce..78505120f7c 100644 --- a/lib/Target/PowerPC/README_ALTIVEC.txt +++ b/lib/Target/PowerPC/README_ALTIVEC.txt @@ -47,20 +47,20 @@ altivec instructions. Examples //===----------------------------------------------------------------------===// -Missing intrinsics: - -ds* -mf* -vavg* -vmax* -vmin* -vmladduhm -vmr* -vsel (some aliases only accessible using builtins) +FABS/FNEG can be codegen'd with the appropriate and/xor of -0.0. //===----------------------------------------------------------------------===// -FABS/FNEG can be codegen'd with the appropriate and/xor of -0.0. +Codegen the constant here with something better than a constant pool load. + +void %test_f(<4 x float>* %P, <4 x float>* %Q, float %X) { + %tmp = load <4 x float>* %Q + %tmp = cast <4 x float> %tmp to <4 x int> + %tmp1 = and <4 x int> %tmp, < int 2147483647, int 2147483647, int 2147483647, int 2147483647 > + %tmp2 = cast <4 x int> %tmp1 to <4 x float> + store <4 x float> %tmp2, <4 x float>* %P + ret void +} //===----------------------------------------------------------------------===// @@ -143,3 +143,7 @@ void test(vector int *X, vector int *Y) { } //===----------------------------------------------------------------------===// + +Lower "merges" in the front-end to shuffles, reconstruct in the backend. + +//===----------------------------------------------------------------------===//