signed-comparison.ll 690 B

12345678910111213141516171819202122232425262728
  1. ; RUN: opt < %s -instcombine -S > %t
  2. ; RUN: not grep zext %t
  3. ; RUN: not grep slt %t
  4. ; RUN: grep "icmp ult" %t
  5. ; Instcombine should convert the zext+slt into a simple ult.
  6. define void @foo(double* %p) nounwind {
  7. entry:
  8. br label %bb
  9. bb:
  10. %indvar = phi i64 [ 0, %entry ], [ %indvar.next, %bb ]
  11. %t0 = and i64 %indvar, 65535
  12. %t1 = getelementptr double, double* %p, i64 %t0
  13. %t2 = load double, double* %t1, align 8
  14. %t3 = fmul double %t2, 2.2
  15. store double %t3, double* %t1, align 8
  16. %i.04 = trunc i64 %indvar to i16
  17. %t4 = add i16 %i.04, 1
  18. %t5 = zext i16 %t4 to i32
  19. %t6 = icmp slt i32 %t5, 500
  20. %indvar.next = add i64 %indvar, 1
  21. br i1 %t6, label %bb, label %return
  22. return:
  23. ret void
  24. }