ruby-llvm 3.0.0.beta → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,4712 @@
1
+ # Generated by ffi_gen. Please do not change this file by hand.
2
+
3
+ require 'ffi'
4
+
5
+ module LLVM::C
6
+ extend FFI::Library
7
+ ffi_lib 'LLVM-3.0'
8
+
9
+ # The top-level container for all LLVM global data. See the LLVMContext class.
10
+ #
11
+ # = Fields:
12
+ #
13
+ class OpaqueContext < FFI::Struct
14
+ end
15
+
16
+ # The top-level container for all other LLVM Intermediate Representation (IR)
17
+ # objects. See the llvm::Module class.
18
+ #
19
+ # = Fields:
20
+ #
21
+ class OpaqueModule < FFI::Struct
22
+ end
23
+
24
+ # Each value in the LLVM IR has a type, an LLVMTypeRef. See the llvm::Type
25
+ # class.
26
+ #
27
+ # = Fields:
28
+ #
29
+ class OpaqueType < FFI::Struct
30
+ end
31
+
32
+ # (Not documented)
33
+ #
34
+ # = Fields:
35
+ #
36
+ class OpaqueValue < FFI::Struct
37
+ end
38
+
39
+ # (Not documented)
40
+ #
41
+ # = Fields:
42
+ #
43
+ class OpaqueBasicBlock < FFI::Struct
44
+ end
45
+
46
+ # (Not documented)
47
+ #
48
+ # = Fields:
49
+ #
50
+ class OpaqueBuilder < FFI::Struct
51
+ end
52
+
53
+ # Interface used to provide a module to JIT or interpreter. This is now just a
54
+ # synonym for llvm::Module, but we have to keep using the different type to
55
+ # keep binary compatibility.
56
+ #
57
+ # = Fields:
58
+ #
59
+ class OpaqueModuleProvider < FFI::Struct
60
+ end
61
+
62
+ # Used to provide a module to JIT or interpreter.
63
+ # See the llvm::MemoryBuffer class.
64
+ #
65
+ # = Fields:
66
+ #
67
+ class OpaqueMemoryBuffer < FFI::Struct
68
+ end
69
+
70
+ # See the llvm::PassManagerBase class.
71
+ #
72
+ # = Fields:
73
+ #
74
+ class OpaquePassManager < FFI::Struct
75
+ end
76
+
77
+ # See the llvm::PassRegistry class.
78
+ #
79
+ # = Fields:
80
+ #
81
+ class OpaquePassRegistry < FFI::Struct
82
+ end
83
+
84
+ # Used to get the users and usees of a Value. See the llvm::Use class.
85
+ #
86
+ # = Fields:
87
+ #
88
+ class OpaqueUse < FFI::Struct
89
+ end
90
+
91
+ # (Not documented)
92
+ #
93
+ # === Options:
94
+ #
95
+ # @return [Array<Symbol>]
96
+ def self.attribute_enum
97
+ []
98
+ end
99
+ enum :attribute, [
100
+
101
+ ]
102
+
103
+ # (Not documented)
104
+ #
105
+ # === Options:
106
+ # :ret ::
107
+ # Terminator Instructions
108
+ # :br ::
109
+ #
110
+ # :switch ::
111
+ #
112
+ # :indirect_br ::
113
+ #
114
+ # :invoke ::
115
+ #
116
+ # :unreachable ::
117
+ # removed 6 due to API changes
118
+ # :add ::
119
+ # Standard Binary Operators
120
+ # :f_add ::
121
+ #
122
+ # :sub ::
123
+ #
124
+ # :f_sub ::
125
+ #
126
+ # :mul ::
127
+ #
128
+ # :f_mul ::
129
+ #
130
+ # :u_div ::
131
+ #
132
+ # :s_div ::
133
+ #
134
+ # :f_div ::
135
+ #
136
+ # :u_rem ::
137
+ #
138
+ # :s_rem ::
139
+ #
140
+ # :f_rem ::
141
+ #
142
+ # :shl ::
143
+ # Logical Operators
144
+ # :l_shr ::
145
+ #
146
+ # :a_shr ::
147
+ #
148
+ # :and ::
149
+ #
150
+ # :or ::
151
+ #
152
+ # :xor ::
153
+ #
154
+ # :alloca ::
155
+ # Memory Operators
156
+ # :load ::
157
+ #
158
+ # :store ::
159
+ #
160
+ # :get_element_ptr ::
161
+ #
162
+ # :trunc ::
163
+ # Cast Operators
164
+ # :z_ext ::
165
+ #
166
+ # :s_ext ::
167
+ #
168
+ # :fp_to_ui ::
169
+ #
170
+ # :fp_to_si ::
171
+ #
172
+ # :ui_to_fp ::
173
+ #
174
+ # :si_to_fp ::
175
+ #
176
+ # :fp_trunc ::
177
+ #
178
+ # :fp_ext ::
179
+ #
180
+ # :ptr_to_int ::
181
+ #
182
+ # :int_to_ptr ::
183
+ #
184
+ # :bit_cast ::
185
+ #
186
+ # :i_cmp ::
187
+ # Other Operators
188
+ # :f_cmp ::
189
+ #
190
+ # :phi ::
191
+ #
192
+ # :call ::
193
+ #
194
+ # :select ::
195
+ #
196
+ # :user_op1 ::
197
+ #
198
+ # :user_op2 ::
199
+ #
200
+ # :va_arg ::
201
+ #
202
+ # :extract_element ::
203
+ #
204
+ # :insert_element ::
205
+ #
206
+ # :shuffle_vector ::
207
+ #
208
+ # :extract_value ::
209
+ #
210
+ # :insert_value ::
211
+ #
212
+ # :fence ::
213
+ # Atomic operators
214
+ # :atomic_cmp_xchg ::
215
+ #
216
+ # :atomic_rmw ::
217
+ #
218
+ # :resume ::
219
+ # Exception Handling Operators
220
+ # :landing_pad ::
221
+ #
222
+ # :unwind ::
223
+ #
224
+ #
225
+ # @return [Array<Symbol>]
226
+ def self.opcode_enum
227
+ [:ret, :br, :switch, :indirect_br, :invoke, :unreachable, :add, :f_add, :sub, :f_sub, :mul, :f_mul, :u_div, :s_div, :f_div, :u_rem, :s_rem, :f_rem, :shl, :l_shr, :a_shr, :and, :or, :xor, :alloca, :load, :store, :get_element_ptr, :trunc, :z_ext, :s_ext, :fp_to_ui, :fp_to_si, :ui_to_fp, :si_to_fp, :fp_trunc, :fp_ext, :ptr_to_int, :int_to_ptr, :bit_cast, :i_cmp, :f_cmp, :phi, :call, :select, :user_op1, :user_op2, :va_arg, :extract_element, :insert_element, :shuffle_vector, :extract_value, :insert_value, :fence, :atomic_cmp_xchg, :atomic_rmw, :resume, :landing_pad, :unwind]
228
+ end
229
+ enum :opcode, [
230
+ :ret, 1,
231
+ :br, 2,
232
+ :switch, 3,
233
+ :indirect_br, 4,
234
+ :invoke, 5,
235
+ :unreachable, 7,
236
+ :add, 8,
237
+ :f_add, 9,
238
+ :sub, 10,
239
+ :f_sub, 11,
240
+ :mul, 12,
241
+ :f_mul, 13,
242
+ :u_div, 14,
243
+ :s_div, 15,
244
+ :f_div, 16,
245
+ :u_rem, 17,
246
+ :s_rem, 18,
247
+ :f_rem, 19,
248
+ :shl, 20,
249
+ :l_shr, 21,
250
+ :a_shr, 22,
251
+ :and, 23,
252
+ :or, 24,
253
+ :xor, 25,
254
+ :alloca, 26,
255
+ :load, 27,
256
+ :store, 28,
257
+ :get_element_ptr, 29,
258
+ :trunc, 30,
259
+ :z_ext, 31,
260
+ :s_ext, 32,
261
+ :fp_to_ui, 33,
262
+ :fp_to_si, 34,
263
+ :ui_to_fp, 35,
264
+ :si_to_fp, 36,
265
+ :fp_trunc, 37,
266
+ :fp_ext, 38,
267
+ :ptr_to_int, 39,
268
+ :int_to_ptr, 40,
269
+ :bit_cast, 41,
270
+ :i_cmp, 42,
271
+ :f_cmp, 43,
272
+ :phi, 44,
273
+ :call, 45,
274
+ :select, 46,
275
+ :user_op1, 47,
276
+ :user_op2, 48,
277
+ :va_arg, 49,
278
+ :extract_element, 50,
279
+ :insert_element, 51,
280
+ :shuffle_vector, 52,
281
+ :extract_value, 53,
282
+ :insert_value, 54,
283
+ :fence, 55,
284
+ :atomic_cmp_xchg, 56,
285
+ :atomic_rmw, 57,
286
+ :resume, 58,
287
+ :landing_pad, 59,
288
+ :unwind, 60
289
+ ]
290
+
291
+ # (Not documented)
292
+ #
293
+ # === Options:
294
+ # :void ::
295
+ #
296
+ # :float ::
297
+ # < type with no size
298
+ # :double ::
299
+ # < 32 bit floating point type
300
+ # :x86_fp80 ::
301
+ # < 64 bit floating point type
302
+ # :fp128 ::
303
+ # < 80 bit floating point type (X87)
304
+ # :ppc_fp128 ::
305
+ # < 128 bit floating point type (112-bit mantissa)
306
+ # :label ::
307
+ # < 128 bit floating point type (two 64-bits)
308
+ # :integer ::
309
+ # < Labels
310
+ # :function ::
311
+ # < Arbitrary bit width integers
312
+ # :struct ::
313
+ # < Functions
314
+ # :array ::
315
+ # < Structures
316
+ # :pointer ::
317
+ # < Arrays
318
+ # :vector ::
319
+ # < Pointers
320
+ # :metadata ::
321
+ # < SIMD 'packed' format, or other vector type
322
+ # :x86_mmx ::
323
+ # < Metadata
324
+ #
325
+ # @return [Array<Symbol>]
326
+ def self.type_kind_enum
327
+ [:void, :float, :double, :x86_fp80, :fp128, :ppc_fp128, :label, :integer, :function, :struct, :array, :pointer, :vector, :metadata, :x86_mmx]
328
+ end
329
+ enum :type_kind, [
330
+ :void,
331
+ :float,
332
+ :double,
333
+ :x86_fp80,
334
+ :fp128,
335
+ :ppc_fp128,
336
+ :label,
337
+ :integer,
338
+ :function,
339
+ :struct,
340
+ :array,
341
+ :pointer,
342
+ :vector,
343
+ :metadata,
344
+ :x86_mmx
345
+ ]
346
+
347
+ # (Not documented)
348
+ #
349
+ # === Options:
350
+ # :external ::
351
+ #
352
+ # :available_externally ::
353
+ # < Externally visible function
354
+ # :link_once_any ::
355
+ #
356
+ # :link_once_odr ::
357
+ # < Keep one copy of function when linking (inline)
358
+ # :weak_any ::
359
+ # < Same, but only replaced by something
360
+ # equivalent.
361
+ # :weak_odr ::
362
+ # < Keep one copy of function when linking (weak)
363
+ # :appending ::
364
+ # < Same, but only replaced by something
365
+ # equivalent.
366
+ # :internal ::
367
+ # < Special purpose, only applies to global arrays
368
+ # :private ::
369
+ # < Rename collisions when linking (static
370
+ # functions)
371
+ # :dll_import ::
372
+ # < Like Internal, but omit from symbol table
373
+ # :dll_export ::
374
+ # < Function to be imported from DLL
375
+ # :external_weak ::
376
+ # < Function to be accessible from DLL
377
+ # :ghost ::
378
+ # < ExternalWeak linkage description
379
+ # :common ::
380
+ # < Obsolete
381
+ # :linker_private ::
382
+ # < Tentative definitions
383
+ # :linker_private_weak ::
384
+ # < Like Private, but linker removes.
385
+ # :linker_private_weak_def_auto ::
386
+ # < Like LinkerPrivate, but is weak.
387
+ #
388
+ # @return [Array<Symbol>]
389
+ def self.linkage_enum
390
+ [:external, :available_externally, :link_once_any, :link_once_odr, :weak_any, :weak_odr, :appending, :internal, :private, :dll_import, :dll_export, :external_weak, :ghost, :common, :linker_private, :linker_private_weak, :linker_private_weak_def_auto]
391
+ end
392
+ enum :linkage, [
393
+ :external,
394
+ :available_externally,
395
+ :link_once_any,
396
+ :link_once_odr,
397
+ :weak_any,
398
+ :weak_odr,
399
+ :appending,
400
+ :internal,
401
+ :private,
402
+ :dll_import,
403
+ :dll_export,
404
+ :external_weak,
405
+ :ghost,
406
+ :common,
407
+ :linker_private,
408
+ :linker_private_weak,
409
+ :linker_private_weak_def_auto
410
+ ]
411
+
412
+ # (Not documented)
413
+ #
414
+ # === Options:
415
+ # :default ::
416
+ #
417
+ # :hidden ::
418
+ # < The GV is visible
419
+ # :protected ::
420
+ # < The GV is hidden
421
+ #
422
+ # @return [Array<Symbol>]
423
+ def self.visibility_enum
424
+ [:default, :hidden, :protected]
425
+ end
426
+ enum :visibility, [
427
+ :default,
428
+ :hidden,
429
+ :protected
430
+ ]
431
+
432
+ # (Not documented)
433
+ #
434
+ # === Options:
435
+ # :c ::
436
+ #
437
+ # :fast ::
438
+ #
439
+ # :cold ::
440
+ #
441
+ # :x86_stdcall ::
442
+ #
443
+ # :x86_fastcall ::
444
+ #
445
+ #
446
+ # @return [Array<Symbol>]
447
+ def self.call_conv_enum
448
+ [:c, :fast, :cold, :x86_stdcall, :x86_fastcall]
449
+ end
450
+ enum :call_conv, [
451
+ :c, 0,
452
+ :fast, 8,
453
+ :cold, 9,
454
+ :x86_stdcall, 64,
455
+ :x86_fastcall, 65
456
+ ]
457
+
458
+ # (Not documented)
459
+ #
460
+ # === Options:
461
+ # :eq ::
462
+ #
463
+ # :ne ::
464
+ # < equal
465
+ # :ugt ::
466
+ # < not equal
467
+ # :uge ::
468
+ # < unsigned greater than
469
+ # :ult ::
470
+ # < unsigned greater or equal
471
+ # :ule ::
472
+ # < unsigned less than
473
+ # :sgt ::
474
+ # < unsigned less or equal
475
+ # :sge ::
476
+ # < signed greater than
477
+ # :slt ::
478
+ # < signed greater or equal
479
+ # :sle ::
480
+ # < signed less than
481
+ #
482
+ # @return [Array<Symbol>]
483
+ def self.int_predicate_enum
484
+ [:eq, :ne, :ugt, :uge, :ult, :ule, :sgt, :sge, :slt, :sle]
485
+ end
486
+ enum :int_predicate, [
487
+ :eq, 32,
488
+ :ne,
489
+ :ugt,
490
+ :uge,
491
+ :ult,
492
+ :ule,
493
+ :sgt,
494
+ :sge,
495
+ :slt,
496
+ :sle
497
+ ]
498
+
499
+ # (Not documented)
500
+ #
501
+ # === Options:
502
+ # :predicate_false ::
503
+ #
504
+ # :oeq ::
505
+ # < Always false (always folded)
506
+ # :ogt ::
507
+ # < True if ordered and equal
508
+ # :oge ::
509
+ # < True if ordered and greater than
510
+ # :olt ::
511
+ # < True if ordered and greater than or equal
512
+ # :ole ::
513
+ # < True if ordered and less than
514
+ # :one ::
515
+ # < True if ordered and less than or equal
516
+ # :ord ::
517
+ # < True if ordered and operands are unequal
518
+ # :uno ::
519
+ # < True if ordered (no nans)
520
+ # :ueq ::
521
+ # < True if unordered: isnan(X) | isnan(Y)
522
+ # :ugt ::
523
+ # < True if unordered or equal
524
+ # :uge ::
525
+ # < True if unordered or greater than
526
+ # :ult ::
527
+ # < True if unordered, greater than, or equal
528
+ # :ule ::
529
+ # < True if unordered or less than
530
+ # :une ::
531
+ # < True if unordered, less than, or equal
532
+ # :predicate_true ::
533
+ # < True if unordered or not equal
534
+ #
535
+ # @return [Array<Symbol>]
536
+ def self.real_predicate_enum
537
+ [:predicate_false, :oeq, :ogt, :oge, :olt, :ole, :one, :ord, :uno, :ueq, :ugt, :uge, :ult, :ule, :une, :predicate_true]
538
+ end
539
+ enum :real_predicate, [
540
+ :predicate_false,
541
+ :oeq,
542
+ :ogt,
543
+ :oge,
544
+ :olt,
545
+ :ole,
546
+ :one,
547
+ :ord,
548
+ :uno,
549
+ :ueq,
550
+ :ugt,
551
+ :uge,
552
+ :ult,
553
+ :ule,
554
+ :une,
555
+ :predicate_true
556
+ ]
557
+
558
+ # (Not documented)
559
+ #
560
+ # === Options:
561
+ # :catch ::
562
+ #
563
+ # :filter ::
564
+ # < A catch clause
565
+ #
566
+ # @return [Array<Symbol>]
567
+ def self.landing_pad_clause_ty_enum
568
+ [:catch, :filter]
569
+ end
570
+ enum :landing_pad_clause_ty, [
571
+ :catch,
572
+ :filter
573
+ ]
574
+
575
+ # (Not documented)
576
+ #
577
+ # @method initialize_core(r)
578
+ # @param [FFI::Pointer(PassRegistryRef)] r
579
+ # @return [nil]
580
+ # @scope class
581
+ attach_function :initialize_core, :LLVMInitializeCore, [:pointer], :void
582
+
583
+ # ===-- Error handling ----------------------------------------------------===
584
+ #
585
+ # @method dispose_message(message)
586
+ # @param [String] message
587
+ # @return [nil]
588
+ # @scope class
589
+ attach_function :dispose_message, :LLVMDisposeMessage, [:string], :void
590
+
591
+ # Create and destroy contexts.
592
+ #
593
+ # @method context_create()
594
+ # @return [FFI::Pointer(ContextRef)]
595
+ # @scope class
596
+ attach_function :context_create, :LLVMContextCreate, [], :pointer
597
+
598
+ # (Not documented)
599
+ #
600
+ # @method get_global_context()
601
+ # @return [FFI::Pointer(ContextRef)]
602
+ # @scope class
603
+ attach_function :get_global_context, :LLVMGetGlobalContext, [], :pointer
604
+
605
+ # (Not documented)
606
+ #
607
+ # @method context_dispose(c)
608
+ # @param [FFI::Pointer(ContextRef)] c
609
+ # @return [nil]
610
+ # @scope class
611
+ attach_function :context_dispose, :LLVMContextDispose, [:pointer], :void
612
+
613
+ # (Not documented)
614
+ #
615
+ # @method get_md_kind_id_in_context(c, name, s_len)
616
+ # @param [FFI::Pointer(ContextRef)] c
617
+ # @param [String] name
618
+ # @param [Integer] s_len
619
+ # @return [Integer]
620
+ # @scope class
621
+ attach_function :get_md_kind_id_in_context, :LLVMGetMDKindIDInContext, [:pointer, :string, :uint], :uint
622
+
623
+ # (Not documented)
624
+ #
625
+ # @method get_md_kind_id(name, s_len)
626
+ # @param [String] name
627
+ # @param [Integer] s_len
628
+ # @return [Integer]
629
+ # @scope class
630
+ attach_function :get_md_kind_id, :LLVMGetMDKindID, [:string, :uint], :uint
631
+
632
+ # See llvm::Module::Module.
633
+ #
634
+ # @method module_create_with_name(module_id)
635
+ # @param [String] module_id
636
+ # @return [FFI::Pointer(ModuleRef)]
637
+ # @scope class
638
+ attach_function :module_create_with_name, :LLVMModuleCreateWithName, [:string], :pointer
639
+
640
+ # (Not documented)
641
+ #
642
+ # @method module_create_with_name_in_context(module_id, c)
643
+ # @param [String] module_id
644
+ # @param [FFI::Pointer(ContextRef)] c
645
+ # @return [FFI::Pointer(ModuleRef)]
646
+ # @scope class
647
+ attach_function :module_create_with_name_in_context, :LLVMModuleCreateWithNameInContext, [:string, :pointer], :pointer
648
+
649
+ # See llvm::Module::~Module.
650
+ #
651
+ # @method dispose_module(m)
652
+ # @param [FFI::Pointer(ModuleRef)] m
653
+ # @return [nil]
654
+ # @scope class
655
+ attach_function :dispose_module, :LLVMDisposeModule, [:pointer], :void
656
+
657
+ # Data layout. See Module::getDataLayout.
658
+ #
659
+ # @method get_data_layout(m)
660
+ # @param [FFI::Pointer(ModuleRef)] m
661
+ # @return [String]
662
+ # @scope class
663
+ attach_function :get_data_layout, :LLVMGetDataLayout, [:pointer], :string
664
+
665
+ # (Not documented)
666
+ #
667
+ # @method set_data_layout(m, triple)
668
+ # @param [FFI::Pointer(ModuleRef)] m
669
+ # @param [String] triple
670
+ # @return [nil]
671
+ # @scope class
672
+ attach_function :set_data_layout, :LLVMSetDataLayout, [:pointer, :string], :void
673
+
674
+ # Target triple. See Module::getTargetTriple.
675
+ #
676
+ # @method get_target(m)
677
+ # @param [FFI::Pointer(ModuleRef)] m
678
+ # @return [String]
679
+ # @scope class
680
+ attach_function :get_target, :LLVMGetTarget, [:pointer], :string
681
+
682
+ # (Not documented)
683
+ #
684
+ # @method set_target(m, triple)
685
+ # @param [FFI::Pointer(ModuleRef)] m
686
+ # @param [String] triple
687
+ # @return [nil]
688
+ # @scope class
689
+ attach_function :set_target, :LLVMSetTarget, [:pointer, :string], :void
690
+
691
+ # See Module::dump.
692
+ #
693
+ # @method dump_module(m)
694
+ # @param [FFI::Pointer(ModuleRef)] m
695
+ # @return [nil]
696
+ # @scope class
697
+ attach_function :dump_module, :LLVMDumpModule, [:pointer], :void
698
+
699
+ # See Module::setModuleInlineAsm.
700
+ #
701
+ # @method set_module_inline_asm(m, asm)
702
+ # @param [FFI::Pointer(ModuleRef)] m
703
+ # @param [String] asm
704
+ # @return [nil]
705
+ # @scope class
706
+ attach_function :set_module_inline_asm, :LLVMSetModuleInlineAsm, [:pointer, :string], :void
707
+
708
+ # See Module::getContext.
709
+ #
710
+ # @method get_module_context(m)
711
+ # @param [FFI::Pointer(ModuleRef)] m
712
+ # @return [FFI::Pointer(ContextRef)]
713
+ # @scope class
714
+ attach_function :get_module_context, :LLVMGetModuleContext, [:pointer], :pointer
715
+
716
+ # See llvm::LLVMTypeKind::getTypeID.
717
+ #
718
+ # @method get_type_kind(ty)
719
+ # @param [FFI::Pointer(TypeRef)] ty
720
+ # @return [Symbol from type_kind_enum]
721
+ # @scope class
722
+ attach_function :get_type_kind, :LLVMGetTypeKind, [:pointer], :type_kind
723
+
724
+ # (Not documented)
725
+ #
726
+ # @method type_is_sized(ty)
727
+ # @param [FFI::Pointer(TypeRef)] ty
728
+ # @return [Integer]
729
+ # @scope class
730
+ attach_function :type_is_sized, :LLVMTypeIsSized, [:pointer], :int
731
+
732
+ # See llvm::LLVMType::getContext.
733
+ #
734
+ # @method get_type_context(ty)
735
+ # @param [FFI::Pointer(TypeRef)] ty
736
+ # @return [FFI::Pointer(ContextRef)]
737
+ # @scope class
738
+ attach_function :get_type_context, :LLVMGetTypeContext, [:pointer], :pointer
739
+
740
+ # Operations on integer types
741
+ #
742
+ # @method int1_type_in_context(c)
743
+ # @param [FFI::Pointer(ContextRef)] c
744
+ # @return [FFI::Pointer(TypeRef)]
745
+ # @scope class
746
+ attach_function :int1_type_in_context, :LLVMInt1TypeInContext, [:pointer], :pointer
747
+
748
+ # (Not documented)
749
+ #
750
+ # @method int8_type_in_context(c)
751
+ # @param [FFI::Pointer(ContextRef)] c
752
+ # @return [FFI::Pointer(TypeRef)]
753
+ # @scope class
754
+ attach_function :int8_type_in_context, :LLVMInt8TypeInContext, [:pointer], :pointer
755
+
756
+ # (Not documented)
757
+ #
758
+ # @method int16_type_in_context(c)
759
+ # @param [FFI::Pointer(ContextRef)] c
760
+ # @return [FFI::Pointer(TypeRef)]
761
+ # @scope class
762
+ attach_function :int16_type_in_context, :LLVMInt16TypeInContext, [:pointer], :pointer
763
+
764
+ # (Not documented)
765
+ #
766
+ # @method int32_type_in_context(c)
767
+ # @param [FFI::Pointer(ContextRef)] c
768
+ # @return [FFI::Pointer(TypeRef)]
769
+ # @scope class
770
+ attach_function :int32_type_in_context, :LLVMInt32TypeInContext, [:pointer], :pointer
771
+
772
+ # (Not documented)
773
+ #
774
+ # @method int64_type_in_context(c)
775
+ # @param [FFI::Pointer(ContextRef)] c
776
+ # @return [FFI::Pointer(TypeRef)]
777
+ # @scope class
778
+ attach_function :int64_type_in_context, :LLVMInt64TypeInContext, [:pointer], :pointer
779
+
780
+ # (Not documented)
781
+ #
782
+ # @method int_type_in_context(c, num_bits)
783
+ # @param [FFI::Pointer(ContextRef)] c
784
+ # @param [Integer] num_bits
785
+ # @return [FFI::Pointer(TypeRef)]
786
+ # @scope class
787
+ attach_function :int_type_in_context, :LLVMIntTypeInContext, [:pointer, :uint], :pointer
788
+
789
+ # (Not documented)
790
+ #
791
+ # @method int1_type()
792
+ # @return [FFI::Pointer(TypeRef)]
793
+ # @scope class
794
+ attach_function :int1_type, :LLVMInt1Type, [], :pointer
795
+
796
+ # (Not documented)
797
+ #
798
+ # @method int8_type()
799
+ # @return [FFI::Pointer(TypeRef)]
800
+ # @scope class
801
+ attach_function :int8_type, :LLVMInt8Type, [], :pointer
802
+
803
+ # (Not documented)
804
+ #
805
+ # @method int16_type()
806
+ # @return [FFI::Pointer(TypeRef)]
807
+ # @scope class
808
+ attach_function :int16_type, :LLVMInt16Type, [], :pointer
809
+
810
+ # (Not documented)
811
+ #
812
+ # @method int32_type()
813
+ # @return [FFI::Pointer(TypeRef)]
814
+ # @scope class
815
+ attach_function :int32_type, :LLVMInt32Type, [], :pointer
816
+
817
+ # (Not documented)
818
+ #
819
+ # @method int64_type()
820
+ # @return [FFI::Pointer(TypeRef)]
821
+ # @scope class
822
+ attach_function :int64_type, :LLVMInt64Type, [], :pointer
823
+
824
+ # (Not documented)
825
+ #
826
+ # @method int_type(num_bits)
827
+ # @param [Integer] num_bits
828
+ # @return [FFI::Pointer(TypeRef)]
829
+ # @scope class
830
+ attach_function :int_type, :LLVMIntType, [:uint], :pointer
831
+
832
+ # (Not documented)
833
+ #
834
+ # @method get_int_type_width(integer_ty)
835
+ # @param [FFI::Pointer(TypeRef)] integer_ty
836
+ # @return [Integer]
837
+ # @scope class
838
+ attach_function :get_int_type_width, :LLVMGetIntTypeWidth, [:pointer], :uint
839
+
840
+ # Operations on real types
841
+ #
842
+ # @method float_type_in_context(c)
843
+ # @param [FFI::Pointer(ContextRef)] c
844
+ # @return [FFI::Pointer(TypeRef)]
845
+ # @scope class
846
+ attach_function :float_type_in_context, :LLVMFloatTypeInContext, [:pointer], :pointer
847
+
848
+ # (Not documented)
849
+ #
850
+ # @method double_type_in_context(c)
851
+ # @param [FFI::Pointer(ContextRef)] c
852
+ # @return [FFI::Pointer(TypeRef)]
853
+ # @scope class
854
+ attach_function :double_type_in_context, :LLVMDoubleTypeInContext, [:pointer], :pointer
855
+
856
+ # (Not documented)
857
+ #
858
+ # @method x86fp80_type_in_context(c)
859
+ # @param [FFI::Pointer(ContextRef)] c
860
+ # @return [FFI::Pointer(TypeRef)]
861
+ # @scope class
862
+ attach_function :x86fp80_type_in_context, :LLVMX86FP80TypeInContext, [:pointer], :pointer
863
+
864
+ # (Not documented)
865
+ #
866
+ # @method fp128_type_in_context(c)
867
+ # @param [FFI::Pointer(ContextRef)] c
868
+ # @return [FFI::Pointer(TypeRef)]
869
+ # @scope class
870
+ attach_function :fp128_type_in_context, :LLVMFP128TypeInContext, [:pointer], :pointer
871
+
872
+ # (Not documented)
873
+ #
874
+ # @method ppcfp128_type_in_context(c)
875
+ # @param [FFI::Pointer(ContextRef)] c
876
+ # @return [FFI::Pointer(TypeRef)]
877
+ # @scope class
878
+ attach_function :ppcfp128_type_in_context, :LLVMPPCFP128TypeInContext, [:pointer], :pointer
879
+
880
+ # (Not documented)
881
+ #
882
+ # @method float_type()
883
+ # @return [FFI::Pointer(TypeRef)]
884
+ # @scope class
885
+ attach_function :float_type, :LLVMFloatType, [], :pointer
886
+
887
+ # (Not documented)
888
+ #
889
+ # @method double_type()
890
+ # @return [FFI::Pointer(TypeRef)]
891
+ # @scope class
892
+ attach_function :double_type, :LLVMDoubleType, [], :pointer
893
+
894
+ # (Not documented)
895
+ #
896
+ # @method x86fp80_type()
897
+ # @return [FFI::Pointer(TypeRef)]
898
+ # @scope class
899
+ attach_function :x86fp80_type, :LLVMX86FP80Type, [], :pointer
900
+
901
+ # (Not documented)
902
+ #
903
+ # @method fp128_type()
904
+ # @return [FFI::Pointer(TypeRef)]
905
+ # @scope class
906
+ attach_function :fp128_type, :LLVMFP128Type, [], :pointer
907
+
908
+ # (Not documented)
909
+ #
910
+ # @method ppcfp128_type()
911
+ # @return [FFI::Pointer(TypeRef)]
912
+ # @scope class
913
+ attach_function :ppcfp128_type, :LLVMPPCFP128Type, [], :pointer
914
+
915
+ # Operations on function types
916
+ #
917
+ # @method function_type(return_type, param_types, param_count, is_var_arg)
918
+ # @param [FFI::Pointer(TypeRef)] return_type
919
+ # @param [FFI::Pointer(*TypeRef)] param_types
920
+ # @param [Integer] param_count
921
+ # @param [Integer] is_var_arg
922
+ # @return [FFI::Pointer(TypeRef)]
923
+ # @scope class
924
+ attach_function :function_type, :LLVMFunctionType, [:pointer, :pointer, :uint, :int], :pointer
925
+
926
+ # (Not documented)
927
+ #
928
+ # @method is_function_var_arg(function_ty)
929
+ # @param [FFI::Pointer(TypeRef)] function_ty
930
+ # @return [Integer]
931
+ # @scope class
932
+ attach_function :is_function_var_arg, :LLVMIsFunctionVarArg, [:pointer], :int
933
+
934
+ # (Not documented)
935
+ #
936
+ # @method get_return_type(function_ty)
937
+ # @param [FFI::Pointer(TypeRef)] function_ty
938
+ # @return [FFI::Pointer(TypeRef)]
939
+ # @scope class
940
+ attach_function :get_return_type, :LLVMGetReturnType, [:pointer], :pointer
941
+
942
+ # (Not documented)
943
+ #
944
+ # @method count_param_types(function_ty)
945
+ # @param [FFI::Pointer(TypeRef)] function_ty
946
+ # @return [Integer]
947
+ # @scope class
948
+ attach_function :count_param_types, :LLVMCountParamTypes, [:pointer], :uint
949
+
950
+ # (Not documented)
951
+ #
952
+ # @method get_param_types(function_ty, dest)
953
+ # @param [FFI::Pointer(TypeRef)] function_ty
954
+ # @param [FFI::Pointer(*TypeRef)] dest
955
+ # @return [nil]
956
+ # @scope class
957
+ attach_function :get_param_types, :LLVMGetParamTypes, [:pointer, :pointer], :void
958
+
959
+ # Operations on struct types
960
+ #
961
+ # @method struct_type_in_context(c, element_types, element_count, packed)
962
+ # @param [FFI::Pointer(ContextRef)] c
963
+ # @param [FFI::Pointer(*TypeRef)] element_types
964
+ # @param [Integer] element_count
965
+ # @param [Integer] packed
966
+ # @return [FFI::Pointer(TypeRef)]
967
+ # @scope class
968
+ attach_function :struct_type_in_context, :LLVMStructTypeInContext, [:pointer, :pointer, :uint, :int], :pointer
969
+
970
+ # (Not documented)
971
+ #
972
+ # @method struct_type(element_types, element_count, packed)
973
+ # @param [FFI::Pointer(*TypeRef)] element_types
974
+ # @param [Integer] element_count
975
+ # @param [Integer] packed
976
+ # @return [FFI::Pointer(TypeRef)]
977
+ # @scope class
978
+ attach_function :struct_type, :LLVMStructType, [:pointer, :uint, :int], :pointer
979
+
980
+ # (Not documented)
981
+ #
982
+ # @method struct_create_named(c, name)
983
+ # @param [FFI::Pointer(ContextRef)] c
984
+ # @param [String] name
985
+ # @return [FFI::Pointer(TypeRef)]
986
+ # @scope class
987
+ attach_function :struct_create_named, :LLVMStructCreateNamed, [:pointer, :string], :pointer
988
+
989
+ # (Not documented)
990
+ #
991
+ # @method get_struct_name(ty)
992
+ # @param [FFI::Pointer(TypeRef)] ty
993
+ # @return [String]
994
+ # @scope class
995
+ attach_function :get_struct_name, :LLVMGetStructName, [:pointer], :string
996
+
997
+ # (Not documented)
998
+ #
999
+ # @method struct_set_body(struct_ty, element_types, element_count, packed)
1000
+ # @param [FFI::Pointer(TypeRef)] struct_ty
1001
+ # @param [FFI::Pointer(*TypeRef)] element_types
1002
+ # @param [Integer] element_count
1003
+ # @param [Integer] packed
1004
+ # @return [nil]
1005
+ # @scope class
1006
+ attach_function :struct_set_body, :LLVMStructSetBody, [:pointer, :pointer, :uint, :int], :void
1007
+
1008
+ # (Not documented)
1009
+ #
1010
+ # @method count_struct_element_types(struct_ty)
1011
+ # @param [FFI::Pointer(TypeRef)] struct_ty
1012
+ # @return [Integer]
1013
+ # @scope class
1014
+ attach_function :count_struct_element_types, :LLVMCountStructElementTypes, [:pointer], :uint
1015
+
1016
+ # (Not documented)
1017
+ #
1018
+ # @method get_struct_element_types(struct_ty, dest)
1019
+ # @param [FFI::Pointer(TypeRef)] struct_ty
1020
+ # @param [FFI::Pointer(*TypeRef)] dest
1021
+ # @return [nil]
1022
+ # @scope class
1023
+ attach_function :get_struct_element_types, :LLVMGetStructElementTypes, [:pointer, :pointer], :void
1024
+
1025
+ # (Not documented)
1026
+ #
1027
+ # @method is_packed_struct(struct_ty)
1028
+ # @param [FFI::Pointer(TypeRef)] struct_ty
1029
+ # @return [Integer]
1030
+ # @scope class
1031
+ attach_function :is_packed_struct, :LLVMIsPackedStruct, [:pointer], :int
1032
+
1033
+ # (Not documented)
1034
+ #
1035
+ # @method is_opaque_struct(struct_ty)
1036
+ # @param [FFI::Pointer(TypeRef)] struct_ty
1037
+ # @return [Integer]
1038
+ # @scope class
1039
+ attach_function :is_opaque_struct, :LLVMIsOpaqueStruct, [:pointer], :int
1040
+
1041
+ # (Not documented)
1042
+ #
1043
+ # @method get_type_by_name(m, name)
1044
+ # @param [FFI::Pointer(ModuleRef)] m
1045
+ # @param [String] name
1046
+ # @return [FFI::Pointer(TypeRef)]
1047
+ # @scope class
1048
+ attach_function :get_type_by_name, :LLVMGetTypeByName, [:pointer, :string], :pointer
1049
+
1050
+ # Operations on array, pointer, and vector types (sequence types)
1051
+ #
1052
+ # @method array_type(element_type, element_count)
1053
+ # @param [FFI::Pointer(TypeRef)] element_type
1054
+ # @param [Integer] element_count
1055
+ # @return [FFI::Pointer(TypeRef)]
1056
+ # @scope class
1057
+ attach_function :array_type, :LLVMArrayType, [:pointer, :uint], :pointer
1058
+
1059
+ # (Not documented)
1060
+ #
1061
+ # @method pointer_type(element_type, address_space)
1062
+ # @param [FFI::Pointer(TypeRef)] element_type
1063
+ # @param [Integer] address_space
1064
+ # @return [FFI::Pointer(TypeRef)]
1065
+ # @scope class
1066
+ attach_function :pointer_type, :LLVMPointerType, [:pointer, :uint], :pointer
1067
+
1068
+ # (Not documented)
1069
+ #
1070
+ # @method vector_type(element_type, element_count)
1071
+ # @param [FFI::Pointer(TypeRef)] element_type
1072
+ # @param [Integer] element_count
1073
+ # @return [FFI::Pointer(TypeRef)]
1074
+ # @scope class
1075
+ attach_function :vector_type, :LLVMVectorType, [:pointer, :uint], :pointer
1076
+
1077
+ # (Not documented)
1078
+ #
1079
+ # @method get_element_type(ty)
1080
+ # @param [FFI::Pointer(TypeRef)] ty
1081
+ # @return [FFI::Pointer(TypeRef)]
1082
+ # @scope class
1083
+ attach_function :get_element_type, :LLVMGetElementType, [:pointer], :pointer
1084
+
1085
+ # (Not documented)
1086
+ #
1087
+ # @method get_array_length(array_ty)
1088
+ # @param [FFI::Pointer(TypeRef)] array_ty
1089
+ # @return [Integer]
1090
+ # @scope class
1091
+ attach_function :get_array_length, :LLVMGetArrayLength, [:pointer], :uint
1092
+
1093
+ # (Not documented)
1094
+ #
1095
+ # @method get_pointer_address_space(pointer_ty)
1096
+ # @param [FFI::Pointer(TypeRef)] pointer_ty
1097
+ # @return [Integer]
1098
+ # @scope class
1099
+ attach_function :get_pointer_address_space, :LLVMGetPointerAddressSpace, [:pointer], :uint
1100
+
1101
+ # (Not documented)
1102
+ #
1103
+ # @method get_vector_size(vector_ty)
1104
+ # @param [FFI::Pointer(TypeRef)] vector_ty
1105
+ # @return [Integer]
1106
+ # @scope class
1107
+ attach_function :get_vector_size, :LLVMGetVectorSize, [:pointer], :uint
1108
+
1109
+ # Operations on other types
1110
+ #
1111
+ # @method void_type_in_context(c)
1112
+ # @param [FFI::Pointer(ContextRef)] c
1113
+ # @return [FFI::Pointer(TypeRef)]
1114
+ # @scope class
1115
+ attach_function :void_type_in_context, :LLVMVoidTypeInContext, [:pointer], :pointer
1116
+
1117
+ # (Not documented)
1118
+ #
1119
+ # @method label_type_in_context(c)
1120
+ # @param [FFI::Pointer(ContextRef)] c
1121
+ # @return [FFI::Pointer(TypeRef)]
1122
+ # @scope class
1123
+ attach_function :label_type_in_context, :LLVMLabelTypeInContext, [:pointer], :pointer
1124
+
1125
+ # (Not documented)
1126
+ #
1127
+ # @method x86mmx_type_in_context(c)
1128
+ # @param [FFI::Pointer(ContextRef)] c
1129
+ # @return [FFI::Pointer(TypeRef)]
1130
+ # @scope class
1131
+ attach_function :x86mmx_type_in_context, :LLVMX86MMXTypeInContext, [:pointer], :pointer
1132
+
1133
+ # (Not documented)
1134
+ #
1135
+ # @method void_type()
1136
+ # @return [FFI::Pointer(TypeRef)]
1137
+ # @scope class
1138
+ attach_function :void_type, :LLVMVoidType, [], :pointer
1139
+
1140
+ # (Not documented)
1141
+ #
1142
+ # @method label_type()
1143
+ # @return [FFI::Pointer(TypeRef)]
1144
+ # @scope class
1145
+ attach_function :label_type, :LLVMLabelType, [], :pointer
1146
+
1147
+ # (Not documented)
1148
+ #
1149
+ # @method x86mmx_type()
1150
+ # @return [FFI::Pointer(TypeRef)]
1151
+ # @scope class
1152
+ attach_function :x86mmx_type, :LLVMX86MMXType, [], :pointer
1153
+
1154
+ # Operations on all values
1155
+ #
1156
+ # @method type_of(val)
1157
+ # @param [FFI::Pointer(ValueRef)] val
1158
+ # @return [FFI::Pointer(TypeRef)]
1159
+ # @scope class
1160
+ attach_function :type_of, :LLVMTypeOf, [:pointer], :pointer
1161
+
1162
+ # (Not documented)
1163
+ #
1164
+ # @method get_value_name(val)
1165
+ # @param [FFI::Pointer(ValueRef)] val
1166
+ # @return [String]
1167
+ # @scope class
1168
+ attach_function :get_value_name, :LLVMGetValueName, [:pointer], :string
1169
+
1170
+ # (Not documented)
1171
+ #
1172
+ # @method set_value_name(val, name)
1173
+ # @param [FFI::Pointer(ValueRef)] val
1174
+ # @param [String] name
1175
+ # @return [nil]
1176
+ # @scope class
1177
+ attach_function :set_value_name, :LLVMSetValueName, [:pointer, :string], :void
1178
+
1179
+ # (Not documented)
1180
+ #
1181
+ # @method dump_value(val)
1182
+ # @param [FFI::Pointer(ValueRef)] val
1183
+ # @return [nil]
1184
+ # @scope class
1185
+ attach_function :dump_value, :LLVMDumpValue, [:pointer], :void
1186
+
1187
+ # (Not documented)
1188
+ #
1189
+ # @method replace_all_uses_with(old_val, new_val)
1190
+ # @param [FFI::Pointer(ValueRef)] old_val
1191
+ # @param [FFI::Pointer(ValueRef)] new_val
1192
+ # @return [nil]
1193
+ # @scope class
1194
+ attach_function :replace_all_uses_with, :LLVMReplaceAllUsesWith, [:pointer, :pointer], :void
1195
+
1196
+ # (Not documented)
1197
+ #
1198
+ # @method has_metadata(val)
1199
+ # @param [FFI::Pointer(ValueRef)] val
1200
+ # @return [Integer]
1201
+ # @scope class
1202
+ attach_function :has_metadata, :LLVMHasMetadata, [:pointer], :int
1203
+
1204
+ # (Not documented)
1205
+ #
1206
+ # @method get_metadata(val, kind_id)
1207
+ # @param [FFI::Pointer(ValueRef)] val
1208
+ # @param [Integer] kind_id
1209
+ # @return [FFI::Pointer(ValueRef)]
1210
+ # @scope class
1211
+ attach_function :get_metadata, :LLVMGetMetadata, [:pointer, :uint], :pointer
1212
+
1213
+ # (Not documented)
1214
+ #
1215
+ # @method set_metadata(val, kind_id, node)
1216
+ # @param [FFI::Pointer(ValueRef)] val
1217
+ # @param [Integer] kind_id
1218
+ # @param [FFI::Pointer(ValueRef)] node
1219
+ # @return [nil]
1220
+ # @scope class
1221
+ attach_function :set_metadata, :LLVMSetMetadata, [:pointer, :uint, :pointer], :void
1222
+
1223
+ # (Not documented)
1224
+ #
1225
+ # @method is_a_argument(val)
1226
+ # @param [FFI::Pointer(ValueRef)] val
1227
+ # @return [FFI::Pointer(ValueRef)]
1228
+ # @scope class
1229
+ attach_function :is_a_argument, :LLVMIsAArgument, [:pointer], :pointer
1230
+
1231
+ # (Not documented)
1232
+ #
1233
+ # @method is_a_basic_block(val)
1234
+ # @param [FFI::Pointer(ValueRef)] val
1235
+ # @return [FFI::Pointer(ValueRef)]
1236
+ # @scope class
1237
+ attach_function :is_a_basic_block, :LLVMIsABasicBlock, [:pointer], :pointer
1238
+
1239
+ # (Not documented)
1240
+ #
1241
+ # @method is_a_inline_asm(val)
1242
+ # @param [FFI::Pointer(ValueRef)] val
1243
+ # @return [FFI::Pointer(ValueRef)]
1244
+ # @scope class
1245
+ attach_function :is_a_inline_asm, :LLVMIsAInlineAsm, [:pointer], :pointer
1246
+
1247
+ # (Not documented)
1248
+ #
1249
+ # @method is_amd_node(val)
1250
+ # @param [FFI::Pointer(ValueRef)] val
1251
+ # @return [FFI::Pointer(ValueRef)]
1252
+ # @scope class
1253
+ attach_function :is_amd_node, :LLVMIsAMDNode, [:pointer], :pointer
1254
+
1255
+ # (Not documented)
1256
+ #
1257
+ # @method is_amd_string(val)
1258
+ # @param [FFI::Pointer(ValueRef)] val
1259
+ # @return [FFI::Pointer(ValueRef)]
1260
+ # @scope class
1261
+ attach_function :is_amd_string, :LLVMIsAMDString, [:pointer], :pointer
1262
+
1263
+ # (Not documented)
1264
+ #
1265
+ # @method is_a_user(val)
1266
+ # @param [FFI::Pointer(ValueRef)] val
1267
+ # @return [FFI::Pointer(ValueRef)]
1268
+ # @scope class
1269
+ attach_function :is_a_user, :LLVMIsAUser, [:pointer], :pointer
1270
+
1271
+ # (Not documented)
1272
+ #
1273
+ # @method is_a_constant(val)
1274
+ # @param [FFI::Pointer(ValueRef)] val
1275
+ # @return [FFI::Pointer(ValueRef)]
1276
+ # @scope class
1277
+ attach_function :is_a_constant, :LLVMIsAConstant, [:pointer], :pointer
1278
+
1279
+ # (Not documented)
1280
+ #
1281
+ # @method is_a_block_address(val)
1282
+ # @param [FFI::Pointer(ValueRef)] val
1283
+ # @return [FFI::Pointer(ValueRef)]
1284
+ # @scope class
1285
+ attach_function :is_a_block_address, :LLVMIsABlockAddress, [:pointer], :pointer
1286
+
1287
+ # (Not documented)
1288
+ #
1289
+ # @method is_a_constant_aggregate_zero(val)
1290
+ # @param [FFI::Pointer(ValueRef)] val
1291
+ # @return [FFI::Pointer(ValueRef)]
1292
+ # @scope class
1293
+ attach_function :is_a_constant_aggregate_zero, :LLVMIsAConstantAggregateZero, [:pointer], :pointer
1294
+
1295
+ # (Not documented)
1296
+ #
1297
+ # @method is_a_constant_array(val)
1298
+ # @param [FFI::Pointer(ValueRef)] val
1299
+ # @return [FFI::Pointer(ValueRef)]
1300
+ # @scope class
1301
+ attach_function :is_a_constant_array, :LLVMIsAConstantArray, [:pointer], :pointer
1302
+
1303
+ # (Not documented)
1304
+ #
1305
+ # @method is_a_constant_expr(val)
1306
+ # @param [FFI::Pointer(ValueRef)] val
1307
+ # @return [FFI::Pointer(ValueRef)]
1308
+ # @scope class
1309
+ attach_function :is_a_constant_expr, :LLVMIsAConstantExpr, [:pointer], :pointer
1310
+
1311
+ # (Not documented)
1312
+ #
1313
+ # @method is_a_constant_fp(val)
1314
+ # @param [FFI::Pointer(ValueRef)] val
1315
+ # @return [FFI::Pointer(ValueRef)]
1316
+ # @scope class
1317
+ attach_function :is_a_constant_fp, :LLVMIsAConstantFP, [:pointer], :pointer
1318
+
1319
+ # (Not documented)
1320
+ #
1321
+ # @method is_a_constant_int(val)
1322
+ # @param [FFI::Pointer(ValueRef)] val
1323
+ # @return [FFI::Pointer(ValueRef)]
1324
+ # @scope class
1325
+ attach_function :is_a_constant_int, :LLVMIsAConstantInt, [:pointer], :pointer
1326
+
1327
+ # (Not documented)
1328
+ #
1329
+ # @method is_a_constant_pointer_null(val)
1330
+ # @param [FFI::Pointer(ValueRef)] val
1331
+ # @return [FFI::Pointer(ValueRef)]
1332
+ # @scope class
1333
+ attach_function :is_a_constant_pointer_null, :LLVMIsAConstantPointerNull, [:pointer], :pointer
1334
+
1335
+ # (Not documented)
1336
+ #
1337
+ # @method is_a_constant_struct(val)
1338
+ # @param [FFI::Pointer(ValueRef)] val
1339
+ # @return [FFI::Pointer(ValueRef)]
1340
+ # @scope class
1341
+ attach_function :is_a_constant_struct, :LLVMIsAConstantStruct, [:pointer], :pointer
1342
+
1343
+ # (Not documented)
1344
+ #
1345
+ # @method is_a_constant_vector(val)
1346
+ # @param [FFI::Pointer(ValueRef)] val
1347
+ # @return [FFI::Pointer(ValueRef)]
1348
+ # @scope class
1349
+ attach_function :is_a_constant_vector, :LLVMIsAConstantVector, [:pointer], :pointer
1350
+
1351
+ # (Not documented)
1352
+ #
1353
+ # @method is_a_global_value(val)
1354
+ # @param [FFI::Pointer(ValueRef)] val
1355
+ # @return [FFI::Pointer(ValueRef)]
1356
+ # @scope class
1357
+ attach_function :is_a_global_value, :LLVMIsAGlobalValue, [:pointer], :pointer
1358
+
1359
+ # (Not documented)
1360
+ #
1361
+ # @method is_a_function(val)
1362
+ # @param [FFI::Pointer(ValueRef)] val
1363
+ # @return [FFI::Pointer(ValueRef)]
1364
+ # @scope class
1365
+ attach_function :is_a_function, :LLVMIsAFunction, [:pointer], :pointer
1366
+
1367
+ # (Not documented)
1368
+ #
1369
+ # @method is_a_global_alias(val)
1370
+ # @param [FFI::Pointer(ValueRef)] val
1371
+ # @return [FFI::Pointer(ValueRef)]
1372
+ # @scope class
1373
+ attach_function :is_a_global_alias, :LLVMIsAGlobalAlias, [:pointer], :pointer
1374
+
1375
+ # (Not documented)
1376
+ #
1377
+ # @method is_a_global_variable(val)
1378
+ # @param [FFI::Pointer(ValueRef)] val
1379
+ # @return [FFI::Pointer(ValueRef)]
1380
+ # @scope class
1381
+ attach_function :is_a_global_variable, :LLVMIsAGlobalVariable, [:pointer], :pointer
1382
+
1383
+ # (Not documented)
1384
+ #
1385
+ # @method is_a_undef_value(val)
1386
+ # @param [FFI::Pointer(ValueRef)] val
1387
+ # @return [FFI::Pointer(ValueRef)]
1388
+ # @scope class
1389
+ attach_function :is_a_undef_value, :LLVMIsAUndefValue, [:pointer], :pointer
1390
+
1391
+ # (Not documented)
1392
+ #
1393
+ # @method is_a_instruction(val)
1394
+ # @param [FFI::Pointer(ValueRef)] val
1395
+ # @return [FFI::Pointer(ValueRef)]
1396
+ # @scope class
1397
+ attach_function :is_a_instruction, :LLVMIsAInstruction, [:pointer], :pointer
1398
+
1399
+ # (Not documented)
1400
+ #
1401
+ # @method is_a_binary_operator(val)
1402
+ # @param [FFI::Pointer(ValueRef)] val
1403
+ # @return [FFI::Pointer(ValueRef)]
1404
+ # @scope class
1405
+ attach_function :is_a_binary_operator, :LLVMIsABinaryOperator, [:pointer], :pointer
1406
+
1407
+ # (Not documented)
1408
+ #
1409
+ # @method is_a_call_inst(val)
1410
+ # @param [FFI::Pointer(ValueRef)] val
1411
+ # @return [FFI::Pointer(ValueRef)]
1412
+ # @scope class
1413
+ attach_function :is_a_call_inst, :LLVMIsACallInst, [:pointer], :pointer
1414
+
1415
+ # (Not documented)
1416
+ #
1417
+ # @method is_a_intrinsic_inst(val)
1418
+ # @param [FFI::Pointer(ValueRef)] val
1419
+ # @return [FFI::Pointer(ValueRef)]
1420
+ # @scope class
1421
+ attach_function :is_a_intrinsic_inst, :LLVMIsAIntrinsicInst, [:pointer], :pointer
1422
+
1423
+ # (Not documented)
1424
+ #
1425
+ # @method is_a_dbg_info_intrinsic(val)
1426
+ # @param [FFI::Pointer(ValueRef)] val
1427
+ # @return [FFI::Pointer(ValueRef)]
1428
+ # @scope class
1429
+ attach_function :is_a_dbg_info_intrinsic, :LLVMIsADbgInfoIntrinsic, [:pointer], :pointer
1430
+
1431
+ # (Not documented)
1432
+ #
1433
+ # @method is_a_dbg_declare_inst(val)
1434
+ # @param [FFI::Pointer(ValueRef)] val
1435
+ # @return [FFI::Pointer(ValueRef)]
1436
+ # @scope class
1437
+ attach_function :is_a_dbg_declare_inst, :LLVMIsADbgDeclareInst, [:pointer], :pointer
1438
+
1439
+ # (Not documented)
1440
+ #
1441
+ # @method is_aeh_exception_inst(val)
1442
+ # @param [FFI::Pointer(ValueRef)] val
1443
+ # @return [FFI::Pointer(ValueRef)]
1444
+ # @scope class
1445
+ attach_function :is_aeh_exception_inst, :LLVMIsAEHExceptionInst, [:pointer], :pointer
1446
+
1447
+ # (Not documented)
1448
+ #
1449
+ # @method is_aeh_selector_inst(val)
1450
+ # @param [FFI::Pointer(ValueRef)] val
1451
+ # @return [FFI::Pointer(ValueRef)]
1452
+ # @scope class
1453
+ attach_function :is_aeh_selector_inst, :LLVMIsAEHSelectorInst, [:pointer], :pointer
1454
+
1455
+ # (Not documented)
1456
+ #
1457
+ # @method is_a_mem_intrinsic(val)
1458
+ # @param [FFI::Pointer(ValueRef)] val
1459
+ # @return [FFI::Pointer(ValueRef)]
1460
+ # @scope class
1461
+ attach_function :is_a_mem_intrinsic, :LLVMIsAMemIntrinsic, [:pointer], :pointer
1462
+
1463
+ # (Not documented)
1464
+ #
1465
+ # @method is_a_mem_cpy_inst(val)
1466
+ # @param [FFI::Pointer(ValueRef)] val
1467
+ # @return [FFI::Pointer(ValueRef)]
1468
+ # @scope class
1469
+ attach_function :is_a_mem_cpy_inst, :LLVMIsAMemCpyInst, [:pointer], :pointer
1470
+
1471
+ # (Not documented)
1472
+ #
1473
+ # @method is_a_mem_move_inst(val)
1474
+ # @param [FFI::Pointer(ValueRef)] val
1475
+ # @return [FFI::Pointer(ValueRef)]
1476
+ # @scope class
1477
+ attach_function :is_a_mem_move_inst, :LLVMIsAMemMoveInst, [:pointer], :pointer
1478
+
1479
+ # (Not documented)
1480
+ #
1481
+ # @method is_a_mem_set_inst(val)
1482
+ # @param [FFI::Pointer(ValueRef)] val
1483
+ # @return [FFI::Pointer(ValueRef)]
1484
+ # @scope class
1485
+ attach_function :is_a_mem_set_inst, :LLVMIsAMemSetInst, [:pointer], :pointer
1486
+
1487
+ # (Not documented)
1488
+ #
1489
+ # @method is_a_cmp_inst(val)
1490
+ # @param [FFI::Pointer(ValueRef)] val
1491
+ # @return [FFI::Pointer(ValueRef)]
1492
+ # @scope class
1493
+ attach_function :is_a_cmp_inst, :LLVMIsACmpInst, [:pointer], :pointer
1494
+
1495
+ # (Not documented)
1496
+ #
1497
+ # @method is_af_cmp_inst(val)
1498
+ # @param [FFI::Pointer(ValueRef)] val
1499
+ # @return [FFI::Pointer(ValueRef)]
1500
+ # @scope class
1501
+ attach_function :is_af_cmp_inst, :LLVMIsAFCmpInst, [:pointer], :pointer
1502
+
1503
+ # (Not documented)
1504
+ #
1505
+ # @method is_ai_cmp_inst(val)
1506
+ # @param [FFI::Pointer(ValueRef)] val
1507
+ # @return [FFI::Pointer(ValueRef)]
1508
+ # @scope class
1509
+ attach_function :is_ai_cmp_inst, :LLVMIsAICmpInst, [:pointer], :pointer
1510
+
1511
+ # (Not documented)
1512
+ #
1513
+ # @method is_a_extract_element_inst(val)
1514
+ # @param [FFI::Pointer(ValueRef)] val
1515
+ # @return [FFI::Pointer(ValueRef)]
1516
+ # @scope class
1517
+ attach_function :is_a_extract_element_inst, :LLVMIsAExtractElementInst, [:pointer], :pointer
1518
+
1519
+ # (Not documented)
1520
+ #
1521
+ # @method is_a_get_element_ptr_inst(val)
1522
+ # @param [FFI::Pointer(ValueRef)] val
1523
+ # @return [FFI::Pointer(ValueRef)]
1524
+ # @scope class
1525
+ attach_function :is_a_get_element_ptr_inst, :LLVMIsAGetElementPtrInst, [:pointer], :pointer
1526
+
1527
+ # (Not documented)
1528
+ #
1529
+ # @method is_a_insert_element_inst(val)
1530
+ # @param [FFI::Pointer(ValueRef)] val
1531
+ # @return [FFI::Pointer(ValueRef)]
1532
+ # @scope class
1533
+ attach_function :is_a_insert_element_inst, :LLVMIsAInsertElementInst, [:pointer], :pointer
1534
+
1535
+ # (Not documented)
1536
+ #
1537
+ # @method is_a_insert_value_inst(val)
1538
+ # @param [FFI::Pointer(ValueRef)] val
1539
+ # @return [FFI::Pointer(ValueRef)]
1540
+ # @scope class
1541
+ attach_function :is_a_insert_value_inst, :LLVMIsAInsertValueInst, [:pointer], :pointer
1542
+
1543
+ # (Not documented)
1544
+ #
1545
+ # @method is_a_landing_pad_inst(val)
1546
+ # @param [FFI::Pointer(ValueRef)] val
1547
+ # @return [FFI::Pointer(ValueRef)]
1548
+ # @scope class
1549
+ attach_function :is_a_landing_pad_inst, :LLVMIsALandingPadInst, [:pointer], :pointer
1550
+
1551
+ # (Not documented)
1552
+ #
1553
+ # @method is_aphi_node(val)
1554
+ # @param [FFI::Pointer(ValueRef)] val
1555
+ # @return [FFI::Pointer(ValueRef)]
1556
+ # @scope class
1557
+ attach_function :is_aphi_node, :LLVMIsAPHINode, [:pointer], :pointer
1558
+
1559
+ # (Not documented)
1560
+ #
1561
+ # @method is_a_select_inst(val)
1562
+ # @param [FFI::Pointer(ValueRef)] val
1563
+ # @return [FFI::Pointer(ValueRef)]
1564
+ # @scope class
1565
+ attach_function :is_a_select_inst, :LLVMIsASelectInst, [:pointer], :pointer
1566
+
1567
+ # (Not documented)
1568
+ #
1569
+ # @method is_a_shuffle_vector_inst(val)
1570
+ # @param [FFI::Pointer(ValueRef)] val
1571
+ # @return [FFI::Pointer(ValueRef)]
1572
+ # @scope class
1573
+ attach_function :is_a_shuffle_vector_inst, :LLVMIsAShuffleVectorInst, [:pointer], :pointer
1574
+
1575
+ # (Not documented)
1576
+ #
1577
+ # @method is_a_store_inst(val)
1578
+ # @param [FFI::Pointer(ValueRef)] val
1579
+ # @return [FFI::Pointer(ValueRef)]
1580
+ # @scope class
1581
+ attach_function :is_a_store_inst, :LLVMIsAStoreInst, [:pointer], :pointer
1582
+
1583
+ # (Not documented)
1584
+ #
1585
+ # @method is_a_terminator_inst(val)
1586
+ # @param [FFI::Pointer(ValueRef)] val
1587
+ # @return [FFI::Pointer(ValueRef)]
1588
+ # @scope class
1589
+ attach_function :is_a_terminator_inst, :LLVMIsATerminatorInst, [:pointer], :pointer
1590
+
1591
+ # (Not documented)
1592
+ #
1593
+ # @method is_a_branch_inst(val)
1594
+ # @param [FFI::Pointer(ValueRef)] val
1595
+ # @return [FFI::Pointer(ValueRef)]
1596
+ # @scope class
1597
+ attach_function :is_a_branch_inst, :LLVMIsABranchInst, [:pointer], :pointer
1598
+
1599
+ # (Not documented)
1600
+ #
1601
+ # @method is_a_indirect_br_inst(val)
1602
+ # @param [FFI::Pointer(ValueRef)] val
1603
+ # @return [FFI::Pointer(ValueRef)]
1604
+ # @scope class
1605
+ attach_function :is_a_indirect_br_inst, :LLVMIsAIndirectBrInst, [:pointer], :pointer
1606
+
1607
+ # (Not documented)
1608
+ #
1609
+ # @method is_a_invoke_inst(val)
1610
+ # @param [FFI::Pointer(ValueRef)] val
1611
+ # @return [FFI::Pointer(ValueRef)]
1612
+ # @scope class
1613
+ attach_function :is_a_invoke_inst, :LLVMIsAInvokeInst, [:pointer], :pointer
1614
+
1615
+ # (Not documented)
1616
+ #
1617
+ # @method is_a_return_inst(val)
1618
+ # @param [FFI::Pointer(ValueRef)] val
1619
+ # @return [FFI::Pointer(ValueRef)]
1620
+ # @scope class
1621
+ attach_function :is_a_return_inst, :LLVMIsAReturnInst, [:pointer], :pointer
1622
+
1623
+ # (Not documented)
1624
+ #
1625
+ # @method is_a_switch_inst(val)
1626
+ # @param [FFI::Pointer(ValueRef)] val
1627
+ # @return [FFI::Pointer(ValueRef)]
1628
+ # @scope class
1629
+ attach_function :is_a_switch_inst, :LLVMIsASwitchInst, [:pointer], :pointer
1630
+
1631
+ # (Not documented)
1632
+ #
1633
+ # @method is_a_unreachable_inst(val)
1634
+ # @param [FFI::Pointer(ValueRef)] val
1635
+ # @return [FFI::Pointer(ValueRef)]
1636
+ # @scope class
1637
+ attach_function :is_a_unreachable_inst, :LLVMIsAUnreachableInst, [:pointer], :pointer
1638
+
1639
+ # (Not documented)
1640
+ #
1641
+ # @method is_a_resume_inst(val)
1642
+ # @param [FFI::Pointer(ValueRef)] val
1643
+ # @return [FFI::Pointer(ValueRef)]
1644
+ # @scope class
1645
+ attach_function :is_a_resume_inst, :LLVMIsAResumeInst, [:pointer], :pointer
1646
+
1647
+ # (Not documented)
1648
+ #
1649
+ # @method is_a_unary_instruction(val)
1650
+ # @param [FFI::Pointer(ValueRef)] val
1651
+ # @return [FFI::Pointer(ValueRef)]
1652
+ # @scope class
1653
+ attach_function :is_a_unary_instruction, :LLVMIsAUnaryInstruction, [:pointer], :pointer
1654
+
1655
+ # (Not documented)
1656
+ #
1657
+ # @method is_a_alloca_inst(val)
1658
+ # @param [FFI::Pointer(ValueRef)] val
1659
+ # @return [FFI::Pointer(ValueRef)]
1660
+ # @scope class
1661
+ attach_function :is_a_alloca_inst, :LLVMIsAAllocaInst, [:pointer], :pointer
1662
+
1663
+ # (Not documented)
1664
+ #
1665
+ # @method is_a_cast_inst(val)
1666
+ # @param [FFI::Pointer(ValueRef)] val
1667
+ # @return [FFI::Pointer(ValueRef)]
1668
+ # @scope class
1669
+ attach_function :is_a_cast_inst, :LLVMIsACastInst, [:pointer], :pointer
1670
+
1671
+ # (Not documented)
1672
+ #
1673
+ # @method is_a_bit_cast_inst(val)
1674
+ # @param [FFI::Pointer(ValueRef)] val
1675
+ # @return [FFI::Pointer(ValueRef)]
1676
+ # @scope class
1677
+ attach_function :is_a_bit_cast_inst, :LLVMIsABitCastInst, [:pointer], :pointer
1678
+
1679
+ # (Not documented)
1680
+ #
1681
+ # @method is_afp_ext_inst(val)
1682
+ # @param [FFI::Pointer(ValueRef)] val
1683
+ # @return [FFI::Pointer(ValueRef)]
1684
+ # @scope class
1685
+ attach_function :is_afp_ext_inst, :LLVMIsAFPExtInst, [:pointer], :pointer
1686
+
1687
+ # (Not documented)
1688
+ #
1689
+ # @method is_afp_to_si_inst(val)
1690
+ # @param [FFI::Pointer(ValueRef)] val
1691
+ # @return [FFI::Pointer(ValueRef)]
1692
+ # @scope class
1693
+ attach_function :is_afp_to_si_inst, :LLVMIsAFPToSIInst, [:pointer], :pointer
1694
+
1695
+ # (Not documented)
1696
+ #
1697
+ # @method is_afp_to_ui_inst(val)
1698
+ # @param [FFI::Pointer(ValueRef)] val
1699
+ # @return [FFI::Pointer(ValueRef)]
1700
+ # @scope class
1701
+ attach_function :is_afp_to_ui_inst, :LLVMIsAFPToUIInst, [:pointer], :pointer
1702
+
1703
+ # (Not documented)
1704
+ #
1705
+ # @method is_afp_trunc_inst(val)
1706
+ # @param [FFI::Pointer(ValueRef)] val
1707
+ # @return [FFI::Pointer(ValueRef)]
1708
+ # @scope class
1709
+ attach_function :is_afp_trunc_inst, :LLVMIsAFPTruncInst, [:pointer], :pointer
1710
+
1711
+ # (Not documented)
1712
+ #
1713
+ # @method is_a_int_to_ptr_inst(val)
1714
+ # @param [FFI::Pointer(ValueRef)] val
1715
+ # @return [FFI::Pointer(ValueRef)]
1716
+ # @scope class
1717
+ attach_function :is_a_int_to_ptr_inst, :LLVMIsAIntToPtrInst, [:pointer], :pointer
1718
+
1719
+ # (Not documented)
1720
+ #
1721
+ # @method is_a_ptr_to_int_inst(val)
1722
+ # @param [FFI::Pointer(ValueRef)] val
1723
+ # @return [FFI::Pointer(ValueRef)]
1724
+ # @scope class
1725
+ attach_function :is_a_ptr_to_int_inst, :LLVMIsAPtrToIntInst, [:pointer], :pointer
1726
+
1727
+ # (Not documented)
1728
+ #
1729
+ # @method is_as_ext_inst(val)
1730
+ # @param [FFI::Pointer(ValueRef)] val
1731
+ # @return [FFI::Pointer(ValueRef)]
1732
+ # @scope class
1733
+ attach_function :is_as_ext_inst, :LLVMIsASExtInst, [:pointer], :pointer
1734
+
1735
+ # (Not documented)
1736
+ #
1737
+ # @method is_asi_to_fp_inst(val)
1738
+ # @param [FFI::Pointer(ValueRef)] val
1739
+ # @return [FFI::Pointer(ValueRef)]
1740
+ # @scope class
1741
+ attach_function :is_asi_to_fp_inst, :LLVMIsASIToFPInst, [:pointer], :pointer
1742
+
1743
+ # (Not documented)
1744
+ #
1745
+ # @method is_a_trunc_inst(val)
1746
+ # @param [FFI::Pointer(ValueRef)] val
1747
+ # @return [FFI::Pointer(ValueRef)]
1748
+ # @scope class
1749
+ attach_function :is_a_trunc_inst, :LLVMIsATruncInst, [:pointer], :pointer
1750
+
1751
+ # (Not documented)
1752
+ #
1753
+ # @method is_aui_to_fp_inst(val)
1754
+ # @param [FFI::Pointer(ValueRef)] val
1755
+ # @return [FFI::Pointer(ValueRef)]
1756
+ # @scope class
1757
+ attach_function :is_aui_to_fp_inst, :LLVMIsAUIToFPInst, [:pointer], :pointer
1758
+
1759
+ # (Not documented)
1760
+ #
1761
+ # @method is_az_ext_inst(val)
1762
+ # @param [FFI::Pointer(ValueRef)] val
1763
+ # @return [FFI::Pointer(ValueRef)]
1764
+ # @scope class
1765
+ attach_function :is_az_ext_inst, :LLVMIsAZExtInst, [:pointer], :pointer
1766
+
1767
+ # (Not documented)
1768
+ #
1769
+ # @method is_a_extract_value_inst(val)
1770
+ # @param [FFI::Pointer(ValueRef)] val
1771
+ # @return [FFI::Pointer(ValueRef)]
1772
+ # @scope class
1773
+ attach_function :is_a_extract_value_inst, :LLVMIsAExtractValueInst, [:pointer], :pointer
1774
+
1775
+ # (Not documented)
1776
+ #
1777
+ # @method is_a_load_inst(val)
1778
+ # @param [FFI::Pointer(ValueRef)] val
1779
+ # @return [FFI::Pointer(ValueRef)]
1780
+ # @scope class
1781
+ attach_function :is_a_load_inst, :LLVMIsALoadInst, [:pointer], :pointer
1782
+
1783
+ # (Not documented)
1784
+ #
1785
+ # @method is_ava_arg_inst(val)
1786
+ # @param [FFI::Pointer(ValueRef)] val
1787
+ # @return [FFI::Pointer(ValueRef)]
1788
+ # @scope class
1789
+ attach_function :is_ava_arg_inst, :LLVMIsAVAArgInst, [:pointer], :pointer
1790
+
1791
+ # Operations on Uses
1792
+ #
1793
+ # @method get_first_use(val)
1794
+ # @param [FFI::Pointer(ValueRef)] val
1795
+ # @return [FFI::Pointer(UseRef)]
1796
+ # @scope class
1797
+ attach_function :get_first_use, :LLVMGetFirstUse, [:pointer], :pointer
1798
+
1799
+ # (Not documented)
1800
+ #
1801
+ # @method get_next_use(u)
1802
+ # @param [FFI::Pointer(UseRef)] u
1803
+ # @return [FFI::Pointer(UseRef)]
1804
+ # @scope class
1805
+ attach_function :get_next_use, :LLVMGetNextUse, [:pointer], :pointer
1806
+
1807
+ # (Not documented)
1808
+ #
1809
+ # @method get_user(u)
1810
+ # @param [FFI::Pointer(UseRef)] u
1811
+ # @return [FFI::Pointer(ValueRef)]
1812
+ # @scope class
1813
+ attach_function :get_user, :LLVMGetUser, [:pointer], :pointer
1814
+
1815
+ # (Not documented)
1816
+ #
1817
+ # @method get_used_value(u)
1818
+ # @param [FFI::Pointer(UseRef)] u
1819
+ # @return [FFI::Pointer(ValueRef)]
1820
+ # @scope class
1821
+ attach_function :get_used_value, :LLVMGetUsedValue, [:pointer], :pointer
1822
+
1823
+ # Operations on Users
1824
+ #
1825
+ # @method get_operand(val, index)
1826
+ # @param [FFI::Pointer(ValueRef)] val
1827
+ # @param [Integer] index
1828
+ # @return [FFI::Pointer(ValueRef)]
1829
+ # @scope class
1830
+ attach_function :get_operand, :LLVMGetOperand, [:pointer, :uint], :pointer
1831
+
1832
+ # (Not documented)
1833
+ #
1834
+ # @method set_operand(user, index, val)
1835
+ # @param [FFI::Pointer(ValueRef)] user
1836
+ # @param [Integer] index
1837
+ # @param [FFI::Pointer(ValueRef)] val
1838
+ # @return [nil]
1839
+ # @scope class
1840
+ attach_function :set_operand, :LLVMSetOperand, [:pointer, :uint, :pointer], :void
1841
+
1842
+ # (Not documented)
1843
+ #
1844
+ # @method get_num_operands(val)
1845
+ # @param [FFI::Pointer(ValueRef)] val
1846
+ # @return [Integer]
1847
+ # @scope class
1848
+ attach_function :get_num_operands, :LLVMGetNumOperands, [:pointer], :int
1849
+
1850
+ # Operations on constants of any type
1851
+ #
1852
+ # @method const_null(ty)
1853
+ # @param [FFI::Pointer(TypeRef)] ty
1854
+ # @return [FFI::Pointer(ValueRef)]
1855
+ # @scope class
1856
+ attach_function :const_null, :LLVMConstNull, [:pointer], :pointer
1857
+
1858
+ # all zeroes
1859
+ #
1860
+ # @method const_all_ones(ty)
1861
+ # @param [FFI::Pointer(TypeRef)] ty
1862
+ # @return [FFI::Pointer(ValueRef)]
1863
+ # @scope class
1864
+ attach_function :const_all_ones, :LLVMConstAllOnes, [:pointer], :pointer
1865
+
1866
+ # only for int/vector
1867
+ #
1868
+ # @method get_undef(ty)
1869
+ # @param [FFI::Pointer(TypeRef)] ty
1870
+ # @return [FFI::Pointer(ValueRef)]
1871
+ # @scope class
1872
+ attach_function :get_undef, :LLVMGetUndef, [:pointer], :pointer
1873
+
1874
+ # (Not documented)
1875
+ #
1876
+ # @method is_constant(val)
1877
+ # @param [FFI::Pointer(ValueRef)] val
1878
+ # @return [Integer]
1879
+ # @scope class
1880
+ attach_function :is_constant, :LLVMIsConstant, [:pointer], :int
1881
+
1882
+ # (Not documented)
1883
+ #
1884
+ # @method is_null(val)
1885
+ # @param [FFI::Pointer(ValueRef)] val
1886
+ # @return [Integer]
1887
+ # @scope class
1888
+ attach_function :is_null, :LLVMIsNull, [:pointer], :int
1889
+
1890
+ # (Not documented)
1891
+ #
1892
+ # @method is_undef(val)
1893
+ # @param [FFI::Pointer(ValueRef)] val
1894
+ # @return [Integer]
1895
+ # @scope class
1896
+ attach_function :is_undef, :LLVMIsUndef, [:pointer], :int
1897
+
1898
+ # (Not documented)
1899
+ #
1900
+ # @method const_pointer_null(ty)
1901
+ # @param [FFI::Pointer(TypeRef)] ty
1902
+ # @return [FFI::Pointer(ValueRef)]
1903
+ # @scope class
1904
+ attach_function :const_pointer_null, :LLVMConstPointerNull, [:pointer], :pointer
1905
+
1906
+ # Operations on metadata
1907
+ #
1908
+ # @method md_string_in_context(c, str, s_len)
1909
+ # @param [FFI::Pointer(ContextRef)] c
1910
+ # @param [String] str
1911
+ # @param [Integer] s_len
1912
+ # @return [FFI::Pointer(ValueRef)]
1913
+ # @scope class
1914
+ attach_function :md_string_in_context, :LLVMMDStringInContext, [:pointer, :string, :uint], :pointer
1915
+
1916
+ # (Not documented)
1917
+ #
1918
+ # @method md_string(str, s_len)
1919
+ # @param [String] str
1920
+ # @param [Integer] s_len
1921
+ # @return [FFI::Pointer(ValueRef)]
1922
+ # @scope class
1923
+ attach_function :md_string, :LLVMMDString, [:string, :uint], :pointer
1924
+
1925
+ # (Not documented)
1926
+ #
1927
+ # @method md_node_in_context(c, vals, count)
1928
+ # @param [FFI::Pointer(ContextRef)] c
1929
+ # @param [FFI::Pointer(*ValueRef)] vals
1930
+ # @param [Integer] count
1931
+ # @return [FFI::Pointer(ValueRef)]
1932
+ # @scope class
1933
+ attach_function :md_node_in_context, :LLVMMDNodeInContext, [:pointer, :pointer, :uint], :pointer
1934
+
1935
+ # (Not documented)
1936
+ #
1937
+ # @method md_node(vals, count)
1938
+ # @param [FFI::Pointer(*ValueRef)] vals
1939
+ # @param [Integer] count
1940
+ # @return [FFI::Pointer(ValueRef)]
1941
+ # @scope class
1942
+ attach_function :md_node, :LLVMMDNode, [:pointer, :uint], :pointer
1943
+
1944
+ # (Not documented)
1945
+ #
1946
+ # @method get_md_string(v, len)
1947
+ # @param [FFI::Pointer(ValueRef)] v
1948
+ # @param [FFI::Pointer(*UInt)] len
1949
+ # @return [String]
1950
+ # @scope class
1951
+ attach_function :get_md_string, :LLVMGetMDString, [:pointer, :pointer], :string
1952
+
1953
+ # (Not documented)
1954
+ #
1955
+ # @method get_named_metadata_num_operands(m, name)
1956
+ # @param [FFI::Pointer(ModuleRef)] m
1957
+ # @param [String] name
1958
+ # @return [Integer]
1959
+ # @scope class
1960
+ attach_function :get_named_metadata_num_operands, :LLVMGetNamedMetadataNumOperands, [:pointer, :string], :uint
1961
+
1962
+ # (Not documented)
1963
+ #
1964
+ # @method get_named_metadata_operands(m, name, dest)
1965
+ # @param [FFI::Pointer(ModuleRef)] m
1966
+ # @param [String] name
1967
+ # @param [FFI::Pointer(*ValueRef)] dest
1968
+ # @return [nil]
1969
+ # @scope class
1970
+ attach_function :get_named_metadata_operands, :LLVMGetNamedMetadataOperands, [:pointer, :string, :pointer], :void
1971
+
1972
+ # Operations on scalar constants
1973
+ #
1974
+ # @method const_int(int_ty, n, sign_extend)
1975
+ # @param [FFI::Pointer(TypeRef)] int_ty
1976
+ # @param [Integer] n
1977
+ # @param [Integer] sign_extend
1978
+ # @return [FFI::Pointer(ValueRef)]
1979
+ # @scope class
1980
+ attach_function :const_int, :LLVMConstInt, [:pointer, :ulong_long, :int], :pointer
1981
+
1982
+ # (Not documented)
1983
+ #
1984
+ # @method const_int_of_arbitrary_precision(int_ty, num_words, words)
1985
+ # @param [FFI::Pointer(TypeRef)] int_ty
1986
+ # @param [Integer] num_words
1987
+ # @param [FFI::Pointer(*uint64_t)] words
1988
+ # @return [FFI::Pointer(ValueRef)]
1989
+ # @scope class
1990
+ attach_function :const_int_of_arbitrary_precision, :LLVMConstIntOfArbitraryPrecision, [:pointer, :uint, :pointer], :pointer
1991
+
1992
+ # (Not documented)
1993
+ #
1994
+ # @method const_int_of_string(int_ty, text, radix)
1995
+ # @param [FFI::Pointer(TypeRef)] int_ty
1996
+ # @param [String] text
1997
+ # @param [Integer] radix
1998
+ # @return [FFI::Pointer(ValueRef)]
1999
+ # @scope class
2000
+ attach_function :const_int_of_string, :LLVMConstIntOfString, [:pointer, :string, :uchar], :pointer
2001
+
2002
+ # (Not documented)
2003
+ #
2004
+ # @method const_int_of_string_and_size(int_ty, text, s_len, radix)
2005
+ # @param [FFI::Pointer(TypeRef)] int_ty
2006
+ # @param [String] text
2007
+ # @param [Integer] s_len
2008
+ # @param [Integer] radix
2009
+ # @return [FFI::Pointer(ValueRef)]
2010
+ # @scope class
2011
+ attach_function :const_int_of_string_and_size, :LLVMConstIntOfStringAndSize, [:pointer, :string, :uint, :uchar], :pointer
2012
+
2013
+ # (Not documented)
2014
+ #
2015
+ # @method const_real(real_ty, n)
2016
+ # @param [FFI::Pointer(TypeRef)] real_ty
2017
+ # @param [Float] n
2018
+ # @return [FFI::Pointer(ValueRef)]
2019
+ # @scope class
2020
+ attach_function :const_real, :LLVMConstReal, [:pointer, :double], :pointer
2021
+
2022
+ # (Not documented)
2023
+ #
2024
+ # @method const_real_of_string(real_ty, text)
2025
+ # @param [FFI::Pointer(TypeRef)] real_ty
2026
+ # @param [String] text
2027
+ # @return [FFI::Pointer(ValueRef)]
2028
+ # @scope class
2029
+ attach_function :const_real_of_string, :LLVMConstRealOfString, [:pointer, :string], :pointer
2030
+
2031
+ # (Not documented)
2032
+ #
2033
+ # @method const_real_of_string_and_size(real_ty, text, s_len)
2034
+ # @param [FFI::Pointer(TypeRef)] real_ty
2035
+ # @param [String] text
2036
+ # @param [Integer] s_len
2037
+ # @return [FFI::Pointer(ValueRef)]
2038
+ # @scope class
2039
+ attach_function :const_real_of_string_and_size, :LLVMConstRealOfStringAndSize, [:pointer, :string, :uint], :pointer
2040
+
2041
+ # (Not documented)
2042
+ #
2043
+ # @method const_int_get_z_ext_value(constant_val)
2044
+ # @param [FFI::Pointer(ValueRef)] constant_val
2045
+ # @return [Integer]
2046
+ # @scope class
2047
+ attach_function :const_int_get_z_ext_value, :LLVMConstIntGetZExtValue, [:pointer], :ulong_long
2048
+
2049
+ # (Not documented)
2050
+ #
2051
+ # @method const_int_get_s_ext_value(constant_val)
2052
+ # @param [FFI::Pointer(ValueRef)] constant_val
2053
+ # @return [Integer]
2054
+ # @scope class
2055
+ attach_function :const_int_get_s_ext_value, :LLVMConstIntGetSExtValue, [:pointer], :long_long
2056
+
2057
+ # Operations on composite constants
2058
+ #
2059
+ # @method const_string_in_context(c, str, length, dont_null_terminate)
2060
+ # @param [FFI::Pointer(ContextRef)] c
2061
+ # @param [String] str
2062
+ # @param [Integer] length
2063
+ # @param [Integer] dont_null_terminate
2064
+ # @return [FFI::Pointer(ValueRef)]
2065
+ # @scope class
2066
+ attach_function :const_string_in_context, :LLVMConstStringInContext, [:pointer, :string, :uint, :int], :pointer
2067
+
2068
+ # (Not documented)
2069
+ #
2070
+ # @method const_struct_in_context(c, constant_vals, count, packed)
2071
+ # @param [FFI::Pointer(ContextRef)] c
2072
+ # @param [FFI::Pointer(*ValueRef)] constant_vals
2073
+ # @param [Integer] count
2074
+ # @param [Integer] packed
2075
+ # @return [FFI::Pointer(ValueRef)]
2076
+ # @scope class
2077
+ attach_function :const_struct_in_context, :LLVMConstStructInContext, [:pointer, :pointer, :uint, :int], :pointer
2078
+
2079
+ # (Not documented)
2080
+ #
2081
+ # @method const_string(str, length, dont_null_terminate)
2082
+ # @param [String] str
2083
+ # @param [Integer] length
2084
+ # @param [Integer] dont_null_terminate
2085
+ # @return [FFI::Pointer(ValueRef)]
2086
+ # @scope class
2087
+ attach_function :const_string, :LLVMConstString, [:string, :uint, :int], :pointer
2088
+
2089
+ # (Not documented)
2090
+ #
2091
+ # @method const_array(element_ty, constant_vals, length)
2092
+ # @param [FFI::Pointer(TypeRef)] element_ty
2093
+ # @param [FFI::Pointer(*ValueRef)] constant_vals
2094
+ # @param [Integer] length
2095
+ # @return [FFI::Pointer(ValueRef)]
2096
+ # @scope class
2097
+ attach_function :const_array, :LLVMConstArray, [:pointer, :pointer, :uint], :pointer
2098
+
2099
+ # (Not documented)
2100
+ #
2101
+ # @method const_struct(constant_vals, count, packed)
2102
+ # @param [FFI::Pointer(*ValueRef)] constant_vals
2103
+ # @param [Integer] count
2104
+ # @param [Integer] packed
2105
+ # @return [FFI::Pointer(ValueRef)]
2106
+ # @scope class
2107
+ attach_function :const_struct, :LLVMConstStruct, [:pointer, :uint, :int], :pointer
2108
+
2109
+ # (Not documented)
2110
+ #
2111
+ # @method const_named_struct(struct_ty, constant_vals, count)
2112
+ # @param [FFI::Pointer(TypeRef)] struct_ty
2113
+ # @param [FFI::Pointer(*ValueRef)] constant_vals
2114
+ # @param [Integer] count
2115
+ # @return [FFI::Pointer(ValueRef)]
2116
+ # @scope class
2117
+ attach_function :const_named_struct, :LLVMConstNamedStruct, [:pointer, :pointer, :uint], :pointer
2118
+
2119
+ # (Not documented)
2120
+ #
2121
+ # @method const_vector(scalar_constant_vals, size)
2122
+ # @param [FFI::Pointer(*ValueRef)] scalar_constant_vals
2123
+ # @param [Integer] size
2124
+ # @return [FFI::Pointer(ValueRef)]
2125
+ # @scope class
2126
+ attach_function :const_vector, :LLVMConstVector, [:pointer, :uint], :pointer
2127
+
2128
+ # Constant expressions
2129
+ #
2130
+ # @method get_const_opcode(constant_val)
2131
+ # @param [FFI::Pointer(ValueRef)] constant_val
2132
+ # @return [Symbol from opcode_enum]
2133
+ # @scope class
2134
+ attach_function :get_const_opcode, :LLVMGetConstOpcode, [:pointer], :opcode
2135
+
2136
+ # (Not documented)
2137
+ #
2138
+ # @method align_of(ty)
2139
+ # @param [FFI::Pointer(TypeRef)] ty
2140
+ # @return [FFI::Pointer(ValueRef)]
2141
+ # @scope class
2142
+ attach_function :align_of, :LLVMAlignOf, [:pointer], :pointer
2143
+
2144
+ # (Not documented)
2145
+ #
2146
+ # @method size_of(ty)
2147
+ # @param [FFI::Pointer(TypeRef)] ty
2148
+ # @return [FFI::Pointer(ValueRef)]
2149
+ # @scope class
2150
+ attach_function :size_of, :LLVMSizeOf, [:pointer], :pointer
2151
+
2152
+ # (Not documented)
2153
+ #
2154
+ # @method const_neg(constant_val)
2155
+ # @param [FFI::Pointer(ValueRef)] constant_val
2156
+ # @return [FFI::Pointer(ValueRef)]
2157
+ # @scope class
2158
+ attach_function :const_neg, :LLVMConstNeg, [:pointer], :pointer
2159
+
2160
+ # (Not documented)
2161
+ #
2162
+ # @method const_nsw_neg(constant_val)
2163
+ # @param [FFI::Pointer(ValueRef)] constant_val
2164
+ # @return [FFI::Pointer(ValueRef)]
2165
+ # @scope class
2166
+ attach_function :const_nsw_neg, :LLVMConstNSWNeg, [:pointer], :pointer
2167
+
2168
+ # (Not documented)
2169
+ #
2170
+ # @method const_nuw_neg(constant_val)
2171
+ # @param [FFI::Pointer(ValueRef)] constant_val
2172
+ # @return [FFI::Pointer(ValueRef)]
2173
+ # @scope class
2174
+ attach_function :const_nuw_neg, :LLVMConstNUWNeg, [:pointer], :pointer
2175
+
2176
+ # (Not documented)
2177
+ #
2178
+ # @method const_f_neg(constant_val)
2179
+ # @param [FFI::Pointer(ValueRef)] constant_val
2180
+ # @return [FFI::Pointer(ValueRef)]
2181
+ # @scope class
2182
+ attach_function :const_f_neg, :LLVMConstFNeg, [:pointer], :pointer
2183
+
2184
+ # (Not documented)
2185
+ #
2186
+ # @method const_not(constant_val)
2187
+ # @param [FFI::Pointer(ValueRef)] constant_val
2188
+ # @return [FFI::Pointer(ValueRef)]
2189
+ # @scope class
2190
+ attach_function :const_not, :LLVMConstNot, [:pointer], :pointer
2191
+
2192
+ # (Not documented)
2193
+ #
2194
+ # @method const_add(lhs_constant, rhs_constant)
2195
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2196
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2197
+ # @return [FFI::Pointer(ValueRef)]
2198
+ # @scope class
2199
+ attach_function :const_add, :LLVMConstAdd, [:pointer, :pointer], :pointer
2200
+
2201
+ # (Not documented)
2202
+ #
2203
+ # @method const_nsw_add(lhs_constant, rhs_constant)
2204
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2205
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2206
+ # @return [FFI::Pointer(ValueRef)]
2207
+ # @scope class
2208
+ attach_function :const_nsw_add, :LLVMConstNSWAdd, [:pointer, :pointer], :pointer
2209
+
2210
+ # (Not documented)
2211
+ #
2212
+ # @method const_nuw_add(lhs_constant, rhs_constant)
2213
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2214
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2215
+ # @return [FFI::Pointer(ValueRef)]
2216
+ # @scope class
2217
+ attach_function :const_nuw_add, :LLVMConstNUWAdd, [:pointer, :pointer], :pointer
2218
+
2219
+ # (Not documented)
2220
+ #
2221
+ # @method const_f_add(lhs_constant, rhs_constant)
2222
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2223
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2224
+ # @return [FFI::Pointer(ValueRef)]
2225
+ # @scope class
2226
+ attach_function :const_f_add, :LLVMConstFAdd, [:pointer, :pointer], :pointer
2227
+
2228
+ # (Not documented)
2229
+ #
2230
+ # @method const_sub(lhs_constant, rhs_constant)
2231
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2232
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2233
+ # @return [FFI::Pointer(ValueRef)]
2234
+ # @scope class
2235
+ attach_function :const_sub, :LLVMConstSub, [:pointer, :pointer], :pointer
2236
+
2237
+ # (Not documented)
2238
+ #
2239
+ # @method const_nsw_sub(lhs_constant, rhs_constant)
2240
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2241
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2242
+ # @return [FFI::Pointer(ValueRef)]
2243
+ # @scope class
2244
+ attach_function :const_nsw_sub, :LLVMConstNSWSub, [:pointer, :pointer], :pointer
2245
+
2246
+ # (Not documented)
2247
+ #
2248
+ # @method const_nuw_sub(lhs_constant, rhs_constant)
2249
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2250
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2251
+ # @return [FFI::Pointer(ValueRef)]
2252
+ # @scope class
2253
+ attach_function :const_nuw_sub, :LLVMConstNUWSub, [:pointer, :pointer], :pointer
2254
+
2255
+ # (Not documented)
2256
+ #
2257
+ # @method const_f_sub(lhs_constant, rhs_constant)
2258
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2259
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2260
+ # @return [FFI::Pointer(ValueRef)]
2261
+ # @scope class
2262
+ attach_function :const_f_sub, :LLVMConstFSub, [:pointer, :pointer], :pointer
2263
+
2264
+ # (Not documented)
2265
+ #
2266
+ # @method const_mul(lhs_constant, rhs_constant)
2267
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2268
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2269
+ # @return [FFI::Pointer(ValueRef)]
2270
+ # @scope class
2271
+ attach_function :const_mul, :LLVMConstMul, [:pointer, :pointer], :pointer
2272
+
2273
+ # (Not documented)
2274
+ #
2275
+ # @method const_nsw_mul(lhs_constant, rhs_constant)
2276
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2277
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2278
+ # @return [FFI::Pointer(ValueRef)]
2279
+ # @scope class
2280
+ attach_function :const_nsw_mul, :LLVMConstNSWMul, [:pointer, :pointer], :pointer
2281
+
2282
+ # (Not documented)
2283
+ #
2284
+ # @method const_nuw_mul(lhs_constant, rhs_constant)
2285
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2286
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2287
+ # @return [FFI::Pointer(ValueRef)]
2288
+ # @scope class
2289
+ attach_function :const_nuw_mul, :LLVMConstNUWMul, [:pointer, :pointer], :pointer
2290
+
2291
+ # (Not documented)
2292
+ #
2293
+ # @method const_f_mul(lhs_constant, rhs_constant)
2294
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2295
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2296
+ # @return [FFI::Pointer(ValueRef)]
2297
+ # @scope class
2298
+ attach_function :const_f_mul, :LLVMConstFMul, [:pointer, :pointer], :pointer
2299
+
2300
+ # (Not documented)
2301
+ #
2302
+ # @method const_u_div(lhs_constant, rhs_constant)
2303
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2304
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2305
+ # @return [FFI::Pointer(ValueRef)]
2306
+ # @scope class
2307
+ attach_function :const_u_div, :LLVMConstUDiv, [:pointer, :pointer], :pointer
2308
+
2309
+ # (Not documented)
2310
+ #
2311
+ # @method const_s_div(lhs_constant, rhs_constant)
2312
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2313
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2314
+ # @return [FFI::Pointer(ValueRef)]
2315
+ # @scope class
2316
+ attach_function :const_s_div, :LLVMConstSDiv, [:pointer, :pointer], :pointer
2317
+
2318
+ # (Not documented)
2319
+ #
2320
+ # @method const_exact_s_div(lhs_constant, rhs_constant)
2321
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2322
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2323
+ # @return [FFI::Pointer(ValueRef)]
2324
+ # @scope class
2325
+ attach_function :const_exact_s_div, :LLVMConstExactSDiv, [:pointer, :pointer], :pointer
2326
+
2327
+ # (Not documented)
2328
+ #
2329
+ # @method const_f_div(lhs_constant, rhs_constant)
2330
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2331
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2332
+ # @return [FFI::Pointer(ValueRef)]
2333
+ # @scope class
2334
+ attach_function :const_f_div, :LLVMConstFDiv, [:pointer, :pointer], :pointer
2335
+
2336
+ # (Not documented)
2337
+ #
2338
+ # @method const_u_rem(lhs_constant, rhs_constant)
2339
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2340
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2341
+ # @return [FFI::Pointer(ValueRef)]
2342
+ # @scope class
2343
+ attach_function :const_u_rem, :LLVMConstURem, [:pointer, :pointer], :pointer
2344
+
2345
+ # (Not documented)
2346
+ #
2347
+ # @method const_s_rem(lhs_constant, rhs_constant)
2348
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2349
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2350
+ # @return [FFI::Pointer(ValueRef)]
2351
+ # @scope class
2352
+ attach_function :const_s_rem, :LLVMConstSRem, [:pointer, :pointer], :pointer
2353
+
2354
+ # (Not documented)
2355
+ #
2356
+ # @method const_f_rem(lhs_constant, rhs_constant)
2357
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2358
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2359
+ # @return [FFI::Pointer(ValueRef)]
2360
+ # @scope class
2361
+ attach_function :const_f_rem, :LLVMConstFRem, [:pointer, :pointer], :pointer
2362
+
2363
+ # (Not documented)
2364
+ #
2365
+ # @method const_and(lhs_constant, rhs_constant)
2366
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2367
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2368
+ # @return [FFI::Pointer(ValueRef)]
2369
+ # @scope class
2370
+ attach_function :const_and, :LLVMConstAnd, [:pointer, :pointer], :pointer
2371
+
2372
+ # (Not documented)
2373
+ #
2374
+ # @method const_or(lhs_constant, rhs_constant)
2375
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2376
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2377
+ # @return [FFI::Pointer(ValueRef)]
2378
+ # @scope class
2379
+ attach_function :const_or, :LLVMConstOr, [:pointer, :pointer], :pointer
2380
+
2381
+ # (Not documented)
2382
+ #
2383
+ # @method const_xor(lhs_constant, rhs_constant)
2384
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2385
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2386
+ # @return [FFI::Pointer(ValueRef)]
2387
+ # @scope class
2388
+ attach_function :const_xor, :LLVMConstXor, [:pointer, :pointer], :pointer
2389
+
2390
+ # (Not documented)
2391
+ #
2392
+ # @method const_i_cmp(predicate, lhs_constant, rhs_constant)
2393
+ # @param [Symbol from int_predicate_enum] predicate
2394
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2395
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2396
+ # @return [FFI::Pointer(ValueRef)]
2397
+ # @scope class
2398
+ attach_function :const_i_cmp, :LLVMConstICmp, [:int_predicate, :pointer, :pointer], :pointer
2399
+
2400
+ # (Not documented)
2401
+ #
2402
+ # @method const_f_cmp(predicate, lhs_constant, rhs_constant)
2403
+ # @param [Symbol from real_predicate_enum] predicate
2404
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2405
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2406
+ # @return [FFI::Pointer(ValueRef)]
2407
+ # @scope class
2408
+ attach_function :const_f_cmp, :LLVMConstFCmp, [:real_predicate, :pointer, :pointer], :pointer
2409
+
2410
+ # (Not documented)
2411
+ #
2412
+ # @method const_shl(lhs_constant, rhs_constant)
2413
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2414
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2415
+ # @return [FFI::Pointer(ValueRef)]
2416
+ # @scope class
2417
+ attach_function :const_shl, :LLVMConstShl, [:pointer, :pointer], :pointer
2418
+
2419
+ # (Not documented)
2420
+ #
2421
+ # @method const_l_shr(lhs_constant, rhs_constant)
2422
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2423
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2424
+ # @return [FFI::Pointer(ValueRef)]
2425
+ # @scope class
2426
+ attach_function :const_l_shr, :LLVMConstLShr, [:pointer, :pointer], :pointer
2427
+
2428
+ # (Not documented)
2429
+ #
2430
+ # @method const_a_shr(lhs_constant, rhs_constant)
2431
+ # @param [FFI::Pointer(ValueRef)] lhs_constant
2432
+ # @param [FFI::Pointer(ValueRef)] rhs_constant
2433
+ # @return [FFI::Pointer(ValueRef)]
2434
+ # @scope class
2435
+ attach_function :const_a_shr, :LLVMConstAShr, [:pointer, :pointer], :pointer
2436
+
2437
+ # (Not documented)
2438
+ #
2439
+ # @method const_gep(constant_val, constant_indices, num_indices)
2440
+ # @param [FFI::Pointer(ValueRef)] constant_val
2441
+ # @param [FFI::Pointer(*ValueRef)] constant_indices
2442
+ # @param [Integer] num_indices
2443
+ # @return [FFI::Pointer(ValueRef)]
2444
+ # @scope class
2445
+ attach_function :const_gep, :LLVMConstGEP, [:pointer, :pointer, :uint], :pointer
2446
+
2447
+ # (Not documented)
2448
+ #
2449
+ # @method const_in_bounds_gep(constant_val, constant_indices, num_indices)
2450
+ # @param [FFI::Pointer(ValueRef)] constant_val
2451
+ # @param [FFI::Pointer(*ValueRef)] constant_indices
2452
+ # @param [Integer] num_indices
2453
+ # @return [FFI::Pointer(ValueRef)]
2454
+ # @scope class
2455
+ attach_function :const_in_bounds_gep, :LLVMConstInBoundsGEP, [:pointer, :pointer, :uint], :pointer
2456
+
2457
+ # (Not documented)
2458
+ #
2459
+ # @method const_trunc(constant_val, to_type)
2460
+ # @param [FFI::Pointer(ValueRef)] constant_val
2461
+ # @param [FFI::Pointer(TypeRef)] to_type
2462
+ # @return [FFI::Pointer(ValueRef)]
2463
+ # @scope class
2464
+ attach_function :const_trunc, :LLVMConstTrunc, [:pointer, :pointer], :pointer
2465
+
2466
+ # (Not documented)
2467
+ #
2468
+ # @method const_s_ext(constant_val, to_type)
2469
+ # @param [FFI::Pointer(ValueRef)] constant_val
2470
+ # @param [FFI::Pointer(TypeRef)] to_type
2471
+ # @return [FFI::Pointer(ValueRef)]
2472
+ # @scope class
2473
+ attach_function :const_s_ext, :LLVMConstSExt, [:pointer, :pointer], :pointer
2474
+
2475
+ # (Not documented)
2476
+ #
2477
+ # @method const_z_ext(constant_val, to_type)
2478
+ # @param [FFI::Pointer(ValueRef)] constant_val
2479
+ # @param [FFI::Pointer(TypeRef)] to_type
2480
+ # @return [FFI::Pointer(ValueRef)]
2481
+ # @scope class
2482
+ attach_function :const_z_ext, :LLVMConstZExt, [:pointer, :pointer], :pointer
2483
+
2484
+ # (Not documented)
2485
+ #
2486
+ # @method const_fp_trunc(constant_val, to_type)
2487
+ # @param [FFI::Pointer(ValueRef)] constant_val
2488
+ # @param [FFI::Pointer(TypeRef)] to_type
2489
+ # @return [FFI::Pointer(ValueRef)]
2490
+ # @scope class
2491
+ attach_function :const_fp_trunc, :LLVMConstFPTrunc, [:pointer, :pointer], :pointer
2492
+
2493
+ # (Not documented)
2494
+ #
2495
+ # @method const_fp_ext(constant_val, to_type)
2496
+ # @param [FFI::Pointer(ValueRef)] constant_val
2497
+ # @param [FFI::Pointer(TypeRef)] to_type
2498
+ # @return [FFI::Pointer(ValueRef)]
2499
+ # @scope class
2500
+ attach_function :const_fp_ext, :LLVMConstFPExt, [:pointer, :pointer], :pointer
2501
+
2502
+ # (Not documented)
2503
+ #
2504
+ # @method const_ui_to_fp(constant_val, to_type)
2505
+ # @param [FFI::Pointer(ValueRef)] constant_val
2506
+ # @param [FFI::Pointer(TypeRef)] to_type
2507
+ # @return [FFI::Pointer(ValueRef)]
2508
+ # @scope class
2509
+ attach_function :const_ui_to_fp, :LLVMConstUIToFP, [:pointer, :pointer], :pointer
2510
+
2511
+ # (Not documented)
2512
+ #
2513
+ # @method const_si_to_fp(constant_val, to_type)
2514
+ # @param [FFI::Pointer(ValueRef)] constant_val
2515
+ # @param [FFI::Pointer(TypeRef)] to_type
2516
+ # @return [FFI::Pointer(ValueRef)]
2517
+ # @scope class
2518
+ attach_function :const_si_to_fp, :LLVMConstSIToFP, [:pointer, :pointer], :pointer
2519
+
2520
+ # (Not documented)
2521
+ #
2522
+ # @method const_fp_to_ui(constant_val, to_type)
2523
+ # @param [FFI::Pointer(ValueRef)] constant_val
2524
+ # @param [FFI::Pointer(TypeRef)] to_type
2525
+ # @return [FFI::Pointer(ValueRef)]
2526
+ # @scope class
2527
+ attach_function :const_fp_to_ui, :LLVMConstFPToUI, [:pointer, :pointer], :pointer
2528
+
2529
+ # (Not documented)
2530
+ #
2531
+ # @method const_fp_to_si(constant_val, to_type)
2532
+ # @param [FFI::Pointer(ValueRef)] constant_val
2533
+ # @param [FFI::Pointer(TypeRef)] to_type
2534
+ # @return [FFI::Pointer(ValueRef)]
2535
+ # @scope class
2536
+ attach_function :const_fp_to_si, :LLVMConstFPToSI, [:pointer, :pointer], :pointer
2537
+
2538
+ # (Not documented)
2539
+ #
2540
+ # @method const_ptr_to_int(constant_val, to_type)
2541
+ # @param [FFI::Pointer(ValueRef)] constant_val
2542
+ # @param [FFI::Pointer(TypeRef)] to_type
2543
+ # @return [FFI::Pointer(ValueRef)]
2544
+ # @scope class
2545
+ attach_function :const_ptr_to_int, :LLVMConstPtrToInt, [:pointer, :pointer], :pointer
2546
+
2547
+ # (Not documented)
2548
+ #
2549
+ # @method const_int_to_ptr(constant_val, to_type)
2550
+ # @param [FFI::Pointer(ValueRef)] constant_val
2551
+ # @param [FFI::Pointer(TypeRef)] to_type
2552
+ # @return [FFI::Pointer(ValueRef)]
2553
+ # @scope class
2554
+ attach_function :const_int_to_ptr, :LLVMConstIntToPtr, [:pointer, :pointer], :pointer
2555
+
2556
+ # (Not documented)
2557
+ #
2558
+ # @method const_bit_cast(constant_val, to_type)
2559
+ # @param [FFI::Pointer(ValueRef)] constant_val
2560
+ # @param [FFI::Pointer(TypeRef)] to_type
2561
+ # @return [FFI::Pointer(ValueRef)]
2562
+ # @scope class
2563
+ attach_function :const_bit_cast, :LLVMConstBitCast, [:pointer, :pointer], :pointer
2564
+
2565
+ # (Not documented)
2566
+ #
2567
+ # @method const_z_ext_or_bit_cast(constant_val, to_type)
2568
+ # @param [FFI::Pointer(ValueRef)] constant_val
2569
+ # @param [FFI::Pointer(TypeRef)] to_type
2570
+ # @return [FFI::Pointer(ValueRef)]
2571
+ # @scope class
2572
+ attach_function :const_z_ext_or_bit_cast, :LLVMConstZExtOrBitCast, [:pointer, :pointer], :pointer
2573
+
2574
+ # (Not documented)
2575
+ #
2576
+ # @method const_s_ext_or_bit_cast(constant_val, to_type)
2577
+ # @param [FFI::Pointer(ValueRef)] constant_val
2578
+ # @param [FFI::Pointer(TypeRef)] to_type
2579
+ # @return [FFI::Pointer(ValueRef)]
2580
+ # @scope class
2581
+ attach_function :const_s_ext_or_bit_cast, :LLVMConstSExtOrBitCast, [:pointer, :pointer], :pointer
2582
+
2583
+ # (Not documented)
2584
+ #
2585
+ # @method const_trunc_or_bit_cast(constant_val, to_type)
2586
+ # @param [FFI::Pointer(ValueRef)] constant_val
2587
+ # @param [FFI::Pointer(TypeRef)] to_type
2588
+ # @return [FFI::Pointer(ValueRef)]
2589
+ # @scope class
2590
+ attach_function :const_trunc_or_bit_cast, :LLVMConstTruncOrBitCast, [:pointer, :pointer], :pointer
2591
+
2592
+ # (Not documented)
2593
+ #
2594
+ # @method const_pointer_cast(constant_val, to_type)
2595
+ # @param [FFI::Pointer(ValueRef)] constant_val
2596
+ # @param [FFI::Pointer(TypeRef)] to_type
2597
+ # @return [FFI::Pointer(ValueRef)]
2598
+ # @scope class
2599
+ attach_function :const_pointer_cast, :LLVMConstPointerCast, [:pointer, :pointer], :pointer
2600
+
2601
+ # (Not documented)
2602
+ #
2603
+ # @method const_int_cast(constant_val, to_type, is_signed)
2604
+ # @param [FFI::Pointer(ValueRef)] constant_val
2605
+ # @param [FFI::Pointer(TypeRef)] to_type
2606
+ # @param [Integer] is_signed
2607
+ # @return [FFI::Pointer(ValueRef)]
2608
+ # @scope class
2609
+ attach_function :const_int_cast, :LLVMConstIntCast, [:pointer, :pointer, :int], :pointer
2610
+
2611
+ # (Not documented)
2612
+ #
2613
+ # @method const_fp_cast(constant_val, to_type)
2614
+ # @param [FFI::Pointer(ValueRef)] constant_val
2615
+ # @param [FFI::Pointer(TypeRef)] to_type
2616
+ # @return [FFI::Pointer(ValueRef)]
2617
+ # @scope class
2618
+ attach_function :const_fp_cast, :LLVMConstFPCast, [:pointer, :pointer], :pointer
2619
+
2620
+ # (Not documented)
2621
+ #
2622
+ # @method const_select(constant_condition, constant_if_true, constant_if_false)
2623
+ # @param [FFI::Pointer(ValueRef)] constant_condition
2624
+ # @param [FFI::Pointer(ValueRef)] constant_if_true
2625
+ # @param [FFI::Pointer(ValueRef)] constant_if_false
2626
+ # @return [FFI::Pointer(ValueRef)]
2627
+ # @scope class
2628
+ attach_function :const_select, :LLVMConstSelect, [:pointer, :pointer, :pointer], :pointer
2629
+
2630
+ # (Not documented)
2631
+ #
2632
+ # @method const_extract_element(vector_constant, index_constant)
2633
+ # @param [FFI::Pointer(ValueRef)] vector_constant
2634
+ # @param [FFI::Pointer(ValueRef)] index_constant
2635
+ # @return [FFI::Pointer(ValueRef)]
2636
+ # @scope class
2637
+ attach_function :const_extract_element, :LLVMConstExtractElement, [:pointer, :pointer], :pointer
2638
+
2639
+ # (Not documented)
2640
+ #
2641
+ # @method const_insert_element(vector_constant, element_value_constant, index_constant)
2642
+ # @param [FFI::Pointer(ValueRef)] vector_constant
2643
+ # @param [FFI::Pointer(ValueRef)] element_value_constant
2644
+ # @param [FFI::Pointer(ValueRef)] index_constant
2645
+ # @return [FFI::Pointer(ValueRef)]
2646
+ # @scope class
2647
+ attach_function :const_insert_element, :LLVMConstInsertElement, [:pointer, :pointer, :pointer], :pointer
2648
+
2649
+ # (Not documented)
2650
+ #
2651
+ # @method const_shuffle_vector(vector_a_constant, vector_b_constant, mask_constant)
2652
+ # @param [FFI::Pointer(ValueRef)] vector_a_constant
2653
+ # @param [FFI::Pointer(ValueRef)] vector_b_constant
2654
+ # @param [FFI::Pointer(ValueRef)] mask_constant
2655
+ # @return [FFI::Pointer(ValueRef)]
2656
+ # @scope class
2657
+ attach_function :const_shuffle_vector, :LLVMConstShuffleVector, [:pointer, :pointer, :pointer], :pointer
2658
+
2659
+ # (Not documented)
2660
+ #
2661
+ # @method const_extract_value(agg_constant, idx_list, num_idx)
2662
+ # @param [FFI::Pointer(ValueRef)] agg_constant
2663
+ # @param [FFI::Pointer(*UInt)] idx_list
2664
+ # @param [Integer] num_idx
2665
+ # @return [FFI::Pointer(ValueRef)]
2666
+ # @scope class
2667
+ attach_function :const_extract_value, :LLVMConstExtractValue, [:pointer, :pointer, :uint], :pointer
2668
+
2669
+ # (Not documented)
2670
+ #
2671
+ # @method const_insert_value(agg_constant, element_value_constant, idx_list, num_idx)
2672
+ # @param [FFI::Pointer(ValueRef)] agg_constant
2673
+ # @param [FFI::Pointer(ValueRef)] element_value_constant
2674
+ # @param [FFI::Pointer(*UInt)] idx_list
2675
+ # @param [Integer] num_idx
2676
+ # @return [FFI::Pointer(ValueRef)]
2677
+ # @scope class
2678
+ attach_function :const_insert_value, :LLVMConstInsertValue, [:pointer, :pointer, :pointer, :uint], :pointer
2679
+
2680
+ # (Not documented)
2681
+ #
2682
+ # @method const_inline_asm(ty, asm_string, constraints, has_side_effects, is_align_stack)
2683
+ # @param [FFI::Pointer(TypeRef)] ty
2684
+ # @param [String] asm_string
2685
+ # @param [String] constraints
2686
+ # @param [Integer] has_side_effects
2687
+ # @param [Integer] is_align_stack
2688
+ # @return [FFI::Pointer(ValueRef)]
2689
+ # @scope class
2690
+ attach_function :const_inline_asm, :LLVMConstInlineAsm, [:pointer, :string, :string, :int, :int], :pointer
2691
+
2692
+ # (Not documented)
2693
+ #
2694
+ # @method block_address(f, bb)
2695
+ # @param [FFI::Pointer(ValueRef)] f
2696
+ # @param [FFI::Pointer(BasicBlockRef)] bb
2697
+ # @return [FFI::Pointer(ValueRef)]
2698
+ # @scope class
2699
+ attach_function :block_address, :LLVMBlockAddress, [:pointer, :pointer], :pointer
2700
+
2701
+ # Operations on global variables, functions, and aliases (globals)
2702
+ #
2703
+ # @method get_global_parent(global)
2704
+ # @param [FFI::Pointer(ValueRef)] global
2705
+ # @return [FFI::Pointer(ModuleRef)]
2706
+ # @scope class
2707
+ attach_function :get_global_parent, :LLVMGetGlobalParent, [:pointer], :pointer
2708
+
2709
+ # (Not documented)
2710
+ #
2711
+ # @method is_declaration(global)
2712
+ # @param [FFI::Pointer(ValueRef)] global
2713
+ # @return [Integer]
2714
+ # @scope class
2715
+ attach_function :is_declaration, :LLVMIsDeclaration, [:pointer], :int
2716
+
2717
+ # (Not documented)
2718
+ #
2719
+ # @method get_linkage(global)
2720
+ # @param [FFI::Pointer(ValueRef)] global
2721
+ # @return [Symbol from linkage_enum]
2722
+ # @scope class
2723
+ attach_function :get_linkage, :LLVMGetLinkage, [:pointer], :linkage
2724
+
2725
+ # (Not documented)
2726
+ #
2727
+ # @method set_linkage(global, linkage)
2728
+ # @param [FFI::Pointer(ValueRef)] global
2729
+ # @param [Symbol from linkage_enum] linkage
2730
+ # @return [nil]
2731
+ # @scope class
2732
+ attach_function :set_linkage, :LLVMSetLinkage, [:pointer, :linkage], :void
2733
+
2734
+ # (Not documented)
2735
+ #
2736
+ # @method get_section(global)
2737
+ # @param [FFI::Pointer(ValueRef)] global
2738
+ # @return [String]
2739
+ # @scope class
2740
+ attach_function :get_section, :LLVMGetSection, [:pointer], :string
2741
+
2742
+ # (Not documented)
2743
+ #
2744
+ # @method set_section(global, section)
2745
+ # @param [FFI::Pointer(ValueRef)] global
2746
+ # @param [String] section
2747
+ # @return [nil]
2748
+ # @scope class
2749
+ attach_function :set_section, :LLVMSetSection, [:pointer, :string], :void
2750
+
2751
+ # (Not documented)
2752
+ #
2753
+ # @method get_visibility(global)
2754
+ # @param [FFI::Pointer(ValueRef)] global
2755
+ # @return [Symbol from visibility_enum]
2756
+ # @scope class
2757
+ attach_function :get_visibility, :LLVMGetVisibility, [:pointer], :visibility
2758
+
2759
+ # (Not documented)
2760
+ #
2761
+ # @method set_visibility(global, viz)
2762
+ # @param [FFI::Pointer(ValueRef)] global
2763
+ # @param [Symbol from visibility_enum] viz
2764
+ # @return [nil]
2765
+ # @scope class
2766
+ attach_function :set_visibility, :LLVMSetVisibility, [:pointer, :visibility], :void
2767
+
2768
+ # (Not documented)
2769
+ #
2770
+ # @method get_alignment(global)
2771
+ # @param [FFI::Pointer(ValueRef)] global
2772
+ # @return [Integer]
2773
+ # @scope class
2774
+ attach_function :get_alignment, :LLVMGetAlignment, [:pointer], :uint
2775
+
2776
+ # (Not documented)
2777
+ #
2778
+ # @method set_alignment(global, bytes)
2779
+ # @param [FFI::Pointer(ValueRef)] global
2780
+ # @param [Integer] bytes
2781
+ # @return [nil]
2782
+ # @scope class
2783
+ attach_function :set_alignment, :LLVMSetAlignment, [:pointer, :uint], :void
2784
+
2785
+ # Operations on global variables
2786
+ #
2787
+ # @method add_global(m, ty, name)
2788
+ # @param [FFI::Pointer(ModuleRef)] m
2789
+ # @param [FFI::Pointer(TypeRef)] ty
2790
+ # @param [String] name
2791
+ # @return [FFI::Pointer(ValueRef)]
2792
+ # @scope class
2793
+ attach_function :add_global, :LLVMAddGlobal, [:pointer, :pointer, :string], :pointer
2794
+
2795
+ # (Not documented)
2796
+ #
2797
+ # @method add_global_in_address_space(m, ty, name, address_space)
2798
+ # @param [FFI::Pointer(ModuleRef)] m
2799
+ # @param [FFI::Pointer(TypeRef)] ty
2800
+ # @param [String] name
2801
+ # @param [Integer] address_space
2802
+ # @return [FFI::Pointer(ValueRef)]
2803
+ # @scope class
2804
+ attach_function :add_global_in_address_space, :LLVMAddGlobalInAddressSpace, [:pointer, :pointer, :string, :uint], :pointer
2805
+
2806
+ # (Not documented)
2807
+ #
2808
+ # @method get_named_global(m, name)
2809
+ # @param [FFI::Pointer(ModuleRef)] m
2810
+ # @param [String] name
2811
+ # @return [FFI::Pointer(ValueRef)]
2812
+ # @scope class
2813
+ attach_function :get_named_global, :LLVMGetNamedGlobal, [:pointer, :string], :pointer
2814
+
2815
+ # (Not documented)
2816
+ #
2817
+ # @method get_first_global(m)
2818
+ # @param [FFI::Pointer(ModuleRef)] m
2819
+ # @return [FFI::Pointer(ValueRef)]
2820
+ # @scope class
2821
+ attach_function :get_first_global, :LLVMGetFirstGlobal, [:pointer], :pointer
2822
+
2823
+ # (Not documented)
2824
+ #
2825
+ # @method get_last_global(m)
2826
+ # @param [FFI::Pointer(ModuleRef)] m
2827
+ # @return [FFI::Pointer(ValueRef)]
2828
+ # @scope class
2829
+ attach_function :get_last_global, :LLVMGetLastGlobal, [:pointer], :pointer
2830
+
2831
+ # (Not documented)
2832
+ #
2833
+ # @method get_next_global(global_var)
2834
+ # @param [FFI::Pointer(ValueRef)] global_var
2835
+ # @return [FFI::Pointer(ValueRef)]
2836
+ # @scope class
2837
+ attach_function :get_next_global, :LLVMGetNextGlobal, [:pointer], :pointer
2838
+
2839
+ # (Not documented)
2840
+ #
2841
+ # @method get_previous_global(global_var)
2842
+ # @param [FFI::Pointer(ValueRef)] global_var
2843
+ # @return [FFI::Pointer(ValueRef)]
2844
+ # @scope class
2845
+ attach_function :get_previous_global, :LLVMGetPreviousGlobal, [:pointer], :pointer
2846
+
2847
+ # (Not documented)
2848
+ #
2849
+ # @method delete_global(global_var)
2850
+ # @param [FFI::Pointer(ValueRef)] global_var
2851
+ # @return [nil]
2852
+ # @scope class
2853
+ attach_function :delete_global, :LLVMDeleteGlobal, [:pointer], :void
2854
+
2855
+ # (Not documented)
2856
+ #
2857
+ # @method get_initializer(global_var)
2858
+ # @param [FFI::Pointer(ValueRef)] global_var
2859
+ # @return [FFI::Pointer(ValueRef)]
2860
+ # @scope class
2861
+ attach_function :get_initializer, :LLVMGetInitializer, [:pointer], :pointer
2862
+
2863
+ # (Not documented)
2864
+ #
2865
+ # @method set_initializer(global_var, constant_val)
2866
+ # @param [FFI::Pointer(ValueRef)] global_var
2867
+ # @param [FFI::Pointer(ValueRef)] constant_val
2868
+ # @return [nil]
2869
+ # @scope class
2870
+ attach_function :set_initializer, :LLVMSetInitializer, [:pointer, :pointer], :void
2871
+
2872
+ # (Not documented)
2873
+ #
2874
+ # @method is_thread_local(global_var)
2875
+ # @param [FFI::Pointer(ValueRef)] global_var
2876
+ # @return [Integer]
2877
+ # @scope class
2878
+ attach_function :is_thread_local, :LLVMIsThreadLocal, [:pointer], :int
2879
+
2880
+ # (Not documented)
2881
+ #
2882
+ # @method set_thread_local(global_var, is_thread_local)
2883
+ # @param [FFI::Pointer(ValueRef)] global_var
2884
+ # @param [Integer] is_thread_local
2885
+ # @return [nil]
2886
+ # @scope class
2887
+ attach_function :set_thread_local, :LLVMSetThreadLocal, [:pointer, :int], :void
2888
+
2889
+ # (Not documented)
2890
+ #
2891
+ # @method is_global_constant(global_var)
2892
+ # @param [FFI::Pointer(ValueRef)] global_var
2893
+ # @return [Integer]
2894
+ # @scope class
2895
+ attach_function :is_global_constant, :LLVMIsGlobalConstant, [:pointer], :int
2896
+
2897
+ # (Not documented)
2898
+ #
2899
+ # @method set_global_constant(global_var, is_constant)
2900
+ # @param [FFI::Pointer(ValueRef)] global_var
2901
+ # @param [Integer] is_constant
2902
+ # @return [nil]
2903
+ # @scope class
2904
+ attach_function :set_global_constant, :LLVMSetGlobalConstant, [:pointer, :int], :void
2905
+
2906
+ # Operations on aliases
2907
+ #
2908
+ # @method add_alias(m, ty, aliasee, name)
2909
+ # @param [FFI::Pointer(ModuleRef)] m
2910
+ # @param [FFI::Pointer(TypeRef)] ty
2911
+ # @param [FFI::Pointer(ValueRef)] aliasee
2912
+ # @param [String] name
2913
+ # @return [FFI::Pointer(ValueRef)]
2914
+ # @scope class
2915
+ attach_function :add_alias, :LLVMAddAlias, [:pointer, :pointer, :pointer, :string], :pointer
2916
+
2917
+ # Operations on functions
2918
+ #
2919
+ # @method add_function(m, name, function_ty)
2920
+ # @param [FFI::Pointer(ModuleRef)] m
2921
+ # @param [String] name
2922
+ # @param [FFI::Pointer(TypeRef)] function_ty
2923
+ # @return [FFI::Pointer(ValueRef)]
2924
+ # @scope class
2925
+ attach_function :add_function, :LLVMAddFunction, [:pointer, :string, :pointer], :pointer
2926
+
2927
+ # (Not documented)
2928
+ #
2929
+ # @method get_named_function(m, name)
2930
+ # @param [FFI::Pointer(ModuleRef)] m
2931
+ # @param [String] name
2932
+ # @return [FFI::Pointer(ValueRef)]
2933
+ # @scope class
2934
+ attach_function :get_named_function, :LLVMGetNamedFunction, [:pointer, :string], :pointer
2935
+
2936
+ # (Not documented)
2937
+ #
2938
+ # @method get_first_function(m)
2939
+ # @param [FFI::Pointer(ModuleRef)] m
2940
+ # @return [FFI::Pointer(ValueRef)]
2941
+ # @scope class
2942
+ attach_function :get_first_function, :LLVMGetFirstFunction, [:pointer], :pointer
2943
+
2944
+ # (Not documented)
2945
+ #
2946
+ # @method get_last_function(m)
2947
+ # @param [FFI::Pointer(ModuleRef)] m
2948
+ # @return [FFI::Pointer(ValueRef)]
2949
+ # @scope class
2950
+ attach_function :get_last_function, :LLVMGetLastFunction, [:pointer], :pointer
2951
+
2952
+ # (Not documented)
2953
+ #
2954
+ # @method get_next_function(fn)
2955
+ # @param [FFI::Pointer(ValueRef)] fn
2956
+ # @return [FFI::Pointer(ValueRef)]
2957
+ # @scope class
2958
+ attach_function :get_next_function, :LLVMGetNextFunction, [:pointer], :pointer
2959
+
2960
+ # (Not documented)
2961
+ #
2962
+ # @method get_previous_function(fn)
2963
+ # @param [FFI::Pointer(ValueRef)] fn
2964
+ # @return [FFI::Pointer(ValueRef)]
2965
+ # @scope class
2966
+ attach_function :get_previous_function, :LLVMGetPreviousFunction, [:pointer], :pointer
2967
+
2968
+ # (Not documented)
2969
+ #
2970
+ # @method delete_function(fn)
2971
+ # @param [FFI::Pointer(ValueRef)] fn
2972
+ # @return [nil]
2973
+ # @scope class
2974
+ attach_function :delete_function, :LLVMDeleteFunction, [:pointer], :void
2975
+
2976
+ # (Not documented)
2977
+ #
2978
+ # @method get_intrinsic_id(fn)
2979
+ # @param [FFI::Pointer(ValueRef)] fn
2980
+ # @return [Integer]
2981
+ # @scope class
2982
+ attach_function :get_intrinsic_id, :LLVMGetIntrinsicID, [:pointer], :uint
2983
+
2984
+ # (Not documented)
2985
+ #
2986
+ # @method get_function_call_conv(fn)
2987
+ # @param [FFI::Pointer(ValueRef)] fn
2988
+ # @return [Integer]
2989
+ # @scope class
2990
+ attach_function :get_function_call_conv, :LLVMGetFunctionCallConv, [:pointer], :uint
2991
+
2992
+ # (Not documented)
2993
+ #
2994
+ # @method set_function_call_conv(fn, cc)
2995
+ # @param [FFI::Pointer(ValueRef)] fn
2996
+ # @param [Integer] cc
2997
+ # @return [nil]
2998
+ # @scope class
2999
+ attach_function :set_function_call_conv, :LLVMSetFunctionCallConv, [:pointer, :uint], :void
3000
+
3001
+ # (Not documented)
3002
+ #
3003
+ # @method get_gc(fn)
3004
+ # @param [FFI::Pointer(ValueRef)] fn
3005
+ # @return [String]
3006
+ # @scope class
3007
+ attach_function :get_gc, :LLVMGetGC, [:pointer], :string
3008
+
3009
+ # (Not documented)
3010
+ #
3011
+ # @method set_gc(fn, name)
3012
+ # @param [FFI::Pointer(ValueRef)] fn
3013
+ # @param [String] name
3014
+ # @return [nil]
3015
+ # @scope class
3016
+ attach_function :set_gc, :LLVMSetGC, [:pointer, :string], :void
3017
+
3018
+ # (Not documented)
3019
+ #
3020
+ # @method add_function_attr(fn, pa)
3021
+ # @param [FFI::Pointer(ValueRef)] fn
3022
+ # @param [Symbol from attribute_enum] pa
3023
+ # @return [nil]
3024
+ # @scope class
3025
+ attach_function :add_function_attr, :LLVMAddFunctionAttr, [:pointer, :attribute], :void
3026
+
3027
+ # (Not documented)
3028
+ #
3029
+ # @method get_function_attr(fn)
3030
+ # @param [FFI::Pointer(ValueRef)] fn
3031
+ # @return [Symbol from attribute_enum]
3032
+ # @scope class
3033
+ attach_function :get_function_attr, :LLVMGetFunctionAttr, [:pointer], :attribute
3034
+
3035
+ # (Not documented)
3036
+ #
3037
+ # @method remove_function_attr(fn, pa)
3038
+ # @param [FFI::Pointer(ValueRef)] fn
3039
+ # @param [Symbol from attribute_enum] pa
3040
+ # @return [nil]
3041
+ # @scope class
3042
+ attach_function :remove_function_attr, :LLVMRemoveFunctionAttr, [:pointer, :attribute], :void
3043
+
3044
+ # Operations on parameters
3045
+ #
3046
+ # @method count_params(fn)
3047
+ # @param [FFI::Pointer(ValueRef)] fn
3048
+ # @return [Integer]
3049
+ # @scope class
3050
+ attach_function :count_params, :LLVMCountParams, [:pointer], :uint
3051
+
3052
+ # (Not documented)
3053
+ #
3054
+ # @method get_params(fn, params)
3055
+ # @param [FFI::Pointer(ValueRef)] fn
3056
+ # @param [FFI::Pointer(*ValueRef)] params
3057
+ # @return [nil]
3058
+ # @scope class
3059
+ attach_function :get_params, :LLVMGetParams, [:pointer, :pointer], :void
3060
+
3061
+ # (Not documented)
3062
+ #
3063
+ # @method get_param(fn, index)
3064
+ # @param [FFI::Pointer(ValueRef)] fn
3065
+ # @param [Integer] index
3066
+ # @return [FFI::Pointer(ValueRef)]
3067
+ # @scope class
3068
+ attach_function :get_param, :LLVMGetParam, [:pointer, :uint], :pointer
3069
+
3070
+ # (Not documented)
3071
+ #
3072
+ # @method get_param_parent(inst)
3073
+ # @param [FFI::Pointer(ValueRef)] inst
3074
+ # @return [FFI::Pointer(ValueRef)]
3075
+ # @scope class
3076
+ attach_function :get_param_parent, :LLVMGetParamParent, [:pointer], :pointer
3077
+
3078
+ # (Not documented)
3079
+ #
3080
+ # @method get_first_param(fn)
3081
+ # @param [FFI::Pointer(ValueRef)] fn
3082
+ # @return [FFI::Pointer(ValueRef)]
3083
+ # @scope class
3084
+ attach_function :get_first_param, :LLVMGetFirstParam, [:pointer], :pointer
3085
+
3086
+ # (Not documented)
3087
+ #
3088
+ # @method get_last_param(fn)
3089
+ # @param [FFI::Pointer(ValueRef)] fn
3090
+ # @return [FFI::Pointer(ValueRef)]
3091
+ # @scope class
3092
+ attach_function :get_last_param, :LLVMGetLastParam, [:pointer], :pointer
3093
+
3094
+ # (Not documented)
3095
+ #
3096
+ # @method get_next_param(arg)
3097
+ # @param [FFI::Pointer(ValueRef)] arg
3098
+ # @return [FFI::Pointer(ValueRef)]
3099
+ # @scope class
3100
+ attach_function :get_next_param, :LLVMGetNextParam, [:pointer], :pointer
3101
+
3102
+ # (Not documented)
3103
+ #
3104
+ # @method get_previous_param(arg)
3105
+ # @param [FFI::Pointer(ValueRef)] arg
3106
+ # @return [FFI::Pointer(ValueRef)]
3107
+ # @scope class
3108
+ attach_function :get_previous_param, :LLVMGetPreviousParam, [:pointer], :pointer
3109
+
3110
+ # (Not documented)
3111
+ #
3112
+ # @method add_attribute(arg, pa)
3113
+ # @param [FFI::Pointer(ValueRef)] arg
3114
+ # @param [Symbol from attribute_enum] pa
3115
+ # @return [nil]
3116
+ # @scope class
3117
+ attach_function :add_attribute, :LLVMAddAttribute, [:pointer, :attribute], :void
3118
+
3119
+ # (Not documented)
3120
+ #
3121
+ # @method remove_attribute(arg, pa)
3122
+ # @param [FFI::Pointer(ValueRef)] arg
3123
+ # @param [Symbol from attribute_enum] pa
3124
+ # @return [nil]
3125
+ # @scope class
3126
+ attach_function :remove_attribute, :LLVMRemoveAttribute, [:pointer, :attribute], :void
3127
+
3128
+ # (Not documented)
3129
+ #
3130
+ # @method get_attribute(arg)
3131
+ # @param [FFI::Pointer(ValueRef)] arg
3132
+ # @return [Symbol from attribute_enum]
3133
+ # @scope class
3134
+ attach_function :get_attribute, :LLVMGetAttribute, [:pointer], :attribute
3135
+
3136
+ # (Not documented)
3137
+ #
3138
+ # @method set_param_alignment(arg, align)
3139
+ # @param [FFI::Pointer(ValueRef)] arg
3140
+ # @param [Integer] align
3141
+ # @return [nil]
3142
+ # @scope class
3143
+ attach_function :set_param_alignment, :LLVMSetParamAlignment, [:pointer, :uint], :void
3144
+
3145
+ # Operations on basic blocks
3146
+ #
3147
+ # @method basic_block_as_value(bb)
3148
+ # @param [FFI::Pointer(BasicBlockRef)] bb
3149
+ # @return [FFI::Pointer(ValueRef)]
3150
+ # @scope class
3151
+ attach_function :basic_block_as_value, :LLVMBasicBlockAsValue, [:pointer], :pointer
3152
+
3153
+ # (Not documented)
3154
+ #
3155
+ # @method value_is_basic_block(val)
3156
+ # @param [FFI::Pointer(ValueRef)] val
3157
+ # @return [Integer]
3158
+ # @scope class
3159
+ attach_function :value_is_basic_block, :LLVMValueIsBasicBlock, [:pointer], :int
3160
+
3161
+ # (Not documented)
3162
+ #
3163
+ # @method value_as_basic_block(val)
3164
+ # @param [FFI::Pointer(ValueRef)] val
3165
+ # @return [FFI::Pointer(BasicBlockRef)]
3166
+ # @scope class
3167
+ attach_function :value_as_basic_block, :LLVMValueAsBasicBlock, [:pointer], :pointer
3168
+
3169
+ # (Not documented)
3170
+ #
3171
+ # @method get_basic_block_parent(bb)
3172
+ # @param [FFI::Pointer(BasicBlockRef)] bb
3173
+ # @return [FFI::Pointer(ValueRef)]
3174
+ # @scope class
3175
+ attach_function :get_basic_block_parent, :LLVMGetBasicBlockParent, [:pointer], :pointer
3176
+
3177
+ # (Not documented)
3178
+ #
3179
+ # @method get_basic_block_terminator(bb)
3180
+ # @param [FFI::Pointer(BasicBlockRef)] bb
3181
+ # @return [FFI::Pointer(ValueRef)]
3182
+ # @scope class
3183
+ attach_function :get_basic_block_terminator, :LLVMGetBasicBlockTerminator, [:pointer], :pointer
3184
+
3185
+ # (Not documented)
3186
+ #
3187
+ # @method count_basic_blocks(fn)
3188
+ # @param [FFI::Pointer(ValueRef)] fn
3189
+ # @return [Integer]
3190
+ # @scope class
3191
+ attach_function :count_basic_blocks, :LLVMCountBasicBlocks, [:pointer], :uint
3192
+
3193
+ # (Not documented)
3194
+ #
3195
+ # @method get_basic_blocks(fn, basic_blocks)
3196
+ # @param [FFI::Pointer(ValueRef)] fn
3197
+ # @param [FFI::Pointer(*BasicBlockRef)] basic_blocks
3198
+ # @return [nil]
3199
+ # @scope class
3200
+ attach_function :get_basic_blocks, :LLVMGetBasicBlocks, [:pointer, :pointer], :void
3201
+
3202
+ # (Not documented)
3203
+ #
3204
+ # @method get_first_basic_block(fn)
3205
+ # @param [FFI::Pointer(ValueRef)] fn
3206
+ # @return [FFI::Pointer(BasicBlockRef)]
3207
+ # @scope class
3208
+ attach_function :get_first_basic_block, :LLVMGetFirstBasicBlock, [:pointer], :pointer
3209
+
3210
+ # (Not documented)
3211
+ #
3212
+ # @method get_last_basic_block(fn)
3213
+ # @param [FFI::Pointer(ValueRef)] fn
3214
+ # @return [FFI::Pointer(BasicBlockRef)]
3215
+ # @scope class
3216
+ attach_function :get_last_basic_block, :LLVMGetLastBasicBlock, [:pointer], :pointer
3217
+
3218
+ # (Not documented)
3219
+ #
3220
+ # @method get_next_basic_block(bb)
3221
+ # @param [FFI::Pointer(BasicBlockRef)] bb
3222
+ # @return [FFI::Pointer(BasicBlockRef)]
3223
+ # @scope class
3224
+ attach_function :get_next_basic_block, :LLVMGetNextBasicBlock, [:pointer], :pointer
3225
+
3226
+ # (Not documented)
3227
+ #
3228
+ # @method get_previous_basic_block(bb)
3229
+ # @param [FFI::Pointer(BasicBlockRef)] bb
3230
+ # @return [FFI::Pointer(BasicBlockRef)]
3231
+ # @scope class
3232
+ attach_function :get_previous_basic_block, :LLVMGetPreviousBasicBlock, [:pointer], :pointer
3233
+
3234
+ # (Not documented)
3235
+ #
3236
+ # @method get_entry_basic_block(fn)
3237
+ # @param [FFI::Pointer(ValueRef)] fn
3238
+ # @return [FFI::Pointer(BasicBlockRef)]
3239
+ # @scope class
3240
+ attach_function :get_entry_basic_block, :LLVMGetEntryBasicBlock, [:pointer], :pointer
3241
+
3242
+ # (Not documented)
3243
+ #
3244
+ # @method append_basic_block_in_context(c, fn, name)
3245
+ # @param [FFI::Pointer(ContextRef)] c
3246
+ # @param [FFI::Pointer(ValueRef)] fn
3247
+ # @param [String] name
3248
+ # @return [FFI::Pointer(BasicBlockRef)]
3249
+ # @scope class
3250
+ attach_function :append_basic_block_in_context, :LLVMAppendBasicBlockInContext, [:pointer, :pointer, :string], :pointer
3251
+
3252
+ # (Not documented)
3253
+ #
3254
+ # @method insert_basic_block_in_context(c, bb, name)
3255
+ # @param [FFI::Pointer(ContextRef)] c
3256
+ # @param [FFI::Pointer(BasicBlockRef)] bb
3257
+ # @param [String] name
3258
+ # @return [FFI::Pointer(BasicBlockRef)]
3259
+ # @scope class
3260
+ attach_function :insert_basic_block_in_context, :LLVMInsertBasicBlockInContext, [:pointer, :pointer, :string], :pointer
3261
+
3262
+ # (Not documented)
3263
+ #
3264
+ # @method append_basic_block(fn, name)
3265
+ # @param [FFI::Pointer(ValueRef)] fn
3266
+ # @param [String] name
3267
+ # @return [FFI::Pointer(BasicBlockRef)]
3268
+ # @scope class
3269
+ attach_function :append_basic_block, :LLVMAppendBasicBlock, [:pointer, :string], :pointer
3270
+
3271
+ # (Not documented)
3272
+ #
3273
+ # @method insert_basic_block(insert_before_bb, name)
3274
+ # @param [FFI::Pointer(BasicBlockRef)] insert_before_bb
3275
+ # @param [String] name
3276
+ # @return [FFI::Pointer(BasicBlockRef)]
3277
+ # @scope class
3278
+ attach_function :insert_basic_block, :LLVMInsertBasicBlock, [:pointer, :string], :pointer
3279
+
3280
+ # (Not documented)
3281
+ #
3282
+ # @method delete_basic_block(bb)
3283
+ # @param [FFI::Pointer(BasicBlockRef)] bb
3284
+ # @return [nil]
3285
+ # @scope class
3286
+ attach_function :delete_basic_block, :LLVMDeleteBasicBlock, [:pointer], :void
3287
+
3288
+ # (Not documented)
3289
+ #
3290
+ # @method remove_basic_block_from_parent(bb)
3291
+ # @param [FFI::Pointer(BasicBlockRef)] bb
3292
+ # @return [nil]
3293
+ # @scope class
3294
+ attach_function :remove_basic_block_from_parent, :LLVMRemoveBasicBlockFromParent, [:pointer], :void
3295
+
3296
+ # (Not documented)
3297
+ #
3298
+ # @method move_basic_block_before(bb, move_pos)
3299
+ # @param [FFI::Pointer(BasicBlockRef)] bb
3300
+ # @param [FFI::Pointer(BasicBlockRef)] move_pos
3301
+ # @return [nil]
3302
+ # @scope class
3303
+ attach_function :move_basic_block_before, :LLVMMoveBasicBlockBefore, [:pointer, :pointer], :void
3304
+
3305
+ # (Not documented)
3306
+ #
3307
+ # @method move_basic_block_after(bb, move_pos)
3308
+ # @param [FFI::Pointer(BasicBlockRef)] bb
3309
+ # @param [FFI::Pointer(BasicBlockRef)] move_pos
3310
+ # @return [nil]
3311
+ # @scope class
3312
+ attach_function :move_basic_block_after, :LLVMMoveBasicBlockAfter, [:pointer, :pointer], :void
3313
+
3314
+ # (Not documented)
3315
+ #
3316
+ # @method get_first_instruction(bb)
3317
+ # @param [FFI::Pointer(BasicBlockRef)] bb
3318
+ # @return [FFI::Pointer(ValueRef)]
3319
+ # @scope class
3320
+ attach_function :get_first_instruction, :LLVMGetFirstInstruction, [:pointer], :pointer
3321
+
3322
+ # (Not documented)
3323
+ #
3324
+ # @method get_last_instruction(bb)
3325
+ # @param [FFI::Pointer(BasicBlockRef)] bb
3326
+ # @return [FFI::Pointer(ValueRef)]
3327
+ # @scope class
3328
+ attach_function :get_last_instruction, :LLVMGetLastInstruction, [:pointer], :pointer
3329
+
3330
+ # Operations on instructions
3331
+ #
3332
+ # @method get_instruction_parent(inst)
3333
+ # @param [FFI::Pointer(ValueRef)] inst
3334
+ # @return [FFI::Pointer(BasicBlockRef)]
3335
+ # @scope class
3336
+ attach_function :get_instruction_parent, :LLVMGetInstructionParent, [:pointer], :pointer
3337
+
3338
+ # (Not documented)
3339
+ #
3340
+ # @method get_next_instruction(inst)
3341
+ # @param [FFI::Pointer(ValueRef)] inst
3342
+ # @return [FFI::Pointer(ValueRef)]
3343
+ # @scope class
3344
+ attach_function :get_next_instruction, :LLVMGetNextInstruction, [:pointer], :pointer
3345
+
3346
+ # (Not documented)
3347
+ #
3348
+ # @method get_previous_instruction(inst)
3349
+ # @param [FFI::Pointer(ValueRef)] inst
3350
+ # @return [FFI::Pointer(ValueRef)]
3351
+ # @scope class
3352
+ attach_function :get_previous_instruction, :LLVMGetPreviousInstruction, [:pointer], :pointer
3353
+
3354
+ # (Not documented)
3355
+ #
3356
+ # @method instruction_erase_from_parent(inst)
3357
+ # @param [FFI::Pointer(ValueRef)] inst
3358
+ # @return [nil]
3359
+ # @scope class
3360
+ attach_function :instruction_erase_from_parent, :LLVMInstructionEraseFromParent, [:pointer], :void
3361
+
3362
+ # (Not documented)
3363
+ #
3364
+ # @method get_instruction_opcode(inst)
3365
+ # @param [FFI::Pointer(ValueRef)] inst
3366
+ # @return [Symbol from opcode_enum]
3367
+ # @scope class
3368
+ attach_function :get_instruction_opcode, :LLVMGetInstructionOpcode, [:pointer], :opcode
3369
+
3370
+ # (Not documented)
3371
+ #
3372
+ # @method get_i_cmp_predicate(inst)
3373
+ # @param [FFI::Pointer(ValueRef)] inst
3374
+ # @return [Symbol from int_predicate_enum]
3375
+ # @scope class
3376
+ attach_function :get_i_cmp_predicate, :LLVMGetICmpPredicate, [:pointer], :int_predicate
3377
+
3378
+ # Operations on call sites
3379
+ #
3380
+ # @method set_instruction_call_conv(instr, cc)
3381
+ # @param [FFI::Pointer(ValueRef)] instr
3382
+ # @param [Integer] cc
3383
+ # @return [nil]
3384
+ # @scope class
3385
+ attach_function :set_instruction_call_conv, :LLVMSetInstructionCallConv, [:pointer, :uint], :void
3386
+
3387
+ # (Not documented)
3388
+ #
3389
+ # @method get_instruction_call_conv(instr)
3390
+ # @param [FFI::Pointer(ValueRef)] instr
3391
+ # @return [Integer]
3392
+ # @scope class
3393
+ attach_function :get_instruction_call_conv, :LLVMGetInstructionCallConv, [:pointer], :uint
3394
+
3395
+ # (Not documented)
3396
+ #
3397
+ # @method add_instr_attribute(instr, index, attribute)
3398
+ # @param [FFI::Pointer(ValueRef)] instr
3399
+ # @param [Integer] index
3400
+ # @param [Symbol from attribute_enum] attribute
3401
+ # @return [nil]
3402
+ # @scope class
3403
+ attach_function :add_instr_attribute, :LLVMAddInstrAttribute, [:pointer, :uint, :attribute], :void
3404
+
3405
+ # (Not documented)
3406
+ #
3407
+ # @method remove_instr_attribute(instr, index, attribute)
3408
+ # @param [FFI::Pointer(ValueRef)] instr
3409
+ # @param [Integer] index
3410
+ # @param [Symbol from attribute_enum] attribute
3411
+ # @return [nil]
3412
+ # @scope class
3413
+ attach_function :remove_instr_attribute, :LLVMRemoveInstrAttribute, [:pointer, :uint, :attribute], :void
3414
+
3415
+ # (Not documented)
3416
+ #
3417
+ # @method set_instr_param_alignment(instr, index, align)
3418
+ # @param [FFI::Pointer(ValueRef)] instr
3419
+ # @param [Integer] index
3420
+ # @param [Integer] align
3421
+ # @return [nil]
3422
+ # @scope class
3423
+ attach_function :set_instr_param_alignment, :LLVMSetInstrParamAlignment, [:pointer, :uint, :uint], :void
3424
+
3425
+ # Operations on call instructions (only)
3426
+ #
3427
+ # @method is_tail_call(call_inst)
3428
+ # @param [FFI::Pointer(ValueRef)] call_inst
3429
+ # @return [Integer]
3430
+ # @scope class
3431
+ attach_function :is_tail_call, :LLVMIsTailCall, [:pointer], :int
3432
+
3433
+ # (Not documented)
3434
+ #
3435
+ # @method set_tail_call(call_inst, is_tail_call)
3436
+ # @param [FFI::Pointer(ValueRef)] call_inst
3437
+ # @param [Integer] is_tail_call
3438
+ # @return [nil]
3439
+ # @scope class
3440
+ attach_function :set_tail_call, :LLVMSetTailCall, [:pointer, :int], :void
3441
+
3442
+ # Operations on switch instructions (only)
3443
+ #
3444
+ # @method get_switch_default_dest(switch_instr)
3445
+ # @param [FFI::Pointer(ValueRef)] switch_instr
3446
+ # @return [FFI::Pointer(BasicBlockRef)]
3447
+ # @scope class
3448
+ attach_function :get_switch_default_dest, :LLVMGetSwitchDefaultDest, [:pointer], :pointer
3449
+
3450
+ # Operations on phi nodes
3451
+ #
3452
+ # @method add_incoming(phi_node, incoming_values, incoming_blocks, count)
3453
+ # @param [FFI::Pointer(ValueRef)] phi_node
3454
+ # @param [FFI::Pointer(*ValueRef)] incoming_values
3455
+ # @param [FFI::Pointer(*BasicBlockRef)] incoming_blocks
3456
+ # @param [Integer] count
3457
+ # @return [nil]
3458
+ # @scope class
3459
+ attach_function :add_incoming, :LLVMAddIncoming, [:pointer, :pointer, :pointer, :uint], :void
3460
+
3461
+ # (Not documented)
3462
+ #
3463
+ # @method count_incoming(phi_node)
3464
+ # @param [FFI::Pointer(ValueRef)] phi_node
3465
+ # @return [Integer]
3466
+ # @scope class
3467
+ attach_function :count_incoming, :LLVMCountIncoming, [:pointer], :uint
3468
+
3469
+ # (Not documented)
3470
+ #
3471
+ # @method get_incoming_value(phi_node, index)
3472
+ # @param [FFI::Pointer(ValueRef)] phi_node
3473
+ # @param [Integer] index
3474
+ # @return [FFI::Pointer(ValueRef)]
3475
+ # @scope class
3476
+ attach_function :get_incoming_value, :LLVMGetIncomingValue, [:pointer, :uint], :pointer
3477
+
3478
+ # (Not documented)
3479
+ #
3480
+ # @method get_incoming_block(phi_node, index)
3481
+ # @param [FFI::Pointer(ValueRef)] phi_node
3482
+ # @param [Integer] index
3483
+ # @return [FFI::Pointer(BasicBlockRef)]
3484
+ # @scope class
3485
+ attach_function :get_incoming_block, :LLVMGetIncomingBlock, [:pointer, :uint], :pointer
3486
+
3487
+ # An instruction builder represents a point within a basic block, and is the
3488
+ # exclusive means of building instructions using the C interface.
3489
+ #
3490
+ # @method create_builder_in_context(c)
3491
+ # @param [FFI::Pointer(ContextRef)] c
3492
+ # @return [FFI::Pointer(BuilderRef)]
3493
+ # @scope class
3494
+ attach_function :create_builder_in_context, :LLVMCreateBuilderInContext, [:pointer], :pointer
3495
+
3496
+ # (Not documented)
3497
+ #
3498
+ # @method create_builder()
3499
+ # @return [FFI::Pointer(BuilderRef)]
3500
+ # @scope class
3501
+ attach_function :create_builder, :LLVMCreateBuilder, [], :pointer
3502
+
3503
+ # (Not documented)
3504
+ #
3505
+ # @method position_builder(builder, block, instr)
3506
+ # @param [FFI::Pointer(BuilderRef)] builder
3507
+ # @param [FFI::Pointer(BasicBlockRef)] block
3508
+ # @param [FFI::Pointer(ValueRef)] instr
3509
+ # @return [nil]
3510
+ # @scope class
3511
+ attach_function :position_builder, :LLVMPositionBuilder, [:pointer, :pointer, :pointer], :void
3512
+
3513
+ # (Not documented)
3514
+ #
3515
+ # @method position_builder_before(builder, instr)
3516
+ # @param [FFI::Pointer(BuilderRef)] builder
3517
+ # @param [FFI::Pointer(ValueRef)] instr
3518
+ # @return [nil]
3519
+ # @scope class
3520
+ attach_function :position_builder_before, :LLVMPositionBuilderBefore, [:pointer, :pointer], :void
3521
+
3522
+ # (Not documented)
3523
+ #
3524
+ # @method position_builder_at_end(builder, block)
3525
+ # @param [FFI::Pointer(BuilderRef)] builder
3526
+ # @param [FFI::Pointer(BasicBlockRef)] block
3527
+ # @return [nil]
3528
+ # @scope class
3529
+ attach_function :position_builder_at_end, :LLVMPositionBuilderAtEnd, [:pointer, :pointer], :void
3530
+
3531
+ # (Not documented)
3532
+ #
3533
+ # @method get_insert_block(builder)
3534
+ # @param [FFI::Pointer(BuilderRef)] builder
3535
+ # @return [FFI::Pointer(BasicBlockRef)]
3536
+ # @scope class
3537
+ attach_function :get_insert_block, :LLVMGetInsertBlock, [:pointer], :pointer
3538
+
3539
+ # (Not documented)
3540
+ #
3541
+ # @method clear_insertion_position(builder)
3542
+ # @param [FFI::Pointer(BuilderRef)] builder
3543
+ # @return [nil]
3544
+ # @scope class
3545
+ attach_function :clear_insertion_position, :LLVMClearInsertionPosition, [:pointer], :void
3546
+
3547
+ # (Not documented)
3548
+ #
3549
+ # @method insert_into_builder(builder, instr)
3550
+ # @param [FFI::Pointer(BuilderRef)] builder
3551
+ # @param [FFI::Pointer(ValueRef)] instr
3552
+ # @return [nil]
3553
+ # @scope class
3554
+ attach_function :insert_into_builder, :LLVMInsertIntoBuilder, [:pointer, :pointer], :void
3555
+
3556
+ # (Not documented)
3557
+ #
3558
+ # @method insert_into_builder_with_name(builder, instr, name)
3559
+ # @param [FFI::Pointer(BuilderRef)] builder
3560
+ # @param [FFI::Pointer(ValueRef)] instr
3561
+ # @param [String] name
3562
+ # @return [nil]
3563
+ # @scope class
3564
+ attach_function :insert_into_builder_with_name, :LLVMInsertIntoBuilderWithName, [:pointer, :pointer, :string], :void
3565
+
3566
+ # (Not documented)
3567
+ #
3568
+ # @method dispose_builder(builder)
3569
+ # @param [FFI::Pointer(BuilderRef)] builder
3570
+ # @return [nil]
3571
+ # @scope class
3572
+ attach_function :dispose_builder, :LLVMDisposeBuilder, [:pointer], :void
3573
+
3574
+ # Metadata
3575
+ #
3576
+ # @method set_current_debug_location(builder, l)
3577
+ # @param [FFI::Pointer(BuilderRef)] builder
3578
+ # @param [FFI::Pointer(ValueRef)] l
3579
+ # @return [nil]
3580
+ # @scope class
3581
+ attach_function :set_current_debug_location, :LLVMSetCurrentDebugLocation, [:pointer, :pointer], :void
3582
+
3583
+ # (Not documented)
3584
+ #
3585
+ # @method get_current_debug_location(builder)
3586
+ # @param [FFI::Pointer(BuilderRef)] builder
3587
+ # @return [FFI::Pointer(ValueRef)]
3588
+ # @scope class
3589
+ attach_function :get_current_debug_location, :LLVMGetCurrentDebugLocation, [:pointer], :pointer
3590
+
3591
+ # (Not documented)
3592
+ #
3593
+ # @method set_inst_debug_location(builder, inst)
3594
+ # @param [FFI::Pointer(BuilderRef)] builder
3595
+ # @param [FFI::Pointer(ValueRef)] inst
3596
+ # @return [nil]
3597
+ # @scope class
3598
+ attach_function :set_inst_debug_location, :LLVMSetInstDebugLocation, [:pointer, :pointer], :void
3599
+
3600
+ # Terminators
3601
+ #
3602
+ # @method build_ret_void(builder_ref)
3603
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3604
+ # @return [FFI::Pointer(ValueRef)]
3605
+ # @scope class
3606
+ attach_function :build_ret_void, :LLVMBuildRetVoid, [:pointer], :pointer
3607
+
3608
+ # (Not documented)
3609
+ #
3610
+ # @method build_ret(builder_ref, v)
3611
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3612
+ # @param [FFI::Pointer(ValueRef)] v
3613
+ # @return [FFI::Pointer(ValueRef)]
3614
+ # @scope class
3615
+ attach_function :build_ret, :LLVMBuildRet, [:pointer, :pointer], :pointer
3616
+
3617
+ # (Not documented)
3618
+ #
3619
+ # @method build_aggregate_ret(builder_ref, ret_vals, n)
3620
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3621
+ # @param [FFI::Pointer(*ValueRef)] ret_vals
3622
+ # @param [Integer] n
3623
+ # @return [FFI::Pointer(ValueRef)]
3624
+ # @scope class
3625
+ attach_function :build_aggregate_ret, :LLVMBuildAggregateRet, [:pointer, :pointer, :uint], :pointer
3626
+
3627
+ # (Not documented)
3628
+ #
3629
+ # @method build_br(builder_ref, dest)
3630
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3631
+ # @param [FFI::Pointer(BasicBlockRef)] dest
3632
+ # @return [FFI::Pointer(ValueRef)]
3633
+ # @scope class
3634
+ attach_function :build_br, :LLVMBuildBr, [:pointer, :pointer], :pointer
3635
+
3636
+ # (Not documented)
3637
+ #
3638
+ # @method build_cond_br(builder_ref, if, then, else)
3639
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3640
+ # @param [FFI::Pointer(ValueRef)] if
3641
+ # @param [FFI::Pointer(BasicBlockRef)] then
3642
+ # @param [FFI::Pointer(BasicBlockRef)] else
3643
+ # @return [FFI::Pointer(ValueRef)]
3644
+ # @scope class
3645
+ attach_function :build_cond_br, :LLVMBuildCondBr, [:pointer, :pointer, :pointer, :pointer], :pointer
3646
+
3647
+ # (Not documented)
3648
+ #
3649
+ # @method build_switch(builder_ref, v, else, num_cases)
3650
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3651
+ # @param [FFI::Pointer(ValueRef)] v
3652
+ # @param [FFI::Pointer(BasicBlockRef)] else
3653
+ # @param [Integer] num_cases
3654
+ # @return [FFI::Pointer(ValueRef)]
3655
+ # @scope class
3656
+ attach_function :build_switch, :LLVMBuildSwitch, [:pointer, :pointer, :pointer, :uint], :pointer
3657
+
3658
+ # (Not documented)
3659
+ #
3660
+ # @method build_indirect_br(b, addr, num_dests)
3661
+ # @param [FFI::Pointer(BuilderRef)] b
3662
+ # @param [FFI::Pointer(ValueRef)] addr
3663
+ # @param [Integer] num_dests
3664
+ # @return [FFI::Pointer(ValueRef)]
3665
+ # @scope class
3666
+ attach_function :build_indirect_br, :LLVMBuildIndirectBr, [:pointer, :pointer, :uint], :pointer
3667
+
3668
+ # (Not documented)
3669
+ #
3670
+ # @method build_invoke(builder_ref, fn, args, num_args, then, catch, name)
3671
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3672
+ # @param [FFI::Pointer(ValueRef)] fn
3673
+ # @param [FFI::Pointer(*ValueRef)] args
3674
+ # @param [Integer] num_args
3675
+ # @param [FFI::Pointer(BasicBlockRef)] then
3676
+ # @param [FFI::Pointer(BasicBlockRef)] catch
3677
+ # @param [String] name
3678
+ # @return [FFI::Pointer(ValueRef)]
3679
+ # @scope class
3680
+ attach_function :build_invoke, :LLVMBuildInvoke, [:pointer, :pointer, :pointer, :uint, :pointer, :pointer, :string], :pointer
3681
+
3682
+ # (Not documented)
3683
+ #
3684
+ # @method build_landing_pad(b, ty, pers_fn, num_clauses, name)
3685
+ # @param [FFI::Pointer(BuilderRef)] b
3686
+ # @param [FFI::Pointer(TypeRef)] ty
3687
+ # @param [FFI::Pointer(ValueRef)] pers_fn
3688
+ # @param [Integer] num_clauses
3689
+ # @param [String] name
3690
+ # @return [FFI::Pointer(ValueRef)]
3691
+ # @scope class
3692
+ attach_function :build_landing_pad, :LLVMBuildLandingPad, [:pointer, :pointer, :pointer, :uint, :string], :pointer
3693
+
3694
+ # (Not documented)
3695
+ #
3696
+ # @method build_resume(b, exn)
3697
+ # @param [FFI::Pointer(BuilderRef)] b
3698
+ # @param [FFI::Pointer(ValueRef)] exn
3699
+ # @return [FFI::Pointer(ValueRef)]
3700
+ # @scope class
3701
+ attach_function :build_resume, :LLVMBuildResume, [:pointer, :pointer], :pointer
3702
+
3703
+ # (Not documented)
3704
+ #
3705
+ # @method build_unreachable(builder_ref)
3706
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3707
+ # @return [FFI::Pointer(ValueRef)]
3708
+ # @scope class
3709
+ attach_function :build_unreachable, :LLVMBuildUnreachable, [:pointer], :pointer
3710
+
3711
+ # Add a case to the switch instruction
3712
+ #
3713
+ # @method add_case(switch, on_val, dest)
3714
+ # @param [FFI::Pointer(ValueRef)] switch
3715
+ # @param [FFI::Pointer(ValueRef)] on_val
3716
+ # @param [FFI::Pointer(BasicBlockRef)] dest
3717
+ # @return [nil]
3718
+ # @scope class
3719
+ attach_function :add_case, :LLVMAddCase, [:pointer, :pointer, :pointer], :void
3720
+
3721
+ # Add a destination to the indirectbr instruction
3722
+ #
3723
+ # @method add_destination(indirect_br, dest)
3724
+ # @param [FFI::Pointer(ValueRef)] indirect_br
3725
+ # @param [FFI::Pointer(BasicBlockRef)] dest
3726
+ # @return [nil]
3727
+ # @scope class
3728
+ attach_function :add_destination, :LLVMAddDestination, [:pointer, :pointer], :void
3729
+
3730
+ # Add a catch or filter clause to the landingpad instruction
3731
+ #
3732
+ # @method add_clause(landing_pad, clause_val)
3733
+ # @param [FFI::Pointer(ValueRef)] landing_pad
3734
+ # @param [FFI::Pointer(ValueRef)] clause_val
3735
+ # @return [nil]
3736
+ # @scope class
3737
+ attach_function :add_clause, :LLVMAddClause, [:pointer, :pointer], :void
3738
+
3739
+ # Set the 'cleanup' flag in the landingpad instruction
3740
+ #
3741
+ # @method set_cleanup(landing_pad, val)
3742
+ # @param [FFI::Pointer(ValueRef)] landing_pad
3743
+ # @param [Integer] val
3744
+ # @return [nil]
3745
+ # @scope class
3746
+ attach_function :set_cleanup, :LLVMSetCleanup, [:pointer, :int], :void
3747
+
3748
+ # Arithmetic
3749
+ #
3750
+ # @method build_add(builder_ref, lhs, rhs, name)
3751
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3752
+ # @param [FFI::Pointer(ValueRef)] lhs
3753
+ # @param [FFI::Pointer(ValueRef)] rhs
3754
+ # @param [String] name
3755
+ # @return [FFI::Pointer(ValueRef)]
3756
+ # @scope class
3757
+ attach_function :build_add, :LLVMBuildAdd, [:pointer, :pointer, :pointer, :string], :pointer
3758
+
3759
+ # (Not documented)
3760
+ #
3761
+ # @method build_nsw_add(builder_ref, lhs, rhs, name)
3762
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3763
+ # @param [FFI::Pointer(ValueRef)] lhs
3764
+ # @param [FFI::Pointer(ValueRef)] rhs
3765
+ # @param [String] name
3766
+ # @return [FFI::Pointer(ValueRef)]
3767
+ # @scope class
3768
+ attach_function :build_nsw_add, :LLVMBuildNSWAdd, [:pointer, :pointer, :pointer, :string], :pointer
3769
+
3770
+ # (Not documented)
3771
+ #
3772
+ # @method build_nuw_add(builder_ref, lhs, rhs, name)
3773
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3774
+ # @param [FFI::Pointer(ValueRef)] lhs
3775
+ # @param [FFI::Pointer(ValueRef)] rhs
3776
+ # @param [String] name
3777
+ # @return [FFI::Pointer(ValueRef)]
3778
+ # @scope class
3779
+ attach_function :build_nuw_add, :LLVMBuildNUWAdd, [:pointer, :pointer, :pointer, :string], :pointer
3780
+
3781
+ # (Not documented)
3782
+ #
3783
+ # @method build_f_add(builder_ref, lhs, rhs, name)
3784
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3785
+ # @param [FFI::Pointer(ValueRef)] lhs
3786
+ # @param [FFI::Pointer(ValueRef)] rhs
3787
+ # @param [String] name
3788
+ # @return [FFI::Pointer(ValueRef)]
3789
+ # @scope class
3790
+ attach_function :build_f_add, :LLVMBuildFAdd, [:pointer, :pointer, :pointer, :string], :pointer
3791
+
3792
+ # (Not documented)
3793
+ #
3794
+ # @method build_sub(builder_ref, lhs, rhs, name)
3795
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3796
+ # @param [FFI::Pointer(ValueRef)] lhs
3797
+ # @param [FFI::Pointer(ValueRef)] rhs
3798
+ # @param [String] name
3799
+ # @return [FFI::Pointer(ValueRef)]
3800
+ # @scope class
3801
+ attach_function :build_sub, :LLVMBuildSub, [:pointer, :pointer, :pointer, :string], :pointer
3802
+
3803
+ # (Not documented)
3804
+ #
3805
+ # @method build_nsw_sub(builder_ref, lhs, rhs, name)
3806
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3807
+ # @param [FFI::Pointer(ValueRef)] lhs
3808
+ # @param [FFI::Pointer(ValueRef)] rhs
3809
+ # @param [String] name
3810
+ # @return [FFI::Pointer(ValueRef)]
3811
+ # @scope class
3812
+ attach_function :build_nsw_sub, :LLVMBuildNSWSub, [:pointer, :pointer, :pointer, :string], :pointer
3813
+
3814
+ # (Not documented)
3815
+ #
3816
+ # @method build_nuw_sub(builder_ref, lhs, rhs, name)
3817
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3818
+ # @param [FFI::Pointer(ValueRef)] lhs
3819
+ # @param [FFI::Pointer(ValueRef)] rhs
3820
+ # @param [String] name
3821
+ # @return [FFI::Pointer(ValueRef)]
3822
+ # @scope class
3823
+ attach_function :build_nuw_sub, :LLVMBuildNUWSub, [:pointer, :pointer, :pointer, :string], :pointer
3824
+
3825
+ # (Not documented)
3826
+ #
3827
+ # @method build_f_sub(builder_ref, lhs, rhs, name)
3828
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3829
+ # @param [FFI::Pointer(ValueRef)] lhs
3830
+ # @param [FFI::Pointer(ValueRef)] rhs
3831
+ # @param [String] name
3832
+ # @return [FFI::Pointer(ValueRef)]
3833
+ # @scope class
3834
+ attach_function :build_f_sub, :LLVMBuildFSub, [:pointer, :pointer, :pointer, :string], :pointer
3835
+
3836
+ # (Not documented)
3837
+ #
3838
+ # @method build_mul(builder_ref, lhs, rhs, name)
3839
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3840
+ # @param [FFI::Pointer(ValueRef)] lhs
3841
+ # @param [FFI::Pointer(ValueRef)] rhs
3842
+ # @param [String] name
3843
+ # @return [FFI::Pointer(ValueRef)]
3844
+ # @scope class
3845
+ attach_function :build_mul, :LLVMBuildMul, [:pointer, :pointer, :pointer, :string], :pointer
3846
+
3847
+ # (Not documented)
3848
+ #
3849
+ # @method build_nsw_mul(builder_ref, lhs, rhs, name)
3850
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3851
+ # @param [FFI::Pointer(ValueRef)] lhs
3852
+ # @param [FFI::Pointer(ValueRef)] rhs
3853
+ # @param [String] name
3854
+ # @return [FFI::Pointer(ValueRef)]
3855
+ # @scope class
3856
+ attach_function :build_nsw_mul, :LLVMBuildNSWMul, [:pointer, :pointer, :pointer, :string], :pointer
3857
+
3858
+ # (Not documented)
3859
+ #
3860
+ # @method build_nuw_mul(builder_ref, lhs, rhs, name)
3861
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3862
+ # @param [FFI::Pointer(ValueRef)] lhs
3863
+ # @param [FFI::Pointer(ValueRef)] rhs
3864
+ # @param [String] name
3865
+ # @return [FFI::Pointer(ValueRef)]
3866
+ # @scope class
3867
+ attach_function :build_nuw_mul, :LLVMBuildNUWMul, [:pointer, :pointer, :pointer, :string], :pointer
3868
+
3869
+ # (Not documented)
3870
+ #
3871
+ # @method build_f_mul(builder_ref, lhs, rhs, name)
3872
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3873
+ # @param [FFI::Pointer(ValueRef)] lhs
3874
+ # @param [FFI::Pointer(ValueRef)] rhs
3875
+ # @param [String] name
3876
+ # @return [FFI::Pointer(ValueRef)]
3877
+ # @scope class
3878
+ attach_function :build_f_mul, :LLVMBuildFMul, [:pointer, :pointer, :pointer, :string], :pointer
3879
+
3880
+ # (Not documented)
3881
+ #
3882
+ # @method build_u_div(builder_ref, lhs, rhs, name)
3883
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3884
+ # @param [FFI::Pointer(ValueRef)] lhs
3885
+ # @param [FFI::Pointer(ValueRef)] rhs
3886
+ # @param [String] name
3887
+ # @return [FFI::Pointer(ValueRef)]
3888
+ # @scope class
3889
+ attach_function :build_u_div, :LLVMBuildUDiv, [:pointer, :pointer, :pointer, :string], :pointer
3890
+
3891
+ # (Not documented)
3892
+ #
3893
+ # @method build_s_div(builder_ref, lhs, rhs, name)
3894
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3895
+ # @param [FFI::Pointer(ValueRef)] lhs
3896
+ # @param [FFI::Pointer(ValueRef)] rhs
3897
+ # @param [String] name
3898
+ # @return [FFI::Pointer(ValueRef)]
3899
+ # @scope class
3900
+ attach_function :build_s_div, :LLVMBuildSDiv, [:pointer, :pointer, :pointer, :string], :pointer
3901
+
3902
+ # (Not documented)
3903
+ #
3904
+ # @method build_exact_s_div(builder_ref, lhs, rhs, name)
3905
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3906
+ # @param [FFI::Pointer(ValueRef)] lhs
3907
+ # @param [FFI::Pointer(ValueRef)] rhs
3908
+ # @param [String] name
3909
+ # @return [FFI::Pointer(ValueRef)]
3910
+ # @scope class
3911
+ attach_function :build_exact_s_div, :LLVMBuildExactSDiv, [:pointer, :pointer, :pointer, :string], :pointer
3912
+
3913
+ # (Not documented)
3914
+ #
3915
+ # @method build_f_div(builder_ref, lhs, rhs, name)
3916
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3917
+ # @param [FFI::Pointer(ValueRef)] lhs
3918
+ # @param [FFI::Pointer(ValueRef)] rhs
3919
+ # @param [String] name
3920
+ # @return [FFI::Pointer(ValueRef)]
3921
+ # @scope class
3922
+ attach_function :build_f_div, :LLVMBuildFDiv, [:pointer, :pointer, :pointer, :string], :pointer
3923
+
3924
+ # (Not documented)
3925
+ #
3926
+ # @method build_u_rem(builder_ref, lhs, rhs, name)
3927
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3928
+ # @param [FFI::Pointer(ValueRef)] lhs
3929
+ # @param [FFI::Pointer(ValueRef)] rhs
3930
+ # @param [String] name
3931
+ # @return [FFI::Pointer(ValueRef)]
3932
+ # @scope class
3933
+ attach_function :build_u_rem, :LLVMBuildURem, [:pointer, :pointer, :pointer, :string], :pointer
3934
+
3935
+ # (Not documented)
3936
+ #
3937
+ # @method build_s_rem(builder_ref, lhs, rhs, name)
3938
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3939
+ # @param [FFI::Pointer(ValueRef)] lhs
3940
+ # @param [FFI::Pointer(ValueRef)] rhs
3941
+ # @param [String] name
3942
+ # @return [FFI::Pointer(ValueRef)]
3943
+ # @scope class
3944
+ attach_function :build_s_rem, :LLVMBuildSRem, [:pointer, :pointer, :pointer, :string], :pointer
3945
+
3946
+ # (Not documented)
3947
+ #
3948
+ # @method build_f_rem(builder_ref, lhs, rhs, name)
3949
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3950
+ # @param [FFI::Pointer(ValueRef)] lhs
3951
+ # @param [FFI::Pointer(ValueRef)] rhs
3952
+ # @param [String] name
3953
+ # @return [FFI::Pointer(ValueRef)]
3954
+ # @scope class
3955
+ attach_function :build_f_rem, :LLVMBuildFRem, [:pointer, :pointer, :pointer, :string], :pointer
3956
+
3957
+ # (Not documented)
3958
+ #
3959
+ # @method build_shl(builder_ref, lhs, rhs, name)
3960
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3961
+ # @param [FFI::Pointer(ValueRef)] lhs
3962
+ # @param [FFI::Pointer(ValueRef)] rhs
3963
+ # @param [String] name
3964
+ # @return [FFI::Pointer(ValueRef)]
3965
+ # @scope class
3966
+ attach_function :build_shl, :LLVMBuildShl, [:pointer, :pointer, :pointer, :string], :pointer
3967
+
3968
+ # (Not documented)
3969
+ #
3970
+ # @method build_l_shr(builder_ref, lhs, rhs, name)
3971
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3972
+ # @param [FFI::Pointer(ValueRef)] lhs
3973
+ # @param [FFI::Pointer(ValueRef)] rhs
3974
+ # @param [String] name
3975
+ # @return [FFI::Pointer(ValueRef)]
3976
+ # @scope class
3977
+ attach_function :build_l_shr, :LLVMBuildLShr, [:pointer, :pointer, :pointer, :string], :pointer
3978
+
3979
+ # (Not documented)
3980
+ #
3981
+ # @method build_a_shr(builder_ref, lhs, rhs, name)
3982
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3983
+ # @param [FFI::Pointer(ValueRef)] lhs
3984
+ # @param [FFI::Pointer(ValueRef)] rhs
3985
+ # @param [String] name
3986
+ # @return [FFI::Pointer(ValueRef)]
3987
+ # @scope class
3988
+ attach_function :build_a_shr, :LLVMBuildAShr, [:pointer, :pointer, :pointer, :string], :pointer
3989
+
3990
+ # (Not documented)
3991
+ #
3992
+ # @method build_and(builder_ref, lhs, rhs, name)
3993
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
3994
+ # @param [FFI::Pointer(ValueRef)] lhs
3995
+ # @param [FFI::Pointer(ValueRef)] rhs
3996
+ # @param [String] name
3997
+ # @return [FFI::Pointer(ValueRef)]
3998
+ # @scope class
3999
+ attach_function :build_and, :LLVMBuildAnd, [:pointer, :pointer, :pointer, :string], :pointer
4000
+
4001
+ # (Not documented)
4002
+ #
4003
+ # @method build_or(builder_ref, lhs, rhs, name)
4004
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4005
+ # @param [FFI::Pointer(ValueRef)] lhs
4006
+ # @param [FFI::Pointer(ValueRef)] rhs
4007
+ # @param [String] name
4008
+ # @return [FFI::Pointer(ValueRef)]
4009
+ # @scope class
4010
+ attach_function :build_or, :LLVMBuildOr, [:pointer, :pointer, :pointer, :string], :pointer
4011
+
4012
+ # (Not documented)
4013
+ #
4014
+ # @method build_xor(builder_ref, lhs, rhs, name)
4015
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4016
+ # @param [FFI::Pointer(ValueRef)] lhs
4017
+ # @param [FFI::Pointer(ValueRef)] rhs
4018
+ # @param [String] name
4019
+ # @return [FFI::Pointer(ValueRef)]
4020
+ # @scope class
4021
+ attach_function :build_xor, :LLVMBuildXor, [:pointer, :pointer, :pointer, :string], :pointer
4022
+
4023
+ # (Not documented)
4024
+ #
4025
+ # @method build_bin_op(b, op, lhs, rhs, name)
4026
+ # @param [FFI::Pointer(BuilderRef)] b
4027
+ # @param [Symbol from opcode_enum] op
4028
+ # @param [FFI::Pointer(ValueRef)] lhs
4029
+ # @param [FFI::Pointer(ValueRef)] rhs
4030
+ # @param [String] name
4031
+ # @return [FFI::Pointer(ValueRef)]
4032
+ # @scope class
4033
+ attach_function :build_bin_op, :LLVMBuildBinOp, [:pointer, :opcode, :pointer, :pointer, :string], :pointer
4034
+
4035
+ # (Not documented)
4036
+ #
4037
+ # @method build_neg(builder_ref, v, name)
4038
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4039
+ # @param [FFI::Pointer(ValueRef)] v
4040
+ # @param [String] name
4041
+ # @return [FFI::Pointer(ValueRef)]
4042
+ # @scope class
4043
+ attach_function :build_neg, :LLVMBuildNeg, [:pointer, :pointer, :string], :pointer
4044
+
4045
+ # (Not documented)
4046
+ #
4047
+ # @method build_nsw_neg(b, v, name)
4048
+ # @param [FFI::Pointer(BuilderRef)] b
4049
+ # @param [FFI::Pointer(ValueRef)] v
4050
+ # @param [String] name
4051
+ # @return [FFI::Pointer(ValueRef)]
4052
+ # @scope class
4053
+ attach_function :build_nsw_neg, :LLVMBuildNSWNeg, [:pointer, :pointer, :string], :pointer
4054
+
4055
+ # (Not documented)
4056
+ #
4057
+ # @method build_nuw_neg(b, v, name)
4058
+ # @param [FFI::Pointer(BuilderRef)] b
4059
+ # @param [FFI::Pointer(ValueRef)] v
4060
+ # @param [String] name
4061
+ # @return [FFI::Pointer(ValueRef)]
4062
+ # @scope class
4063
+ attach_function :build_nuw_neg, :LLVMBuildNUWNeg, [:pointer, :pointer, :string], :pointer
4064
+
4065
+ # (Not documented)
4066
+ #
4067
+ # @method build_f_neg(builder_ref, v, name)
4068
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4069
+ # @param [FFI::Pointer(ValueRef)] v
4070
+ # @param [String] name
4071
+ # @return [FFI::Pointer(ValueRef)]
4072
+ # @scope class
4073
+ attach_function :build_f_neg, :LLVMBuildFNeg, [:pointer, :pointer, :string], :pointer
4074
+
4075
+ # (Not documented)
4076
+ #
4077
+ # @method build_not(builder_ref, v, name)
4078
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4079
+ # @param [FFI::Pointer(ValueRef)] v
4080
+ # @param [String] name
4081
+ # @return [FFI::Pointer(ValueRef)]
4082
+ # @scope class
4083
+ attach_function :build_not, :LLVMBuildNot, [:pointer, :pointer, :string], :pointer
4084
+
4085
+ # Memory
4086
+ #
4087
+ # @method build_malloc(builder_ref, ty, name)
4088
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4089
+ # @param [FFI::Pointer(TypeRef)] ty
4090
+ # @param [String] name
4091
+ # @return [FFI::Pointer(ValueRef)]
4092
+ # @scope class
4093
+ attach_function :build_malloc, :LLVMBuildMalloc, [:pointer, :pointer, :string], :pointer
4094
+
4095
+ # (Not documented)
4096
+ #
4097
+ # @method build_array_malloc(builder_ref, ty, val, name)
4098
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4099
+ # @param [FFI::Pointer(TypeRef)] ty
4100
+ # @param [FFI::Pointer(ValueRef)] val
4101
+ # @param [String] name
4102
+ # @return [FFI::Pointer(ValueRef)]
4103
+ # @scope class
4104
+ attach_function :build_array_malloc, :LLVMBuildArrayMalloc, [:pointer, :pointer, :pointer, :string], :pointer
4105
+
4106
+ # (Not documented)
4107
+ #
4108
+ # @method build_alloca(builder_ref, ty, name)
4109
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4110
+ # @param [FFI::Pointer(TypeRef)] ty
4111
+ # @param [String] name
4112
+ # @return [FFI::Pointer(ValueRef)]
4113
+ # @scope class
4114
+ attach_function :build_alloca, :LLVMBuildAlloca, [:pointer, :pointer, :string], :pointer
4115
+
4116
+ # (Not documented)
4117
+ #
4118
+ # @method build_array_alloca(builder_ref, ty, val, name)
4119
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4120
+ # @param [FFI::Pointer(TypeRef)] ty
4121
+ # @param [FFI::Pointer(ValueRef)] val
4122
+ # @param [String] name
4123
+ # @return [FFI::Pointer(ValueRef)]
4124
+ # @scope class
4125
+ attach_function :build_array_alloca, :LLVMBuildArrayAlloca, [:pointer, :pointer, :pointer, :string], :pointer
4126
+
4127
+ # (Not documented)
4128
+ #
4129
+ # @method build_free(builder_ref, pointer_val)
4130
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4131
+ # @param [FFI::Pointer(ValueRef)] pointer_val
4132
+ # @return [FFI::Pointer(ValueRef)]
4133
+ # @scope class
4134
+ attach_function :build_free, :LLVMBuildFree, [:pointer, :pointer], :pointer
4135
+
4136
+ # (Not documented)
4137
+ #
4138
+ # @method build_load(builder_ref, pointer_val, name)
4139
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4140
+ # @param [FFI::Pointer(ValueRef)] pointer_val
4141
+ # @param [String] name
4142
+ # @return [FFI::Pointer(ValueRef)]
4143
+ # @scope class
4144
+ attach_function :build_load, :LLVMBuildLoad, [:pointer, :pointer, :string], :pointer
4145
+
4146
+ # (Not documented)
4147
+ #
4148
+ # @method build_store(builder_ref, val, ptr)
4149
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4150
+ # @param [FFI::Pointer(ValueRef)] val
4151
+ # @param [FFI::Pointer(ValueRef)] ptr
4152
+ # @return [FFI::Pointer(ValueRef)]
4153
+ # @scope class
4154
+ attach_function :build_store, :LLVMBuildStore, [:pointer, :pointer, :pointer], :pointer
4155
+
4156
+ # (Not documented)
4157
+ #
4158
+ # @method build_gep(b, pointer, indices, num_indices, name)
4159
+ # @param [FFI::Pointer(BuilderRef)] b
4160
+ # @param [FFI::Pointer(ValueRef)] pointer
4161
+ # @param [FFI::Pointer(*ValueRef)] indices
4162
+ # @param [Integer] num_indices
4163
+ # @param [String] name
4164
+ # @return [FFI::Pointer(ValueRef)]
4165
+ # @scope class
4166
+ attach_function :build_gep, :LLVMBuildGEP, [:pointer, :pointer, :pointer, :uint, :string], :pointer
4167
+
4168
+ # (Not documented)
4169
+ #
4170
+ # @method build_in_bounds_gep(b, pointer, indices, num_indices, name)
4171
+ # @param [FFI::Pointer(BuilderRef)] b
4172
+ # @param [FFI::Pointer(ValueRef)] pointer
4173
+ # @param [FFI::Pointer(*ValueRef)] indices
4174
+ # @param [Integer] num_indices
4175
+ # @param [String] name
4176
+ # @return [FFI::Pointer(ValueRef)]
4177
+ # @scope class
4178
+ attach_function :build_in_bounds_gep, :LLVMBuildInBoundsGEP, [:pointer, :pointer, :pointer, :uint, :string], :pointer
4179
+
4180
+ # (Not documented)
4181
+ #
4182
+ # @method build_struct_gep(b, pointer, idx, name)
4183
+ # @param [FFI::Pointer(BuilderRef)] b
4184
+ # @param [FFI::Pointer(ValueRef)] pointer
4185
+ # @param [Integer] idx
4186
+ # @param [String] name
4187
+ # @return [FFI::Pointer(ValueRef)]
4188
+ # @scope class
4189
+ attach_function :build_struct_gep, :LLVMBuildStructGEP, [:pointer, :pointer, :uint, :string], :pointer
4190
+
4191
+ # (Not documented)
4192
+ #
4193
+ # @method build_global_string(b, str, name)
4194
+ # @param [FFI::Pointer(BuilderRef)] b
4195
+ # @param [String] str
4196
+ # @param [String] name
4197
+ # @return [FFI::Pointer(ValueRef)]
4198
+ # @scope class
4199
+ attach_function :build_global_string, :LLVMBuildGlobalString, [:pointer, :string, :string], :pointer
4200
+
4201
+ # (Not documented)
4202
+ #
4203
+ # @method build_global_string_ptr(b, str, name)
4204
+ # @param [FFI::Pointer(BuilderRef)] b
4205
+ # @param [String] str
4206
+ # @param [String] name
4207
+ # @return [FFI::Pointer(ValueRef)]
4208
+ # @scope class
4209
+ attach_function :build_global_string_ptr, :LLVMBuildGlobalStringPtr, [:pointer, :string, :string], :pointer
4210
+
4211
+ # Casts
4212
+ #
4213
+ # @method build_trunc(builder_ref, val, dest_ty, name)
4214
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4215
+ # @param [FFI::Pointer(ValueRef)] val
4216
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4217
+ # @param [String] name
4218
+ # @return [FFI::Pointer(ValueRef)]
4219
+ # @scope class
4220
+ attach_function :build_trunc, :LLVMBuildTrunc, [:pointer, :pointer, :pointer, :string], :pointer
4221
+
4222
+ # (Not documented)
4223
+ #
4224
+ # @method build_z_ext(builder_ref, val, dest_ty, name)
4225
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4226
+ # @param [FFI::Pointer(ValueRef)] val
4227
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4228
+ # @param [String] name
4229
+ # @return [FFI::Pointer(ValueRef)]
4230
+ # @scope class
4231
+ attach_function :build_z_ext, :LLVMBuildZExt, [:pointer, :pointer, :pointer, :string], :pointer
4232
+
4233
+ # (Not documented)
4234
+ #
4235
+ # @method build_s_ext(builder_ref, val, dest_ty, name)
4236
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4237
+ # @param [FFI::Pointer(ValueRef)] val
4238
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4239
+ # @param [String] name
4240
+ # @return [FFI::Pointer(ValueRef)]
4241
+ # @scope class
4242
+ attach_function :build_s_ext, :LLVMBuildSExt, [:pointer, :pointer, :pointer, :string], :pointer
4243
+
4244
+ # (Not documented)
4245
+ #
4246
+ # @method build_fp_to_ui(builder_ref, val, dest_ty, name)
4247
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4248
+ # @param [FFI::Pointer(ValueRef)] val
4249
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4250
+ # @param [String] name
4251
+ # @return [FFI::Pointer(ValueRef)]
4252
+ # @scope class
4253
+ attach_function :build_fp_to_ui, :LLVMBuildFPToUI, [:pointer, :pointer, :pointer, :string], :pointer
4254
+
4255
+ # (Not documented)
4256
+ #
4257
+ # @method build_fp_to_si(builder_ref, val, dest_ty, name)
4258
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4259
+ # @param [FFI::Pointer(ValueRef)] val
4260
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4261
+ # @param [String] name
4262
+ # @return [FFI::Pointer(ValueRef)]
4263
+ # @scope class
4264
+ attach_function :build_fp_to_si, :LLVMBuildFPToSI, [:pointer, :pointer, :pointer, :string], :pointer
4265
+
4266
+ # (Not documented)
4267
+ #
4268
+ # @method build_ui_to_fp(builder_ref, val, dest_ty, name)
4269
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4270
+ # @param [FFI::Pointer(ValueRef)] val
4271
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4272
+ # @param [String] name
4273
+ # @return [FFI::Pointer(ValueRef)]
4274
+ # @scope class
4275
+ attach_function :build_ui_to_fp, :LLVMBuildUIToFP, [:pointer, :pointer, :pointer, :string], :pointer
4276
+
4277
+ # (Not documented)
4278
+ #
4279
+ # @method build_si_to_fp(builder_ref, val, dest_ty, name)
4280
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4281
+ # @param [FFI::Pointer(ValueRef)] val
4282
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4283
+ # @param [String] name
4284
+ # @return [FFI::Pointer(ValueRef)]
4285
+ # @scope class
4286
+ attach_function :build_si_to_fp, :LLVMBuildSIToFP, [:pointer, :pointer, :pointer, :string], :pointer
4287
+
4288
+ # (Not documented)
4289
+ #
4290
+ # @method build_fp_trunc(builder_ref, val, dest_ty, name)
4291
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4292
+ # @param [FFI::Pointer(ValueRef)] val
4293
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4294
+ # @param [String] name
4295
+ # @return [FFI::Pointer(ValueRef)]
4296
+ # @scope class
4297
+ attach_function :build_fp_trunc, :LLVMBuildFPTrunc, [:pointer, :pointer, :pointer, :string], :pointer
4298
+
4299
+ # (Not documented)
4300
+ #
4301
+ # @method build_fp_ext(builder_ref, val, dest_ty, name)
4302
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4303
+ # @param [FFI::Pointer(ValueRef)] val
4304
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4305
+ # @param [String] name
4306
+ # @return [FFI::Pointer(ValueRef)]
4307
+ # @scope class
4308
+ attach_function :build_fp_ext, :LLVMBuildFPExt, [:pointer, :pointer, :pointer, :string], :pointer
4309
+
4310
+ # (Not documented)
4311
+ #
4312
+ # @method build_ptr_to_int(builder_ref, val, dest_ty, name)
4313
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4314
+ # @param [FFI::Pointer(ValueRef)] val
4315
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4316
+ # @param [String] name
4317
+ # @return [FFI::Pointer(ValueRef)]
4318
+ # @scope class
4319
+ attach_function :build_ptr_to_int, :LLVMBuildPtrToInt, [:pointer, :pointer, :pointer, :string], :pointer
4320
+
4321
+ # (Not documented)
4322
+ #
4323
+ # @method build_int_to_ptr(builder_ref, val, dest_ty, name)
4324
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4325
+ # @param [FFI::Pointer(ValueRef)] val
4326
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4327
+ # @param [String] name
4328
+ # @return [FFI::Pointer(ValueRef)]
4329
+ # @scope class
4330
+ attach_function :build_int_to_ptr, :LLVMBuildIntToPtr, [:pointer, :pointer, :pointer, :string], :pointer
4331
+
4332
+ # (Not documented)
4333
+ #
4334
+ # @method build_bit_cast(builder_ref, val, dest_ty, name)
4335
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4336
+ # @param [FFI::Pointer(ValueRef)] val
4337
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4338
+ # @param [String] name
4339
+ # @return [FFI::Pointer(ValueRef)]
4340
+ # @scope class
4341
+ attach_function :build_bit_cast, :LLVMBuildBitCast, [:pointer, :pointer, :pointer, :string], :pointer
4342
+
4343
+ # (Not documented)
4344
+ #
4345
+ # @method build_z_ext_or_bit_cast(builder_ref, val, dest_ty, name)
4346
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4347
+ # @param [FFI::Pointer(ValueRef)] val
4348
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4349
+ # @param [String] name
4350
+ # @return [FFI::Pointer(ValueRef)]
4351
+ # @scope class
4352
+ attach_function :build_z_ext_or_bit_cast, :LLVMBuildZExtOrBitCast, [:pointer, :pointer, :pointer, :string], :pointer
4353
+
4354
+ # (Not documented)
4355
+ #
4356
+ # @method build_s_ext_or_bit_cast(builder_ref, val, dest_ty, name)
4357
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4358
+ # @param [FFI::Pointer(ValueRef)] val
4359
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4360
+ # @param [String] name
4361
+ # @return [FFI::Pointer(ValueRef)]
4362
+ # @scope class
4363
+ attach_function :build_s_ext_or_bit_cast, :LLVMBuildSExtOrBitCast, [:pointer, :pointer, :pointer, :string], :pointer
4364
+
4365
+ # (Not documented)
4366
+ #
4367
+ # @method build_trunc_or_bit_cast(builder_ref, val, dest_ty, name)
4368
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4369
+ # @param [FFI::Pointer(ValueRef)] val
4370
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4371
+ # @param [String] name
4372
+ # @return [FFI::Pointer(ValueRef)]
4373
+ # @scope class
4374
+ attach_function :build_trunc_or_bit_cast, :LLVMBuildTruncOrBitCast, [:pointer, :pointer, :pointer, :string], :pointer
4375
+
4376
+ # (Not documented)
4377
+ #
4378
+ # @method build_cast(b, op, val, dest_ty, name)
4379
+ # @param [FFI::Pointer(BuilderRef)] b
4380
+ # @param [Symbol from opcode_enum] op
4381
+ # @param [FFI::Pointer(ValueRef)] val
4382
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4383
+ # @param [String] name
4384
+ # @return [FFI::Pointer(ValueRef)]
4385
+ # @scope class
4386
+ attach_function :build_cast, :LLVMBuildCast, [:pointer, :opcode, :pointer, :pointer, :string], :pointer
4387
+
4388
+ # (Not documented)
4389
+ #
4390
+ # @method build_pointer_cast(builder_ref, val, dest_ty, name)
4391
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4392
+ # @param [FFI::Pointer(ValueRef)] val
4393
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4394
+ # @param [String] name
4395
+ # @return [FFI::Pointer(ValueRef)]
4396
+ # @scope class
4397
+ attach_function :build_pointer_cast, :LLVMBuildPointerCast, [:pointer, :pointer, :pointer, :string], :pointer
4398
+
4399
+ # (Not documented)
4400
+ #
4401
+ # @method build_int_cast(builder_ref, val, dest_ty, name)
4402
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4403
+ # @param [FFI::Pointer(ValueRef)] val
4404
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4405
+ # @param [String] name
4406
+ # @return [FFI::Pointer(ValueRef)]
4407
+ # @scope class
4408
+ attach_function :build_int_cast, :LLVMBuildIntCast, [:pointer, :pointer, :pointer, :string], :pointer
4409
+
4410
+ # (Not documented)
4411
+ #
4412
+ # @method build_fp_cast(builder_ref, val, dest_ty, name)
4413
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4414
+ # @param [FFI::Pointer(ValueRef)] val
4415
+ # @param [FFI::Pointer(TypeRef)] dest_ty
4416
+ # @param [String] name
4417
+ # @return [FFI::Pointer(ValueRef)]
4418
+ # @scope class
4419
+ attach_function :build_fp_cast, :LLVMBuildFPCast, [:pointer, :pointer, :pointer, :string], :pointer
4420
+
4421
+ # Comparisons
4422
+ #
4423
+ # @method build_i_cmp(builder_ref, op, lhs, rhs, name)
4424
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4425
+ # @param [Symbol from int_predicate_enum] op
4426
+ # @param [FFI::Pointer(ValueRef)] lhs
4427
+ # @param [FFI::Pointer(ValueRef)] rhs
4428
+ # @param [String] name
4429
+ # @return [FFI::Pointer(ValueRef)]
4430
+ # @scope class
4431
+ attach_function :build_i_cmp, :LLVMBuildICmp, [:pointer, :int_predicate, :pointer, :pointer, :string], :pointer
4432
+
4433
+ # (Not documented)
4434
+ #
4435
+ # @method build_f_cmp(builder_ref, op, lhs, rhs, name)
4436
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4437
+ # @param [Symbol from real_predicate_enum] op
4438
+ # @param [FFI::Pointer(ValueRef)] lhs
4439
+ # @param [FFI::Pointer(ValueRef)] rhs
4440
+ # @param [String] name
4441
+ # @return [FFI::Pointer(ValueRef)]
4442
+ # @scope class
4443
+ attach_function :build_f_cmp, :LLVMBuildFCmp, [:pointer, :real_predicate, :pointer, :pointer, :string], :pointer
4444
+
4445
+ # Miscellaneous instructions
4446
+ #
4447
+ # @method build_phi(builder_ref, ty, name)
4448
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4449
+ # @param [FFI::Pointer(TypeRef)] ty
4450
+ # @param [String] name
4451
+ # @return [FFI::Pointer(ValueRef)]
4452
+ # @scope class
4453
+ attach_function :build_phi, :LLVMBuildPhi, [:pointer, :pointer, :string], :pointer
4454
+
4455
+ # (Not documented)
4456
+ #
4457
+ # @method build_call(builder_ref, fn, args, num_args, name)
4458
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4459
+ # @param [FFI::Pointer(ValueRef)] fn
4460
+ # @param [FFI::Pointer(*ValueRef)] args
4461
+ # @param [Integer] num_args
4462
+ # @param [String] name
4463
+ # @return [FFI::Pointer(ValueRef)]
4464
+ # @scope class
4465
+ attach_function :build_call, :LLVMBuildCall, [:pointer, :pointer, :pointer, :uint, :string], :pointer
4466
+
4467
+ # (Not documented)
4468
+ #
4469
+ # @method build_select(builder_ref, if, then, else, name)
4470
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4471
+ # @param [FFI::Pointer(ValueRef)] if
4472
+ # @param [FFI::Pointer(ValueRef)] then
4473
+ # @param [FFI::Pointer(ValueRef)] else
4474
+ # @param [String] name
4475
+ # @return [FFI::Pointer(ValueRef)]
4476
+ # @scope class
4477
+ attach_function :build_select, :LLVMBuildSelect, [:pointer, :pointer, :pointer, :pointer, :string], :pointer
4478
+
4479
+ # (Not documented)
4480
+ #
4481
+ # @method build_va_arg(builder_ref, list, ty, name)
4482
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4483
+ # @param [FFI::Pointer(ValueRef)] list
4484
+ # @param [FFI::Pointer(TypeRef)] ty
4485
+ # @param [String] name
4486
+ # @return [FFI::Pointer(ValueRef)]
4487
+ # @scope class
4488
+ attach_function :build_va_arg, :LLVMBuildVAArg, [:pointer, :pointer, :pointer, :string], :pointer
4489
+
4490
+ # (Not documented)
4491
+ #
4492
+ # @method build_extract_element(builder_ref, vec_val, index, name)
4493
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4494
+ # @param [FFI::Pointer(ValueRef)] vec_val
4495
+ # @param [FFI::Pointer(ValueRef)] index
4496
+ # @param [String] name
4497
+ # @return [FFI::Pointer(ValueRef)]
4498
+ # @scope class
4499
+ attach_function :build_extract_element, :LLVMBuildExtractElement, [:pointer, :pointer, :pointer, :string], :pointer
4500
+
4501
+ # (Not documented)
4502
+ #
4503
+ # @method build_insert_element(builder_ref, vec_val, elt_val, index, name)
4504
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4505
+ # @param [FFI::Pointer(ValueRef)] vec_val
4506
+ # @param [FFI::Pointer(ValueRef)] elt_val
4507
+ # @param [FFI::Pointer(ValueRef)] index
4508
+ # @param [String] name
4509
+ # @return [FFI::Pointer(ValueRef)]
4510
+ # @scope class
4511
+ attach_function :build_insert_element, :LLVMBuildInsertElement, [:pointer, :pointer, :pointer, :pointer, :string], :pointer
4512
+
4513
+ # (Not documented)
4514
+ #
4515
+ # @method build_shuffle_vector(builder_ref, v1, v2, mask, name)
4516
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4517
+ # @param [FFI::Pointer(ValueRef)] v1
4518
+ # @param [FFI::Pointer(ValueRef)] v2
4519
+ # @param [FFI::Pointer(ValueRef)] mask
4520
+ # @param [String] name
4521
+ # @return [FFI::Pointer(ValueRef)]
4522
+ # @scope class
4523
+ attach_function :build_shuffle_vector, :LLVMBuildShuffleVector, [:pointer, :pointer, :pointer, :pointer, :string], :pointer
4524
+
4525
+ # (Not documented)
4526
+ #
4527
+ # @method build_extract_value(builder_ref, agg_val, index, name)
4528
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4529
+ # @param [FFI::Pointer(ValueRef)] agg_val
4530
+ # @param [Integer] index
4531
+ # @param [String] name
4532
+ # @return [FFI::Pointer(ValueRef)]
4533
+ # @scope class
4534
+ attach_function :build_extract_value, :LLVMBuildExtractValue, [:pointer, :pointer, :uint, :string], :pointer
4535
+
4536
+ # (Not documented)
4537
+ #
4538
+ # @method build_insert_value(builder_ref, agg_val, elt_val, index, name)
4539
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4540
+ # @param [FFI::Pointer(ValueRef)] agg_val
4541
+ # @param [FFI::Pointer(ValueRef)] elt_val
4542
+ # @param [Integer] index
4543
+ # @param [String] name
4544
+ # @return [FFI::Pointer(ValueRef)]
4545
+ # @scope class
4546
+ attach_function :build_insert_value, :LLVMBuildInsertValue, [:pointer, :pointer, :pointer, :uint, :string], :pointer
4547
+
4548
+ # (Not documented)
4549
+ #
4550
+ # @method build_is_null(builder_ref, val, name)
4551
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4552
+ # @param [FFI::Pointer(ValueRef)] val
4553
+ # @param [String] name
4554
+ # @return [FFI::Pointer(ValueRef)]
4555
+ # @scope class
4556
+ attach_function :build_is_null, :LLVMBuildIsNull, [:pointer, :pointer, :string], :pointer
4557
+
4558
+ # (Not documented)
4559
+ #
4560
+ # @method build_is_not_null(builder_ref, val, name)
4561
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4562
+ # @param [FFI::Pointer(ValueRef)] val
4563
+ # @param [String] name
4564
+ # @return [FFI::Pointer(ValueRef)]
4565
+ # @scope class
4566
+ attach_function :build_is_not_null, :LLVMBuildIsNotNull, [:pointer, :pointer, :string], :pointer
4567
+
4568
+ # (Not documented)
4569
+ #
4570
+ # @method build_ptr_diff(builder_ref, lhs, rhs, name)
4571
+ # @param [FFI::Pointer(BuilderRef)] builder_ref
4572
+ # @param [FFI::Pointer(ValueRef)] lhs
4573
+ # @param [FFI::Pointer(ValueRef)] rhs
4574
+ # @param [String] name
4575
+ # @return [FFI::Pointer(ValueRef)]
4576
+ # @scope class
4577
+ attach_function :build_ptr_diff, :LLVMBuildPtrDiff, [:pointer, :pointer, :pointer, :string], :pointer
4578
+
4579
+ # Changes the type of M so it can be passed to FunctionPassManagers and the
4580
+ # JIT. They take ModuleProviders for historical reasons.
4581
+ #
4582
+ # @method create_module_provider_for_existing_module(m)
4583
+ # @param [FFI::Pointer(ModuleRef)] m
4584
+ # @return [FFI::Pointer(ModuleProviderRef)]
4585
+ # @scope class
4586
+ attach_function :create_module_provider_for_existing_module, :LLVMCreateModuleProviderForExistingModule, [:pointer], :pointer
4587
+
4588
+ # Destroys the module M.
4589
+ #
4590
+ # @method dispose_module_provider(m)
4591
+ # @param [FFI::Pointer(ModuleProviderRef)] m
4592
+ # @return [nil]
4593
+ # @scope class
4594
+ attach_function :dispose_module_provider, :LLVMDisposeModuleProvider, [:pointer], :void
4595
+
4596
+ # ===-- Memory buffers ----------------------------------------------------===
4597
+ #
4598
+ # @method create_memory_buffer_with_contents_of_file(path, out_mem_buf, out_message)
4599
+ # @param [String] path
4600
+ # @param [FFI::Pointer(*MemoryBufferRef)] out_mem_buf
4601
+ # @param [FFI::Pointer(**Char_S)] out_message
4602
+ # @return [Integer]
4603
+ # @scope class
4604
+ attach_function :create_memory_buffer_with_contents_of_file, :LLVMCreateMemoryBufferWithContentsOfFile, [:string, :pointer, :pointer], :int
4605
+
4606
+ # (Not documented)
4607
+ #
4608
+ # @method create_memory_buffer_with_stdin(out_mem_buf, out_message)
4609
+ # @param [FFI::Pointer(*MemoryBufferRef)] out_mem_buf
4610
+ # @param [FFI::Pointer(**Char_S)] out_message
4611
+ # @return [Integer]
4612
+ # @scope class
4613
+ attach_function :create_memory_buffer_with_stdin, :LLVMCreateMemoryBufferWithSTDIN, [:pointer, :pointer], :int
4614
+
4615
+ # (Not documented)
4616
+ #
4617
+ # @method dispose_memory_buffer(mem_buf)
4618
+ # @param [FFI::Pointer(MemoryBufferRef)] mem_buf
4619
+ # @return [nil]
4620
+ # @scope class
4621
+ attach_function :dispose_memory_buffer, :LLVMDisposeMemoryBuffer, [:pointer], :void
4622
+
4623
+ # Return the global pass registry, for use with initialization functions.
4624
+ # See llvm::PassRegistry::getPassRegistry.
4625
+ #
4626
+ # @method get_global_pass_registry()
4627
+ # @return [FFI::Pointer(PassRegistryRef)]
4628
+ # @scope class
4629
+ attach_function :get_global_pass_registry, :LLVMGetGlobalPassRegistry, [], :pointer
4630
+
4631
+ # Constructs a new whole-module pass pipeline. This type of pipeline is
4632
+ # suitable for link-time optimization and whole-module transformations.
4633
+ # See llvm::PassManager::PassManager.
4634
+ #
4635
+ # @method create_pass_manager()
4636
+ # @return [FFI::Pointer(PassManagerRef)]
4637
+ # @scope class
4638
+ attach_function :create_pass_manager, :LLVMCreatePassManager, [], :pointer
4639
+
4640
+ # Constructs a new function-by-function pass pipeline over the module
4641
+ # provider. It does not take ownership of the module provider. This type of
4642
+ # pipeline is suitable for code generation and JIT compilation tasks.
4643
+ # See llvm::FunctionPassManager::FunctionPassManager.
4644
+ #
4645
+ # @method create_function_pass_manager_for_module(m)
4646
+ # @param [FFI::Pointer(ModuleRef)] m
4647
+ # @return [FFI::Pointer(PassManagerRef)]
4648
+ # @scope class
4649
+ attach_function :create_function_pass_manager_for_module, :LLVMCreateFunctionPassManagerForModule, [:pointer], :pointer
4650
+
4651
+ # Deprecated: Use LLVMCreateFunctionPassManagerForModule instead.
4652
+ #
4653
+ # @method create_function_pass_manager(mp)
4654
+ # @param [FFI::Pointer(ModuleProviderRef)] mp
4655
+ # @return [FFI::Pointer(PassManagerRef)]
4656
+ # @scope class
4657
+ attach_function :create_function_pass_manager, :LLVMCreateFunctionPassManager, [:pointer], :pointer
4658
+
4659
+ # Initializes, executes on the provided module, and finalizes all of the
4660
+ # passes scheduled in the pass manager. Returns 1 if any of the passes
4661
+ # modified the module, 0 otherwise. See llvm::PassManager::run(Module&).
4662
+ #
4663
+ # @method run_pass_manager(pm, m)
4664
+ # @param [FFI::Pointer(PassManagerRef)] pm
4665
+ # @param [FFI::Pointer(ModuleRef)] m
4666
+ # @return [Integer]
4667
+ # @scope class
4668
+ attach_function :run_pass_manager, :LLVMRunPassManager, [:pointer, :pointer], :int
4669
+
4670
+ # Initializes all of the function passes scheduled in the function pass
4671
+ # manager. Returns 1 if any of the passes modified the module, 0 otherwise.
4672
+ # See llvm::FunctionPassManager::doInitialization.
4673
+ #
4674
+ # @method initialize_function_pass_manager(fpm)
4675
+ # @param [FFI::Pointer(PassManagerRef)] fpm
4676
+ # @return [Integer]
4677
+ # @scope class
4678
+ attach_function :initialize_function_pass_manager, :LLVMInitializeFunctionPassManager, [:pointer], :int
4679
+
4680
+ # Executes all of the function passes scheduled in the function pass manager
4681
+ # on the provided function. Returns 1 if any of the passes modified the
4682
+ # function, false otherwise.
4683
+ # See llvm::FunctionPassManager::run(Function&).
4684
+ #
4685
+ # @method run_function_pass_manager(fpm, f)
4686
+ # @param [FFI::Pointer(PassManagerRef)] fpm
4687
+ # @param [FFI::Pointer(ValueRef)] f
4688
+ # @return [Integer]
4689
+ # @scope class
4690
+ attach_function :run_function_pass_manager, :LLVMRunFunctionPassManager, [:pointer, :pointer], :int
4691
+
4692
+ # Finalizes all of the function passes scheduled in in the function pass
4693
+ # manager. Returns 1 if any of the passes modified the module, 0 otherwise.
4694
+ # See llvm::FunctionPassManager::doFinalization.
4695
+ #
4696
+ # @method finalize_function_pass_manager(fpm)
4697
+ # @param [FFI::Pointer(PassManagerRef)] fpm
4698
+ # @return [Integer]
4699
+ # @scope class
4700
+ attach_function :finalize_function_pass_manager, :LLVMFinalizeFunctionPassManager, [:pointer], :int
4701
+
4702
+ # Frees the memory of a pass pipeline. For function pipelines, does not free
4703
+ # the module provider.
4704
+ # See llvm::PassManagerBase::~PassManagerBase.
4705
+ #
4706
+ # @method dispose_pass_manager(pm)
4707
+ # @param [FFI::Pointer(PassManagerRef)] pm
4708
+ # @return [nil]
4709
+ # @scope class
4710
+ attach_function :dispose_pass_manager, :LLVMDisposePassManager, [:pointer], :void
4711
+
4712
+ end