select-2.ll 777 B

12345678910111213141516171819202122232425262728293031
  1. ; RUN: opt < %s -instcombine -S | FileCheck %s
  2. ; CHECK: select
  3. ; CHECK: select
  4. ; Make sure instcombine don't fold select into operands. We don't want to emit
  5. ; select of two integers unless it's selecting 0 / 1.
  6. define i32 @t1(i32 %c, i32 %x) nounwind {
  7. %t1 = icmp eq i32 %c, 0
  8. %t2 = lshr i32 %x, 18
  9. %t3 = select i1 %t1, i32 %t2, i32 %x
  10. ret i32 %t3
  11. }
  12. define i32 @t2(i32 %c, i32 %x) nounwind {
  13. %t1 = icmp eq i32 %c, 0
  14. %t2 = and i32 %x, 18
  15. %t3 = select i1 %t1, i32 %t2, i32 %x
  16. ret i32 %t3
  17. }
  18. define float @t3(float %x, float %y) nounwind {
  19. %t1 = fcmp ogt float %x, %y
  20. %t2 = select i1 %t1, float %x, float 1.0
  21. %t3 = fadd fast float %t2, 1.0
  22. ret float %t3
  23. ; CHECK-LABEL: @t3(
  24. ; CHECK: fadd fast
  25. ; CHECK: select
  26. }