+
    -i	<                        ^ RI t ^ RIHtHtHtHtHtHtHt ^ RI	H
t
 ^ RIHt ^ RIHtHt ^ RIHt ^ RIHt ]! R. R"O4      tR	 tR
 R lt ! R R]4      tR tR tR t]^ ,          t^ R^R^R^R^R^R^R^R^R/	tR#R ltR t  ! R R]
PB                  4      t"]#! . R$O4      t$]#! . R%O4      t% ! R R]
PB                  4      t& ! R  R!]
PB                  4      t']! ]4      .]
PP                  PR                  n*        ]]! ]4      ]! ]4      ]! ]4      ]! ]4      .]
PP                  PV                  n*        ]! ]4      .]
PP                  PX                  n*        ]]
PP                  PX                  n-        ]! ]4      .]
PP                  P\                  n*        ]! ]4      .]
PP                  P^                  n*        ].]
PP                  P`                  n*        ]]
PP                  P`                  n-        ].]
PP                  Pb                  n*        ]
Pd                  ]
PP                  Pb                  n-        ]
Pd                  ]! ]4      .]
PP                  Pf                  n*        ]
Pd                  .]
PP                  Ph                  n*        ]
Pd                  ]
Pj                  .]
PP                  Pl                  n*        ]]
PP                  Pl                  n-        ]
Pd                  ]
Pj                  ].]
PP                  Pn                  n*        ]]
PP                  Pn                  n-        ]
Pd                  ]
Pj                  .]
PP                  Pp                  n*        ]]
PP                  Pp                  n-        ]]! ]4      .]
PP                  Pr                  n*        ]
Pt                  ]
PP                  Pr                  n-        ]
Pt                  .]
PP                  Pv                  n*        ]]
PP                  Pv                  n-        ]
Pt                  .]
PP                  Px                  n*        ]]
PP                  Px                  n-        ]
Pt                  ]]]]]]]]].
]
PP                  Pz                  n*        ]
P|                  ]
PP                  Pz                  n-        ]
P|                  .]
PP                  P~                  n*        ]
P|                  ]! ]4      .]
PP                  P                  n*        ]
P|                  ].]
PP                  P                  n*        ]
P|                  ]
P                  .]
PP                  P                  n*        ]
P|                  ]
P                  ]]! ]4      .]
PP                  P                  n*        ]
P                  ]
PP                  P                  n-        ]
P                  .]
PP                  P                  n*        ]]
PP                  P                  n-        ]
P                  .]
PP                  P                  n*        ]]
PP                  P                  n-        ]
P                  .]
PP                  P                  n*        ]
P|                  .]
PP                  P                  n*        ]
Pd                  ]
PP                  P                  n-        R# )&    N)POINTERc_char_p
c_longlongc_intc_size_tc_void_p	string_at)ffi)llvm_version_info)_decode_string_encode_string)
namedtuple)	_has_svmlTriplec                     \         P                  ! 4       ;_uu_ 4       p \         P                  P                  V 4       \	        V 4      uuRRR4       #   + '       g   i     R# ; i)z
Return a target triple suitable for generating code for the current process.
An example when the default triple from ``get_default_triple()`` is not be
suitable is when LLVM is compiled for 32-bit but the process is executing
in 64-bit mode.
N)r
   OutputStringlibLLVMPY_GetProcessTriplestrouts    V/var/www/html/photoedit/myenv/lib/python3.14/site-packages/llvmlite/binding/targets.pyget_process_tripler      s=     
				s'',3x 
			   *AA$	c                $    V ^8  d   QhR\         /# )   triple)r   )formats   "r   __annotate__r      s     ; ;S ;    c                r   \         P                  ! 4       ;_uu_ 4       p\         P                  ! 4       ;_uu_ 4       p\         P                  ! 4       ;_uu_ 4       p\         P                  ! 4       ;_uu_ 4       p\         P                  P                  V P	                  R4      WW44       \        V4      pRpV P                  R4       F*  pVP                  V4      '       g   K  V\        V4      R p M	  \        W\        V4      \        V4      \        V4      \        V 4      4      uuRRR4       uuRRR4       uuRRR4       uuRRR4       #   + '       g   i     M; iRRR4       M  + '       g   i     M; iRRR4       M  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)z2
Return a tuple of the parts of the given triple.
utf8 -N)r
   r   r   LLVMPY_GetTriplePartsencoder   split
startswithlenr   get_object_format)r   archvendorosenvsubarch_strs   &      r   get_triple_partsr1      s#    
				t&"c&6&6&8&8C%%fmmF&;&*B	=4yLL%Dt$$s4yz* & dS[#b'#h 1& 9; '9&8  
	&8&8  
			sf   F%F	E,8A&E#AE'
E,1
F	;
F%E E,#	F	,E<7F	?	F%FF%%F6	c                   .   a  ] tR t^1t o RtRR ltRtV tR# )
FeatureMapzy
Maps feature name to a boolean indicating the availability of the feature.
Extends ``dict`` to add `.flatten()` method.
c                   a V'       d   \        V P                  4       4      M\        V P                  4       4      pRRRR/oRP                  V3R lV 4       4      # )a(  
Args
----
sort: bool
    Optional.  If True, the features are sorted by name; otherwise,
    the ordering is unstable between python session due to hash
    randomization.  Defaults to True.

Returns a string suitable for use as the ``features`` argument to
``Target.create_target_machine()``.

T+Fr$   ,c              3   Z   <"   T F   w  rR P                  SV,          V4      x  K"  	  R# 5i)z{0}{1}N)r   ).0kvflag_maps   &  r   	<genexpr>%FeatureMap.flatten.<locals>.<genexpr>F   s,      .$,DA !Q77$,s   (+)sorteditemsiterjoin)selfsortiteratorr;   s   && @r   flattenFeatureMap.flatten7   sP     ,06$**,'T$**,5G#uc*xx .$,. . 	.r     N)T)__name__
__module____qualname____firstlineno____doc__rE   __static_attributes____classdictcell____classdict__s   @r   r3   r3   1   s     
. .r    r3   c                    \         P                  ! 4       ;_uu_ 4       p \        4       p\         P                  P	                  V 4      '       g   VuuRRR4       # RRRR/p\        V 4      pV'       d;   VP                  R4       F%  pV'       g   K  W$^ ,          ,          WR,          &   K'  	  VuuRRR4       #   + '       g   i     R# ; i)a?  
Returns a dictionary-like object indicating the CPU features for current
architecture and whether they are enabled for this CPU.  The key-value pairs
are the feature name as string and a boolean indicating whether the feature
is available.  The returned value is an instance of ``FeatureMap`` class,
which adds a new method ``.flatten()`` for returning a string suitable for
use as the "features" argument to ``Target.create_target_machine()``.

If LLVM has not implemented this feature or it fails to get the information,
this function will raise a RuntimeError exception.
Nr5   Tr$   Fr6   :   NN)r
   r   r3   r   LLVMPY_GetHostCPUFeaturesr   r'   )r   outdictr;   contentfeats        r   get_host_cpu_featuresrW   J   s     
				s,ww0055 
	 sE*c(c*4(0a(9GH% +  
			s   1B92B9B99C
	c                     \         P                  ! 4       ;_uu_ 4       p \         P                  P                  V 4       \	        V 4      uuRRR4       #   + '       g   i     R# ; i)zJ
Return the default target triple LLVM is configured to produce code for.
N)r
   r   r   LLVMPY_GetDefaultTargetTripler   r   s    r   get_default_triplerZ   c   s=     
				s--c23x 
			r   c                     \         P                  ! 4       ;_uu_ 4       p \         P                  P                  V 4       \	        V 4      uuRRR4       #   + '       g   i     R# ; i)za
Get the name of the host's CPU, suitable for using with
:meth:`Target.create_target_machine()`.
N)r
   r   r   LLVMPY_GetHostCPUNamer   r   s    r   get_host_cpu_namer]   l   s=    
 
				s%%c*3x 
			r   UnknownCOFFDXContainerELFGOFFMachOSPIRVWasmXCOFFc                    V f   \        4       p \        P                  P                  \	        V 4      4      p\
        V,          # )zn
Get the object format for the given *triple* string (or the default
triple if omitted).
A string is returned
)rZ   r
   r   LLVMPY_GetTripleObjectFormatr   _object_formats)r   ress   & r   r*   r*      s5     ~#%
''
.
.~f/E
FC3r    c                d    \        \        P                  P                  \	        V 4      4      4      # )z=
Create a TargetData instance for the given *layout* string.
)
TargetDatar
   r   LLVMPY_CreateTargetDatar   )layouts   &r   create_target_dataro      s#     cgg55nV6LMNNr    c                   B   a  ] tR t^t o RtR tR tR tR tR t	Rt
V tR# )	rl   zo
A TargetData provides structured access to a data layout.
Use :func:`create_target_data` to create instances.
c                    V P                   '       d   R # \        P                  ! 4       ;_uu_ 4       p\        P                  P	                  W4       \        V4      uuRRR4       #   + '       g   i     R# ; i)z<dead TargetData>N)_closedr
   r   r    LLVMPY_CopyStringRepOfTargetDatar   rB   r   s   & r   __str__TargetData.__str__   sG    <<<&3GG44T?s8  s   *A''A8	c                <    V P                   P                  V 4       R # N)_capiLLVMPY_DisposeTargetDatarB   s   &r   _disposeTargetData._dispose   s    

++D1r    c                @    \         P                  P                  W4      # )z!
Get ABI size of LLVM type *ty*.
)r
   r   LLVMPY_ABISizeOfTyperB   tys   &&r   get_abi_sizeTargetData.get_abi_size   s     ww++D55r    c                    \         P                  P                  WV4      pVR8X  d%   \        RP	                  V\        V4      4      4      hV# )z<
Get byte offset of type's ty element at the given position
zQCould not determined offset of {}th element of the type '{}'. Is it a structtype?)r
   r   LLVMPY_OffsetOfElement
ValueErrorr   r   )rB   r   positionoffsets   &&& r   get_element_offsetTargetData.get_element_offset   sL    
 //(CR< %%+VHc"g%>@ @ r    c                @    \         P                  P                  W4      # )z.
Get minimum ABI alignment of LLVM type *ty*.
)r
   r   LLVMPY_ABIAlignmentOfTyper   s   &&r   get_abi_alignmentTargetData.get_abi_alignment   s     ww00::r    rG   N)rH   rI   rJ   rK   rL   ru   r|   r   r   r   rM   rN   rO   s   @r   rl   rl      s(     
26
; ;r    rl   c                      a  ] tR t^t o Rt]R 4       t]R 4       t]R 4       t	]R 4       t
]R 4       tR tRR ltR	tV tR
# )Targetr#   c                8    \        4       pV P                  V4      # )z2
Create a Target instance for the default triple.
)rZ   from_triple)clsr   s   & r   from_default_tripleTarget.from_default_triple   s    
 $%v&&r    c                0   \         P                  ! 4       ;_uu_ 4       p\         P                  P                  VP	                  R4      V4      pV'       g   \        \        V4      4      hV ! V4      pWn        VuuRRR4       #   + '       g   i     R# ; i)z;
Create a Target instance for the given triple (a string).
r"   N)r
   r   r   LLVMPY_GetTargetFromTripler&   RuntimeErrorr   _triple)r   r   outerrtargets   &&  r   r   Target.from_triple   sj    
 6WW77f8M8>@F"3v;//[F#N  s   ABB	c                V    \         P                  P                  V 4      p\        V4      # rx   )r
   r   LLVMPY_GetTargetNamer   rB   ss   & r   nameTarget.name   s!    GG((.a  r    c                V    \         P                  P                  V 4      p\        V4      # rx   )r
   r   LLVMPY_GetTargetDescriptionr   r   s   & r   descriptionTarget.description   s!    GG//5a  r    c                    V P                   # rx   )r   r{   s   &r   r   Target.triple   s    ||r    c                N    R P                  V P                  V P                  4      # )z<Target {0} ({1})>)r   r   r   r{   s   &r   ru   Target.__str__   s    #**499d6F6FGGr    c	                   ^ Tu;8:  d	   ^8:  g   Q h Q hV\         9   g   Q hV\        9   g   Q hV P                  p	\        P                  R8X  d   VR8X  d
   V	R,          p	\
        P                  P                  V \        V	4      \        V4      \        V4      V\        V4      \        V4      \        V4      \        V4      \        V4      4
      p
V
'       d   \        V
4      # \        R4      h)a  
Create a new TargetMachine for this target and the given options.

Specifying codemodel='default' will result in the use of the "small"
code model. Specifying codemodel='jitdefault' will result in the code
model being picked based on platform bitness (32="small", 64="large").

The `printmc` option corresponds to llvm's `-print-machineinstrs`.

The `jit` option should be set when the target-machine is to be used
in a JIT engine.

The `abiname` option specifies the ABI. RISC-V targets with hard-float
needs to pass the ABI name to LLVM.
nt
jitdefaultz-elfzCannot create target machine)RELOC	CODEMODELr   r-   r   r
   r   LLVMPY_CreateTargetMachiner   intTargetMachiner   )rB   cpufeaturesoptreloc	codemodelprintmcjitabinamer   tms   &&&&&&&&&  r   create_target_machineTarget.create_target_machine   s    $ C}1}}}~~I%%% 77d?yL8fFWW//0>v0F0>s0C0>x0H030>u0E0>y0I03G03C0>w0G
2  $$=>>r    rG   N)r#   r#   r   defaultr   FFr#   )rH   rI   rJ   rK   r   classmethodr   r   propertyr   r   r   ru   r   rM   rN   rO   s   @r   r   r      s~     G
 ' '   ! ! ! !  H)? )?r    r   c                   h   a  ] tR tRt o R tR tR tR tR tRR lt	]
R 4       t]
R	 4       tR
tV tR# )r   i!  c                <    V P                   P                  V 4       R # rx   )ry   LLVMPY_DisposeTargetMachiner{   s   &r   r|   TargetMachine._dispose#  s    

..t4r    c                D    \         P                  P                  W4       R# )zG
Register analysis passes for this target machine with a pass manager.
N)r
   r   LLVMPY_AddAnalysisPasses)rB   pms   &&r   add_analysis_passes!TargetMachine.add_analysis_passes&  s     	((2r    c                D    \         P                  P                  W4       R# )z
Set whether this target machine will emit assembly with human-readable
comments describing control flow, debug information, and so on.
N)r
   r   #LLVMPY_SetTargetMachineAsmVerbosity)rB   verboses   &&r   set_asm_verbosityTargetMachine.set_asm_verbosity,  s    
 	33DBr    c                (    V P                  VRR7      # )zm
Represent the module as a code object, suitable for use with
the platform's linker.  Returns a byte string.
T
use_object)_emit_to_memoryrB   modules   &&r   emit_objectTargetMachine.emit_object3  s    
 ##Ft#<<r    c                :    \        V P                  VRR7      4      # )zx
Return the raw assembler of the module, as a string.

llvm.initialize_native_asmprinter() must have been called first.
Fr   )r   r   r   s   &&r   emit_assemblyTargetMachine.emit_assembly:  s     d226e2LMMr    c           	        \         P                  ! 4       ;_uu_ 4       p\         P                  P                  W\	        V4      V4      pV'       g   \        \        V4      4      h RRR4       \         P                  P                  X4      p\         P                  P                  V4      p \        WV4      \         P                  P                  V4       #   + '       g   i     Ly; i  \         P                  P                  T4       i ; i)zReturns bytes of object code of the module.

Args
----
use_object : bool
    Emit object code or (if False) emit assembly code.
N)r
   r   r    LLVMPY_TargetMachineEmitToMemoryr   r   r   LLVMPY_GetBufferStartLLVMPY_GetBufferSizer	   LLVMPY_DisposeMemoryBuffer)rB   r   r   r   mbbufptrbufszs   &&&    r   r   TargetMachine._emit_to_memoryB  s     699$:=j/:@BB "3v;// 	   ..r2,,R0	3V+GG..r2   GG..r2s   AC-
C* C'	*!Dc                R    \        \        P                  P                  V 4      4      # rx   )rl   r
   r   LLVMPY_CreateTargetMachineDatar{   s   &r   target_dataTargetMachine.target_dataX  s    #''@@FGGr    c                    \         P                  ! 4       ;_uu_ 4       p\         P                  P                  W4       \	        V4      uuR R R 4       #   + '       g   i     R # ; irx   )r
   r   r   LLVMPY_GetTargetMachineTripler   rt   s   & r   r   TargetMachine.triple\  s;    3GG11$<s8  r   rG   N)F)rH   rI   rJ   rK   r|   r   r   r   r   r   r   r   r   rM   rN   rO   s   @r   r   r   !  sO     53C=N3, H H  r    r   )ArchSubArchVendorOSEnvObjectFormatrx   )r   staticpicdynamicnopic)r   r   smallkernelmediumlarge)Kr-   ctypesr   r   r   r   r   r   r	   llvmlite.bindingr
   llvmlite.binding.initfinir   llvmlite.binding.commonr   r   collectionsr   llvmlite.binding.configr   has_svmlr   r   r1   dictr3   rW   rZ   r]   llvm_version_majorri   r*   ro   	ObjectRefrl   	frozensetr   r   r   r   r   r   argtypesr%   rS   restyperY   r\   rh   rm   LLVMTargetDataRefrs   rz   LLVMTypeRefr   r   r   r   LLVMTargetRefr   r   r   LLVMTargetMachineRefr   r   r   LLVMPassManagerRefr   LLVMModuleRefr   LLVMMemoryBufferRefr   r   r   r   rG   r    r   <module>r     s\   	) ) ) ! 7 B " : 
H < 
=	;&. .22 'q)  yv}uvwwvw
	 O&; &;R 	>?   !	V?S]] V?r?CMM ?J -4H,=+>   (*2GH4E*1(*;WX=N*1(*;*=   & /6h.?-@ ! ! *,1 ! ! )29(2C1D % % .*1(*;)<   &19
 $ $ -/4 $ $ ,,4:   (*-*?*?   ' H5 ( ( 1 -     ) *-)>)>),):   %'1   $+.+@+@+.??+0+2   ' *4   &.1.C.C.1oo.? ! ! *,6 ! ! )/79J.K " " +-0->-> " " *),):):(;   %'/   $030A0A/B # # ,.6 # # + 			'/ " " +* .1-E-E " " *030H0H/I # # ,252J2J29(2C2E % % . e8% + + 4 -     ) 	H	5 ( ( 1 473J3J ( ( 0*-*A*A)B   &(0   %),)@)@(A   %'/   $/2/F/F.G " " + 3 & & / 251F1F & & .r    