ordering.ll 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. ; RUN: opt < %s -basicaa -slp-vectorizer -dce -S -mtriple=x86_64-apple-macosx10.8.0 -mcpu=corei7
  2. target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
  3. target triple = "x86_64-apple-macosx10.8.0"
  4. define void @updateModelQPFrame(i32 %m_Bits) {
  5. entry:
  6. %0 = load double, double* undef, align 8
  7. %mul = fmul double undef, %0
  8. %mul2 = fmul double undef, %mul
  9. %mul4 = fmul double %0, %mul2
  10. %mul5 = fmul double undef, 4.000000e+00
  11. %mul7 = fmul double undef, %mul5
  12. %conv = sitofp i32 %m_Bits to double
  13. %mul8 = fmul double %conv, %mul7
  14. %add = fadd double %mul4, %mul8
  15. %cmp11 = fcmp olt double %add, 0.000000e+00
  16. ret void
  17. }
  18. declare i8* @objc_msgSend(i8*, i8*, ...)
  19. declare i32 @personality_v0(...)
  20. define void @invoketest() personality i8* bitcast (i32 (...)* @personality_v0 to i8*) {
  21. entry:
  22. br i1 undef, label %cond.true, label %cond.false
  23. cond.true:
  24. %call49 = invoke double bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to double (i8*, i8*)*)(i8* undef, i8* undef)
  25. to label %cond.true54 unwind label %lpad
  26. cond.false:
  27. %call51 = invoke double bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to double (i8*, i8*)*)(i8* undef, i8* undef)
  28. to label %cond.false57 unwind label %lpad
  29. cond.true54:
  30. %call56 = invoke double bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to double (i8*, i8*)*)(i8* undef, i8* undef)
  31. to label %cond.end60 unwind label %lpad
  32. cond.false57:
  33. %call59 = invoke double bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to double (i8*, i8*)*)(i8* undef, i8* undef)
  34. to label %cond.end60 unwind label %lpad
  35. ; Make sure we don't vectorize these phis - they have invokes as inputs.
  36. ; RUN: opt < %s -slp-vectorizer -S -mtriple=x86_64-apple-macosx10.8.0 -mcpu=corei7 | FileCheck %s
  37. ; CHECK-LABEL: invoketest
  38. ; CHECK-LABEL: cond.end60
  39. ; CHECK-NEXT-NOT: phi <2 x double>
  40. ; CHECK: insertelement
  41. ; CHECK-LABEL: if.then63
  42. cond.end60:
  43. %cond126 = phi double [ %call49, %cond.true54 ], [ %call51, %cond.false57 ]
  44. %cond61 = phi double [ %call56, %cond.true54 ], [ %call59, %cond.false57 ]
  45. br i1 undef, label %if.end98, label %if.then63
  46. if.then63:
  47. %conv69 = fptrunc double undef to float
  48. %conv70 = fpext float %conv69 to double
  49. %div71 = fdiv double %cond126, %conv70
  50. %conv78 = fptrunc double undef to float
  51. %conv79 = fpext float %conv78 to double
  52. %div80 = fdiv double %cond61, %conv79
  53. br label %if.end98
  54. lpad:
  55. %l = landingpad { i8*, i32 }
  56. cleanup
  57. resume { i8*, i32 } %l
  58. if.end98:
  59. %dimensionsResult.sroa.0.0 = phi double [ %div71, %if.then63 ], [ %cond126, %cond.end60 ]
  60. %dimensionsResult.sroa.6.0 = phi double [ %div80, %if.then63 ], [ %cond61, %cond.end60 ]
  61. br label %if.end99
  62. if.end99:
  63. ret void
  64. }