Advertisement
Guest User

Untitled

a guest
Dec 27th, 2016
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
LLVM 10.61 KB | None | 0 0
  1. ; ModuleID = 'iir.d'
  2. source_filename = "iir.d"
  3. target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
  4. target triple = "x86_64-pc-windows-msvc"
  5.  
  6. %0 = type { i32, i32, [4 x i8] }
  7. %iir.V = type { [1 x i8] }
  8. %"typeid(V)" = type { [19 x i8*]*, i8*, { i64, i8* }, { i64, i8* }, i8*, i8*, i8*, i8*, i32, [4 x i8], i8*, i8*, i32, [4 x i8], %object.TypeInfo*, %object.TypeInfo*, i8* }
  9. %object.TypeInfo = type { [19 x i8*]*, i8* }
  10. %iir.IIRDelay = type { %iir.V, %iir.V }
  11. %"typeid(IIRDelay)" = type { [19 x i8*]*, i8*, { i64, i8* }, { i64, i8* }, i8*, i8*, i8*, i8*, i32, [4 x i8], i8*, i8*, i32, [4 x i8], %object.TypeInfo*, %object.TypeInfo*, i8* }
  12. %ModuleReference = type { %ModuleReference*, %object.ModuleInfo* }
  13. %object.ModuleInfo = type { i32, i32 }
  14.  
  15. $_D3iir1V7opIndexMFmZd = comdat any
  16.  
  17. $_D3iir1V13opIndexAssignMFdmZd = comdat any
  18.  
  19. $_D3iir8IIRDelay10nextBufferMFPfPfiZv = comdat any
  20.  
  21. $_D3iir1V6__initZ = comdat any
  22.  
  23. $_D16TypeInfo_S3iir1V6__initZ = comdat any
  24.  
  25. $_D3iir8IIRDelay6__initZ = comdat any
  26.  
  27. $_D23TypeInfo_S3iir8IIRDelay6__initZ = comdat any
  28.  
  29. $_D3iir12__ModuleInfoZ = comdat any
  30.  
  31. @.str = private unnamed_addr constant [10 x i8] c"null this\00" ; [#uses = 1]
  32. @.str.1 = private unnamed_addr constant [6 x i8] c"iir.d\00" ; [#uses = 1]
  33. @_D3iir1V6__initZ = constant %iir.V zeroinitializer, comdat, align 1 ; [#uses = 0]
  34. @_D16TypeInfo_S3iir1V6__initZ = linkonce_odr global %"typeid(V)" { [19 x i8*]* @_D15TypeInfo_Struct6__vtblZ, i8* null, { i64, i8* } { i64 5, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i32 0, i32 0) }, { i64, i8* } { i64 1, i8* null }, i8* null, i8* null, i8* null, i8* null, i32 0, [4 x i8] zeroinitializer, i8* null, i8* null, i32 1, [4 x i8] zeroinitializer, %object.TypeInfo* null, %object.TypeInfo* null, i8* null }, comdat ; [#uses = 1]
  35. @_D15TypeInfo_Struct6__vtblZ = external constant [19 x i8*] ; [#uses = 2]
  36. @.str.2 = private unnamed_addr constant [6 x i8] c"iir.V\00" ; [#uses = 1]
  37. @_D3iir8IIRDelay6__initZ = constant %iir.IIRDelay zeroinitializer, comdat, align 1 ; [#uses = 0]
  38. @_D23TypeInfo_S3iir8IIRDelay6__initZ = linkonce_odr global %"typeid(IIRDelay)" { [19 x i8*]* @_D15TypeInfo_Struct6__vtblZ, i8* null, { i64, i8* } { i64 12, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.3, i32 0, i32 0) }, { i64, i8* } { i64 2, i8* null }, i8* null, i8* null, i8* null, i8* null, i32 0, [4 x i8] zeroinitializer, i8* null, i8* null, i32 1, [4 x i8] zeroinitializer, %object.TypeInfo* null, %object.TypeInfo* null, i8* null }, comdat ; [#uses = 1]
  39. @.str.3 = private unnamed_addr constant [13 x i8] c"iir.IIRDelay\00" ; [#uses = 1]
  40. @_D3iir12__ModuleInfoZ = global %0 { i32 -2147483644, i32 0, [4 x i8] c"iir\00" }, comdat ; [#uses = 1]
  41. @_D3iir11__moduleRefZ = internal global %ModuleReference { %ModuleReference* null, %object.ModuleInfo* bitcast (%0* @_D3iir12__ModuleInfoZ to %object.ModuleInfo*) } ; [#uses = 2]
  42. @_Dmodule_ref = external global %ModuleReference* ; [#uses = 2]
  43. @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_D3iir16__moduleinfoCtorZ, i8* null }] ; [#uses = 0]
  44.  
  45. ; [#uses = 4]
  46. define double @_D3iir1V7opIndexMFmZd(%iir.V* nonnull %.this_arg, i64 %i_arg) #0 comdat {
  47.   %i = alloca i64, align 8                        ; [#uses = 1, size/byte = 8]
  48.   store i64 %i_arg, i64* %i
  49.   %1 = icmp ne %iir.V* %.this_arg, null           ; [#uses = 1]
  50.   br i1 %1, label %assertPassed, label %assertFailed
  51.  
  52. assertPassed:                                     ; preds = %0
  53.   ret double 0.000000e+00
  54.  
  55. assertFailed:                                     ; preds = %0
  56.   call void @_d_assert_msg({ i64, i8* } { i64 9, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i32 0, i32 0) }, { i64, i8* } { i64 5, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i32 0, i32 0) }, i32 3) #1
  57.   unreachable
  58. }
  59.  
  60. ; [#uses = 3]
  61. ; Function Attrs: cold noreturn uwtable
  62. declare void @_d_assert_msg({ i64, i8* }, { i64, i8* }, i32) #1
  63.  
  64. ; [#uses = 4]
  65. define double @_D3iir1V13opIndexAssignMFdmZd(%iir.V* nonnull %.this_arg, i64 %i_arg, double %x_arg) #0 comdat {
  66.   %x = alloca double, align 8                     ; [#uses = 1, size/byte = 8]
  67.   %i = alloca i64, align 8                        ; [#uses = 1, size/byte = 8]
  68.   store double %x_arg, double* %x
  69.   store i64 %i_arg, i64* %i
  70.   %1 = icmp ne %iir.V* %.this_arg, null           ; [#uses = 1]
  71.   br i1 %1, label %assertPassed, label %assertFailed
  72.  
  73. assertPassed:                                     ; preds = %0
  74.   ret double 0.000000e+00
  75.  
  76. assertFailed:                                     ; preds = %0
  77.   call void @_d_assert_msg({ i64, i8* } { i64 9, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i32 0, i32 0) }, { i64, i8* } { i64 5, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i32 0, i32 0) }, i32 8) #1
  78.   unreachable
  79. }
  80.  
  81. ; [#uses = 0]
  82. ; Function Attrs: noinline
  83. define void @_D3iir8IIRDelay10nextBufferMFPfPfiZv(%iir.IIRDelay* nonnull %.this_arg, i32 %num_arg, float* %pointer1_arg, float* %pointer0_arg) #2 comdat {
  84.   %pointer0 = alloca float*, align 8              ; [#uses = 1, size/byte = 8]
  85.   %pointer1 = alloca float*, align 8              ; [#uses = 1, size/byte = 8]
  86.   %num = alloca i32, align 4                      ; [#uses = 1, size/byte = 4]
  87.   %x0 = alloca double, align 8                    ; [#uses = 2, size/byte = 8]
  88.   %x1 = alloca double, align 8                    ; [#uses = 2, size/byte = 8]
  89.   %y0 = alloca double, align 8                    ; [#uses = 2, size/byte = 8]
  90.   %y1 = alloca double, align 8                    ; [#uses = 2, size/byte = 8]
  91.   %a0 = alloca double, align 8                    ; [#uses = 1, size/byte = 8]
  92.   %storage = alloca [32 x i8], align 1            ; [#uses = 3, size/byte = 32]
  93.   call void @llvm.eh.unwind.init()
  94.   store float* %pointer0_arg, float** %pointer0
  95.   store float* %pointer1_arg, float** %pointer1
  96.   store i32 %num_arg, i32* %num
  97.   %1 = icmp ne %iir.IIRDelay* %.this_arg, null    ; [#uses = 1]
  98.   br i1 %1, label %assertPassed, label %assertFailed
  99.  
  100. assertPassed:                                     ; preds = %0
  101.   store double 0.000000e+00, double* %x0
  102.   %2 = getelementptr inbounds %iir.IIRDelay, %iir.IIRDelay* %.this_arg, i32 0, i32 0 ; [#uses = 1, type = %iir.V*]
  103.   %3 = call double @_D3iir1V7opIndexMFmZd(%iir.V* nonnull %2, i64 1) #0 ; [#uses = 1]
  104.   store double %3, double* %x1
  105.   %4 = getelementptr inbounds %iir.IIRDelay, %iir.IIRDelay* %.this_arg, i32 0, i32 1 ; [#uses = 1, type = %iir.V*]
  106.   %5 = call double @_D3iir1V7opIndexMFmZd(%iir.V* nonnull %4, i64 0) #0 ; [#uses = 1]
  107.   store double %5, double* %y0
  108.   %6 = getelementptr inbounds %iir.IIRDelay, %iir.IIRDelay* %.this_arg, i32 0, i32 1 ; [#uses = 1, type = %iir.V*]
  109.   %7 = call double @_D3iir1V7opIndexMFmZd(%iir.V* nonnull %6, i64 1) #0 ; [#uses = 1]
  110.   store double %7, double* %y1
  111.   %8 = getelementptr inbounds %iir.IIRDelay, %iir.IIRDelay* %.this_arg, i32 0, i32 0 ; [#uses = 1, type = %iir.V*]
  112.   %9 = call double @_D3iir1V7opIndexMFmZd(%iir.V* nonnull %8, i64 0) #0 ; [#uses = 1]
  113.   store double %9, double* %a0
  114.   %10 = bitcast [32 x i8]* %storage to i8*        ; [#uses = 1]
  115.   %11 = insertvalue { i64, i8* } { i64 32, i8* undef }, i8* %10, 1 ; [#uses = 2]
  116.   %.ptr = extractvalue { i64, i8* } %11, 1        ; [#uses = 1]
  117.   %.len = extractvalue { i64, i8* } %11, 0        ; [#uses = 1]
  118.   %12 = mul i64 1, %.len                          ; [#uses = 1]
  119.   %13 = udiv exact i64 %12, 1                     ; [#uses = 1]
  120.   call void @llvm.memset.p0i8.i64(i8* %.ptr, i8 0, i64 %13, i32 1, i1 false)
  121.   call void asm sideeffect "movups %xmm7, 16+$0\0A\09movups 16+$1, %xmm7", "=*m,*m,~{memory},~{xmm7}"([32 x i8]* %storage, [32 x i8]* %storage)
  122.   %14 = getelementptr inbounds %iir.IIRDelay, %iir.IIRDelay* %.this_arg, i32 0, i32 0 ; [#uses = 1, type = %iir.V*]
  123.   %15 = load double, double* %x0                  ; [#uses = 1]
  124.   %16 = call double @_D3iir1V13opIndexAssignMFdmZd(%iir.V* nonnull %14, i64 0, double %15) #0 ; [#uses = 0]
  125.   %17 = getelementptr inbounds %iir.IIRDelay, %iir.IIRDelay* %.this_arg, i32 0, i32 0 ; [#uses = 1, type = %iir.V*]
  126.   %18 = load double, double* %x1                  ; [#uses = 1]
  127.   %19 = call double @_D3iir1V13opIndexAssignMFdmZd(%iir.V* nonnull %17, i64 1, double %18) #0 ; [#uses = 0]
  128.   %20 = getelementptr inbounds %iir.IIRDelay, %iir.IIRDelay* %.this_arg, i32 0, i32 1 ; [#uses = 1, type = %iir.V*]
  129.   %21 = load double, double* %y0                  ; [#uses = 1]
  130.   %22 = call double @_D3iir1V13opIndexAssignMFdmZd(%iir.V* nonnull %20, i64 0, double %21) #0 ; [#uses = 0]
  131.   %23 = getelementptr inbounds %iir.IIRDelay, %iir.IIRDelay* %.this_arg, i32 0, i32 1 ; [#uses = 1, type = %iir.V*]
  132.   %24 = load double, double* %y1                  ; [#uses = 1]
  133.   %25 = call double @_D3iir1V13opIndexAssignMFdmZd(%iir.V* nonnull %23, i64 1, double %24) #0 ; [#uses = 0]
  134.   ret void
  135.  
  136. assertFailed:                                     ; preds = %0
  137.   call void @_d_assert_msg({ i64, i8* } { i64 9, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i32 0, i32 0) }, { i64, i8* } { i64 5, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i32 0, i32 0) }, i32 20) #1
  138.   unreachable
  139. }
  140.  
  141. ; [#uses = 1]
  142. ; Function Attrs: nounwind
  143. declare void @llvm.eh.unwind.init() #3
  144.  
  145. ; [#uses = 1]
  146. ; Function Attrs: argmemonly nounwind
  147. declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i32, i1) #4
  148.  
  149. ; [#uses = 1]
  150. define internal void @_D3iir16__moduleinfoCtorZ() {
  151. moduleinfoCtorEntry:
  152.   %current = load %ModuleReference*, %ModuleReference** @_Dmodule_ref ; [#uses = 1]
  153.   store %ModuleReference* %current, %ModuleReference** getelementptr inbounds (%ModuleReference, %ModuleReference* @_D3iir11__moduleRefZ, i32 0, i32 0)
  154.   store %ModuleReference* @_D3iir11__moduleRefZ, %ModuleReference** @_Dmodule_ref
  155.   ret void
  156. }
  157.  
  158. attributes #0 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "target-cpu"="x86-64" "target-features"="+cx16" "unsafe-fp-math"="false" }
  159. attributes #1 = { cold noreturn uwtable }
  160. attributes #2 = { noinline "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "target-cpu"="x86-64" "target-features"="+cx16" "unsafe-fp-math"="false" }
  161. attributes #3 = { nounwind }
  162. attributes #4 = { argmemonly nounwind }
  163.  
  164. !llvm.ldc.typeinfo._D16TypeInfo_S3iir1V6__initZ = !{!0}
  165. !llvm.ldc.typeinfo._D23TypeInfo_S3iir8IIRDelay6__initZ = !{!1}
  166. !llvm.module.flags = !{!2}
  167. !llvm.ident = !{!4}
  168.  
  169. !0 = !{%"typeid(V)"* @_D16TypeInfo_S3iir1V6__initZ, %iir.V undef}
  170. !1 = !{%"typeid(IIRDelay)"* @_D23TypeInfo_S3iir8IIRDelay6__initZ, %iir.IIRDelay undef}
  171. !2 = !{i32 6, !"Linker Options", !3}
  172. !3 = !{}
  173. !4 = !{!"ldc version 1.1.0-beta6"}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement