diff options
Diffstat (limited to 'test/CodeGen/X86/bswap.ll')
-rw-r--r-- | test/CodeGen/X86/bswap.ll | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/CodeGen/X86/bswap.ll b/test/CodeGen/X86/bswap.ll new file mode 100644 index 0000000..4749ea8 --- /dev/null +++ b/test/CodeGen/X86/bswap.ll @@ -0,0 +1,24 @@ +; bswap should be constant folded when it is passed a constant argument + +; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 | \ +; RUN: grep bswapl | wc -l | grep 3 +; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 | grep rolw | wc -l | grep 1 + +declare ushort %llvm.bswap.i16(ushort) +declare uint %llvm.bswap.i32(uint) +declare ulong %llvm.bswap.i64(ulong) + +ushort %W(ushort %A) { + %Z = call ushort %llvm.bswap.i16(ushort %A) + ret ushort %Z +} + +uint %X(uint %A) { + %Z = call uint %llvm.bswap.i32(uint %A) + ret uint %Z +} + +ulong %Y(ulong %A) { + %Z = call ulong %llvm.bswap.i64(ulong %A) + ret ulong %Z +} |