bswap.ll 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. ; bswap should be constant folded when it is passed a constant argument
  2. ; RUN: opt < %s -constprop -S | FileCheck %s
  3. declare i16 @llvm.bswap.i16(i16)
  4. declare i32 @llvm.bswap.i32(i32)
  5. declare i64 @llvm.bswap.i64(i64)
  6. declare i80 @llvm.bswap.i80(i80)
  7. ; CHECK-LABEL: define i16 @W(
  8. define i16 @W() {
  9. ; CHECK: ret i16 256
  10. %Z = call i16 @llvm.bswap.i16( i16 1 ) ; <i16> [#uses=1]
  11. ret i16 %Z
  12. }
  13. ; CHECK-LABEL: define i32 @X(
  14. define i32 @X() {
  15. ; CHECK: ret i32 16777216
  16. %Z = call i32 @llvm.bswap.i32( i32 1 ) ; <i32> [#uses=1]
  17. ret i32 %Z
  18. }
  19. ; CHECK-LABEL: define i64 @Y(
  20. define i64 @Y() {
  21. ; CHECK: ret i64 72057594037927936
  22. %Z = call i64 @llvm.bswap.i64( i64 1 ) ; <i64> [#uses=1]
  23. ret i64 %Z
  24. }
  25. ; CHECK-LABEL: define i80 @Z(
  26. define i80 @Z() {
  27. ; CHECK: ret i80 -450681596205739728166896
  28. ; 0xA0908070605040302010
  29. %Z = call i80 @llvm.bswap.i80( i80 76151636403560493650080 )
  30. ; 0x102030405060708090A0
  31. ret i80 %Z
  32. }