[llvm-commits] CVS: llvm/lib/Target/X86/README.txt
Evan Cheng
evan.cheng at apple.com
Mon Apr 24 10:38:28 PDT 2006
Changes in directory llvm/lib/Target/X86:
README.txt updated: 1.96 -> 1.97
---
Log message:
Remove a completed entry.
---
Diffs of the changes: (+0 -55)
README.txt | 55 -------------------------------------------------------
1 files changed, 55 deletions(-)
Index: llvm/lib/Target/X86/README.txt
diff -u llvm/lib/Target/X86/README.txt:1.96 llvm/lib/Target/X86/README.txt:1.97
--- llvm/lib/Target/X86/README.txt:1.96 Sun Apr 23 14:47:09 2006
+++ llvm/lib/Target/X86/README.txt Mon Apr 24 12:38:16 2006
@@ -999,61 +999,6 @@
//===---------------------------------------------------------------------===//
-Use the 0's in the top part of movss from memory (and from other instructions
-that generate them) to build vectors more efficiently. Consider:
-
-vector float test(float a) {
- return (vector float){ 0.0, a, 0.0, 0.0};
-}
-
-We currently generate this as:
-
-_test:
- sub %ESP, 28
- movss %XMM0, DWORD PTR [%ESP + 32]
- movss DWORD PTR [%ESP + 4], %XMM0
- mov DWORD PTR [%ESP + 12], 0
- mov DWORD PTR [%ESP + 8], 0
- mov DWORD PTR [%ESP], 0
- movaps %XMM0, XMMWORD PTR [%ESP]
- add %ESP, 28
- ret
-
-Something like this should be sufficient:
-
-_test:
- movss %XMM0, DWORD PTR [%ESP + 4]
- shufps %XMM0, %XMM0, 81
- ret
-
-... which takes advantage of the zero elements provided by movss.
-Even xoring a register and shufps'ing IT would be better than the
-above code.
-
-Likewise, for this:
-
-vector float test(float a, float b) {
- return (vector float){ b, a, 0.0, 0.0};
-}
-
-_test:
- pxor %XMM0, %XMM0
- movss %XMM1, %XMM0
- movss %XMM2, DWORD PTR [%ESP + 4]
- unpcklps %XMM2, %XMM1
- movss %XMM0, DWORD PTR [%ESP + 8]
- unpcklps %XMM0, %XMM1
- unpcklps %XMM0, %XMM2
- ret
-
-... where we do use pxor, it would be better to use the zero'd
-elements that movss provides to turn this into 2 shufps's instead
-of 3 unpcklps's.
-
-Another example: {0.0, 0.0, a, b }
-
-//===---------------------------------------------------------------------===//
-
Consider:
__m128 test(float a) {
More information about the llvm-commits
mailing list