Changes in directory llvm/lib/Target:
README.txt updated: 1.40 -> 1.41 --- Log message: more notes --- Diffs of the changes: (+22 -0) README.txt | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+) Index: llvm/lib/Target/README.txt diff -u llvm/lib/Target/README.txt:1.40 llvm/lib/Target/README.txt:1.41 --- llvm/lib/Target/README.txt:1.40 Tue Sep 19 01:19:03 2006 +++ llvm/lib/Target/README.txt Mon Sep 25 12:12:14 2006 @@ -264,3 +264,25 @@ alas... //===---------------------------------------------------------------------===// + +This isn't recognized as bswap by instcombine: + +unsigned int swap_32(unsigned int v) { + v = ((v & 0x00ff00ffU) << 8) | ((v & 0xff00ff00U) >> 8); + v = ((v & 0x0000ffffU) << 16) | ((v & 0xffff0000U) >> 16); + return v; +} + +//===---------------------------------------------------------------------===// + +These should turn into single 16-bit (unaligned?) loads on little/big endian +processors. + +unsigned short read_16_le(const unsigned char *adr) { + return adr[0] | (adr[1] << 8); +} +unsigned short read_16_be(const unsigned char *adr) { + return (adr[0] << 8) | adr[1]; +} + +//===---------------------------------------------------------------------===// _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits