vector-shift.ll 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. ; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s
  2. ; RUN: verify-uselistorder %s
  3. ; CHECK: @foo
  4. ; CHECK: shl
  5. define <4 x i32> @foo(<4 x i32> %a, <4 x i32> %b) nounwind {
  6. entry:
  7. %cmp = shl <4 x i32> %a, %b ; <4 x i32> [#uses=1]
  8. ret <4 x i32> %cmp
  9. }
  10. ; CHECK: @bar
  11. ; CHECK: lshr
  12. define <4 x i32> @bar(<4 x i32> %a, <4 x i32> %b) nounwind {
  13. entry:
  14. %cmp = lshr <4 x i32> %a, %b ; <4 x i32> [#uses=1]
  15. ret <4 x i32> %cmp
  16. }
  17. ; CHECK: @baz
  18. ; CHECK: ashr
  19. define <4 x i32> @baz(<4 x i32> %a, <4 x i32> %b) nounwind {
  20. entry:
  21. %cmp = ashr <4 x i32> %a, %b ; <4 x i32> [#uses=1]
  22. ret <4 x i32> %cmp
  23. }
  24. ; Constant expressions: these should be folded.
  25. ; CHECK: @foo_ce
  26. ; CHECK: ret <2 x i64> <i64 40, i64 192>
  27. define <2 x i64> @foo_ce() nounwind {
  28. ret <2 x i64> shl (<2 x i64> <i64 5, i64 6>, <2 x i64> <i64 3, i64 5>)
  29. }
  30. ; CHECK: @bar_ce
  31. ; CHECK: ret <2 x i64> <i64 42, i64 11>
  32. define <2 x i64> @bar_ce() nounwind {
  33. ret <2 x i64> lshr (<2 x i64> <i64 340, i64 380>, <2 x i64> <i64 3, i64 5>)
  34. }
  35. ; CHECK: baz_ce
  36. ; CHECK: ret <2 x i64> <i64 71, i64 12>
  37. define <2 x i64> @baz_ce() nounwind {
  38. ret <2 x i64> ashr (<2 x i64> <i64 573, i64 411>, <2 x i64> <i64 3, i64 5>)
  39. }