llvm.org GIT mirror llvm / 404a194
Using modules to group enumerations in Ocaml bindings. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45229 91177308-0d34-0410-b5e6-96231b3b80d8 Gordon Henriksen 12 years ago
4 changed file(s) with 204 addition(s) and 186 deletion(s). Raw diff Collapse all Expand all
1616 type llmoduleprovider
1717 type llmemorybuffer
1818
19 type type_kind =
20 Void_type
21 | Float_type
22 | Double_type
23 | X86fp80_type
24 | Fp128_type
25 | Ppc_fp128_type
26 | Label_type
27 | Integer_type
28 | Function_type
29 | Struct_type
30 | Array_type
31 | Pointer_type
32 | Opaque_type
33 | Vector_type
34
35 type linkage =
36 External_linkage
37 | Link_once_linkage
38 | Weak_linkage
39 | Appending_linkage
40 | Internal_linkage
41 | Dllimport_linkage
42 | Dllexport_linkage
43 | External_weak_linkage
44 | Ghost_linkage
45
46 type visibility =
47 Default_visibility
48 | Hidden_visibility
49 | Protected_visibility
19 module TypeKind = struct
20 type t =
21 | Void
22 | Float
23 | Double
24 | X86fp80
25 | Fp128
26 | Ppc_fp128
27 | Label
28 | Integer
29 | Function
30 | Struct
31 | Array
32 | Pointer
33 | Opaque
34 | Vector
35 end
36
37 module Linkage = struct
38 type t =
39 | External
40 | Link_once
41 | Weak
42 | Appending
43 | Internal
44 | Dllimport
45 | Dllexport
46 | External_weak
47 | Ghost
48 end
49
50 module Visibility = struct
51 type t =
52 | Default
53 | Hidden
54 | Protected
55 end
5056
5157 let ccc = 0
5258 let fastcc = 8
5460 let x86_stdcallcc = 64
5561 let x86_fastcallcc = 65
5662
57 type int_predicate =
58 Icmp_eq
59 | Icmp_ne
60 | Icmp_ugt
61 | Icmp_uge
62 | Icmp_ult
63 | Icmp_ule
64 | Icmp_sgt
65 | Icmp_sge
66 | Icmp_slt
67 | Icmp_sle
68
69 type real_predicate =
70 Fcmp_false
71 | Fcmp_oeq
72 | Fcmp_ogt
73 | Fcmp_oge
74 | Fcmp_olt
75 | Fcmp_ole
76 | Fcmp_one
77 | Fcmp_ord
78 | Fcmp_uno
79 | Fcmp_ueq
80 | Fcmp_ugt
81 | Fcmp_uge
82 | Fcmp_ult
83 | Fcmp_ule
84 | Fcmp_une
85 | Fcmp_true
63 module Icmp = struct
64 type t =
65 | Eq
66 | Ne
67 | Ugt
68 | Uge
69 | Ult
70 | Ule
71 | Sgt
72 | Sge
73 | Slt
74 | Sle
75 end
76
77 module Fcmp = struct
78 type t =
79 | False
80 | Oeq
81 | Ogt
82 | Oge
83 | Olt
84 | Ole
85 | One
86 | Ord
87 | Uno
88 | Ueq
89 | Ugt
90 | Uge
91 | Ult
92 | Ule
93 | Une
94 | True
95 end
8696
8797 exception IoError of string
8898
102112
103113 (*===-- Types -------------------------------------------------------------===*)
104114
105 external classify_type : lltype -> type_kind = "llvm_classify_type"
115 external classify_type : lltype -> TypeKind.t = "llvm_classify_type"
106116
107117 (*--... Operations on integer types ........................................--*)
108118 external _i1_type : unit -> lltype = "llvm_i1_type"
219229 external const_and : llvalue -> llvalue -> llvalue = "LLVMConstAnd"
220230 external const_or : llvalue -> llvalue -> llvalue = "LLVMConstOr"
221231 external const_xor : llvalue -> llvalue -> llvalue = "LLVMConstXor"
222 external const_icmp : int_predicate -> llvalue -> llvalue -> llvalue
232 external const_icmp : Icmp.t -> llvalue -> llvalue -> llvalue
223233 = "llvm_const_icmp"
224 external const_fcmp : real_predicate -> llvalue -> llvalue -> llvalue
234 external const_fcmp : Fcmp.t -> llvalue -> llvalue -> llvalue
225235 = "llvm_const_fcmp"
226236 external const_shl : llvalue -> llvalue -> llvalue = "LLVMConstShl"
227237 external const_lshr : llvalue -> llvalue -> llvalue = "LLVMConstLShr"
250260
251261 (*--... Operations on global variables, functions, and aliases (globals) ...--*)
252262 external is_declaration : llvalue -> bool = "llvm_is_declaration"
253 external linkage : llvalue -> linkage = "llvm_linkage"
254 external set_linkage : linkage -> llvalue -> unit = "llvm_set_linkage"
263 external linkage : llvalue -> Linkage.t = "llvm_linkage"
264 external set_linkage : Linkage.t -> llvalue -> unit = "llvm_set_linkage"
255265 external section : llvalue -> string = "llvm_section"
256266 external set_section : string -> llvalue -> unit = "llvm_set_section"
257 external visibility : llvalue -> visibility = "llvm_visibility"
258 external set_visibility : visibility -> llvalue -> unit = "llvm_set_visibility"
267 external visibility : llvalue -> Visibility.t = "llvm_visibility"
268 external set_visibility : Visibility.t -> llvalue -> unit = "llvm_set_visibility"
259269 external alignment : llvalue -> int = "llvm_alignment"
260270 external set_alignment : int -> llvalue -> unit = "llvm_set_alignment"
261271 external is_global_constant : llvalue -> bool = "llvm_is_global_constant"
414424 = "llvm_build_bitcast"
415425
416426 (*--... Comparisons ........................................................--*)
417 external build_icmp : int_predicate -> llvalue -> llvalue -> string ->
427 external build_icmp : Icmp.t -> llvalue -> llvalue -> string ->
418428 llbuilder -> llvalue = "llvm_build_icmp"
419 external build_fcmp : real_predicate -> llvalue -> llvalue -> string ->
429 external build_fcmp : Fcmp.t -> llvalue -> llvalue -> string ->
420430 llbuilder -> llvalue = "llvm_build_fcmp"
421431
422432 (*--... Miscellaneous instructions .........................................--*)
470480 let rec string_of_lltype ty =
471481 (* FIXME: stop infinite recursion! :) *)
472482 match classify_type ty with
473 Integer_type -> "i" ^ string_of_int (integer_bitwidth ty)
474 | Pointer_type -> (string_of_lltype (element_type ty)) ^ "*"
475 | Struct_type ->
483 TypeKind.Integer -> "i" ^ string_of_int (integer_bitwidth ty)
484 | TypeKind.Pointer -> (string_of_lltype (element_type ty)) ^ "*"
485 | TypeKind.Struct ->
476486 let s = "{ " ^ (concat2 ", " (
477487 Array.map string_of_lltype (element_types ty)
478488 )) ^ " }" in
479489 if is_packed ty
480490 then "<" ^ s ^ ">"
481491 else s
482 | Array_type -> "[" ^ (string_of_int (array_length ty)) ^
483 " x " ^ (string_of_lltype (element_type ty)) ^ "]"
484 | Vector_type -> "<" ^ (string_of_int (vector_size ty)) ^
485 " x " ^ (string_of_lltype (element_type ty)) ^ ">"
486 | Opaque_type -> "opaque"
487 | Function_type -> string_of_lltype (return_type ty) ^
488 " (" ^ (concat2 ", " (
489 Array.map string_of_lltype (param_types ty)
490 )) ^ ")"
491 | Label_type -> "label"
492 | Ppc_fp128_type -> "ppc_fp128"
493 | Fp128_type -> "fp128"
494 | X86fp80_type -> "x86_fp80"
495 | Double_type -> "double"
496 | Float_type -> "float"
497 | Void_type -> "void"
492 | TypeKind.Array -> "[" ^ (string_of_int (array_length ty)) ^
493 " x " ^ (string_of_lltype (element_type ty)) ^ "]"
494 | TypeKind.Vector -> "<" ^ (string_of_int (vector_size ty)) ^
495 " x " ^ (string_of_lltype (element_type ty)) ^ ">"
496 | TypeKind.Opaque -> "opaque"
497 | TypeKind.Function -> string_of_lltype (return_type ty) ^
498 " (" ^ (concat2 ", " (
499 Array.map string_of_lltype (param_types ty)
500 )) ^ ")"
501 | TypeKind.Label -> "label"
502 | TypeKind.Ppc_fp128 -> "ppc_fp128"
503 | TypeKind.Fp128 -> "fp128"
504 | TypeKind.X86fp80 -> "x86_fp80"
505 | TypeKind.Double -> "double"
506 | TypeKind.Float -> "float"
507 | TypeKind.Void -> "void"
4949
5050 (** The kind of an [lltype], the result of [classify_type ty]. See the
5151 [llvm::Type::TypeID] enumeration. **)
52 type type_kind =
53 Void_type
54 | Float_type
55 | Double_type
56 | X86fp80_type
57 | Fp128_type
58 | Ppc_fp128_type
59 | Label_type
60 | Integer_type
61 | Function_type
62 | Struct_type
63 | Array_type
64 | Pointer_type
65 | Opaque_type
66 | Vector_type
52 module TypeKind : sig
53 type t =
54 Void
55 | Float
56 | Double
57 | X86fp80
58 | Fp128
59 | Ppc_fp128
60 | Label
61 | Integer
62 | Function
63 | Struct
64 | Array
65 | Pointer
66 | Opaque
67 | Vector
68 end
6769
6870 (** The linkage of a global value, accessed with [linkage gv] and
6971 [set_linkage l gv]. See [llvm::GlobalValue::LinkageTypes]. **)
70 type linkage =
71 External_linkage
72 | Link_once_linkage
73 | Weak_linkage
74 | Appending_linkage
75 | Internal_linkage
76 | Dllimport_linkage
77 | Dllexport_linkage
78 | External_weak_linkage
79 | Ghost_linkage
72 module Linkage : sig
73 type t =
74 External
75 | Link_once
76 | Weak
77 | Appending
78 | Internal
79 | Dllimport
80 | Dllexport
81 | External_weak
82 | Ghost
83 end
8084
8185 (** The linker visibility of a global value, accessed with [visibility gv] and
8286 [set_visibility v gv]. See [llvm::GlobalValue::VisibilityTypes]. **)
83 type visibility =
84 Default_visibility
85 | Hidden_visibility
86 | Protected_visibility
87 module Visibility : sig
88 type t =
89 Default
90 | Hidden
91 | Protected
92 end
8793
8894 (* The following calling convention values may be accessed with
8995 [function_call_conv f] and [set_function_call_conv conv f]. Calling
101107
102108 (** The predicate for an integer comparison ([icmp]) instruction.
103109 See the [llvm::ICmpInst::Predicate] enumeration. **)
104 type int_predicate =
105 Icmp_eq
106 | Icmp_ne
107 | Icmp_ugt
108 | Icmp_uge
109 | Icmp_ult
110 | Icmp_ule
111 | Icmp_sgt
112 | Icmp_sge
113 | Icmp_slt
114 | Icmp_sle
110 module Icmp : sig
111 type t =
112 | Eq
113 | Ne
114 | Ugt
115 | Uge
116 | Ult
117 | Ule
118 | Sgt
119 | Sge
120 | Slt
121 | Sle
122 end
115123
116124 (** The predicate for a floating-point comparison ([fcmp]) instruction.
117125 See the [llvm::FCmpInst::Predicate] enumeration. **)
118 type real_predicate =
119 Fcmp_false
120 | Fcmp_oeq
121 | Fcmp_ogt
122 | Fcmp_oge
123 | Fcmp_olt
124 | Fcmp_ole
125 | Fcmp_one
126 | Fcmp_ord
127 | Fcmp_uno
128 | Fcmp_ueq
129 | Fcmp_ugt
130 | Fcmp_uge
131 | Fcmp_ult
132 | Fcmp_ule
133 | Fcmp_une
134 | Fcmp_true
126 module Fcmp : sig
127 type t =
128 | False
129 | Oeq
130 | Ogt
131 | Oge
132 | Olt
133 | Ole
134 | One
135 | Ord
136 | Uno
137 | Ueq
138 | Ugt
139 | Uge
140 | Ult
141 | Ule
142 | Une
143 | True
144 end
135145
136146 exception IoError of string
137147
166176
167177 (** [classify_type ty] returns the [type_kind] corresponding to the type [ty].
168178 See the method [llvm::Type::getTypeID]. **)
169 external classify_type : lltype -> type_kind = "llvm_classify_type"
179 external classify_type : lltype -> TypeKind.t = "llvm_classify_type"
170180
171181 (** [string_of_lltype ty] returns a string describing the type [ty]. **)
172182 val string_of_lltype : lltype -> string
503513 (** [const_icmp pred c1 c2] returns the constant comparison of two integer
504514 constants, [c1 pred c2].
505515 See the method [llvm::ConstantExpr::getICmp]. **)
506 external const_icmp : int_predicate -> llvalue -> llvalue -> llvalue
516 external const_icmp : Icmp.t -> llvalue -> llvalue -> llvalue
507517 = "llvm_const_icmp"
508518
509519 (** [const_fcmp pred c1 c2] returns the constant comparison of two floating
510520 point constants, [c1 pred c2].
511521 See the method [llvm::ConstantExpr::getFCmp]. **)
512 external const_fcmp : real_predicate -> llvalue -> llvalue -> llvalue
522 external const_fcmp : Fcmp.t -> llvalue -> llvalue -> llvalue
513523 = "llvm_const_fcmp"
514524
515525 (** [const_shl c1 c2] returns the constant integer [c1] left-shifted by the
630640
631641 (** [linkage g] returns the linkage of the global value [g].
632642 See the method [llvm::GlobalValue::getLinkage]. **)
633 external linkage : llvalue -> linkage = "llvm_linkage"
643 external linkage : llvalue -> Linkage.t = "llvm_linkage"
634644
635645 (** [set_linkage l g] sets the linkage of the global value [g] to [l].
636646 See the method [llvm::GlobalValue::setLinkage]. **)
637 external set_linkage : linkage -> llvalue -> unit = "llvm_set_linkage"
647 external set_linkage : Linkage.t -> llvalue -> unit = "llvm_set_linkage"
638648
639649 (** [section g] returns the linker section of the global value [g].
640650 See the method [llvm::GlobalValue::getSection]. **)
646656
647657 (** [visibility g] returns the linker visibility of the global value [g].
648658 See the method [llvm::GlobalValue::getVisibility]. **)
649 external visibility : llvalue -> visibility = "llvm_visibility"
659 external visibility : llvalue -> Visibility.t = "llvm_visibility"
650660
651661 (** [set_visibility v g] sets the linker visibility of the global value [g] to
652662 [v]. See the method [llvm::GlobalValue::setVisibility]. **)
653 external set_visibility : visibility -> llvalue -> unit = "llvm_set_visibility"
663 external set_visibility : Visibility.t -> llvalue -> unit
664 = "llvm_set_visibility"
654665
655666 (** [alignment g] returns the required alignment of the global value [g].
656667 See the method [llvm::GlobalValue::getAlignment]. **)
11761187 [%name = icmp %pred %x, %y]
11771188 instruction at the position specified by the instruction builder [b].
11781189 See the method [llvm::LLVMBuilder::CreateICmp]. **)
1179 external build_icmp : int_predicate -> llvalue -> llvalue -> string ->
1190 external build_icmp : Icmp.t -> llvalue -> llvalue -> string ->
11801191 llbuilder -> llvalue = "llvm_build_icmp"
11811192
11821193 (** [build_fcmp pred x y name b] creates a
11831194 [%name = fcmp %pred %x, %y]
11841195 instruction at the position specified by the instruction builder [b].
11851196 See the method [llvm::LLVMBuilder::CreateFCmp]. **)
1186 external build_fcmp : real_predicate -> llvalue -> llvalue -> string ->
1197 external build_fcmp : Fcmp.t -> llvalue -> llvalue -> string ->
11871198 llbuilder -> llvalue = "llvm_build_fcmp"
11881199
11891200 (*--... Miscellaneous instructions .........................................--*)
7676
7777 /*===-- Types -------------------------------------------------------------===*/
7878
79 /* lltype -> type_kind */
79 /* lltype -> TypeKind.t */
8080 CAMLprim value llvm_classify_type(LLVMTypeRef Ty) {
8181 return Val_int(LLVMGetTypeKind(Ty));
8282 }
360360
361361 /*--... Constant expressions ...............................................--*/
362362
363 /* int_predicate -> llvalue -> llvalue -> llvalue */
363 /* Icmp.t -> llvalue -> llvalue -> llvalue */
364364 CAMLprim LLVMValueRef llvm_const_icmp(value Pred,
365365 LLVMValueRef LHSConstant,
366366 LLVMValueRef RHSConstant) {
367367 return LLVMConstICmp(Int_val(Pred) + LLVMIntEQ, LHSConstant, RHSConstant);
368368 }
369369
370 /* real_predicate -> llvalue -> llvalue -> llvalue */
370 /* Fcmp.t -> llvalue -> llvalue -> llvalue */
371371 CAMLprim LLVMValueRef llvm_const_fcmp(value Pred,
372372 LLVMValueRef LHSConstant,
373373 LLVMValueRef RHSConstant) {
387387 return Val_bool(LLVMIsDeclaration(Global));
388388 }
389389
390 /* llvalue -> linkage */
390 /* llvalue -> Linkage.t */
391391 CAMLprim value llvm_linkage(LLVMValueRef Global) {
392392 return Val_int(LLVMGetLinkage(Global));
393393 }
394394
395 /* linkage -> llvalue -> unit */
395 /* Linkage.t -> llvalue -> unit */
396396 CAMLprim value llvm_set_linkage(value Linkage, LLVMValueRef Global) {
397397 LLVMSetLinkage(Global, Int_val(Linkage));
398398 return Val_unit;
409409 return Val_unit;
410410 }
411411
412 /* llvalue -> visibility */
412 /* llvalue -> Visibility.t */
413413 CAMLprim value llvm_visibility(LLVMValueRef Global) {
414414 return Val_int(LLVMGetVisibility(Global));
415415 }
416416
417 /* visibility -> llvalue -> unit */
417 /* Visibility.t -> llvalue -> unit */
418418 CAMLprim value llvm_set_visibility(value Viz, LLVMValueRef Global) {
419419 LLVMSetVisibility(Global, Int_val(Viz));
420420 return Val_unit;
10051005
10061006 /*--... Comparisons ........................................................--*/
10071007
1008 /* int_predicate -> llvalue -> llvalue -> string -> llbuilder -> llvalue */
1008 /* Icmp.t -> llvalue -> llvalue -> string -> llbuilder -> llvalue */
10091009 CAMLprim LLVMValueRef llvm_build_icmp(value Pred,
10101010 LLVMValueRef LHS, LLVMValueRef RHS,
10111011 value Name, value B) {
10131013 String_val(Name));
10141014 }
10151015
1016 /* real_predicate -> llvalue -> llvalue -> string -> llbuilder -> llvalue */
1016 /* Fcmp.t -> llvalue -> llvalue -> string -> llbuilder -> llvalue */
10171017 CAMLprim LLVMValueRef llvm_build_fcmp(value Pred,
10181018 LLVMValueRef LHS, LLVMValueRef RHS,
10191019 value Name, value B) {
2020
2121 let insist cond =
2222 incr case_num;
23 let msg = if cond then " pass " else begin
24 exit_status := 10;
25 " FAIL "
26 end in
23 if not cond then exit_status := 10;
2724 prerr_endline (" " ^ (string_of_int !case_num) ^ if cond then ""
2825 else " FAIL")
2926
4542 *)
4643 group "void";
4744 insist (define_type_name "Ty01" void_type m);
48 insist (Void_type == classify_type void_type);
45 insist (TypeKind.Void == classify_type void_type);
4946
5047 (* RUN: grep {Ty02.*i1} < %t.ll
5148 *)
5249 group "i1";
5350 insist (define_type_name "Ty02" i1_type m);
54 insist (Integer_type == classify_type i1_type);
51 insist (TypeKind.Integer == classify_type i1_type);
5552
5653 (* RUN: grep {Ty03.*i32} < %t.ll
5754 *)
6865 *)
6966 group "float";
7067 insist (define_type_name "Ty05" float_type m);
71 insist (Float_type == classify_type float_type);
68 insist (TypeKind.Float == classify_type float_type);
7269
7370 (* RUN: grep {Ty06.*double} < %t.ll
7471 *)
7572 group "double";
7673 insist (define_type_name "Ty06" double_type m);
77 insist (Double_type == classify_type double_type);
74 insist (TypeKind.Double == classify_type double_type);
7875
7976 (* RUN: grep {Ty07.*i32.*i1, double} < %t.ll
8077 *)
8178 group "function";
8279 let ty = function_type i32_type [| i1_type; double_type |] in
8380 insist (define_type_name "Ty07" ty m);
84 insist (Function_type = classify_type ty);
81 insist (TypeKind.Function = classify_type ty);
8582 insist (not (is_var_arg ty));
8683 insist (i32_type == return_type ty);
8784 insist (double_type == (param_types ty).(1));
10097 insist (define_type_name "Ty09" ty m);
10198 insist (7 = array_length ty);
10299 insist (i8_type == element_type ty);
103 insist (Array_type == classify_type ty);
100 insist (TypeKind.Array == classify_type ty);
104101
105102 begin group "pointer";
106103 (* RUN: grep {UnqualPtrTy.*float\*} < %t.ll
109106 insist (define_type_name "UnqualPtrTy" ty m);
110107 insist (float_type == element_type ty);
111108 insist (0 == address_space ty);
112 insist (Pointer_type == classify_type ty)
109 insist (TypeKind.Pointer == classify_type ty)
113110 end;
114111
115112 begin group "qualified_pointer";
288285 ignore (define_global "ConstAnd" (const_and foldbomb five) m);
289286 ignore (define_global "ConstOr" (const_or foldbomb five) m);
290287 ignore (define_global "ConstXor" (const_xor foldbomb five) m);
291 ignore (define_global "ConstICmp" (const_icmp Icmp_sle foldbomb five) m);
292 ignore (define_global "ConstFCmp" (const_fcmp Fcmp_ole ffoldbomb ffive) m);
288 ignore (define_global "ConstICmp" (const_icmp Icmp.Sle foldbomb five) m);
289 ignore (define_global "ConstFCmp" (const_fcmp Fcmp.Ole ffoldbomb ffive) m);
293290
294291 group "constant casts";
295292 (* RUN: grep {ConstTrunc.*trunc} < %t.ll
335332 ignore (define_global "ConstSizeOf" (size_of (pointer_type i8_type)) m);
336333 ignore (define_global "ConstGEP" (const_gep foldbomb_gv [| five |]) m);
337334 ignore (define_global "ConstSelect" (const_select
338 (const_icmp Icmp_sle foldbomb five)
335 (const_icmp Icmp.Sle foldbomb five)
339336 (const_int i8_type (-1))
340337 (const_int i8_type 0)) m);
341338 let zero = const_int i32_type 0 in
370367 *)
371368 group "linkage";
372369 let g = define_global "GVal02" zero32 m ++
373 set_linkage Link_once_linkage in
374 insist (Link_once_linkage = linkage g);
370 set_linkage Linkage.Link_once in
371 insist (Linkage.Link_once = linkage g);
375372
376373 (* RUN: grep {GVal03.*Hanalei} < %t.ll
377374 *)
384381 *)
385382 group "visibility";
386383 let g = define_global "GVal04" zero32 m ++
387 set_visibility Hidden_visibility in
388 insist (Hidden_visibility = visibility g);
384 set_visibility Visibility.Hidden in
385 insist (Visibility.Hidden = visibility g);
389386
390387 (* RUN: grep {GVal05.*align 128} < %t.ll
391388 *)
744741 * RUN: grep {Inst42.*fcmp.*false.*F1.*F2} < %t.ll
745742 * RUN: grep {Inst43.*fcmp.*true.*F2.*F1} < %t.ll
746743 *)
747 ignore (build_icmp Icmp_ne p1 p2 "Inst40" atentry);
748 ignore (build_icmp Icmp_sle p2 p1 "Inst41" atentry);
749 ignore (build_fcmp Fcmp_false f1 f2 "Inst42" atentry);
750 ignore (build_fcmp Fcmp_true f2 f1 "Inst43" atentry)
744 ignore (build_icmp Icmp.Ne p1 p2 "Inst40" atentry);
745 ignore (build_icmp Icmp.Sle p2 p1 "Inst41" atentry);
746 ignore (build_fcmp Fcmp.False f1 f2 "Inst42" atentry);
747 ignore (build_fcmp Fcmp.True f2 f1 "Inst43" atentry)
751748 end;
752749
753750 group "miscellaneous"; begin
759756 * RUN: grep {Inst51.*shufflevector.*Vec1.*Vec2.*1.*1.*0.*0} < %t.ll
760757 *)
761758 ignore (build_call fn [| p2; p1 |] "Inst45" atentry);
762 let inst46 = build_icmp Icmp_eq p1 p2 "Inst46" atentry in
759 let inst46 = build_icmp Icmp.Eq p1 p2 "Inst46" atentry in
763760 ignore (build_select inst46 p1 p2 "Inst47" atentry);
764761 ignore (build_va_arg
765762 (const_null (pointer_type (pointer_type i8_type)))