+
    -i?                       ^ RI t ^ RIt^ RI HtHtHt ^ RIHt ^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ]
P6                  ! 4       R
8X  d   ]P8                  ! R4       ]P:                  ! ]P<                  R8H  R]P<                   24      t]P:                  ! ]P<                  R8H  R]P<                   24      t Rt! ^ RI"t"Rt!]P:                  ! ]!R4      t$R t%Rt&Rt'Rt(Rt)Rt*Rt+Rt,]
PZ                  ! 4       R8X  d   ],P]                  RR4      t,Rt/Rt0R t1R!t2R"t3R#t4R$t5R%t6R&t7R't8R(t9R)t:R*t;R+t<. RsOt=. RtOt>. RuOt?R,t@R-tAR.tBR/tCR0tDR1tER2tFR3tGR4tH ! R5 R6]4      tI ! R7 R8]I4      tJ ! R9 R:]I4      tK ! R; R<]I4      tL ! R= R>]I4      tM ! R? R@]N4      tO ! RA RB]O4      tP ! RC RD]I]P4      tQ]P                  ! RE4       ! RF RG]I4      4       tS ! RH RI]I4      tT ! RJ RK]I4      tU ! RL RM]I4      tV ! RN RO]I4      tW ! RP RQ]I4      tX ! RR RS]I4      tY ! RT RU]I4      tZ ! RV RW]I4      t[ ! RX RY]Q4      t\ ! RZ R[]I4      t]]P:                  ! ]
P6                  ! 4       P                  R\4      R]4       ! R^ R_]I4      4       t_ ! R` Ra]I4      t` ! Rb Rc]I4      ta ! Rd Re]I4      tb ! Rf Rg]N4      tc ! Rh Ri]I]c4      td ! Rj Rk]I]c4      te ! Rl Rm]I]c4      tf]P:                  ! ]	P                  P                  Rn4      Ro4      ]$ ! Rp Rq]4      4       4       ti]jRr8X  d   ]P                  ! 4        R# R#   ]# d     ELai ; i)v    N)	CFUNCTYPEc_intc_int32)find_library)contextmanager)mkstemp)ir)binding)ffi)TestCasearmv7lzlibgcc_s.so.1condazconda package test only, have wheelzwheel package test only, have FTztest needs py-lief packagec                     \         P                  ! \         P                  4      p  \         P                  ! \         P                  R 4        \         P                  ! \         P                  V 4       R#   \         P                   d*     \         P                  ! \         P                  T 4       R# i ; i  \         P                  ! \         P                  T 4       i ; i)de_DEFT)locale	setlocaleLC_ALLError)curs    Y/var/www/html/photoedit/myenv/lib/python3.14/site-packages/llvmlite/tests/test_binding.pyno_de_localer   ,   s    


6==
)C-0 , <<  	,
 	,s#   %A3 3B1B4 0B11B4 4'Ca  
    ; ModuleID = '<string>'
    source_filename = "asm_sum.c"
    target triple = "{triple}"
    %struct.glob_type = type {{ i64, [2 x i64]}}
    %struct.glob_type_vec = type {{ i64, <2 x i64>}}

    @glob = global i32 0
    @glob_b = global i8 0
    @glob_f = global float 1.5
    @glob_struct = global %struct.glob_type {{i64 0, [2 x i64] [i64 0, i64 0]}}

    define i32 @sum(i32 %.1, i32 %.2) {{
      %.3 = add i32 %.1, %.2
      %.4 = add i32 0, %.3
      ret i32 %.4
    }}
    z
    ; ModuleID = '<string>'
    target triple = "{triple}"

    define i32 @sum(i32 %.1, i32 %.2) {{
      %.3 = add i32 %.1, %.2
      ret i32 %.3
    }}
    z
    ; ModuleID = '<string>'
    target triple = "{triple}"

    define i64 @sum(i64 %.1, i64 %.2) {{
      %.3 = add i64 %.1, %.2
      %.4 = add i64 5, %.3
      %.5 = add i64 -5, %.4
      ret i64 %.5
    }}
    z
    ; ModuleID = '<string>'
    target triple = "{triple}"

    define i32 @sum(i32 %.1, i32 %.2) {{
        %.3 = add i32 %.1, %.2
        ret i32 0
    }}
    z
    ; ModuleID = '<string>'
    target triple = "{triple}"
    @mul_glob = global i32 0

    define i32 @mul(i32 %.1, i32 %.2) {{
      %.3 = mul i32 %.1, %.2
      ret i32 %.3
    }}
    a  
    ; ModuleID = '<string>'
    target triple = "{triple}"
    @mul_glob = global i32 0

    declare i32 @sum(i32, i32)
    define i32 @square_sum(i32 %.1, i32 %.2) {{
      %.3 = call i32 @sum(i32 %.1, i32 %.2)
      %.4 = mul i32 %.3, %.3
      ret i32 %.4
    }}
    z
    ; ModuleID = '<string>'
    target triple = "{triple}"

    declare i8* @Py_GetVersion()

    define void @getversion(i32 %.1, i32 %.2) {{
      %1 = call i8* @Py_GetVersion()
      ret void
    }}
    PyPyPy_GetVersionPyPy_GetVersionz
    ; ModuleID = '<string>'
    target triple = "{triple}"

    define i32 @sum(i32 %.1, i32 %.2) {{
      %.3 = fadd i32 %.1, %.2
      ret i32 %.3
    }}
    z
    ; ModuleID = '<string>'
    target triple = "{triple}"

    define void @sum() {{
      %.bug = add i32 1, %.bug
      ret void
    }}
    zh
    ; ModuleID = '<string>'
    target triple = "{triple}"

    declare i32 @sum(i32 %.1, i32 %.2)
    zg
    ; ModuleID = '<string>'
    target triple = "{triple}"

    declare i32 @vararg(i32 %.1, ...)
    z
    ; ModuleID = '<string>'
    target triple = "{triple}"

    define void @foo() {{
      %const = fadd fp128 0xLF3CB1CCF26FBC178452FB4EC7F91DEAD, 0xL00000000000000000000000000000001
      ret void
    }}
    z
    ; ModuleID = '<string>'
    target triple = "{triple}"

    define void @foo() {{
      %const = fadd double 0.0, 3.14
      ret void
    }}
    z
    ; ModuleID = '<string>'
    target triple = "{triple}"

    define void @foo() {{
      call void asm sideeffect "nop", ""()
      ret void
    }}
    a  
    ; ModuleID = '<string>'
    target triple = "{triple}"

    define void @inlineme() {{
        ret void
    }}

    define i32 @caller(i32 %.1, i32 %.2) {{
    entry:
      %stack = alloca i32
      store i32 %.1, i32* %stack
      br label %main
    main:
      %loaded = load i32, i32* %stack
      %.3 = add i32 %loaded, %.2
      %.4 = add i32 0, %.3
      call void @inlineme()
      ret i32 %.4
    }}
a  
; ModuleID = 'test.c'
source_filename = "test.c"
target triple = "{triple}"

; Function Attrs: noinline nounwind optnone ssp uwtable
define void @inlineme() noinline !dbg !15 {{
  ret void, !dbg !18
}}

; Function Attrs: noinline nounwind optnone ssp uwtable
define i32 @foo(i32 %0, i32 %1) !dbg !19 {{
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  store i32 %0, i32* %3, align 4
  call void @llvm.dbg.declare(metadata i32* %3, metadata !23, metadata !DIExpression()), !dbg !24
  store i32 %1, i32* %4, align 4
  call void @llvm.dbg.declare(metadata i32* %4, metadata !25, metadata !DIExpression()), !dbg !26
  call void @inlineme(), !dbg !27
  %5 = load i32, i32* %3, align 4, !dbg !28
  %6 = load i32, i32* %4, align 4, !dbg !29
  %7 = add nsw i32 %5, %6, !dbg !30
  ret i32 %7, !dbg !31
}}

; Function Attrs: nofree nosync nounwind readnone speculatable willreturn
declare void @llvm.dbg.declare(metadata, metadata, metadata) #1

attributes #1 = {{ nofree nosync nounwind readnone speculatable willreturn }}

!llvm.module.flags = !{{!1, !2, !3, !4, !5, !6, !7, !8, !9, !10}}
!llvm.dbg.cu = !{{!11}}
!llvm.ident = !{{!14}}

!0 = !{{i32 2, !"SDK Version", [2 x i32] [i32 12, i32 3]}}
!1 = !{{i32 7, !"Dwarf Version", i32 4}}
!2 = !{{i32 2, !"Debug Info Version", i32 3}}
!3 = !{{i32 1, !"wchar_size", i32 4}}
!4 = !{{i32 1, !"branch-target-enforcement", i32 0}}
!5 = !{{i32 1, !"sign-return-address", i32 0}}
!6 = !{{i32 1, !"sign-return-address-all", i32 0}}
!7 = !{{i32 1, !"sign-return-address-with-bkey", i32 0}}
!8 = !{{i32 7, !"PIC Level", i32 2}}
!9 = !{{i32 7, !"uwtable", i32 1}}
!10 = !{{i32 7, !"frame-pointer", i32 1}}
!11 = distinct !DICompileUnit(language: DW_LANG_C99, file: !12, producer: "Apple clang version 13.1.6 (clang-1316.0.21.2.3)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !13, splitDebugInlining: false, nameTableKind: None, sysroot: "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk", sdk: "MacOSX.sdk")
!12 = !DIFile(filename: "test.c", directory: "/")
!13 = !{{}}
!14 = !{{!"Apple clang version 13.1.6 (clang-1316.0.21.2.3)"}}
!15 = distinct !DISubprogram(name: "inlineme", scope: !12, file: !12, line: 1, type: !16, scopeLine: 1, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !11, retainedNodes: !13)
!16 = !DISubroutineType(types: !17)
!17 = !{{null}}
!18 = !DILocation(line: 1, column: 22, scope: !15)
!19 = distinct !DISubprogram(name: "foo", scope: !12, file: !12, line: 3, type: !20, scopeLine: 3, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !11, retainedNodes: !13)
!20 = !DISubroutineType(types: !21)
!21 = !{{!22, !22, !22}}
!22 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
!23 = !DILocalVariable(name: "a", arg: 1, scope: !19, file: !12, line: 3, type: !22)
!24 = !DILocation(line: 3, column: 13, scope: !19)
!25 = !DILocalVariable(name: "b", arg: 2, scope: !19, file: !12, line: 3, type: !22)
!26 = !DILocation(line: 3, column: 20, scope: !19)
!27 = !DILocation(line: 4, column: 5, scope: !19)
!28 = !DILocation(line: 5, column: 12, scope: !19)
!29 = !DILocation(line: 5, column: 16, scope: !19)
!30 = !DILocation(line: 5, column: 14, scope: !19)
!31 = !DILocation(line: 5, column: 5, scope: !19)
aN  
; ModuleID = "<string>"
target triple = "{triple}"

define double @licm(i32 %0) {{
  %2 = alloca i32, align 4
  %3 = alloca double, align 8
  %4 = alloca i32, align 4
  %5 = alloca double, align 8
  store i32 %0, i32* %2, align 4
  store double 0.000000e+00, double* %3, align 8
  store i32 0, i32* %4, align 4
  br label %6

6:                                                ; preds = %14, %1
  %7 = load i32, i32* %4, align 4
  %8 = load i32, i32* %2, align 4
  %9 = icmp slt i32 %7, %8
  br i1 %9, label %10, label %17

10:                                               ; preds = %6
  store double 7.000000e+00, double* %5, align 8
  %11 = load double, double* %5, align 8
  %12 = load double, double* %3, align 8
  %13 = fadd double %12, %11
  store double %13, double* %3, align 8
  br label %14

14:                                               ; preds = %10
  %15 = load i32, i32* %4, align 4
  %16 = add nsw i32 %15, 1
  store i32 %16, i32* %4, align 4
  br label %6

17:                                               ; preds = %6
  %18 = load double, double* %3, align 8
  ret double %18
}}
a  
    ; ModuleID = "<string>"
    target triple = "{triple}"

    @A = global i32 undef

    define void @ctor_A()
    {{
      store i32 10, i32* @A
      ret void
    }}

    define void @dtor_A()
    {{
      store i32 20, i32* @A
      ret void
    }}

    define i32 @foo()
    {{
      %.2 = load i32, i32* @A
      %.3 = add i32 %.2, 2
      ret i32 %.3
    }}

    @llvm.global_ctors = appending global [1 x {{i32, void ()*, i8*}}] [{{i32, void ()*, i8*}} {{i32 0, void ()* @ctor_A, i8* null}}]
    @llvm.global_dtors = appending global [1 x {{i32, void ()*, i8*}}] [{{i32, void ()*, i8*}} {{i32 0, void ()* @dtor_A, i8* null}}]
    a  
    ; ModuleID = "<string>"
    target triple = "{triple}"

    @A = external global i32

    define void @ctor_A()
    {{
      store i32 10, i32* @A
      ret void
    }}

    define void @dtor_A()
    {{
      store i32 20, i32* @A
      ret void
    }}

    define i32 @foo()
    {{
      %.2 = load i32, i32* @A
      %.3 = add i32 %.2, 2
      ret i32 %.3
    }}

    @llvm.global_ctors = appending global [1 x {{i32, void ()*, i8*}}] [{{i32, void ()*, i8*}} {{i32 0, void ()* @ctor_A, i8* null}}]
    @llvm.global_dtors = appending global [1 x {{i32, void ()*, i8*}}] [{{i32, void ()*, i8*}} {{i32 0, void ()* @dtor_A, i8* null}}]
    z; ModuleID = ""
target triple = "unknown-unknown-unknown"
target datalayout = ""

define i32 @"foo"()
{
"<>!*''#":
  ret i32 12345
}
z
    ; ModuleID = '<string>'
    target triple = "{triple}"

    define void @foo(i64* %.1) {{
      ret void
    }}

    define void @bar() {{
      call void @foo(i64* null)
      ret void
    }}
zc
declare void @a_readonly_func(i8 *) readonly

declare i8* @a_arg0_return_func(i8* returned, i32*)
a*  
define double @foo(i32 %i, double %j) optnone noinline {
    %I = alloca i32		; <i32*> [#uses=4]
    %J = alloca double		; <double*> [#uses=2]
    store i32 %i, i32* %I
    store double %j, double* %J
    %t1 = load i32, i32* %I		; <i32> [#uses=1]
    %t2 = add i32 %t1, 1		; <i32> [#uses=1]
    store i32 %t2, i32* %I
    %t3 = load i32, i32* %I		; <i32> [#uses=1]
    %t4 = sitofp i32 %t3 to double		; <double> [#uses=1]
    %t5 = load double, double* %J		; <double> [#uses=1]
    %t6 = fmul double %t4, %t5		; <double> [#uses=1]
    ret double %t6
}
z#
declare void @test_declare(i32* )
@  7f454c4602010100000000000000000001003e000100000000000000000000000000000000000000e0000000000000000000000040000000000040000500010048c1e2204809c24889d048c1c03d4831d048b90120000480001070480fafc8000000000000000000000000000000000000000000000000002f0000000400f1ff00000000000000000000000000000000070000001200020000000000000000001f00000000000000002e74657874005f5f617279626f002e6e6f74652e474e552d737461636b002e737472746162002e73796d746162003c737472696e673e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f0000000300000000000000000000000000000000000000a800000000000000380000000000000000000000000000000100000000000000000000000000000001000000010000000600000000000000000000000000000040000000000000001f000000000000000000000000000000100000000000000000000000000000000f00000001000000000000000000000000000000000000005f00000000000000000000000000000000000000000000000100000000000000000000000000000027000000020000000000000000000000000000000000000060000000000000004800000000000000010000000200000008000000000000001800000000000000>48c1e2204809c24889d048c1c03d4831d048b90120000480001070480fafc8ay  
; ModuleID = '<lambda>'
source_filename = "<string>"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-windows-msvc"

declare float @llvm.exp2.f32(float %casted)

define float @foo(i16 %arg) {
entry:
  %casted = sitofp i16 %arg to float
  %ret = call float @llvm.exp2.f32(float %casted)
  ret float %ret
}
a  
; ModuleID = '<string>'
target triple = "{triple}"

define void @foo(i32 %N) {{
  ; unnamed block for testing
  %cmp4 = icmp sgt i32 %N, 0
  br i1 %cmp4, label %for.body, label %for.cond.cleanup

for.cond.cleanup:
  ret void

for.body:
  %i.05 = phi i32 [ %inc, %for.body ], [ 0, %0 ]
  %inc = add nuw nsw i32 %i.05, 1
  %exitcond.not = icmp eq i32 %inc, %N
  br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}}
aw  
; Source C++
;-----------------------------------------
; class MyClass;
;
; class MyClassDefined{
;     MyClass *member;
;     MyClass *m2;
;     MyClass *m3;
; };
;
; void foo(MyClass *c, MyClassDefined){ }
;-----------------------------------------
; LLVM-IR by: clang -arch arm64 -S -emit-llvm file.cpp
; ModuleID = 'file.cpp'
source_filename = "class.cpp"
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
target triple = "arm64-apple-macosx13.3.0"

%class.MyClass = type opaque
%class.MyClassDefined = type { %class.MyClass*, %class.MyClass*, %class.MyClass* }

; Function Attrs: noinline nounwind optnone ssp uwtable(sync)
define void @_Z3fooP7MyClass14MyClassDefined(%class.MyClass* noundef %0, %class.MyClassDefined* noundef %1) {
  %3 = alloca %class.MyClass*, align 8
  store %class.MyClass* %0, %class.MyClass** %3, align 8
  ret void
}

!llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !6, !7, !8}
!llvm.ident = !{!9}

!0 = !{i32 2, !"SDK Version", [2 x i32] [i32 13, i32 3]}
!1 = !{i32 1, !"wchar_size", i32 4}
!2 = !{i32 8, !"branch-target-enforcement", i32 0}
!3 = !{i32 8, !"sign-return-address", i32 0}
!4 = !{i32 8, !"sign-return-address-all", i32 0}
!5 = !{i32 8, !"sign-return-address-with-bkey", i32 0}
!6 = !{i32 7, !"PIC Level", i32 2}
!7 = !{i32 7, !"uwtable", i32 1}
!8 = !{i32 7, !"frame-pointer", i32 1}
!9 = !{!"Apple clang version 14.0.3 (clang-1403.0.22.14.1)"}

a  ; Source C++
;-----------------------------------------

; struct Vector2D{
;     float x, y;
; };
;
; void foo(Vector2D vec, Vector2D *out) {
;     *out = vec;
; }
;-----------------------------------------
; LLVM-IR by: clang -arch x86_64 -S -emit-llvm file.cpp
; ModuleID = 'file.cpp'
source_filename = "class.cpp"
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx13.3.0"

%struct.Vector2D = type { float, float }

; Function Attrs: noinline nounwind optnone ssp uwtable
define void @_Z3foo8Vector2DPS_(<2 x float> %0, %struct.Vector2D* noundef %1) #0 {
  %3 = alloca %struct.Vector2D, align 4
  %4 = alloca %struct.Vector2D*, align 8
  %5 = bitcast %struct.Vector2D* %3 to <2 x float>*
  store <2 x float> %0, <2 x float>* %5, align 4
  store %struct.Vector2D* %1, %struct.Vector2D** %4, align 8
  %6 = load %struct.Vector2D*, %struct.Vector2D** %4, align 8
  %7 = bitcast %struct.Vector2D* %6 to i8*
  %8 = bitcast %struct.Vector2D* %3 to i8*
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %7, i8* align 4 %8, i64 8, i1 false)
  ret void
}

; Function Attrs: argmemonly nofree nounwind willreturn
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #1

attributes #0 = { noinline nounwind optnone ssp uwtable "darwin-stkchk-strong-link" "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "probe-stack"="___chkstk_darwin" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "tune-cpu"="generic" }
attributes #1 = { argmemonly nofree nounwind willreturn }

!llvm.module.flags = !{!0, !1, !2, !3, !4}
!llvm.ident = !{!5}

!0 = !{i32 2, !"SDK Version", [2 x i32] [i32 13, i32 3]}
!1 = !{i32 1, !"wchar_size", i32 4}
!2 = !{i32 7, !"PIC Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{i32 7, !"frame-pointer", i32 2}
!5 = !{!"Apple clang version 14.0.3 (clang-1403.0.22.14.1)"}

c                   J   a  ] tR tRt o R tR t]R3R ltR	R ltR t	Rt
V tR# )
BaseTesti  c                    \         P                  ! 4        \         P                  ! 4        \        P                  ! 4        \        P
                  R ,          V n        . \        P
                  R &   R# )NNNN)llvminitialize_native_targetinitialize_native_asmprintergccollectgarbageold_garbageselfs   &r   setUpBaseTest.setUp  s@    %%'))+


::a=

1    c                t    \         P                  ! 4        V P                  \         P                  . 4       V =R # N)r%   r&   assertEqualr'   r(   r)   s   &r   tearDownBaseTest.tearDown  s'     	

R(r-   Nc                |    VP                  \        P                  ! 4       R 7      p\        P                  ! W4      pV# )triple)formatr"   get_default_tripleparse_assembly)r*   asmcontextmods   &&& r   moduleBaseTest.module  s0    jj 7 7 9j:!!#/
r-   c                L    Vf   V P                  4       pVP                  V4      # r/   )r<   get_global_variable)r*   namer;   s   &&&r   globBaseTest.glob  s#    ;++-C&&t,,r-   c               b    \         P                  P                  4       pVP                  VR 7      # )jit)r"   Targetfrom_default_triplecreate_target_machine)r*   rE   targets   &$ r   target_machineBaseTest.target_machine  s(    002+++44r-   )r(   rA   N)__name__
__module____qualname____firstlineno__r+   r1   asm_sumr<   rA   rJ   __static_attributes____classdictcell____classdict__s   @r   r   r     s*      !$ 
-
5 5r-   r   c                      a  ] tR tRt o Rt]P                  ! ]P                  P                  R4      R4      ]P                  ! ]
P                  P                  R4      R4      R 4       4       tRtV tR	# )
TestDependenciesi  z:
Test DLL dependencies are within a certain expected set.
linuxzLinux-specific testLLVMLITE_DIST_TESTDistribution-specific testc                   \         P                  P                  p\        P                  P                  4       pR VR&   \        P                  ! RRV.\        P                  VR7      pVP                  4       w  rEV P                  ^ VP                  4       \        P                  ! R4      p\        4       pVP                  4       P!                  4        F  pVP#                  4       p	V	'       g   K  V	^ ,          R8X  g   K-  V	^,          p
VP%                  V
4      p\'        V	4      ^8w  g	   V'       g   V P)                  RV: 24       VP+                  VP-                  ^4      4       K  	  RV9  g   R	V9  d   V P)                  R
V: 24       \        . RO4      p\.        P0                  ! 4       R8X  d   VP+                  R4       . pV F5  p
V
P3                  R4      '       d   K  W9  g   K$  VP5                  V
4       K7  	  \'        V4      ^8X  d#   V P)                  RV^ ,          : RV: 24       R# \'        V4      ^8  d   V P)                  RV: RV: 24       R# R# )CLANGobjdumpz-p)stdoutenvz%^([+-_a-zA-Z0-9]+)\.so(?:\.\d+){0,3}$NEEDEDzinvalid NEEDED line: libc
libpthreadz!failed parsing dependencies? got r   libtinfoz	ld-linux-zunexpected dependency z in zunexpected dependencies N)librtlibdlrc   libzlibmlibgcc_srb   zld-linuxld64libzstdz	libstdc++)r   lib_nameosenvironcopy
subprocessPopenPIPEcommunicater0   
returncoderecompilesetdecode
splitlinessplitmatchlenfailaddgroupplatformpython_implementation
startswithappend)r*   lib_pathr`   pout_lib_patdepslinepartsdepmallowedfailss   &             r   
test_linuxTestDependencies.test_linux  s   
 77==jjooFix8$.OO>ALL)**EFuJJL++-DJJLEuqX-AhMM#&u:?!II4AB$ . T!9IItEF $ % ))+v5KK
#C>>+..33ES!  u:?II%((DIJZ!^IIE4HIr-    N)rM   rN   rO   rP   __doc__unittest
skipUnlesssysr   r   rn   ro   getr   rR   rS   rT   s   @r   rW   rW     sc      009.0(<=57&70&r-   rW   c                   d   a a ] tR tRt oRtRtV 3R ltR tR tR t	R t
R	 tR
 tR tRtVtV ;t# )TestRISCVABIi  zT
Test calling convention of floating point arguments of RISC-V
using different ABI.
zriscv32-unknown-linuxc                x   < \         SV `  4        \        P                  ! 4        \        P                  ! 4        R # r/   )superr+   r"   initialize_all_targetsinitialize_all_asmprinters)r*   	__class__s   &r   r+   TestRISCVABI.setUp  s$    ##%'')r-   c                     \         P                  P                  V P                  4       R#   \         d/   pR \        T4      9   d   T P                  R4        Rp?R# ThRp?ii ; i)z/No available targets are compatible with triplez(RISCV target unsupported by linked LLVM.N)r"   rF   from_tripler5   RuntimeErrorstrskipTest)r*   es   & r   check_riscv_targetTestRISCVABI.check_riscv_target  sN    	KK##DKK0 	@CFJHII		s   )- A&!A!A!!A&c                x    \         P                  P                  V P                  4      pVP                  ! R/ VB # )Nr   )r"   rF   r   r5   rH   )r*   kwarglltargets   &, r   riscv_target_machine!TestRISCVABI.riscv_target_machine  s.    ;;**4;;7--666r-   c                   \         P                  ! 4       p\         P                  ! 4       p\         P                  ! WV34      p\         P                  ! 4       p\         P
                  ! WCR R7      pVP                  4       p\         P                  ! V4      pVP                  w  rVP                  W4      p
VP                  W4      pVP                  V4       \        P                  ! \        V4      4      pVP                  4        V# )fpaddr@   )r	   
DoubleType	FloatTypeFunctionTypeModuleFunctionappend_basic_block	IRBuilderargsfpextfaddretr"   r8   r   verify)r*   f64f32fntyr<   funcblockbuilderabarg0resultllmods   &            r   fpadd_ll_moduleTestRISCVABI.fpadd_ll_module	  s    mmollns#J/{{6g6''),,u%yy}}Q$d&F##CK0r-   c                    . pVP                  4        F_  pVP                  4       pVP                  R 4      '       d   K,  VP                  R4      '       d   KE  VR8X  d   KN  VP                  V4       Ka  	  V# ).r    )rz   stripr   r   )r*   r9   asm_listr   s_lines   &&   r   break_up_asmTestRISCVABI.break_up_asm  s^    NN$DZZ\F%%c**f.?.?.H.H|'	 %
 r-   c                    V P                  4        V P                  4       pV P                  R RR7      pV P                  V P	                  VP                  V4      4      \        4       R# )+f,+dilp32featuresabinameN)r   r   r   r0   r   emit_assemblyriscv_asm_ilp32r*   r   rI   s   &  r   test_rv32d_ilp32TestRISCVABI.test_rv32d_ilp32#  sZ    !$$&**GW*M**6+?+?+FG(	*r-   c                    V P                  4        V P                  4       pV P                  R RR7      pV P                  V P	                  VP                  V4      4      \        4       R# )r   ilp32fr   N)r   r   r   r0   r   r   riscv_asm_ilp32fr   s   &  r   test_rv32d_ilp32fTestRISCVABI.test_rv32d_ilp32f*  Z    !$$&**GX*N**6+?+?+FG)	+r-   c                    V P                  4        V P                  4       pV P                  R RR7      pV P                  V P	                  VP                  V4      4      \        4       R# )r   ilp32dr   N)r   r   r   r0   r   r   riscv_asm_ilp32dr   s   &  r   test_rv32d_ilp32dTestRISCVABI.test_rv32d_ilp32d1  r   r-   r   )rM   rN   rO   rP   r   r5   r+   r   r   r   r   r   r   r   rR   rS   __classcell__)r   rU   s   @@r   r   r     s>      %F*
7"*++ +r-   r   c                      a  ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR t]P(                  ! ]! 4       R4      R 4       tR tRtV tR# )TestMisci9  z/
Test miscellaneous functions in llvm.binding.
c                0    V P                  \        4       R # r/   )r<   rQ   r)   s   &r   test_parse_assemblyTestMisc.test_parse_assembly>  s    Gr-   c                   V P                  \        4      ;_uu_ 4       pV P                  \        4       R R R 4       \	        XP
                  4      pV P                  RV4       V P                  RV4       R #   + '       g   i     LK; i)Nzparsing errorzinvalid operand type)assertRaisesr   r<   asm_parse_errorr   	exceptionassertIn)r*   cmss   &  r   test_parse_assembly_error"TestMisc.test_parse_assembly_errorA  sZ    |,,KK( -oq),a0	 -,s   A77B	c                   \         P                  ! 4       p\         P                  ! \         P                  ! ^ 4      . 4      p\         P                  ! WR4      p\         P
                  ! VP                  RR7      4      pVP                  \         P                  ! \         P                  ! ^ 4      R4      4       \        V4      pV P                  V\        4       R# )    fooz<>!*''#r   i90  N)r	   r   r   IntTyper   r   r   r   Constantr   r0   asm_nonalphanum_blocklabel)r*   r;   ftfnbdr9   s   &     r   test_nonalphanum_block_name$TestMisc.test_nonalphanum_block_nameH  s    iik__RZZ^R0[[%(\\"//Y/?@
r{{2::b>512#h89r-   c                    \         P                  P                  4       p\         P                  P                  4       pW8X  g   Q hR # r/   )r"   r:   get_global_context)r*   	gcontext1	gcontext2s   &  r   test_global_contextTestMisc.test_global_contextQ  s2    LL335	LL335	%%%r-   c                   \         P                  ! R R4       \         P                  ! R R4       \         P                  ! R 4      pV P                  VR4       \         P                  ! R4      pV P	                  VR4       R# )__xyzzy  i.  __foobarN)r"   
add_symboladdress_of_symbolr0   assertIs)r*   addrs   & r   test_dylib_symbolsTestMisc.test_dylib_symbolsV  s\    	4(	4(%%i0t$%%j1dD!r-   c                ~    \         P                  ! 4       pV P                  V\        4       V P	                  V4       R # r/   )r"   r7   assertIsInstancer   
assertTrue)r*   r5   s   & r   test_get_default_triple TestMisc.test_get_default_triple^  s,    ((*fc*r-   c                H   R  p\         P                  ! 4       p\         P                  ! 4       pV P                  V\        4       V P                  V4       V! VP                  R4      ^ ,          4      pV! VP                  R4      ^ ,          4      pV P                  WE4       R# )c                     V R 8X  d   R# V # )powerpc64leppc64ler   )archs   &r   normalize_ppc7TestMisc.test_get_process_triple.<locals>.normalize_ppce  s    }$ r-   -N)r"   get_process_tripler7   r  r   r  r{   r0   )r*   r  r5   defaultdefault_archtriple_archs   &     r   test_get_process_triple TestMisc.test_get_process_triplec  s    	 ((*))+fc*$W]]3%7%:;#FLL$5a$893r-   c                d   \         P                  ! 4       pV P                  V\        4       V P                  V\         P                  4       VP                  4        FB  w  r#V P                  V\        4       V P                  V4       V P                  V\        4       KD  	  V P                  VP                  4       \        4       R pRP                  V4      pV P                  \        P                  ! VR4      4       V P                  \        P                  ! VR4      4       V P                  \        P                  ! VR4      4       \        V4      ^ 8X  d#   V P                  VP                  4       R4       R# V P                  \        P                  ! WQP                  4       4      4       R# )z[+\-][a-zA-Z0-9\._-]+z^({0}|{0}(,{0})*)?$r   z+aaz+a,-bbN)r"   get_host_cpu_featuresr  dict
FeatureMapitemsr   r  boolflattenr6   assertIsNotNonerv   r|   r}   r0   )r*   r   kvre_termregexs   &     r   test_get_host_cpu_features#TestMisc.test_get_host_cpu_featuresu  s3   --/h-h8NN$DA!!!S)OOA!!!T* % 	h..0#6*&--g6RXXeR01RXXeU34RXXeX67x=AX--/4  %1A1A1C!DEr-   c                ~    \         P                  ! 4       pV P                  V\        4       V P	                  V4       R # r/   )r"   get_host_cpu_namer  r   r  )r*   cpus   & r   test_get_host_cpu_nameTestMisc.test_get_host_cpu_name  s,    $$&c3'r-   c                X    R p\         P                  ! \        P                  RV.4       R# )a  if 1:
            from llvmlite import binding as llvm

            llvm.initialize_native_target()
            llvm.initialize_native_asmprinter()
            llvm.initialize_all_targets()
            llvm.initialize_all_asmprinters()
            llvm.shutdown()
            -cNrq   
check_callr   
executabler*   codes   & r   test_initfiniTestMisc.test_initfini  s$     	s~~tT:;r-   c                    R pV P                  \        VR7      ;_uu_ 4        \        P                  ! 4        RRR4       R#   + '       g   i     R# ; i)z-llvmlite.binding.initialize\(\) is deprecated)expected_regexN)assertRaisesRegexr   r"   
initialize)r*   r0  s   & r   test_deprecated_initTestMisc.test_deprecated_init  s7    @##L#GGOO HGGGs   AA	c                X    R p\         P                  ! \        P                  RV.4       R# )zif 1:
            from llvmlite import binding as llvm

            llvm.set_option("progname", "-debug-pass=Disabled")
            r9  Nr:  r=  s   & r   test_set_optionTestMisc.test_set_option  s$    
 	s~~tT:;r-   c                    \         P                  w  rpRpV P                  W4       V P                  V\        ^	4      4       R# )   N)rK  )r"   llvm_version_infor   range)r*   majorminorpatchvalids   &    r   test_versionTestMisc.test_version  s5    "44ee#eU1X&r-   c                0    \         P                  ! 4        R # r/   )r"   check_jit_executionr)   s   &r   test_check_jit_execution!TestMisc.test_check_jit_execution  s      "r-   zLocale not availablec                    V P                  \        4      p\        V4      p\        P                  ! \        P
                  R 4       \        V4      pV P                  W#4       R# )r   N)r<   asm_double_localer   r   r   r   r0   )r*   r   expectgots   &   r   test_print_double_locale!TestMisc.test_print_double_locale  sG    KK)*Q 	0!f%r-   c                b    R pRp\         P                  VRV.p\        P                  ! V4       R# )zfrom llvmlite import bindingz-Werrorr9  N)r   r<  rq   r;  )r*   r>  flagscmdargss   &   r   test_no_accidental_warnings$TestMisc.test_no_accidental_warnings  s,    ->>5$5g&r-   r   N)rM   rN   rO   rP   r   r   r   r   r  r  r  r#  r1  r6  r?  rE  rH  rR  rV  r   skipIfr   r\  ra  rR   rS   rT   s   @r   r   r   9  s}     1:&
" 
4$F.

<
<'# __\^%;<	& =	&' 'r-   r   c                      a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tRtV tR# )TestModuleRefi  c                    V P                  4       p\        V4      P                  4       pV P                  VP	                  R 4      V4       R# )z; ModuleID =N)r<   r   r   r  r   r*   r;   r   s   &  r   test_strTestModuleRef.test_str  s4    kkmHNN^4a8r-   c                   V P                  4       p\        V4       VP                  4        V P                  \        P
                  4      ;_uu_ 4        \        V4       R R R 4       VP                  4        R #   + '       g   i     L"; ir/   )r<   r   closer   ctypesArgumentErrorr*   r;   s   & r   
test_closeTestModuleRef.test_close  sR    kkmC		v3344H 5		 54s   A99B		c           	        V P                  4       p\        V4       V;_uu_ 4        \        V4       R R R 4       V P                  \        P                  4      ;_uu_ 4        \        V4       R R R 4       V P                  \
        4      ;_uu_ 4        V;_uu_ 4         R R R 4       R R R 4       R #   + '       g   i     L; i  + '       g   i     L_; i  + '       g   i     L@; i  + '       g   i     R # ; ir/   )r<   r   r   rl  rm  r   rn  s   & r   	test_withTestModuleRef.test_with  s    kkmCSH v3344H 5|,,  -,	 S44  -,,s;   B1!CC*C	C*1C	C	C'"C**C;	c                    V P                  4       pR Vn        V P                  VP                  R 4       RVn        V P                  VP                  R4       R# )r   barN)r<   r@   r0   rn  s   & r   	test_nameTestModuleRef.test_name  sC    kkm5)5)r-   c                ^    V P                  4       pV P                  VP                  R 4       R# )z	asm_sum.cN)r<   r0   source_filern  s   & r   test_source_fileTestModuleRef.test_source_file  s!    kkm+6r-   c                    V P                  4       pVP                  pV P                  V\        4       W!n        V P	                  W!P                  4       R # r/   )r<   data_layoutr  r   r0   rg  s   &  r   test_data_layoutTestModuleRef.test_data_layout  s=    kkmOOa%OO,r-   c                    V P                  4       pVP                  pV P                  V\        P                  ! 4       4       R Vn        V P                  VP                  R 4       R# )r   N)r<   r5   r0   r"   r7   rg  s   &  r   test_tripleTestModuleRef.test_triple  sJ    kkmJJD3356
R(r-   c                p   V P                  4       pV P                  VP                  4       R 4       V P                  \        4      pV P	                  \
        4      ;_uu_ 4       pVP                  4        R R R 4       \        XP                  4      pV P                  RV4       R #   + '       g   i     L9; i)Nz%.bug = add i32 1, %.bug)	r<   r  r   asm_verification_failr   r   r   r   r   )r*   r;   r   r   s   &   r   test_verifyTestModuleRef.test_verify  sw    kkmcjjlD)kk/0|,,JJL -0!4 -,s   #B%%B5	c                   V P                  4       pVP                  R 4      pV P                  V\        P                  4       V P                  VP                  R 4       V P                  \        4      ;_uu_ 4        VP                  R4       RRR4       ?\        VP                   4       R#   + '       g   i     L(; i)sumr   N)
r<   get_functionr  r"   ValueRefr0   r@   r   	NameErrorr   r*   r;   r   s   &  r   test_get_functionTestModuleRef.test_get_function  s    kkme$b$--0%(y))U# * BII *)   ;B--B=	c                t   V P                  4       pVP                  R 4      pV P                  VP                  R 4       V P	                  \
        P                  ! R\        V4      4      4       V P                  \        4      ;_uu_ 4        VP                  R4       RRR4       R#   + '       g   i     R# ; i)struct.glob_type8%struct\.glob_type(\.[\d]+)? = type { i64, \[2 x i64\] }zstruct.doesnt_existN)
r<   get_struct_typer0   r@   r,  rv   r|   r   r   r  )r*   r;   st_tys   &  r   test_get_struct_type"TestModuleRef.test_get_struct_type  s    kkm##$67%78RXXGJ 	 y)) 56 *)))s   
B&&B7	c                   V P                  4       pVP                  R 4      pV P                  V\        P                  4       V P                  VP                  R 4       V P                  \        4      ;_uu_ 4        VP                  R4       RRR4       ?\        VP                   4       R#   + '       g   i     L(; i)rA   ru  N)
r<   r?   r  r"   r  r0   r@   r   r  r   )r*   r;   gvs   &  r   test_get_global_variable&TestModuleRef.test_get_global_variable   s    kkm$$V,b$--0&)y))##E* * BII *)r  c                    V P                  4       pVP                  p?\        VR  R7      pV P                  \	        V4      ^4       T P                  V Uu. uF  qDP
                  NK  	  up. RO4       R# u upi )c                     V P                   # r/   r   )values   &r   <lambda>5TestModuleRef.test_global_variables.<locals>.<lambda>1  s    UZZr-   )keyN)rA   glob_bglob_fglob_struct)r<   global_variablessortedr0   r}   r@   )r*   r;   itglobsgs   &    r   test_global_variables#TestModuleRef.test_global_variables-  sd    kkm!!r78UQ'%0%Q&&%0D	F0s   A6c                    V P                  4       pVP                  p?\        V4      pV P                  \	        V4      ^4       V P                  V^ ,          P
                  R4       R#    r  N)r<   	functionslistr0   r}   r@   )r*   r;   r  funcss   &   r   test_functionsTestModuleRef.test_functions6  sN    kkm]]RUQ'q.r-   c           	     f   V P                  4       pVP                  p?\        V4      pV P                  \	        V4      ^4       V P                  \        P                  ! RV^ ,          P                  4      4       V P                  \        P                  ! R\        V^ ,          4      4      4       R# )r  struct\.glob_type(\.[\d]+)?r  N)
r<   struct_typesr  r0   r}   r,  rv   r|   r@   r   )r*   r;   r  structss   &   r   test_structsTestModuleRef.test_structs>  s    kkmr(Wq)RXX&D&-ajoo7 	8RXXG
O 	r-   c                   V P                  4       pV P                  \        4      pVP                  V4       V P                  \	        R  VP
                   4       4      RR.4       VP                  R4       VP                  4        V P                  \        P                  4      ;_uu_ 4        VP                  R4       RRR4       R#   + '       g   i     R# ; i)c              3   8   "   T F  qP                   x  K  	  R # 5ir/   r   .0fs   & r   	<genexpr>-TestModuleRef.test_link_in.<locals>.<genexpr>O       2>a66>   mulr  N)r<   asm_mullink_inr0   r  r  r  rk  r   rl  rm  )r*   destsrcs   &  r   test_link_inTestModuleRef.test_link_inJ  s    {{}kk'"S24>>22UEN	D% 

v3344U# 5444s   -C		C	c                n   V P                  4       pV P                  \        4      pVP                  VR R7       V P                  \	        R VP
                   4       4      RR.4       VP                  4        V P                  \	        R VP
                   4       4      R.4       VP                  R4       R# )Tpreservec              3   8   "   T F  qP                   x  K  	  R # 5ir/   r   r  s   & r   r  6TestModuleRef.test_link_in_preserve.<locals>.<genexpr>Z  r  r  r  r  c              3   8   "   T F  qP                   x  K  	  R # 5ir/   r   r  s   & r   r  r  \  s     ?1r  N)r<   r  r  r0   r  r  rk  r  )r*   r  src2s   &  r   test_link_in_preserve#TestModuleRef.test_link_in_preserveU  s    {{}{{7#TD)24>>22UEN	D

???%I% r-   c                .   V P                  4       pV P                  \        4      pV P                  \        4      ;_uu_ 4       pVP	                  V4       R R R 4       V P                  R\        XP                  4      4       R #   + '       g   i     L7; i)Nzsymbol multiply defined)r<   asm_sum2r   r   r  r   r   r   )r*   r  r  r   s   &   r   test_link_in_error TestModuleRef.test_link_in_error_  sb     {{}kk(#|,,LL -/R\\1BC -,s   BB	c                    V P                  4       pVP                  4       pR pRpT P                  VP                  V4      ;'       g    VP                  V4      4       R# )s   s   BCN)r<   
as_bitcoder  r   )r*   r;   bcbitcode_wrapper_magicbitcode_magics   &    r   test_as_bitcodeTestModuleRef.test_as_bitcodeh  sT    kkm^^ !4m4 = =&;<	>r-   c                8   V P                  \        4      ;_uu_ 4       p\        P                  ! R 4       RRR4       V P	                  R\        XP                  4      4       V P	                  R\        VP                  4      4       R#   + '       g   i     L\; i)r-   NzLLVM bitcode parsing errorz(file too small to contain bitcode header)r   r   r"   parse_bitcoder   r   r   )r*   r   s   & r   test_parse_bitcode_error&TestModuleRef.test_parse_bitcode_errorr  sc    |,,s# -2C4EF6BLL8I	
 -,s   B		B	c                J   \         P                  ! 4       pV P                  VR 7      P                  4       p\         P                  ! 4       p\         P                  ! W#4      pV P                  VP                  4       V4       VP                  R4       VP                  R4       R# )r:   r  rA   N)r"   create_contextr<   r  r  r0   r  r?   )r*   context1r  context2r;   s   &    r   test_bitcode_roundtrip$TestModuleRef.test_bitcode_roundtripz  sz    &&([[[*557&&(  .)2.'r-   c                    V P                  4       pVP                  4       pV P                  W!4       V P                  VP	                  4       VP	                  4       4       R # r/   )r<   cloneassertIsNotr0   r  )r*   r   cloneds   &  r   test_cloningTestModuleRef.test_cloning  sE    KKM#**,alln=r-   r   N)rM   rN   rO   rP   rh  ro  rr  rv  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rR   rS   rT   s   @r   re  re    su     9
	*7-)	5
7F/
	$!D>
	(> >r-   re  c                   |   a  ] tR tRt o RtRR ltR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tRtV tR# )JITTestMixini  z"
Mixin for ExecutionEngine tests.
c                    VP                  4        VP                  V4      pV P                  V4       \        \        \        \        4      ! V4      # r/   )finalize_objectget_function_addressr  r   r   )r*   ee	func_namecfptrs   &&& r   get_sumJITTestMixin.get_sum  s>    
''	2u-e44r-   c                    V P                  4       pV P                  V4      ;_uu_ 4       pV P                  V4      pV! ^R4      pV P                  RV4       RRR4       R#   + '       g   i     R# ; i   N)r<   rE   r  r0   )r*   r;   r  cfuncress   &    r   test_run_codeJITTestMixin.test_run_code  sQ    kkmXXc]]bLL$E2,CR% ]]]s   -A!!A2	c                ,   V P                  V P                  4       4      pVP                  4        VP                  4        V P                  \        P
                  4      ;_uu_ 4        VP                  4        R R R 4       R #   + '       g   i     R # ; ir/   )rE   r<   rk  r   rl  rm  r  r*   r  s   & r   ro  JITTestMixin.test_close  sZ    XXdkkm$



v3344  5444s   'BB	c           	        V P                  V P                  4       4      pV;_uu_ 4         R R R 4       V P                  \        4      ;_uu_ 4        V;_uu_ 4         R R R 4       R R R 4       V P                  \        P
                  4      ;_uu_ 4        VP                  4        R R R 4       R #   + '       g   i     L; i  + '       g   i     Lm; i  + '       g   i     Lx; i  + '       g   i     R # ; ir/   )rE   r<   r   r   rl  rm  r  r  s   & r   rr  JITTestMixin.test_with  s    XXdkkm$R |,,  - v3344  54 R  -, 544s;   B0CC	CC)0C 	CCC&	)C:	c                    V P                  4       pV P                  V4      pVP                  4        VP                  4        R # r/   r<   rE   rk  r*   r;   r  s   &  r   test_module_lifetime!JITTestMixin.test_module_lifetime  s,    kkmXXc]

		r-   c                    V P                  4       pV P                  V4      pVP                  4        VP                  4        R # r/   r  r  s   &  r   test_module_lifetime2"JITTestMixin.test_module_lifetime2  s,    kkmXXc]		

r-   c                   V P                  V P                  4       4      pV P                  \        4      pVP                  V4       V P	                  \
        4      ;_uu_ 4        VP                  V4       R R R 4       V P                  VP                  4       VP                  4        V P                  VP                  4       R #   + '       g   i     LX; ir/   )
rE   r<   r  
add_moduler   KeyErrorassertFalseclosedrk  r  r*   r  r;   s   &  r   test_add_moduleJITTestMixin.test_add_module  s    XXdkkm$kk'"
cx((MM# )$



#	 )(s   #CC	c                    V P                  V P                  4       4      pV P                  \        4      pVP                  V4       VP	                  4        VP	                  4        R # r/   rE   r<   r  r  rk  r  s   &  r   test_add_module_lifetime%JITTestMixin.test_add_module_lifetime  sB    XXdkkm$kk'"
c		

r-   c                    V P                  V P                  4       4      pV P                  \        4      pVP                  V4       VP	                  4        VP	                  4        R # r/   r  r  s   &  r   test_add_module_lifetime2&JITTestMixin.test_add_module_lifetime2  sB    XXdkkm$kk'"
c

		r-   c                   V P                  V P                  4       4      pV P                  \        4      pVP                  V4       VP	                  V4       V P                  \        4      ;_uu_ 4        VP	                  V4       R R R 4       V P                  VP                  4       VP                  4        V P                  VP                  4       R #   + '       g   i     LX; ir/   )
rE   r<   r  r  remove_moduler   r  r  r  rk  r  s   &  r   test_remove_moduleJITTestMixin.test_remove_module  s    XXdkkm$kk'"
c
x((S! )$

$	 )(s   4CC&	c                    V P                  4       pV P                  V4      pVP                  pV P                  VP                  V4       \	        V4       ??\	        V4       R # r/   )r<   rE   target_datar  r   )r*   r;   r  tds   &   r   test_target_dataJITTestMixin.test_target_data  sH    kkmXXc]^^bnnb)BBr-   c                h   V P                  4       pV P                  V4      pVP                  pVP                  R 4      pVP                  R4      pVP                  R4      p\        P
                  R8  d   ^M^pWEV3 F.  pV P                  VP                  VP                  4      V4       K0  	  V P                  VP                  VP                  4      ^4       V P                  VP                  VP                  4      ^4       V P                  VP                  VP                  4      ^4       V P                  VP                  VP                  4      R4       V P                  VP                  VP                  4      ^4       V P                  VP                  VP                  4      R4       R# )rA   r  r  N        )r  r     )r(     )r<   rE   r"  r?   r   maxsizer0   get_abi_sizetypeglobal_value_typeget_abi_alignmentr   )	r*   r;   r  r#  gv_i32gv_i8	gv_structpointer_sizer  s	   &        r   test_target_data_abi_enquiries+JITTestMixin.test_target_data_abi_enquiries  sO   kkmXXc]^^((0''1++M:	KK'1qq+AR__QVV4lC , 	)A)ABAF--f.F.FGK)@)@A1Eb**5+B+BCYO)D)DErJb**9+F+FGPr-   c                  a . oV3R  lpV P                  4       pV P                  V4      pVP                  V4       V P                  \	        S4      ^ 4       V P                  V4      pV! ^R4       V P                  \	        S4      ^4       V P                  S^ ,          ^ ,          V4       V P                  S^ ,          ^,          \        4       . SR&   V P                  \        4      pVP                  V4       V P                  VR4      pV P                  \	        S4      ^4       V P                  S^ ,          ^ ,          V4       V P                  S^ ,          ^,          \        4       R# )c                 ,   < SP                  W34       R # r/   r   r;   bufnotifiess   &&r   notify5JITTestMixin.test_object_cache_notify.<locals>.notify       OOSJ'r-   r!   r  Nr  )r<   rE   set_object_cacher0   r}   r  r  r  bytesr  r  )r*   r;  r;   r  r  mod2r:  s   &     @r   test_object_cache_notify%JITTestMixin.test_object_cache_notify  s   	( kkmXXc]
F#X*R aX*hqk!nc*hqk!ne4{{7#
dR'X*hqk!nd+hqk!ne4r-   c                  aaa	 . o. oV3R  lpV3R lpV P                  4       pV P                  V4      pVP                  W4       V P                  \	        S4      ^ 4       V P                  \	        S4      ^ 4       V P                  V4      pV P                  \	        S4      ^4       V P                  \	        S4      ^4       V P                  S^ ,          V4       S^ ,          ^,          o	VV	3R lp. SR&   . SR&   V P                  \        4      pV P                  V4      pVP                  W4       V P                  \	        S4      ^ 4       V P                  \	        S4      ^ 4       V P                  V4      pV P                  V! ^R4      R4       V P                  \	        S4      ^ 4       V P                  \	        S4      ^4       R# )c                 ,   < SP                  W34       R # r/   r7  r8  s   &&r   r;  8JITTestMixin.test_object_cache_getbuffer.<locals>.notify  r=  r-   c                 *   < SP                  V 4       R # r/   r7  )r;   
getbufferss   &r   	getbuffer;JITTestMixin.test_object_cache_getbuffer.<locals>.getbuffer  s    c"r-   c                 *   < SP                  V 4       S# r/   r7  )r;   rG  
sum_buffers   &r   getbuffer_successfulFJITTestMixin.test_object_cache_getbuffer.<locals>.getbuffer_successful2  s    c"r-   r!   Nr  r  )r<   rE   r>  r0   r}   r  r  r  )
r*   r;  rH  r;   r  r  rL  rG  r:  rK  s
   &      @@@r   test_object_cache_getbuffer(JITTestMixin.test_object_cache_getbuffer  st   
	(	# kkmXXc]
F. 	X*Z!,R X*Z!,jmS)a[^

	 
1kk'"XXc]
F9X*Z!,R q"r*X*Z!,r-   r   N)r  )rM   rN   rO   rP   r   r  r  ro  rr  r	  r  r  r  r  r  r$  r3  rA  rN  rR   rS   rT   s   @r   r  r    sV     5&!!$	%Q*56*- *-r-   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )JITWithTMTestMixiniE  c                <   V P                  RR7      pV P                  4       pV P                  W!4      pVP                  V4      pV P	                  RV4       VP                  R4       VP                  V4      pV P	                  RV4       V P                  WE4       R# )z%Test TargetMachineRef.emit_assembly()TrD   r  N)rJ   r<   rE   r   r   set_asm_verbosityassertNotEqual)r*   rJ   r;   r  raw_asmraw_asm_verboses   &     r   test_emit_assembly%JITWithTMTestMixin.test_emit_assemblyG  s    ,,,6kkmXXc* ..s3eW%((.(66s;eW%G5r-   c                :   V P                  RR7      pV P                  4       pV P                  W!4      pVP                  V4      pV P	                  V\
        4       \        P                  P                  R4      '       d   V P                  RVR,          4       R# R# )z#Test TargetMachineRef.emit_object()TrD   rX   s   ELF:N
   NN)
rJ   r<   rE   emit_objectr  r?  r   r   r   r   )r*   rJ   r;   r  code_objects   &    r   test_emit_object#JITWithTMTestMixin.test_emit_objectS  s{    ,,,6kkmXXc*$005k51<<""7++MM&+c"23 ,r-   r   N)rM   rN   rO   rP   rW  r]  rR   rS   rT   s   @r   rQ  rQ  E  s     
6	4 	4r-   rQ  c                   .   a  ] tR tRt o RtRR ltRtV tR# )	TestMCJiti_  z8
Test JIT engines created with create_mcjit_compiler().
Nc                Z    Vf   V P                  RR7      p\        P                  ! W4      # )NTrD   )rJ   r"   create_mcjit_compiler)r*   r;   rJ   s   &&&r   rE   TestMCJit.jitd  s,    !!00T0:N))#>>r-   r   r/   )rM   rN   rO   rP   r   rE   rR   rS   rT   s   @r   r`  r`  _  s     ? ?r-   r`  zOrcJIT support is experimentalc            	          a  ] tR tRt o ]RRR]! ]]]4      R3R ltR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tR tR tRtV tR# )TestOrcLLJITiq  r  NFc                   \         P                  ! VR VR7      p\         P                  ! 4       pV'       d   VP                  4        VP	                  VP                  \         P                  ! 4       R7      4      P                  V4      P                  Wr4      p	W,          p
V P                  V
4       V P                  W)P                  4       WyV! V
4      3# )F)use_jit_linksuppress_errorsr4   )r"   create_lljit_compilerJITLibraryBuilderadd_current_processadd_irr6   r7   export_symbollinkr  r0   r@   )r*   r9   r  rJ   add_process	func_typerh  lljitr   rtr  s   &&&&&&&    r   rE   TestOrcLLJIT.jitt  s     **>8=;JL ((*'')VCJJd&=&=&?J@A]9%T%# 	 GG,)E***r-   c                    \         P                  ! 4       p\         P                  ! 4       P                  R R4      P	                  R 4      P                  VR4      pV P                  VR ,          R4       R# )r	  r
  r   N)r"   ri  rj  import_symbolrm  rn  r0   r*   rq  rr  s   &  r   test_define_symbolTestOrcLLJIT.test_define_symbol  sW    **,##%33ItD]9%dd5%&8 	I-r-   c                   \         P                  ! 4       pV P                  \        R 4      ;_uu_ 4        VP	                  RR4       RRR4       \         P
                  ! 4       P                  RR4      P                  R4      P                  VR4      pV P                  VR,          ^ 4       V P                  \        R4      ;_uu_ 4        VP	                  RR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)zNo such libraryr   r  Nr	  r
  zSymbols not found.*__foobar)
r"   ri  rC  r   lookuprj  ru  rm  rn  rT  rv  s   &  r   "test_lookup_undefined_symbol_fails/TestOrcLLJIT.test_lookup_undefined_symbol_fails  s    **,##L2CDDLL
+ E##%33ItD]9%dd5%&8 	ByM1-##L$AC CLL
+C C ED
C C Cs   C'
C:'C7	:D	c                $   \         P                  R 8X  dA   V P                  \        R4      ;_uu_ 4        \        P
                  ! RR7       RRR4       R# V P                  \        P
                  ! RR7      4       R#   + '       g   i     R# ; i)win32zJITLink .* WindowsT)rg  N)r   r   rC  r   r"   ri  r,  r)   s   &r   test_jit_linkTestOrcLLJIT.test_jit_link  si    <<7"''(<> >**=> >   !;!;!NO	> > >s   A>>B	c                    V P                  4       w  rpV;_uu_ 4        V! ^R4      pV P                  RV4       RRR4       R#   + '       g   i     R# ; ir  )rE   r0   )r*   rq  rr  r  r  s   &    r   r  TestOrcLLJIT.test_run_code  s>    !XXZEU2,CR% UUUs   AA	c                   V P                  4       w  rpVP                  4        VP                  4        V P                  \        4      ;_uu_ 4        VP	                  R R4       RRR4       R#   + '       g   i     R# ; i)r   r   N)rE   rk  r   AssertionErrorrz  r*   rq  rr  r  s   &   r   ro  TestOrcLLJIT.test_close  sR    !XXZE~..LL% /...s   A..A?	c           	        V P                  4       w  rpV;_uu_ 4         R R R 4       V P                  \        4      ;_uu_ 4        V;_uu_ 4         R R R 4       R R R 4       V P                  \        4      ;_uu_ 4        VP	                  RR4       R R R 4       R #   + '       g   i     L; i  + '       g   i     Le; i  + '       g   i     Lp; i  + '       g   i     R # ; i)Nr   r   )rE   r   r   r  rz  r  s   &   r   rr  TestOrcLLJIT.test_with  s    !XXZEU |,,  - ~..LL% /. U  -, /..s;   BCB/	C?CB,	/B?:CC	C&	c                P   V P                  4       w  rp\        P                  ! 4       P                  \        P                  \        P                  ! 4       R 7      4      P                  R4      P                  VR4      p\        \        \        \        4      ! VR,          4      ! ^R4      pV P                  RV4       V P                  VP                  RR4      R,          ^ 4       V P                  VP                  RR4      R,          ^ 4       V P                  \        4      ;_uu_ 4        VP                  RR4       RRR4       V P                  \        4      ;_uu_ 4        VP                  RR4       RRR4       R#   + '       g   i     LJ; i  + '       g   i     R# ; i)r4   r  r  Nr  i)rE   r"   rj  rl  r  r6   r7   rm  rn  r   r   r0   rT  rz  r   r   r*   rq  rt_sum	cfunc_sumrt_mulr  s   &     r   test_add_ir_moduleTestOrcLLJIT.test_add_ir_module  s%   %)XXZ"	'')VGNN$*A*A*CNDE]5!T% 	 ue,VE];ArBc"ELL6u=qAELL6u=qA|,,LL& -|,,LL& -, -,,,,s   ,F$FF	F%	c                   V P                  4       w  rp?\        P                  ! 4        V P                  \        4      ;_uu_ 4        VP                  R R 4       RRR4       VP                  4        R#   + '       g   i     L"; ir  N)rE   r%   r&   r   r   rz  rk  )r*   rq  r  r   s   &   r   r  TestOrcLLJIT.test_remove_module  sT    !XXZ


|,,LL& - -,s   A44B	c                   V P                  4       w  rp\        P                  ! 4       P                  \        P                  \        P                  ! 4       R 7      4      P                  R4      P                  R4      P                  VR4      p\        \        \        \        4      ! VR,          4      ! ^R4      pV P                  ^	V4       R# )r4   
square_sumr  Nr  )rE   r"   rj  rl  asm_square_sumr6   r7   rm  add_jit_libraryrn  r   r   r0   r  s   &     r   test_lib_dependsTestOrcLLJIT.test_lib_depends  s    %)XXZ"	'')VN))1H1H1J)KL]<(_U#T%&	 	
 ue,VL-AB1bIC r-   c                    V P                  4       w  rpVP                  pV P                  VP                  V4       \        V4       ?\        V4       R # r/   )rE   r"  r  r   )r*   rq  rr  r   r#  s   &    r   r$  TestOrcLLJIT.test_target_data  sA    Ae'',BBr-   c                (   \        ^ 4      p\        P                  ! 4       p\        P                  ! 4       pVP	                  \
        P                  \        P                  ! 4       R7      4      P                  R\        P                  ! V4      4      P                  R4      P                  VR4      pVR,          pV P                  V4       V P                  \        \         4      ! V4      ! 4       ^4       ?V P#                  VP$                  ^4       R# )r   r4   Ar   N)r   r"   ri  rj  rl  asm_ext_ctorsr6   r7   ru  rl  	addressofrm  rn  r  r0   r   r   rT  r  )r*   shared_valuerq  r   rr  r   s   &     r   test_global_ctors_dtors$TestOrcLLJIT.test_global_ctors_dtors  s     qz**,((*VM((0G0G0I(JK]3 0 0 >?]5!T%	 	
 i5)#.0"5L..3r-   c                    R pV P                  \        V4      ;_uu_ 4        V P                  \        RRR7       RRR4       R#   + '       g   i     R# ; i)z*Failed to materialize symbols:.*getversion
getversionT)rh  N)rC  r   rE   asm_getversion)r*   msgs   & r   (test_lookup_current_process_symbol_fails5TestOrcLLJIT.test_lookup_current_process_symbol_fails  s=     ;##L#66HH^\4HH 7666s   AA	c                6    V P                  \        R RR4       R# )r  NT)rE   r  r)   s   &r   "test_lookup_current_process_symbol/TestOrcLLJIT.test_lookup_current_process_symbol  s    tT:r-   c                  aa \         P                  ! 4       o\        P                  \         P                  ! 4       R 7      oVV3R lp\        \        P                  ! 4       4       Uu. uF   p\        P                  ! V! V4      R7      NK"  	  ppV F  pVP                  4        K  	  V F  pVP                  4        K  	  R# u upi )r4   c                    <a  V VV3R  lpV# )c            
         < . p \        ^24       F[  pV P                  \        P                  ! 4       P	                  S4      P                  R4      P                  SRS RV 24      4       K]  	  R# )2   r  sum_r   N)rM  r   r"   rj  rl  rm  rn  )trackingcirq  llvm_irs     r   do_workDTestOrcLLJIT.test_thread_safe.<locals>.compile_many.<locals>.do_work  sY    rAOOD$:$:$<%+VG_%2]5%9%)T%4s!A3%@B #r-   r   )r  r  rq  r  s   f r   compile_many3TestOrcLLJIT.test_thread_safe.<locals>.compile_many  s    B Nr-   )rI   N)r"   ri  rQ   r6   r7   rM  rn   	cpu_count	threadingThreadstartjoin)r*   r  r  thsthrq  r  s   &    @@r   test_thread_safeTestOrcLLJIT.test_thread_safe  s    **,..(?(?(A.B		 blln-/-1 |A7- 	 /BHHJ BGGI 	/s   (&Cc                   V P                  R R7      pV P                  4       p\        P                  ! V4      p\        P                  ! 4       P                  VP                  V4      4      P                  R4      P                  VR4      p\        \        \        \        4      ! VR,          4      pV P                  V! ^^4      ^4       R# )FrD   r  N)rJ   r<   r"   ri  rj  add_object_imgr[  rm  rn  r   r   r0   )r*   rJ   r;   rq  rr  r  s   &     r   test_add_object_file!TestOrcLLJIT.test_add_object_file  s    ,,,7kkm**>:##%^N66s;<]5!T% 	 ue,RY7QA&r-   c                   V P                  R R7      pV P                  4       pVP                  V4      p\        4       w  rE \        P
                  ! VR4      ;_uu_ 4       pVP                  V4       RRR4       \        P                  ! V4      p\        P                  ! 4       P                  V4      P                  R4      P                  VR4      p\        \        \        \        4      ! VR,          4      p	V P                  V	! ^^4      ^4       \        P                   ! V4       R#   + '       g   i     L; i  \        P                   ! T4       i ; i)FrD   wbNr  )rJ   r<   r[  r   rn   fdopenwriter"   ri  rj  add_object_filerm  rn  r   r   r0   unlink)
r*   rJ   r;   obj_bin	temp_desc	temp_pathr  rq  rr  r  s
   &         r   $test_add_object_file_from_filesystem1TestOrcLLJIT.test_add_object_file_from_filesystem  s    ,,,7kkm ,,S1&y		!9d++q  ,..~>E'') +u%eU#  E5%0E;CSAY*IIi  ,+ IIi s%   D=  D*2B D= *D:	5D= =Er   )rM   rN   rO   rP   rQ   r   r   rE   rw  r{  r  r  ro  rr  r  r  r  r$  r  r  r  r  r  r  rR   rS   rT   s   @r   re  re  q  s{      t5%)G!+&.	,P&&&'!4"I;,	'! !r-   re  c                      a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tRtV t R# )TestValueRefi2  c                ~    V P                  4       pVP                  R 4      pV P                  \        V4      R4       R# )rA   z@glob = global i32 0N)r<   r?   r0   r   r*   r;   rA   s   &  r   rh  TestValueRef.test_str4  s2    kkm&&v.T$:;r-   c                    V P                  4       pVP                  R 4      pV P                  VP                  R 4       RVn        V P                  VP                  R4       R# )rA   foobarN)r<   r?   r0   r@   r  s   &  r   rv  TestValueRef.test_name9  sL    kkm&&v.F+	H-r-   c                   V P                  4       pVP                  R 4      pVP                  pV P                  VP                  \        P
                  4       W2n        V P                  VP                  V4       R FY  pW2n        V P                  VP                  \        P
                  4       V P                  VP                  P                  V4       K[  	  R# )rA   N)internalexternal)r<   r?   linkager  r"   Linkager0   r@   )r*   r;   rA   r  s   &   r   test_linkageTestValueRef.test_linkage@  s    kkm&&v.,,dllDLL9w//G"L!!$,,=T\\..8 0r-   c                   V P                  4       pVP                  R 4      pVP                  pV P                  VP                  \        P
                  4       W2n        V P                  VP                  V4       R FY  pW2n        V P                  VP                  \        P
                  4       V P                  VP                  P                  V4       K[  	  R# )rA   N)hidden	protectedr   )r<   r?   
visibilityr  r"   
Visibilityr0   r@   )r*   r;   rA   r  s   &   r   test_visibilityTestValueRef.test_visibilityL  s    kkm&&v.__
doot?$*5<J(O!!$//4??CT__11:> =r-   c                   V P                  4       pVP                  R 4      pVP                  pV P                  VP                  \        P
                  4       W2n        V P                  VP                  V4       R FY  pW2n        V P                  VP                  \        P
                  4       V P                  VP                  P                  V4       K[  	  R# )rA   N)	dllimport	dllexportr   )r<   r?   storage_classr  r"   StorageClassr0   r@   )r*   r;   rA   r  s   &   r   test_storage_classTestValueRef.test_storage_classX  s    kkm&&v.**d00$2C2CD*++];BM!.!!$"4"4d6G6GHT//44mD Cr-   c                H   V P                  4       pVP                  R 4      pVP                  R4       V P                  \        4      ;_uu_ 4       pVP                  R4       RRR4       V P                  \        XP                  4      R4       R#   + '       g   i     L7; i)r  	nocapturezextNzno such attribute 'zext')r<   r  add_function_attributer   
ValueErrorr0   r   r   )r*   r;   r   raisess   &   r   test_add_function_attribute(TestValueRef.test_add_function_attributed  sv    kkme$
!!+.z**f%%f- +V--.0JK +*s   BB!	c                    V P                  4       pVP                  R 4      pV P                  VP                   V4       R# rL   )r<   r?   r  r  s   &  r   test_moduleTestValueRef.test_modulel  s/    kkm&&v.dkk3'r-   c                    V P                  4       pVP                  R 4      pVP                  pV P                  V\        P
                  4       R# rL   )r<   r?   r,  r  r"   TypeRefr*   r;   rA   tps   &   r   	test_typeTestValueRef.test_typeq  s:    kkm&&v.YYb$,,/r-   c                .   V P                  4       pVP                  R 4      pVP                  pV P                  VP                  R4       VP                  R4      pV P                  \        P                  ! RVP                  P                  4      4       R# )rA   r   r  r  N)	r<   r?   r,  r0   r@   r,  rv   r|   r-  )r*   r;   rA   r  sts   &    r   test_type_nameTestValueRef.test_type_namew  sw    kkm&&v.YY"%$$]3RXX&D&(&:&:&?&?A 	Br-   c                    V P                  4       pVP                  R 4      pVP                  pV P                  \	        V4      R4       R# )rA   i32N)r<   r?   r-  r0   r   r  s   &   r   test_type_printing_variable(TestValueRef.test_type_printing_variable  s<    kkm&&v.##R%(r-   c                    V P                  4       pVP                  R 4      pV P                  \        VP                  4      R4       R# )r  zi32 (i32, i32)N)r<   r  r0   r   r-  r  s   &  r   test_type_printing_function(TestValueRef.test_type_printing_function  s9    kkme$R1124DEr-   c                v   V P                  4       pVP                  R 4      pV P                  VP                  P                  4       V P                  \        P                  ! R\        VP                  4      4      4       V P                  \        P                  ! R\        VP                  4      4      4       R# )r  ptrr  N)
r<   r?   r  r,  
is_pointerr,  rv   r|   r   r-  )r*   r;   r  s   &  r   test_type_printing_struct&TestValueRef.test_type_printing_struct  s~    kkm$$]3**+RXXfc"''l;<RXXG$$%' 	(r-   c                f    V P                  4       pVP                  4        VP                  4        R # r/   )rA   rk  )r*   rA   s   & r   ro  TestValueRef.test_close  s    yy{



r-   c                    V P                  4       P                  R 4      pV P                  \        4      P                  R 4      pV P                  VP                  4       V P                  VP                  4       R# r  )r<   r  asm_sum_declarer  is_declarationr  )r*   defineddeclareds   &  r   test_is_declaration TestValueRef.test_is_declaration  sW    ++-,,U3;;/<<UC//0//0r-   c                    V P                  \        4      p\        VP                  4      pV P	                  \        V4      ^4       V F  pV P                  VP                  4       K   	  R# r(  N)r<   rQ   r  r  r0   r}   r  	is_global)r*   r;   gvarsr.  s   &   r   test_module_global_variables)TestValueRef.test_module_global_variables  sN    kk'"S))*UQ'AOOAKK( r-   c                   V P                  4       p\        VP                  4      pV P                  \	        V4      ^4       V^ ,          pV P                  VP                  4       V P                  VP                  R4       V P                  \        4      ;_uu_ 4        VP                   RRR4       V P                  \        4      ;_uu_ 4        VP                   RRR4       V P                  \        4      ;_uu_ 4        VP                   RRR4       R#   + '       g   i     Lv; i  + '       g   i     LW; i  + '       g   i     R# ; ir  )r<   r  r  r0   r}   r  is_functionr@   r   r  instructionsoperandsopcode)r*   r;   r  r   s   &   r   test_module_functions"TestValueRef.test_module_functions  s    kkmS]]#UQ'Qx(()E*z** +z**MM +z**KK +*	 +******s$   DD,D?D)	,D<	?E	c                   V P                  4       pVP                  R 4      pV P                  VP                  4       \	        VP
                  4      pV P                  \        V4      ^4       V P                  V^ ,          P                  4       V P                  V^,          P                  4       V P                  V^ ,          P                  R4       V P                  \        V^ ,          P                  4      R4       V P                  V^,          P                  R4       V P                  \        V^,          P                  4      R4       V P                  \        4      ;_uu_ 4        V^ ,          P                   RRR4       V P                  \        4      ;_uu_ 4        V^ ,          P
                   RRR4       R#   + '       g   i     LK; i  + '       g   i     R# ; i)r  .1r  .2N)r<   r  r  r  r  	argumentsr0   r}   is_argumentr@   r   r,  r   r  blocks)r*   r;   r   r   s   &   r   test_function_arguments$TestValueRef.test_function_arguments  sA   kkm&(()DNN#TA&Q++,Q++,at,T!W\\*E2at,T!W\\*E2z**GNN +z**G +* +****s   ,G%GG	G'	c                    V P                  4       P                  R 4      p\        VP                  4      pV P	                  \        V4      ^4       V^ ,          pV P                  VP                  4       R# r  )r<   r  r  r)  r0   r}   r  is_block)r*   r   r)  r   s   &   r   test_function_blocks!TestValueRef.test_function_blocks  sS    {{}))%0dkk"Va(q	'r-   c                v   V P                  4       P                  R 4      p\        \        VP                  4      ^ ,          P                  4      pV P                  \        V4      ^4       V P                  V^ ,          P                  4       V P                  V^,          P                  4       V P                  V^,          P                  4       V P                  V^ ,          P                  R4       V P                  V^,          P                  R4       V P                  V^,          P                  R4       R# )r  r   r   N)
r<   r  r  r)  r  r0   r}   r  is_instructionr!  )r*   r   instss   &  r   test_block_instructions$TestValueRef.test_block_instructions  s    {{}))%0T$++&q)667UQ'a//0a//0a//0q%0q%0q%0r-   c                   V P                  4       P                  R 4      p\        \        VP                  4      ^ ,          P                  4      ^ ,          pV P                  VP                  R4       \        VP                  4      pV P                  \        V4      ^4       V P                  V^ ,          P                  4       V P                  V^,          P                  4       V P                  V^ ,          P                  R4       V P                  \        V^ ,          P                  4      R4       V P                  V^,          P                  R4       V P                  \        V^,          P                  4      R4       R# )r  r   r%  r  r&  N)r<   r  r  r)  r  r0   r!  r   r}   r  
is_operandr@   r   r,  )r*   r   r   r   s   &   r   test_instruction_operands&TestValueRef.test_instruction_operands  s   {{}))%04$Q'445a8U+%X*../../!))40Xa[--.6!))40Xa[--.6r-   c                4   \         P                  ^ ,          pV^8  d   RMR.pV P                  \        4      pVP                   F  p\        VP                  4      pVP                  R8X  d   V P                  WR4       K<  VP                  R8X  g   KO  V P                  V. 4       \        VP                  4      pV P                  \        V^ ,          P                  4      R.4       V P                  \        V^,          P                  4      . 4       K  	  R# )r   s   memory(read)s   readonlya_readonly_funca_arg0_return_funcs   returnedN)
r"   rL  r<   asm_attributesr  r  
attributesr@   r0   r'  )r*   verreadonly_attrsr;   r   attrsr   s   &      r   test_function_attributes%TestValueRef.test_function_attributes  s    $$Q'-02X/;Gkk.)MMD)Eyy--  722  +DNN+  d1g&8&8!9K=I  d1g&8&8!92> "r-   c                   V P                  4       pV P                  VP                  R 4      P                  \        P
                  P                  4       VP                  R4      pV P                  VP                  \        P
                  P                  4       \        VP                  4      ^ ,          pV P                  VP                  \        P
                  P                  4       \        VP                  4      ^,          pV P                  VP                  \        P
                  P                  4       V P                  \        VP                  4      ^ ,          P                  \        P
                  P                  4       V P                  \        VP                  4      ^,          P                  \        P
                  P                  4       V P                  \         4      P                  R4      p\        \        VP                  4      ^ ,          P                  4      ^ ,          pV P                  \        VP                  4      ^ ,          P                  \        P
                  P"                  4       R# )rA   r  r   N)r<   r0   r?   
value_kindr"   	ValueKindglobal_variabler  functionr  r)  basic_blockr  instructionr   constant_intasm_inlineasm
inline_asm)r*   r;   r   r   inst	iasm_func	iasm_insts   &      r   test_value_kindTestValueRef.test_value_kind  s   kkm008CC77	9&$..*A*ABT[[!!$))4>>+E+EFE&&'*$..*D*DEdmm,Q/::44	6dmm,Q/::33	5 KK.;;EB	i../2??@C	i001!4??22	4r-   c                   V P                  4       pV P                  VP                  R 4      P                  4       ^ pVP                   F  pV P                  VP                  4       VP
                   F|  pV P                  VP                  4       VP                   FN  pV P                  VP                  4       VP                   F   pVP                  '       g   K  V^,          pK"  	  KP  	  K~  	  K  	  V P                  V^4       R# rL   )
r<   r  r?   is_constantr  r)  r  r  r   r0   )r*   r;   constant_operandsr   r   rM  ops   &      r   test_is_constantTestValueRef.test_is_constant  s    kkm//7CCDMMDOOD,,-  !2!23!..D$$T%5%56"mm>>>-2- , / % " 	*A.r-   c                   V P                  4       pVP                  R 4      p\        \        VP                  4      ^ ,          P                  4      pV P                  V^,          P                  R4       \        V^,          P                  4      pV P                  V^ ,          P                  4       V P                  V^,          P                  4       V P                  V^ ,          P                  4       ^ 4       V P                  \        4      ;_uu_ 4        V^,          P                  4        RRR4       V P                  \        4      pVP                  R 4      p\        \        VP                  4      ^ ,          P                  4      p\        V^,          P                  4      ^ ,          p\        V^,          P                  4      ^ ,          pV P                  VP                  4       ^4       V P                  VP                  RR7      R4       VP                  RR7      p\        P!                  VP#                  ^R4      RRR7      pV P                  VR4       R#   + '       g   i     EL<; i)	r  r   NT)
signed_intFlittle)signedr  )r<   r  r  r)  r  r0   r!  r   r  rS  r  get_constant_valuer   r  asm_sum3int
from_bytesto_bytes)	r*   r;   r   r2  r   posint64negint64as_u64as_i64s	   &        r   test_constant_intTestValueRef.test_constant_int  s   kkm&T$++&q)667q%0a))*//0!001!7791=z**QK**, + kk(#&T$++&q)667a))*1-a))*1-446:444ErJ ,,,>8 <h'+   -$ +**s   I##I4	c                \   V P                  \        4      pVP                  R 4      p\        \        VP                  4      ^ ,          P
                  4      pV P                  \        V4      ^4       V P                  V^ ,          P                  R4       \        V^ ,          P                  4      pV P                  V^ ,          P                  4       V P                  V^ ,          P                  4       R4       V P                  V^,          P                  4       V P                  V^,          P                  4       R4       V P                  \        4      pVP                  R 4      p\        \        VP                  4      ^ ,          P
                  4      ^ ,          p\        VP                  4      pV P                  \         4      ;_uu_ 4        V^ ,          P                  4        RRR4       V P                  V^,          P                  RR7      ^ 4       R#   + '       g   i     L;; i)r   r   g        gQ	@NT)round_fp)r<   rY  r  r  r)  r  r0   r}   r!  r   r  rS  assertAlmostEqualr\  asm_double_inaccurater   r  )r*   r;   r   r2  r   rM  s   &     r   test_constant_fpTestValueRef.test_constant_fp2  s   kk+,&T$++&q)667UQ'q&1a))*//0x{==?E//0x{==?Fkk/0&D%a(556q9&z**QK**, +x{==t=LaP +*s   HH+	c                l   V P                  \        4      pVP                  R 4      p\        \        VP                  4      ^ ,          P
                  4      ^ ,          p\        VP                  4      ^ ,          pV P                  VP                  4       V P                  VP                  4       R4       R# )ru  zptr nullN)r<   asm_null_constantr  r  r)  r  r   r  rS  r0   r\  )r*   r;   r   rM  args   &    r   test_constant_as_string$TestValueRef.test_constant_as_stringF  s    kk+,&D%a(556q94==!!$(//1:>r-   c                   V P                  \        4      pVP                  R 4      p\        VP                  4      p\        VR,          P
                  4      pV P                  V^ ,          P                  4       V P                  V^ ,          P                  R4       \        V^ ,          P                  4      pV P                  \        V4      ^4       V P                  V^ ,          P                  4       V P                  V^,          P                  4       V P                  V^ ,          VR,          4       V P                  V^,          V^ ,          4       V P                  V^,          P                  R4       V P                  \        4      ;_uu_ 4        V^,          P                   RRR4       R#   + '       g   i     R# ; i)r   phiN)r<   asm_phi_blocksr  r  r)  r  r  r1  r0   r!  incoming_blocksr}   r-  rT  r   r  )r*   r;   r   r)  r  rv  s   &     r   test_incoming_phi_blocks%TestValueRef.test_incoming_phi_blocksN  sD   kk.)&dkk"F2J334Q667a//7|A>>?_-q1*334*334+VBZ8+VAY7 	LO22E:z**O++ +***s   F66G	r   N)!rM   rN   rO   rP   rh  rv  r  r  r  r  r  r  r   r  r  r  ro  r  r  r"  r*  r.  r3  r7  rA  rP  rV  re  rk  rp  rw  rR   rS   rT   s   @r   r  r  2  s     <
.
9
?
EL(
0B)F
(
1)$(	17?4(/ %4Q(?, ,r-   r  c                   b   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tRtV tR# )TestTypeRefid  c                   V P                  4       pVP                  R 4      pV P                  \        VP                  4      R4       VP                  R4      pV P                  \        V4      R4       \        VP                  4      pV P                  \        V4      ^4       V P                  \        V^ ,          4      R4       V P                  \        V^,          4      R4       R# )rA   r  r  z+%struct.glob_type = type { i64, [2 x i64] }i64z	[2 x i64]N)	r<   r?   r0   r   r-  r  r  elementsr}   )r*   r;   rA   glob_struct_typer}  s   &    r   rh  TestTypeRef.test_strf  s    kkm&&v.T334e<../AB-.F	H (112X*Xa[)51Xa[);7r-   c                   V P                  4       pVP                  R 4      pV P                  VP                  P                  \
        P                  P                  4       V P                  VP                  P                  4       VP                  R4      pV P                  VP                  P                  \
        P                  P                  4       V P                  VP                  P                  4       VP                  pV P                  VP                  \
        P                  P                  4       V P                  VP                  4       VP                  w  rVV P                  VP                  \
        P                  P                  4       V P                  VP                  \
        P                  P                  4       V P                  VP                   4       VP#                  R4      pVP                  w  rV P                  V	P                  \
        P                  P$                  4       V P                  V	P&                  4       VP)                  R4      P                  p
V P                  V
P                  \
        P                  P                  4       VP)                  R4      P                  pV P                  VP                  \
        P                  P*                  4       R# )rA   r  struct.glob_type_vecr  N)r<   r?   r0   r,  	type_kindr"   TypeKindpointerr  r  r-  struct	is_structr}  integerarrayis_arrayr  vector	is_vectorr  rG  )r*   r;   rA   r  stypestype_astype_bglob_vec_struct_typer   vector_typefuncptrfunctypes   &           r   test_type_kindTestTypeRef.test_type_kinds  s   kkm&&v.,,dmm.C.CD		,,---m<))33T]]5J5JK((334--$--*>*>?( >>**DMM,A,AB**DMM,?,?@(()"223IJ-66..0D0DE--.""5)..**DMM,A,AB##E*<<++T]]-C-CDr-   c                (   V P                  4       pVP                  R 4      pVP                  w  r4V P                  VP                  ^4       V P                  \        4      ;_uu_ 4        VP                   RRR4       R#   + '       g   i     R# ; i)r  N)r<   r  r}  r0   element_countr   r  )r*   r;   r~  r   
array_types   &    r   test_element_countTestTypeRef.test_element_count  sk    kkm../AB(111115z**** +***s   )B  B	c                   V P                  4       pVP                  R 4      pVP                  R4      pVP                  w  rEVP                  w  rgV P                  VP                  ^@4       V P                  VP                  ^4       V P                  VP                  ^ 4       V P                  VP                  ^ 4       R# )r  r  N)r<   r  r}  r0   
type_width)r*   r;   r~  r  integer_typer  r   r  s   &       r   test_type_widthTestTypeRef.test_type_width  s    kkm../AB"223IJ#3#<#< -6600"5//8 	)44a8..2r-   c                l   V P                  \        4      pVP                  R 4      pVP                  pV P	                  VP
                  4       V P                  \        4      pVP                  R4      pVP                  pV P                  VP
                  4       V P	                  VP                  P                  4       V P                  \        4      ;_uu_ 4       pVP                  P
                   RRR4       V P                  R\        XP                  4      4       R#   + '       g   i     L7; i)varargr  NzType ptr is not a function)r<   asm_vararg_declarer  r-  r  is_function_varargr  r  r,  r  r   r  r   r   r   )r*   r;   r   decltyper  s   &    r   test_vararg_function TestTypeRef.test_vararg_function  s    kk,-)))334kk/*&))445 			,,-z**fII(( +2C8H8H4IJ +*s   D##D3	c                :   V P                  4       p\        VP                  4      w  pV P                  VP                  P
                  \        P                  P                  4       V P                  VP                  P                  4       VP                  pV P                  VP
                  \        P                  P                  4       V P                  VP                  4       VP                  \        P                   4      pV P#                  V\        P$                  4       V P                  VP&                  \        P(                  ! ^ 4      \        P(                  ! ^ 4      34       V P                  VP*                  \        P(                  ! ^ 4      4       R# r   N)r<   r  r  r0   r,  r  r"   r  r  r  r  r-  rG  r  as_irr	   global_contextr  r   r   r   return_type)r*   r;   r   r   tyirs   &    r   test_function_typeref_as_ir'TestTypeRef.test_function_typeref_as_ir  s   kkmCMM"**DMM,A,AB,,-##)?)?@(()zz"++,dBOO4RZZ^RZZ^$DE))2::b>:r-   c                   \         P                  ! \         P                  ! 4       R4      p\         P                  ! 4       p\         P                  ! W!R 4      pV P                  \        V4      4      pVP                  R 4      pVP                  pV P                  VP                  VP                  \         P                  4      P                  4       R# )r   Nr   )r	   r   VoidTyper   r   r<   r   r  r-  r0   r  r  r  )r*   r   irmodr   r;   gvtys   &     r   test_void_typeref_as_ir#TestTypeRef.test_void_typeref_as_ir  s    r{{}b1		[[e,kk#e*%e$##))B$5$56BB	Dr-   c           
       a ^ RI Hp \        P                  ! 4       oRR0p/ pR pWCR&   R pWSR&   R pWcR	&   R
 pWsR&   V3R lpWR&   R p	WR&   R p
WR&   R pWR&   T P	                  VP                  4        Uu0 uF  qP                  kK  	  up\        VP                  4       4      \        V4      ,          4       VP                  4        EF  w  rVP                  V9   d   K  W=P                  ,          ! 4        F  pV P                  V: RV 24      ;_uu_ 4        \        P                  ! SR7      p\        P                  ! VVRR7       \        V4      p\        P                  ! V4      pVP                  R4      pVP                   pVP#                  \        P                  ! 4       4      pV P	                  VV4       V P%                  VV4       RRR4       K  	  EK  	  R# u upi   + '       g   i     EK  ; i)r   )_TypeKindToIRTyperG  voidc               3   <   "   \         P                  ! 4       x  R # 5ir/   )r	   HalfTyper   r-   r   
maker_half9TestTypeRef.test_global_typeref_as_ir.<locals>.maker_half  s     ++-   halfc               3   <   "   \         P                  ! 4       x  R # 5ir/   )r	   r   r   r-   r   maker_float:TestTypeRef.test_global_typeref_as_ir.<locals>.maker_float  s     ,,. r  floatc               3   <   "   \         P                  ! 4       x  R # 5ir/   )r	   r   r   r-   r   maker_double;TestTypeRef.test_global_typeref_as_ir.<locals>.maker_double  s     --/!r  doublec               3   >   "   \         P                  ! ^ 4      x  R# 5ir  )r	   r   r   r-   r   maker_integer<TestTypeRef.test_global_typeref_as_ir.<locals>.maker_integer  s     **R. s   r  c               3   :  <"   \         P                  ! \         P                  ! ^4      4      x  SP                  R4      P	                  4       x  SP                  R4      p V P                  \         P                  ! ^4      4       V P	                  4       x  R# 5i)r)  myclassmyclass2N)r	   PointerTyper   get_identified_type
as_pointerset_body)r  ctxs    r   maker_pointer<TestTypeRef.test_global_typeref_as_ir.<locals>.maker_pointer  sl     ..A//)))4??AA..z:Hbjjm,%%''s   BBr  c               3   h   "   \         P                  ! \         P                  ! ^4      ^{4      x  R# 5ir)  N)r	   	ArrayTyper   r   r-   r   maker_array:TestTypeRef.test_global_typeref_as_ir.<locals>.maker_array  s     ,,rzz!}c22s   02r  c               3   f   "   \         P                  ! \         P                  ! 4       ^4      x  R# 5i)r  N)r	   
VectorTyper   r   r-   r   maker_vector;TestTypeRef.test_global_typeref_as_ir.<locals>.maker_vector  s     --22s   /1r  c               3     "   \         P                  ! \         P                  ! 4       \         P                  ! ^@4      .4      x  \         P                  ! \         P                  ! 4       \         P                  ! ^@4      .RR7      x  R# 5i)@   TpackedN)r	   LiteralStructTyper   r   r   r-   r   maker_struct;TestTypeRef.test_global_typeref_as_ir.<locals>.maker_struct  sT     &&

2'GHH&&

2'G.24 4s   BB	r  z -> r  r  r   N)llvmlite.binding.typerefr  r	   Contextr0   keysr@   rx   r)  subTestr   GlobalVariabler   r"   r8   r?   r-  r  r  )r*   r  skippedmakersr  r  r  r  r  r  r  r  xr  irtypetyr  r9   r;   r  r  r[  r  s   &                     @r   test_global_typeref_as_ir%TestTypeRef.test_global_typeref_as_ir  s   >jjl 

 	  $v	! &w	" (x	! *y	( *y	3 &w	3 (x	4
 (x 	*;*@*@*BC*BQ&&*BCV[[]+c'l:	< "3!8!8!:I~~(^^,.\\YMbT":;;IIc2E%%eRd;e*C--c2C006B//D**RZZ\2C$$S"-))#v6 <; / ";	 D <;;s   ;G* B7G/	/Hc                   \         P                  ! V4      pVP                  V4      pVP                  p\        P
                  ! 4       pVP                  VR 7      p\        P                  ! VR7      p\        P                  ! WVP                  R7      p	\        P                  ! WRR7      p
\        P                  ! V
P                  4       4      pVP                  WP                  4       VP                  4        \         P                  ! \        V4      4      pV P!                  VP                  V	P                  4      P"                  RR7       VP%                  VRR7       V P'                  \)        \+        VP,                  4      4      \)        \+        VP,                  4      4      ^,           RR7       V P/                  VP                  V	P                  4      P"                  R	R7       V P'                  VP                  V	P                  4      P                  VP                  V
P                  4      P                  R
R7       R# ))ir_ctxr  r   wrapperzdeclfn must not have a body)r  Tr  z$the only new function is the wrapperzdeclfn must have a body nowz.declfn and wrapfn must have the same llvm TypeN)r"   r8   r  r-  r	   r  r  r   r   r@   r   r   callr   ret_voidr   r  r  r  r0   r}   r  r  r  )r*   r9   target_symbolr;   cppfn	cppfntype
my_contextr  wrapper_moddeclfnwrapfnr   new_mods   &&&          r   !_check_typeref_as_ir_for_wrappers-TestTypeRef._check_typeref_as_ir_for_wrappers"  s   !!#&  /++	 ZZ\
__J_/ ii
3[5::>[9=,,v88:;V[[)%%c+&67,,V[[9HH9 	 	; 	d+T'"3"345T#--01A5C 	 	E 	--fkk:II: 	 	<--fkk:LL --fkk:LLM 	 	Or-   c                2    V P                  \        R4       R# )zdExercise extracting C++ defined class types.
Contains both opaque and non-opaque class definitions.
_Z3fooP7MyClass14MyClassDefinedN)r  asm_cpp_classr)   s   &r   ,test_typeref_as_ir_for_wrappers_of_cpp_class8TestTypeRef.test_typeref_as_ir_for_wrappers_of_cpp_classE  s     	..-	
r-   c                2    V P                  \        R4       R# )zExercise extracting C++ struct types that are passed as vectors.

IA64 ABI on x86_64 will put struct with two floats as
a vector of two floats.
_Z3foo8Vector2DPS_N)r  asm_cpp_vectorr)   s   &r   4test_typeref_as_ir_for_wrappers_of_cpp_vector_struct@TestTypeRef.test_typeref_as_ir_for_wrappers_of_cpp_vector_structN  s     	.. 	
r-   r   N)rM   rN   rO   rP   rh  r  r  r  r  r  r  r  r  r   r  rR   rS   rT   s   @r   rz  rz  d  sH     8E:+3K$;"	DM7^!OF
	
 	
r-   rz  c                   D   a  ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )

TestTargetiZ  c                   \         P                  P                  pV P                  \        4      ;_uu_ 4       pV! R 4       RRR4       V P                  R\        XP                  4      4       \         P                  ! 4       pV! V4      pV P                  VP                  V4       VP                  4        R#   + '       g   i     L; i)r  Nz(No available targets are compatible with)r"   rF   r   r   r   r   r   r   r7   r0   r5   rk  )r*   r  r   r5   rI   s   &    r   test_from_tripleTestTarget.test_from_triple\  s    KK##|,,hK -@",,'	)((*6/ -,s   	B99C		c                    \         P                  P                  \         P                  ! 4       4      pVP	                  R R ^RR4       \         P
                  ! 4       pVP	                  VR ^RR4       R# )r   r   N)r"   rF   r   r7   rH   r4  )r*   rI   r5  s   &  r   test_create_target_machine%TestTarget.test_create_target_machineg  sY    (()@)@)BC$$RQ	9E$$&$$S"aIFr-   c                2   \         P                  P                  \         P                  ! 4       4      p\         P                  P	                  4       pV P                  VP                  \        4       V P                  VP                  VP                  4       R # r/   )	r"   rF   r   r7   rG   r  r@   r   r0   r*   tus   &  r   rv  TestTarget.test_nameo  s]    KK##D$;$;$=>KK++-affc*(r-   c                2   \         P                  P                  \         P                  ! 4       4      p\         P                  P	                  4       pV P                  VP                  \        4       V P                  VP                  VP                  4       R # r/   )	r"   rF   r   r7   rG   r  descriptionr   r0   r  s   &  r   test_descriptionTestTarget.test_descriptionu  s]    KK##D$;$;$=>KK++-ammS16r-   c                    \         P                  P                  \         P                  ! 4       4      p\	        V4      pV P                  VP                  V4       V P                  VP                  V4       R # r/   )r"   rF   r   r7   r   r   r@   r  )r*   rI   r   s   &  r   rh  TestTarget.test_str{  sN    (()@)@)BCKfkk1%f((!,r-   c                j   R \         P                  P                  RRRRRRR7      3R\         P                  P                  RRRRRRR7      3R	\         P                  P                  R
RRRRRR7      3R\         P                  P                  R
RRRRRR7      3R\         P                  P                  RRRRRRR7      3R\         P                  P                  RRRRRRR7      3R\         P                  P                  RRRRRRR7      3R\         P                  P                  RRRRRRR7      3R\         P                  P                  RRR R!RR"R7      3R#\         P                  P                  R$RRR%RR&R7      3.
pV F.  pVw  r4\         P                  ! V4      pV P	                  WT4       K0  	  R'# )(zx86_64-scei-ps4x86_64r   sceips4unknownELF)ArchSubArchVendorOSEnvObjectFormatzx86_64-sie-ps4zpowerpc-dunno-notsurepowerpczpowerpcspe-unknown-freebsdspefreebsdzarmv6hl-none-linux-gnueabiarmv6hlrX   gnueabizi686-unknown-linux-gnui386gnuzi686-apple-macosxapplemacosxMachOzi686-dunno-win32windowsmsvcCOFFzs390x-ibm-zoss390xibmzosGOFFzwasm64-wasiwasm64wasiWasmN)r"   targetsTripleget_triple_partsr0   )r*   casescase
triple_str
triple_objr  s   &     r   test_get_parts_from_triple%TestTarget.test_get_parts_from_triple  s'    \\  h(.5%.U ! DE \\  h(.5%.U ! DE %\\  i(1i%.U ! DE *\\  i(1i%.U ! DE *\\  eV(1g%.U ! DE &\\  fb(1g%* ! @A !\\  fb(/H%.W ! FG  \\  fb(1i%+& ! BC \\  gr(-%%.V ! EF \\  h(1f%.V ! EFK)
V D%)"J''
3CS-	 r-   r   N)rM   rN   rO   rP   r
  r  rv  r  rh  rB  rR   rS   rT   s   @r   r  r  Z  s)     	G)7-1. 1.r-   r  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )TestTargetDatai  c                .    \         P                  ! R 4      # )z%e-m:e-i64:64-f80:128-n8:16:32:64-S128)r"   create_target_datar)   s   &r   r"  TestTargetData.target_data  s    &&'NOOr-   c                    V P                  4       pV P                  4       pV P                  VP                  VP                  4      ^4       R# r  )r"  rA   r0   r+  r,  r*   r#  rA   s   &  r   test_get_abi_size TestTargetData.test_get_abi_size  s8    yy{3Q7r-   c                   V P                  4       pV P                  4       pV P                  VP                  VP                  4      ^4       V P                  R4      pV P                  VP                  VP                  4      ^4       R# )r(  r  N)r"  rA   r0   r+  r-  rJ  s   &  r   test_get_pointee_abi_size(TestTargetData.test_get_pointee_abi_size  sg    yy{)?)?@!Dyy')?)?@"Er-   c                   V P                  4       pV P                  R 4      pV P                  \        4      ;_uu_ 4        VP	                  VP
                  ^ 4       RRR4       VP                  pV P                  VP	                  V^ 4      ^ 4       V P                  VP	                  V^4      ^4       R#   + '       g   i     Lb; i)r  N)r"  rA   r   r  get_element_offsetr,  r-  r0   )r*   r#  rA   struct_types   &   r   test_get_struct_element_offset-TestTargetData.test_get_struct_element_offset  s    yy'z**!!$))Q/ + ,,..{A>B..{A>B +*s   B66C	r   N)
rM   rN   rO   rP   r"  rK  rN  rS  rR   rS   rT   s   @r   rE  rE    s"     P8
F	C 	Cr-   rE  c                   &   a  ] tR tRt o R tRtV tR# )TestTargetMachinei  c                   V P                  R R7      pVP                  pV P                  4       pVP                  R4      p\        P
                  R8  d   ^M^pV P                  VP                  VP                  4      V4       R# )FrD   rA   Nr'  )	rJ   r"  r<   r?   r   r*  r0   r+  r,  )r*   tmr#  r;   r/  r2  s   &     r   test_target_data_from_tm*TestTargetMachine.test_target_data_from_tm  sh      U +^^kkm((0KK'1qq5|Dr-   r   N)rM   rN   rO   rP   rY  rR   rS   rT   s   @r   rV  rV    s     E Er-   rV  c                   |   a  ] tR tRt o R t]P                  ! ]P                  ! 4       R9   R4      R 4       t	Rt
V tR# )	TestDylibi  c                    V P                  \        4      ;_uu_ 4        \        P                  ! R 4       RRR4       R#   + '       g   i     R# ; i)zzzzasdkf;jasd;lN)r   r   r"   load_library_permanentlyr)   s   &r   test_bad_libraryTestDylib.test_bad_library  s1    |,,))*;< -,,,s	   ?A	ztest only works on Linuxc                H    \        R 4      p\        P                  ! V4       R# )r   N)r   r"   r^  )r*   rh   s   & r   	test_libmTestDylib.test_libm  s     C %%d+r-   r   N)Linux)rM   rN   rO   rP   r_  r   r   r   systemrb  rR   rS   rT   s   @r   r\  r\    s:     = *i735,5,r-   r\  c                   2   a  ] tR tRt o R tR tR tRtV tR# )TestAnalysisi  c                   \         P                  ! 4       p\         P                  ! \         P                  ! ^ 4      \         P                  ! ^ 4      \         P                  ! ^ 4      .4      p\         P                  ! WR4      p\         P
                  ! VP                  4       4      pVP                  w  rVVP                  WV4      pVP                  V4       V# )r   r   )
r	   r   r   r   r   r   r   r   r   r   )r*   r   r   r   r   r  yzs   &       r   build_ir_moduleTestAnalysis.build_ir_module  s    IIK__RZZ^bjjnbjjn-MN[[&\\"//12wwFF1L
q	r-   c                    V P                  4       pVP                  R 4      p\        P                  ! V4      p\        P                  ! VRR7      pRpV P	                  WS4       V P                  WT4       R# )r   F	show_instz%.5 = add i32 %.1, %.2N)rk  
get_globalr"   get_function_cfgr   assertNotIn)r*   r;   r   dot_showing_instdot_without_instrM  s   &     r   test_get_function_cfg_on_ir(TestAnalysis.test_get_function_cfg_on_ir  sa    ""$nnU#00500F'd-0r-   c                |   V P                  4       P                  R 4      p\        P                  ! VRR7      p\        P                  ! VRR7      pRpV P	                  WB4       V P	                  WC4       RpV P	                  WR4       V P	                  WS4       RpV P	                  Wb4       V P                  Wc4       R# )r  Trn  FdigraphzCFG for 'sum' functionz%.3 = add i32 %.1, %.2N)r<   r  r"   rq  r   rr  )r*   r  rs  rt  prefixfnamerM  s   &      r   test_function_cfg_on_llvm_value,TestAnalysis.test_function_cfg_on_llvm_value	  s    ++-,,U300DI00EJf/f/(e.e.'d-0r-   r   N)	rM   rN   rO   rP   rk  ru  r{  rR   rS   rT   s   @r   rg  rg    s     11 1r-   rg  c                   6   a  ] tR tRt o ]R 4       tR tRtV tR# )TestTypeParsingi	  c              #     "   \         P                  ! 4       pVx  \        V4      p\        P                  ! V4       R # 5ir/   )r	   r   r   r"   r8   )r*   r;   r9   s   &  r   check_parsingTestTypeParsing.check_parsing	  s.     iik 	#hC s   =?c                   V P                  4       ;_uu_ 4       p\        P                  ! \        P                  ! ^ 4      .4      p\        P                  ! WR4      p\        P
                  ! V^.4      Vn        RRR4       V P                  4       ;_uu_ 4       p\        P                  ! \        P                  ! ^ 4      .RR7      p\        P                  ! WR4      p\        P
                  ! V^.4      Vn        RRR4       V P                  4       ;_uu_ 4       p\        P
                  P                  \        P                  ! ^ 4      ! ^4      \        P                  ! ^ 4      ! ^4      .RR7      p\        P                  ! WP                  R4      pWCn        RRR4       R#   + '       g   i     EL4; i  + '       g   i     L; i  + '       g   i     R# ; i)r   r   NTr  )	r  r	   r  r   r  r   initializerliteral_structr,  )r*   r;   typr  consts   &    r   test_literal_struct#TestTypeParsing.test_literal_struct	  sQ   !!S&&

2'78C""3U3B[[qc2BN	 " !!S&&

2'7.24C""3U3B[[qc2BN " !!SKK..

2q0A02

2q0A0C6: / <E ""3

E:B"N "! "!! "! "!!s&   A F$A"F8A?G$F5	8G	G	r   N)	rM   rN   rO   rP   r   r  r  rR   rS   rT   s   @r   r~  r~  	  s!     ! !# #r-   r~  c                   v   a  ] tR tRt o ]P
                  ! ]P                  ! 4       R8H  R4      R 4       tRt	V t
R# )TestGlobalConstructorsi7	  Darwinz&__cxa_atexit is broken on OSX in MCJITc                   V P                  \        4      pV P                  V4      pVP                  4        VP	                  4        VP                  R 4      p\        P                  ! \        P                  4      p\        P                  ! W44      pV P                  VP                  P                  ^
4       VP                  R4      p\        P                  ! \        P                  4      ! V4      pV P                  V! 4       ^4       VP                  4        V P                  VP                  P                  ^4       R# )r  r   N)r<   asm_global_ctorsrE   r  run_static_constructorsget_global_value_addressrl  POINTERr   castr0   contentsr  r  r   run_static_destructors)r*   r;   r  ptr_addrptr_tr
  foo_addrr   s   &       r   r  .TestGlobalConstructors.test_global_ctors_dtors8	  s    
 kk*+XXc]

""$ ..s3v~~.kk(*++R0**51v~~.x8#
!!# 	++R0r-   r   N)rM   rN   rO   rP   r   rc  r   re  r  rR   rS   rT   s   @r   r  r  7	  s1     __X__&(2=?1?1r-   r  c                   l   a  ] tR tRt o RR ltR tR tR tR tR t	R t
R	 tR
 tR tR tR tRtV tR# )TestGlobalVariablesiS	  c                (   \         P                  ! 4       p\         P                  ! ^ 4      p\         P                  ! W4R4      pWn        \        V4      pV'       d   V P                  RV4       MV P                  RV4       V P                  V4       R# )r   r   undefN)	r	   r   r   r  r  r   r   rr  r<   )r*   r  	has_undefr;   r  r  r9   s   &&&    r   check_global_variable_linkage1TestGlobalVariables.check_global_variable_linkageT	  si     iikjjns/
#hMM'3'Wc*Cr-   c                (    V P                  R 4       R# )r  Nr  r)   s   &r   test_internal_linkage)TestGlobalVariables.test_internal_linkageh	      **:6r-   c                (    V P                  R 4       R# )commonNr  r)   s   &r   test_common_linkage'TestGlobalVariables.test_common_linkagek	  s    **84r-   c                ,    V P                  R RR7       R# )r  Fr  Nr  r)   s   &r   test_external_linkage)TestGlobalVariables.test_external_linkagen	  s    **:*Gr-   c                (    V P                  R 4       R# )available_externallyNr  r)   s   &r   !test_available_externally_linkage5TestGlobalVariables.test_available_externally_linkageq	  s    **+ABr-   c                (    V P                  R 4       R# )privateNr  r)   s   &r   test_private_linkage(TestGlobalVariables.test_private_linkaget	  s    **95r-   c                (    V P                  R 4       R# )linkonceNr  r)   s   &r   test_linkonce_linkage)TestGlobalVariables.test_linkonce_linkagew	  r  r-   c                (    V P                  R 4       R# )weakNr  r)   s   &r   test_weak_linkage%TestGlobalVariables.test_weak_linkagez	  s    **62r-   c                (    V P                  R 4       R# )	appendingNr  r)   s   &r   test_appending_linkage*TestGlobalVariables.test_appending_linkage}	  s    **;7r-   c                ,    V P                  R RR7       R# )extern_weakFr  Nr  r)   s   &r   test_extern_weak_linkage,TestGlobalVariables.test_extern_weak_linkage	  s    **=E*Jr-   c                (    V P                  R 4       R# )linkonce_odrNr  r)   s   &r   test_linkonce_odr_linkage-TestGlobalVariables.test_linkonce_odr_linkage	  s    **>:r-   c                (    V P                  R 4       R# )weak_odrNr  r)   s   &r   test_weak_odr_linkage)TestGlobalVariables.test_weak_odr_linkage	  r  r-   r   N)T)rM   rN   rO   rP   r  r  r  r  r  r  r  r  r  r  r  r  rR   rS   rT   s   @r   r  r  S	  sI     (75HC6738K;7 7r-   r  x86zonly on x86c                   &   a  ] tR tRt o R tRtV tR# )TestInlineAsmi	  c                    \         P                  ! 4        V P                  \        R 7      pV P	                  RR7      pVP                  V4      pV P                  RV4       R# ))r9   FrD   nopN)r"   initialize_native_asmparserr<   rK  rJ   r   r   )r*   r   rX  r9   s   &   r   test_inlineasmTestInlineAsm.test_inlineasm	  sO    ((*KKMK*  U +q!eS!r-   r   N)rM   rN   rO   rP   r  rR   rS   rT   s   @r   r  r  	  s     " "r-   r  c                   <   a  ] tR tRt o RtR tR tR tR tRt	V t
R# )	TestObjectFilei	  a,  
        ;ModuleID = <string>
        target triple = "{triple}"

        declare i32 @sum(i32 %.1, i32 %.2)

        define i32 @sum_twice(i32 %.1, i32 %.2) {{
            %.3 = call i32 @sum(i32 %.1, i32 %.2)
            %.4 = call i32 @sum(i32 %.3, i32 %.3)
            ret i32 %.4
        }}
    c                   V P                  R R7      pV P                  4       pVP                  V4      p\        P                  P                  V4      pR pRpVP                  4        Fw  pVP                  4       '       g   K  \        VP                  4       4      ^ 8  g   K;  VP                  4       f   KO  WgP                  4       8  g   Ke  RpVP                  4       p M	  V P                  V4       R# )FrD   NTrt  )rJ   r<   r[  r"   ObjectFileRef	from_datasectionsis_textr}   dataaddressr  )r*   rJ   r;   r  objhas_text_and_datalast_addressr   s   &       r   test_object_fileTestObjectFile.test_object_file	  s    ,,,7kkm ,,S1  **73!A		MA%IIK+ 99;.$(! yy{   	)*r-   c                   V P                  R R7      pV P                  4       pVP                  V4      p\        P                  P                  V4      p\        P                  ! V P                  V P                  4      V4      pVP                  V4       \        \        \        \        4      ! VP                  R4      4      pV P                  V! ^^4      ^
4       R# )FrD   	sum_twiceN)rJ   r<   r[  r"   r  r  rb  mod_asmr  r   r   r  r0   )r*   rJ   r;   r  r  rE   r  s   &      r   r  #TestObjectFile.test_add_object_file	  s    ,,,7kkm ,,S1  **73((T\\)B)79 	C eUE2$$[13	 	1a"-r-   c                   V P                  R R7      pV P                  4       pVP                  V4      p\        4       w  rE  \        P
                  ! VR4      pVP                  V4       VP                  4        VP                  4        \        P                  ! V P                  V P                  4      V4      pVP                  V4       \        P                  ! V4       \        \        \        \        4      ! VP!                  R4      4      pV P#                  V! ^^4      ^
4       R#   XP                  4        i ; i  \        P                  ! T4       i ; i)FrD   r  r  N)rJ   r<   r[  r   rn   r  r  flushrk  r"   rb  r  r  r  r   r   r  r0   )	r*   rJ   r;   r  r  r  r  rE   r  s	   &        r   r  3TestObjectFile.test_add_object_file_from_filesystem	  s   ,,,7kkm ,,S1&y		!IIi. 		,,T[[-F-;=C 	*IIi eUE2$$[13	 	1a"- 	 IIi s   8D* :AD? *D<<D? ?Ec                   \         P                  \        4      p\        P                  P                  V4      pVP                  4        Fv  pVP                  4       '       g   K  V P                  \        VP                  4       4      ^4       V P                  VP                  4       P                  4       \        4       Kx  	  R# )   N)r?  fromhexissue_632_elfr"   r  r  r  r  r0   r}   r  hexissue_632_text)r*   elfr  r   s   &   r   test_get_section_content'TestObjectFile.test_get_section_content	  sy     mmM*  **3/Ayy{{  QVVX3  @  r-   r   N)rM   rN   rO   rP   r  r  r  r  r  rR   rS   rT   s   @r   r  r  	  s'     G+(. .4A Ar-   r  c                   &   a  ] tR tRt o R tRtV tR# )TestLLVMLockCallbacksi	  c                  a . oV3R  lpV3R lp\         P                  P                  W4       V P                  S4       \         P                  ! 4        V P                  RS4       V P                  RS4       \         P                  P                  W4       V P                  \        4      ;_uu_ 4        \         P                  P                  W4       RRR4       R#   + '       g   i     R# ; i)c                  *   < S P                  R 4       R# )acqNr7  eventss   r   r  6TestLLVMLockCallbacks.test_lock_callbacks.<locals>.acq	      MM% r-   c                  *   < S P                  R 4       R# )relNr7  r  s   r   r  6TestLLVMLockCallbacks.test_lock_callbacks.<locals>.rel	  r  r-   r  r  N)	r"   r   register_lock_callbackr  create_new_module_pass_managerr   unregister_lock_callbackr   r  )r*   r  r  r  s   &  @r   test_lock_callbacks)TestLLVMLockCallbacks.test_lock_callbacks	  s    	!	! 	''1 	 ++-eV$eV$ 	))#3 z**HH--c7 +***s   5 CC0	r   N)rM   rN   rO   rP   r  rR   rS   rT   s   @r   r  r  	  s     8 8r-   r  c                   b   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tRtV tR# )TestPipelineTuningOptionsi	
  c                ,    \         P                  ! 4       # r/   )r"   create_pipeline_tuning_optionsr)   s   &r   ptoTestPipelineTuningOptions.pto
      2244r-   c                F    V P                  4       pVP                  4        R # r/   )r  rk  r*   r  s   & r   ro  $TestPipelineTuningOptions.test_close
  s    hhj		r-   c                    V P                  4       pV P                  VP                  \        4       \	        ^4       F%  pW!n        V P                  VP                  V4       K'  	  R# r  )r  r  speed_levelr^  rM  r0   r*   r  r  s   &  r   test_speed_level*TestPipelineTuningOptions.test_speed_level
  sH    hhjcoos3qAOS__a0 r-   c                    V P                  4       pV P                  VP                  \        4       \	        ^4       F%  pW!n        V P                  VP                  V4       K'  	  R#    N)r  r  
size_levelr^  rM  r0   r  s   &  r   test_size_level)TestPipelineTuningOptions.test_size_level
  sH    hhjcnnc2qANS^^Q/ r-   c                    V P                  4       pV P                  VP                  \        4       R F	  pW!n        K  	  R# )   N)r  P   i^  )r  r  inlining_thresholdr^  r  s   &  r   test_inlining_threshold1TestPipelineTuningOptions.test_inlining_threshold 
  s3    hhjc44c:A%&" r-   c                    V P                  4       pV P                  VP                  \        4       R F%  pW!n        V P	                  VP                  V4       K'  	  R# TN)TF)r  r  loop_interleavingr*  r0   r*   r  r   s   &  r   test_loop_interleaving0TestPipelineTuningOptions.test_loop_interleaving&
  I    hhjc33T:A$%!S22A6 r-   c                    V P                  4       pV P                  VP                  \        4       R F%  pW!n        V P	                  VP                  V4       K'  	  R# r  )r  r  loop_vectorizationr*  r0   r!  s   &  r   test_loop_vectorization1TestPipelineTuningOptions.test_loop_vectorization-
  sI    hhjc44d;A%&"S33Q7 r-   c                    V P                  4       pV P                  VP                  \        4       R F%  pW!n        V P	                  VP                  V4       K'  	  R# r  )r  r  slp_vectorizationr*  r0   r!  s   &  r   test_slp_vectorization0TestPipelineTuningOptions.test_slp_vectorization4
  r$  r-   c                    V P                  4       pV P                  VP                  \        4       R F%  pW!n        V P	                  VP                  V4       K'  	  R# r  )r  r  loop_unrollingr*  r0   r!  s   &  r   test_loop_unrolling-TestPipelineTuningOptions.test_loop_unrolling;
  sI    hhjc00$7A!"S//3 r-   c                (   V P                  4       pV P                  \        4      ;_uu_ 4        ^Vn        RRR4       V P                  \        4      ;_uu_ 4        RVn        RRR4       R#   + '       g   i     L?; i  + '       g   i     R# ; i)r(  Nrt  )r  r   r  r  r  s   & r   test_speed_level_constraints6TestPipelineTuningOptions.test_speed_level_constraintsB
  s]    hhjz**CO +z** CO +* +****s   A-B -A=	 B	c                   V P                  4       pV P                  \        4      ;_uu_ 4        ^Vn        RRR4       V P                  \        4      ;_uu_ 4        RVn        RRR4       V P                  \        4      ;_uu_ 4        ^Vn        ^Vn        RRR4       R#   + '       g   i     Ls; i  + '       g   i     LY; i  + '       g   i     R# ; i)r  Nrt  )r  r   r  r  r  r  s   & r   test_size_level_constraints5TestPipelineTuningOptions.test_size_level_constraintsI
  s    hhjz**CN +z** CO +z**COCN +*	 +******s#   B!B4C!B1	4C	C	r   N)rM   rN   rO   rP   r  ro  r  r  r  r"  r'  r+  r/  r2  r5  rR   rS   rT   s   @r   r  r  	
  sA     510'7874! r-   r  c                   *   a  ] tR tRt o RR ltRtV tR# )NewPassManagerMixiniT
  c                    V P                  R R7      p\        P                  ! W4      p\        P                  ! W44      pV# )FrD   )rJ   r"   r  create_pass_builder)r*   r  r  rX  r  pbs   &&&   r   r;  NewPassManagerMixin.pbV
  s:      U +11+J%%b.	r-   r   N)r   r   )rM   rN   rO   rP   r;  rR   rS   rT   s   @r   r8  r8  T
  s      r-   r8  c                   P   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
tV tR# )TestPassBuilderi]
  c                F    V P                  4       pVP                  4        R # r/   )r;  rk  )r*   r;  s   & r   ro  TestPassBuilder.test_close_
  s    WWY

r-   c                    V P                  R R7      p\        P                  ! ^^ 4      p^Vn        RVn        RVn        RVn        R Vn        \        P                  ! W4      pVP                  4        R# )FrD   TN)
rJ   r"   r  r  r   r&  r*  r.  r:  rk  )r*   rX  r  r;  s   &   r   test_ptoTestPassBuilder.test_ptoc
  sh      U +11!Q7!" $!% $"%%b.

r-   c                    V P                  4       pVP                  4       pVP                  V P                  4       V4       VP	                  4        R # r/   )r;  getModulePassManagerrunr<   rk  )r*   r;  mpms   &  r   test_get_module_pass_manager,TestPassBuilder.test_get_module_pass_managern
  s8    WWY%%'r"

r-   c                    V P                  4       pVP                  4       pVP                  V P                  4       P	                  R 4      V4       VP                  4        R# r  )r;  getFunctionPassManagerrF  r<   r  rk  )r*   r;  fpms   &  r   test_get_function_pass_manager.TestPassBuilder.test_get_function_pass_managert
  sC    WWY'')**5126

r-   c                  a  V 3R lpV! ^4      pV! ^ 4      pS P                  V\        4       S P                  V\        4       S P                  VP                  R4      ^4       S P                  VP                  R4      ^4       R# )z:Test pass timing reports for O3 and O0 optimization levelsc                    < SP                  4       pSP                  V ^ R7      pVP                  4        VP                  4       pVP	                  W4       VP                  4       pVP                  4        V# r   r  r  )r<   r;  start_pass_timingrE  rF  finish_pass_timingrk  )r  r;   r;  rG  reportr*   s   &    r   run_with_timing9TestPassBuilder.test_time_passes.<locals>.run_with_timing|
  sb    ++-C[Q?B  "))+CGGC**,FHHJMr-   zPass execution timing reportN)r  r   r0   count)r*   rV  	report_O3	report_O0s   f   r   test_time_passes TestPassBuilder.test_time_passesz
  sr    	 $A&	#A&	i-i-)GH!L)GH!Lr-   c                
   V P                  4       pV P                  4       pVP                  4       pVP                  W4       VP	                  4        VP                  4       pVP                  4        V P                  V4       R # r/   )r<   r;  rE  rF  rS  rT  rk  r  )r*   r;   r;  rG  rU  s   &    r   test_empty_report!TestPassBuilder.test_empty_report
  sc    kkmWWY%%'
&&(

 r-   c                |   V P                  4       pV P                  4       pVP                  4        VP                  4       pVP	                  W4       VP                  4        V P                  \        R 4      ;_uu_ 4        VP                  4        RRR4       VP                  4        R#   + '       g   i     L"; i)zonly be done onceN)	r<   r;  rS  rE  rF  rT  rC  r   rk  r*   r;   r;  rG  s   &   r   test_multiple_timers_error*TestPassBuilder.test_multiple_timers_error
  s    kkmWWY
%%'
##L2EFF  " G

 GFs    B++B;	c                <   V P                  4       pV P                  4       pVP                  4       pVP                  W4       V P	                  \
        R 4      ;_uu_ 4        VP                  4        RRR4       VP                  4        R#   + '       g   i     L"; i)znot enabledN)r<   r;  rE  rF  rC  r   rT  rk  ra  s   &   r   test_empty_report_error'TestPassBuilder.test_empty_report_error
  sj    kkmWWY%%'##L-@@!!# A

 A@s    BB	r   N)rM   rN   rO   rP   ro  rB  rH  rM  r[  r^  rb  re  rR   rS   rT   s   @r   r>  r>  ]
  s3     	M(!	 r-   r>  c                   P   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
tV tR# )TestNewModulePassManageri
  c                ,    \         P                  ! 4       # r/   )r"   r  r)   s   &r   pmTestNewModulePassManager.pm
  r	  r-   c                    V P                  4       p\        V4      pV P                  V^ R7      pVP                  4       pVP	                  W$4       \        V4      pW63# rQ  )r<   r   r;  rE  rF  )r*   levelr;   orig_asmr;  rG  optimized_asms   &&     r   run_o_n TestNewModulePassManager.run_o_n
  sT    kkms8WW1W5%%'C&&r-   c                F    V P                  4       pVP                  4        R # r/   rj  rk  r*   rG  s   & r   ro  #TestNewModulePassManager.test_close
      ggi		r-   c                t    V P                  ^4      w  rV P                  RV4       V P                  RV4       R# r  %.4Nrp  r   rr  r*   rn  ro  s   &  r   test_run_o3$TestNewModulePassManager.test_run_o3
  0    "&,,q/eX&.r-   c                t    V P                  ^ 4      w  rV P                  RV4       V P                  RV4       R# r   ry  Nrp  r   r{  s   &  r   test_run_o0$TestNewModulePassManager.test_run_o0
  .    "&,,q/eX&e]+r-   c                &   V P                  4       pV P                  4       pVP                  4        V P                  \        4      p\        V4      pVP                  W14       \        V4      pV P                  R V4       V P                  R V4       R# )%.3N)	r;  rj  add_instruction_combine_passr<   asm_sum4r   rF  r   rr  )r*   r;  rG  r;   rn  ro  s   &     r   test_instcombine)TestNewModulePassManager.test_instcombine
  sn    WWYggi((*kk(#s8CeX&.r-   c                    V P                  ^^ R7      p\        \        P                  RR4      4      p\        P
                  ! V4      pVP                  4       pVP                  W14       \        V4      pV P                  RV4       V P                  RV4       \        \        4      pVP                  4       p\        P
                  ! V4      pVP                  W14       \        V4      pV P                  RV4       V P                  RV4       R# )r  rR  optnone r   allocaN)
r;  r   asm_alloca_optnonereplacer"   r8   rE  rF  r   rr  )r*   r;  rn  r;   rG  ro  orig_asm_optnoneoptimized_asm_optnones   &       r   test_optnone%TestNewModulePassManager.test_optnone
  s    WWqW1)11*bAB!!(+%%'Ch)=1 12%%'!!"23 #Ch 01h 56r-   c                   V P                  4       pVP                  4        VP                  4        VP                  4        VP	                  4        VP                  4        VP                  4        VP                  4        VP                  4        VP                  4        VP                  4        VP                  4        VP                  4        VP                  4        VP                  4        VP                  4        VP!                  4        VP#                  4        VP%                  4        VP'                  4        VP)                  4        VP+                  4        VP-                  4        VP/                  4        VP1                  4        VP3                  4        VP5                  4        VP7                  4        VP9                  4        VP;                  4        VP=                  4        VP?                  4        VPA                  4        VP;                  4        VPC                  4        VPE                  4        VPG                  4        VPI                  4        VPK                  4        VPM                  4        VPO                  4        VPQ                  4        VPS                  4        VPU                  4        VPW                  4        VPY                  4        VP[                  4        VP]                  4        VP_                  4        VPa                  4        VPc                  4        VPe                  4        VPg                  4        VPi                  4        VPk                  4        VPm                  4        VPo                  4        VPq                  4        VPs                  4        VPu                  4        VPw                  4        VPy                  4        R # r/   )=rj  add_argument_promotion_pass'add_post_order_function_attributes_passadd_verifieradd_constant_merge_passadd_dead_arg_elimination_passadd_dot_call_graph_printer_passadd_always_inliner_passadd_rpo_function_attrs_pass#add_global_dead_code_eliminate_passadd_global_opt_passadd_ipsccp_passadd_internalize_passadd_loop_extract_passadd_merge_functions_passadd_partial_inliner_passadd_strip_symbols_passadd_strip_dead_debug_info_passadd_strip_dead_prototype_passadd_strip_debug_declare_pass add_strip_non_debug_symbols_passadd_aa_eval_passadd_simplify_cfg_passadd_loop_unroll_passr  add_jump_threading_passadd_cfg_printer_passadd_cfg_only_printer_passadd_dom_printer_passadd_dom_only_printer_passadd_post_dom_printer_passadd_post_dom_only_printer_passadd_dom_viewer_passadd_post_dom_viewer_passadd_post_dom_only_viewer_passadd_lint_passadd_aggressive_dce_passadd_break_critical_edges_passadd_dead_store_elimination_passadd_dead_code_elimination_passadd_aggressive_instcombine_passadd_lcssa_passadd_new_gvn_passadd_loop_simplify_passadd_loop_unroll_and_jam_passadd_sccp_passadd_lower_atomic_passadd_lower_invoke_passadd_lower_switch_passadd_mem_copy_opt_pass"add_unify_function_exit_nodes_passadd_reassociate_passadd_register_to_memory_passadd_sroa_passadd_sinking_passadd_tail_call_elimination_passadd_instruction_namer_passadd_loop_deletion_passadd_loop_strength_reduce_passadd_loop_rotate_passadd_refprune_passrt  s   & r   test_add_passes(TestNewModulePassManager.test_add_passes
  s   ggi'')335##%))+++-##%'')//1!  "!!#$$&$$&""$**,))+((*,,.!!#  "((*##%  "%%'  "%%'%%'**,!%%'$$&))+##%))+++-**,++-""$((*!!#!!#!!#!!#..0  "'')**,&&(""$))+  "r-   r   N)rM   rN   rO   rP   rj  rp  ro  r|  r  r  r  r  rR   rS   rT   s   @r   rh  rh  
  s2     5'/
,
	/7&>  > r-   rh  c                   V   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tRtV tR# )TestNewFunctionPassManageri'  c                ,    \         P                  ! 4       # r/   )r"    create_new_function_pass_managerr)   s   &r   rj  TestNewFunctionPassManager.pm(  s    4466r-   c                F    V P                  4       pVP                  4        R # r/   rs  r*   rL  s   & r   ro  %TestNewFunctionPassManager.test_close+  rv  r-   c                    V P                  4       pVP                  R 4      p\        V4      pV P                  V^ R7      pVP	                  4       pVP                  W54       \        V4      pWG3# )r  rR  )r<   r  r   r;  rK  rF  )r*   rm  r;   funrn  r;  rL  ro  s   &&      r   rp  "TestNewFunctionPassManager.run_o_n/  sd    kkmu%s8WW1W5'')C&&r-   c                t    V P                  ^4      w  rV P                  RV4       V P                  RV4       R# rx  rz  r{  s   &  r   r|  &TestNewFunctionPassManager.test_run_o39  r~  r-   c                t    V P                  ^ 4      w  rV P                  RV4       V P                  RV4       R# r  r  r{  s   &  r   r  &TestNewFunctionPassManager.test_run_o0>  r  r-   c                \   V P                  ^^ R7      p\        \        P                  RR4      4      p\        P
                  ! V4      P                  R4      pVP                  4       pVP                  W14       \        V4      pV P                  RV4       V P                  RV4       \        \        4      p\        P
                  ! V4      P                  R4      pVP                  4       pVP                  W14       \        V4      pV P                  RV4       V P                  RV4       R# )r  rR  r  r   r   r  N)r;  r   r  r  r"   r8   r  rK  rF  r   rr  )r*   r;  rn  r  rL  ro  r  r  s   &       r   r  'TestNewFunctionPassManager.test_optnoneC  s    WWqW1)11*bAB!!(+88?'')Ch)=1 12!!"23@@G'') #Ch 01h 56r-   c                D   V P                  4       pV P                  4       pV P                  \        4      P	                  R 4      pVP                  4        \        V4      pVP                  W14       \        V4      pV P                  RV4       V P                  RV4       R# )r  r  N)
r;  rj  r<   r  r  r  r   rF  r   rr  )r*   r;  rL  r  rn  ro  s   &     r   r  +TestNewFunctionPassManager.test_instcombineV  sy    WWYggikk(#007((*s8CeX&.r-   c                    V P                  ^4      pVP                  4       p\        P                  ! \        4      P
                   F  pVP                  W14       K  	  R# r  )r;  rK  r"   r8   asm_declarationr  rF  )r*   r;  rL  r  s   &   r   test_declarations,TestNewFunctionPassManager.test_declarationsb  sE    WWQZ'')&&7AACGGC Br-   c                F   V P                  4       pVP                  4        VP                  4        VP                  4        VP	                  4        VP                  4        VP                  4        VP                  4        VP                  4        VP                  4        VP                  4        VP                  4        VP                  4        VP                  4        VP                  4        VP                  4        VP                  4        VP!                  4        VP#                  4        VP%                  4        VP'                  4        VP)                  4        VP+                  4        VP-                  4        VP/                  4        VP1                  4        VP3                  4        VP5                  4        VP7                  4        VP9                  4        VP;                  4        VP=                  4        VP?                  4        VPA                  4        VPC                  4        VPE                  4        VPG                  4        VPI                  4        VPK                  4        VPM                  4        VPO                  4        VPQ                  4        R # r/   ))rj  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  s   & r   r  *TestNewFunctionPassManager.test_add_passesh  s   ggi!!#  "((*##%  "%%'  "%%'%%'**,!%%'$$&))+##%))+++-**,++-""$((*!!#!!#!!#!!#..0  "'')**,&&(""$))+  "r-   r   N)rM   rN   rO   rP   rj  ro  rp  r|  r  r  r  r  r  rR   rS   rT   s   @r   r  r  '  s7     7'/
,
7&	/*  * r-   r  rY   rZ   c                   .  a  ] tR tRt o RR]! . RO4      R]! . RO4      /RR]! . RO4      /RR]! . RO4      R]! . RO4      //tRR]! . RO4      R]! . RO4      /RR]! . RO4      /RR]! . RO4      R]! . RO4      //tR	 t]R
 4       t	]
R 4       tRtV tR# )	TestBuildi  rX   r  aarch64r1  amd64darwinarm64c                   \         P                  ! 4       P                  4       p\         P                  ! 4       P                  4       pVR 8X  d   V P                  V,          V,          pM0VR8X  d   V P
                  V,          V,          pM\        RV 24      h\        VR,          4      pV Uu0 uF  pVP                  R4      '       d   RMTkK   	  pp V P                  WV4       R# u upi   \         do   pR\        T4       R\        T4       R\        P                  YV4       R\        P                  YV4       R	\        P                  Ye4       R
2p	\        T	4      ThRp?ii ; i)r   r   zUnexpected package type: canonicalised_linked_librariesmsvcp140z:Unexpected linkage encountered for libllvmlite:
Expected: z
     Got: z

Difference: z
Only in Expected: z
Only in Got: 
N)r   machinelowerre  wheel_expectedconda_expectedr  rx   r   r0   r  r  symmetric_difference
difference)
r*   infopackage_typer  os_nameexpectedr[  rl   r   r  s
   &&&       r   check_linkageTestBuild.check_linkage#  sa   ""$**,//#))+7"**73G<HW$**73G<H8GHH$789 
 >>*55Z3> 	 

		-X+
  	-  &x 01 2  &s} -""%":":8"I!J K((+x(E'F G##&>>##@"AEC !%1,	-s%   /C)C)C. .E'9A)E""E'c                    \         P                  P                  4       pV P                  VR ,          R4       V P                  VR,          R4       V P	                  VR4       R# )llvm_linkage_typestaticllvm_assertions_stateonr   N)r"   configget_sysinfor0   r  r*   r  s   & r   test_wheel_buildTestBuild.test_wheel_build@  sP    {{&&(12H=56=4)r-   c                P   \         P                  P                  4       pV P                  VR ,          R4       V P                  VR,          R4       V P	                  VR4       \
        P                  ! 4       P                  4       R8X  d   V P                  VR,          R4       R# R# )r  r  r  r  r   rX   libstdcxx_linkage_typeN)r"   r  r  r0   r  r   re  r  r  s   & r   test_conda_buildTestBuild.test_conda_buildG  s    {{&&(12H=56=4)??""$/T":;XF 0r-   r   N)	pthreadrj  dlr   gcc_sr  rr  stdc++ld-linux-x86-64)r  rj  r  r   r  r  rr  r  )advapi32kernel32ntdllr  vcruntime140vcruntime140_1api-ms-win-crt-convert-l1-1-0!api-ms-win-crt-environment-l1-1-0api-ms-win-crt-heap-l1-1-0api-ms-win-crt-locale-l1-1-0api-ms-win-crt-math-l1-1-0api-ms-win-crt-runtime-l1-1-0api-ms-win-crt-stdio-l1-1-0api-ms-win-crt-string-l1-1-0api-ms-win-crt-time-l1-1-0api-ms-win-crt-utility-l1-1-0shell32ole32)llvmlitere  rj  corefoundationc++)r%  re  rj  r'  )r  rj  zstdr  r   r  r  r  )r  rj  r(  r  r   r  r  zld-linux-aarch64)rj  r(  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  )r%  re  rj  r(  r&  r'  )r%  re  rj  r(  r'  )rM   rN   rO   rP   rx   r  r  r  is_wheel_packager	  is_conda_packager  rR   rS   rT   s   @r   r  r    s!    B # /C +D !*C 1< -= "*  '3 0: ,; "$& 3 08 ,9
 ")# /7 +8	!#Q2Nh # /C +D !*C 1F -G ",  '3 0: ,; "$* 3 08 ,9 ")# /7 +8!#W7Nr-: * * G Gr-   r  __main__)addi	sp, sp, -16zsw	a1, 8(sp)zsw	a2, 12(sp)fld	fa5, 8(sp)zfmv.w.x	fa4, a0zfcvt.d.s	fa4, fa4fadd.d	fa5, fa4, fa5fsd	fa5, 8(sp)lw	a0, 8(sp)lw	a1, 12(sp)addi	sp, sp, 16r   )r,  zsw	a0, 8(sp)zsw	a1, 12(sp)r-  zfcvt.d.s	fa4, fa0r.  r/  r0  r1  r2  r   )zfcvt.d.s	fa5, fa0zfadd.d	fa0, fa5, fa1r   )lrl  r  r   r   r   ctypes.utilr   r%   r   rn   r   rv   rq   r   r   
contextlibr   tempfiler   r%  r	   r
   r"   llvmlite.bindingr   llvmlite.testsr   r  r^  r   package_formatr*  r)  
_HAVE_LIEFliefImportError
needs_liefr   rQ   r  r]  r  r  r  r  r   r  r   r  r  r  rj  rY  rK  asm_inlineasm2asm_inlineasm3licm_asmr  r  r   rn  r   r   r   r<  r  r  r  r  asm_tli_exp2ru  r  r  r   rW   r   r   re  objectr  rQ  r`  skipre  r  rz  r  rE  rV  r\  rg  r~  r  r  r   r  r  r  r  r8  r>  rh  r  ro   r   r  rM   mainr   r-   r   <module>rD     s_     , , $ 	  	  	  
  %   $   # !!!/2 &&t':':g'E(H+/+>+>*?)AC  &&t':':g'E(H+/+>+>*?)AC  
	J
   -IJ
	-&
	
 !!#v-#++O=NON    ,BH&P :<	      "0- ( E  (+Z1h5x 5B/x /dF+8 F+RM'x M'`@>H @>Fv-6 v-r4 44?, ?$ 
/0}!8 }! 1}!@o,8 o,d	s
( s
lX. X.vCX C>	E 	E
, 
,#18 #1L!#h !#H1Y 1847( 47n 
X%%'2259=I"H " J"UAX UAp8H 8:H HV& Mh 3 M`w x)< w tk +> k \ 
RZZ^^$8913wG wG 3wGt zMMO [a  		s   "L? ?M
	M
