shift-parts.ll 848 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. ; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s
  2. ; CHECK: shift_parts_left_128
  3. define void @shift_parts_left_128(i128* %val, i128* %amtptr) {
  4. ; CHECK: shl.b64
  5. ; CHECK: mov.u32
  6. ; CHECK: sub.s32
  7. ; CHECK: shr.u64
  8. ; CHECK: or.b64
  9. ; CHECK: add.s32
  10. ; CHECK: shl.b64
  11. ; CHECK: setp.gt.s32
  12. ; CHECK: selp.b64
  13. ; CHECK: shl.b64
  14. %amt = load i128, i128* %amtptr
  15. %a = load i128, i128* %val
  16. %val0 = shl i128 %a, %amt
  17. store i128 %val0, i128* %val
  18. ret void
  19. }
  20. ; CHECK: shift_parts_right_128
  21. define void @shift_parts_right_128(i128* %val, i128* %amtptr) {
  22. ; CHECK: shr.u64
  23. ; CHECK: sub.s32
  24. ; CHECK: shl.b64
  25. ; CHECK: or.b64
  26. ; CHECK: add.s32
  27. ; CHECK: shr.s64
  28. ; CHECK: setp.gt.s32
  29. ; CHECK: selp.b64
  30. ; CHECK: shr.s64
  31. %amt = load i128, i128* %amtptr
  32. %a = load i128, i128* %val
  33. %val0 = ashr i128 %a, %amt
  34. store i128 %val0, i128* %val
  35. ret void
  36. }