metadata.ll 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. ; RUN: opt < %s -basicaa -slp-vectorizer -dce -S -mtriple=x86_64-apple-macosx10.8.0 -mcpu=corei7-avx | FileCheck %s
  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. ;CHECK-LABEL: test1
  5. ;CHECK: load <2 x double>{{.*}}!tbaa ![[TBAA:[0-9]+]]
  6. ;CHECK: load <2 x double>{{.*}}!tbaa ![[TBAA]]
  7. ;CHECK: fmul <2 x double>{{.*}}!fpmath ![[FP1:[0-9]+]]
  8. ;CHECK: store <2 x double>{{.*}}!tbaa ![[TBAA]]
  9. ;CHECK: ret void
  10. define void @test1(double* %a, double* %b, double* %c) {
  11. entry:
  12. %i0 = load double, double* %a, align 8, !tbaa !4
  13. %i1 = load double, double* %b, align 8, !tbaa !4
  14. %mul = fmul double %i0, %i1, !fpmath !0
  15. %arrayidx3 = getelementptr inbounds double, double* %a, i64 1
  16. %i3 = load double, double* %arrayidx3, align 8, !tbaa !4
  17. %arrayidx4 = getelementptr inbounds double, double* %b, i64 1
  18. %i4 = load double, double* %arrayidx4, align 8, !tbaa !4
  19. %mul5 = fmul double %i3, %i4, !fpmath !0
  20. store double %mul, double* %c, align 8, !tbaa !4
  21. %arrayidx5 = getelementptr inbounds double, double* %c, i64 1
  22. store double %mul5, double* %arrayidx5, align 8, !tbaa !4
  23. ret void
  24. }
  25. ;CHECK-LABEL: test2
  26. ;CHECK: load <2 x double>{{.*}}!tbaa ![[TBAA]]
  27. ;CHECK: load <2 x double>{{.*}}!tbaa ![[TBAA]]
  28. ;CHECK: fmul <2 x double>{{.*}}!fpmath ![[FP2:[0-9]+]]
  29. ;CHECK: store <2 x double>{{.*}}!tbaa ![[TBAA]]
  30. ;CHECK: ret void
  31. define void @test2(double* %a, double* %b, i8* %e) {
  32. entry:
  33. %i0 = load double, double* %a, align 8, !tbaa !4
  34. %i1 = load double, double* %b, align 8, !tbaa !4
  35. %mul = fmul double %i0, %i1, !fpmath !1
  36. %arrayidx3 = getelementptr inbounds double, double* %a, i64 1
  37. %i3 = load double, double* %arrayidx3, align 8, !tbaa !4
  38. %arrayidx4 = getelementptr inbounds double, double* %b, i64 1
  39. %i4 = load double, double* %arrayidx4, align 8, !tbaa !4
  40. %mul5 = fmul double %i3, %i4, !fpmath !1
  41. %c = bitcast i8* %e to double*
  42. store double %mul, double* %c, align 8, !tbaa !4
  43. %carrayidx5 = getelementptr inbounds i8, i8* %e, i64 8
  44. %arrayidx5 = bitcast i8* %carrayidx5 to double*
  45. store double %mul5, double* %arrayidx5, align 8, !tbaa !4
  46. ret void
  47. }
  48. ;CHECK-DAG: ![[TBAA]] = !{[[TYPEC:!.*]], [[TYPEC]], i64 0}
  49. ;CHECK-DAG: ![[FP1]] = !{float 5.000000e+00}
  50. ;CHECK-DAG: ![[FP2]] = !{float 2.500000e+00}
  51. !0 = !{ float 5.0 }
  52. !1 = !{ float 2.5 }
  53. !2 = !{!"Simple C/C++ TBAA"}
  54. !3 = !{!"omnipotent char", !2}
  55. !4 = !{!"double", !3}