double6.ref 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. %dx.types.Handle = type { i8* }
  2. %dx.types.CBufRet.i32 = type { i32, i32, i32, i32 }
  3. %dx.types.CBufRet.f64 = type { double, double }
  4. %dx.types.splitdouble = type { i32, i32 }
  5. %dx.types.i8x80 = type { [80 x i8] }
  6. define void @main() {
  7. entry:
  8. %dx.v32.x0 = alloca [24 x float], align 4
  9. %dx.v32.x1 = alloca [16 x float], align 4
  10. %0 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 0, i1 false)
  11. %1 = bitcast [24 x float]* %dx.v32.x0 to double*
  12. %2 = getelementptr double, double* %1, i32 0
  13. store double 8.000000e+00, double* %2, align 8
  14. %3 = bitcast [24 x float]* %dx.v32.x0 to double*
  15. %4 = getelementptr double, double* %3, i32 4
  16. store double 1.000000e+00, double* %4, align 8
  17. %5 = bitcast [24 x float]* %dx.v32.x0 to double*
  18. %6 = getelementptr double, double* %5, i32 8
  19. store double 2.000000e+00, double* %6, align 8
  20. %7 = bitcast [24 x float]* %dx.v32.x0 to double*
  21. %8 = getelementptr double, double* %7, i32 12
  22. store double 0x400C7AE140000000, double* %8, align 8
  23. %9 = bitcast [24 x float]* %dx.v32.x0 to double*
  24. %10 = getelementptr double, double* %9, i32 16
  25. store double 7.000000e+00, double* %10, align 8
  26. %11 = bitcast [24 x float]* %dx.v32.x0 to double*
  27. %12 = getelementptr double, double* %11, i32 20
  28. store double 3.300000e+01, double* %12, align 8
  29. %13 = bitcast [16 x float]* %dx.v32.x1 to double*
  30. %14 = getelementptr double, double* %13, i32 0
  31. store double 1.000000e+00, double* %14, align 8
  32. %15 = bitcast [16 x float]* %dx.v32.x1 to double*
  33. %16 = getelementptr double, double* %15, i32 4
  34. store double 2.000000e+00, double* %16, align 8
  35. %17 = bitcast [16 x float]* %dx.v32.x1 to double*
  36. %18 = getelementptr double, double* %17, i32 8
  37. store double 0x400C7AE140000000, double* %18, align 8
  38. %19 = bitcast [16 x float]* %dx.v32.x1 to double*
  39. %20 = getelementptr double, double* %19, i32 12
  40. store double 7.000000e+00, double* %20, align 8
  41. %21 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %0, i32 0)
  42. %22 = extractvalue %dx.types.CBufRet.i32 %21, 0
  43. %23 = extractvalue %dx.types.CBufRet.i32 %21, 1
  44. %24 = mul i32 %22, 4
  45. %25 = add i32 %24, 0
  46. %26 = bitcast [16 x float]* %dx.v32.x1 to double*
  47. %27 = getelementptr double, double* %26, i32 %25
  48. %28 = load double, double* %27, align 8
  49. %29 = add i32 %22, 1
  50. %30 = call %dx.types.CBufRet.f64 @dx.op.cbufferLoadLegacy.f64(i32 59, %dx.types.Handle %0, i32 %29)
  51. %31 = extractvalue %dx.types.CBufRet.f64 %30, 0
  52. %32 = fadd fast double %28, %31
  53. %33 = mul i32 %23, 4
  54. %34 = add i32 %33, 0
  55. %35 = bitcast [24 x float]* %dx.v32.x0 to double*
  56. %36 = getelementptr double, double* %35, i32 %34
  57. %37 = load double, double* %36, align 8
  58. %38 = fadd fast double %32, %37
  59. %39 = call i32 @dx.op.loadInput.i32(i32 4, i32 0, i32 0, i8 0, i32 undef)
  60. %40 = call i32 @dx.op.loadInput.i32(i32 4, i32 0, i32 0, i8 1, i32 undef)
  61. %41 = call i32 @dx.op.loadInput.i32(i32 4, i32 1, i32 0, i8 0, i32 undef)
  62. %42 = call i32 @dx.op.loadInput.i32(i32 4, i32 1, i32 0, i8 1, i32 undef)
  63. %43 = call double @dx.op.makeDouble.f64(i32 101, i32 %41, i32 %42)
  64. %44 = call double @dx.op.makeDouble.f64(i32 101, i32 %39, i32 %40)
  65. %45 = fadd fast double %43, %44
  66. %46 = call i32 @dx.op.loadInput.i32(i32 4, i32 2, i32 0, i8 0, i32 undef)
  67. %47 = call i32 @dx.op.loadInput.i32(i32 4, i32 2, i32 0, i8 1, i32 undef)
  68. %48 = call double @dx.op.makeDouble.f64(i32 101, i32 %46, i32 %47)
  69. %49 = fadd fast double %48, %45
  70. %50 = fadd fast double %38, %49
  71. %51 = mul i32 %23, 4
  72. %52 = add i32 %51, 0
  73. %53 = bitcast [16 x float]* %dx.v32.x1 to double*
  74. %54 = getelementptr double, double* %53, i32 %52
  75. store double %50, double* %54, align 8
  76. %55 = mul i32 %22, 4
  77. %56 = add i32 %55, 0
  78. %57 = bitcast [16 x float]* %dx.v32.x1 to double*
  79. %58 = getelementptr double, double* %57, i32 %56
  80. %59 = load double, double* %58, align 8
  81. %60 = fadd fast double %59, %50
  82. %61 = call %dx.types.splitdouble @dx.op.splitDouble.f64(i32 102, double %60)
  83. %62 = extractvalue %dx.types.splitdouble %61, 0
  84. %63 = extractvalue %dx.types.splitdouble %61, 1
  85. call void @dx.op.storeOutput.i32(i32 5, i32 0, i32 0, i8 0, i32 %62)
  86. call void @dx.op.storeOutput.i32(i32 5, i32 0, i32 0, i8 1, i32 %63)
  87. call void @dx.op.storeOutput.i32(i32 5, i32 0, i32 0, i8 2, i32 %62)
  88. call void @dx.op.storeOutput.i32(i32 5, i32 0, i32 0, i8 3, i32 %63)
  89. ret void
  90. }
  91. ; Function Attrs: nounwind readonly
  92. declare %dx.types.Handle @dx.op.createHandle(i32, i8, i32, i32, i1) #0
  93. ; Function Attrs: nounwind readonly
  94. declare %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32, %dx.types.Handle, i32) #0
  95. ; Function Attrs: nounwind
  96. declare void @dx.op.tempRegStore.i32(i32, i32, i32) #1
  97. ; Function Attrs: nounwind readonly
  98. declare i32 @dx.op.tempRegLoad.i32(i32, i32) #0
  99. ; Function Attrs: nounwind readnone
  100. declare %dx.types.splitdouble @dx.op.splitDouble.f64(i32, double) #2
  101. ; Function Attrs: nounwind readnone
  102. declare double @dx.op.makeDouble.f64(i32, i32, i32) #2
  103. ; Function Attrs: nounwind readonly
  104. declare %dx.types.CBufRet.f64 @dx.op.cbufferLoadLegacy.f64(i32, %dx.types.Handle, i32) #0
  105. ; Function Attrs: nounwind readnone
  106. declare i32 @dx.op.loadInput.i32(i32, i32, i32, i8, i32) #2
  107. ; Function Attrs: nounwind
  108. declare void @dx.op.storeOutput.i32(i32, i32, i32, i8, i32) #1
  109. attributes #0 = { nounwind readonly }
  110. attributes #1 = { nounwind }
  111. attributes #2 = { nounwind readnone }
  112. !dx.version = !{!0}
  113. !dx.valver = !{!0}
  114. !dx.shaderModel = !{!1}
  115. !dx.resources = !{!2}
  116. !dx.entryPoints = !{!5}
  117. !llvm.ident = !{!15}
  118. !0 = !{i32 1, i32 0}
  119. !1 = !{!"ps", i32 6, i32 0}
  120. !2 = !{null, null, !3, null}
  121. !3 = !{!4}
  122. !4 = !{i32 0, %dx.types.i8x80 addrspace(2)* undef, !"CB0", i32 0, i32 0, i32 1, i32 80, null}
  123. !5 = !{void ()* @main, !"main", !6, !2, !14}
  124. !6 = !{!7, !12, null}
  125. !7 = !{!8, !10, !11}
  126. !8 = !{i32 0, !"AAA", i8 5, i8 0, !9, i8 1, i32 1, i8 4, i32 0, i8 0, null}
  127. !9 = !{i32 0}
  128. !10 = !{i32 1, !"BBB", i8 5, i8 0, !9, i8 1, i32 1, i8 4, i32 1, i8 0, null}
  129. !11 = !{i32 2, !"CCC", i8 5, i8 0, !9, i8 1, i32 1, i8 4, i32 2, i8 0, null}
  130. !12 = !{!13}
  131. !13 = !{i32 0, !"SV_Target", i8 5, i8 16, !9, i8 0, i32 1, i8 4, i32 0, i8 0, null}
  132. !14 = !{i32 0, i64 260}
  133. !15 = !{!"dxbc2dxil 1.2"}