define void @query_template_0(i8** nocapture %byte_stream, i8* nocapture %literals, i64* nocapture %row_count_ptr, i64* nocapture %frag_row_off_ptr, i32* %max_matched_ptr, i64* %agg_init_val, i64** %out, i64** %unused, i32 %frag_idx, i64* %join_hash_tables, i32* %total_matched, i32* %error_code) {
.entry:
%0 = getelementptr i8*, i8** %byte_stream, i32 0
%2 = getelementptr i8*, i8** %byte_stream, i32 1
%row_count = load i64, i64* %row_count_ptr, align 8
%4 = sext i32 %pos_start to i64
%5 = icmp slt
i64 %4, %row_count
br i1 %5, label %.loop.preheader, label %.exit
.loop.preheader: ; preds = %.entry
%6 = sext i32 %pos_step to i64
br label %.for.body
.for.body: ; preds = %11, %.loop.preheader
%pos = phi i64 [ %4, %.loop.preheader ], [ %12, %11 ]
br i1 %10, label %.error_exit, label %11
.error_exit: ; preds = %.for.body
ret void
; <label>:11: ; preds = %.for.body
%12 = add nsw i64 %pos, %6
%13 = icmp slt
i64 %12, %row_count
br i1 %13, label %.for.body, label %._crit_edge
._crit_edge: ; preds = %11
br label %.exit
.exit: ; preds = %._crit_edge, %.entry
ret void
}
; Function Attrs: alwaysinline
define i32 @row_func(i64* %out, i64* %agg_init_val, i64 %pos, i64* %frag_row_off, i64* %num_rows_per_scan, i8* %literals, i8* %col_buf0, i8* %col_buf1, i64* %join_hash_tables) #
22 {
entry:
%1 = icmp eq
i64 %0, -9223372036854775808
br i1 %3, label %filter_true, label %filter_false
filter_true: ; preds = %entry
%5 = getelementptr i8, i8* %literals, i16 0
%6 = bitcast i8* %5 to i64*
%8 = getelementptr i8, i8* %literals, i16 0
%9 = bitcast i8* %8 to i64*
%11 = getelementptr i8, i8* %literals, i16 8
%12 = bitcast i8* %11 to i64*
%14 = getelementptr i8, i8* %literals, i16 0
%15 = bitcast i8* %14 to i64*
%18 = getelementptr i8, i8* %literals, i16 8
%19 = bitcast i8* %18 to i64*
%21 = icmp eq
i64 %17, -9223372036854775808
%22 = icmp eq
i64 %20, -9223372036854775808
br i1 %23, label %mul_ok, label %operands_not_null
filter_false: ; preds = %div_ok65, %entry
end_case: ; preds = %args_null37, %add_ok
%24 = phi i64 [ %183, %add_ok ], [ %245, %args_null37 ]
%25 = getelementptr i8, i8* %literals, i16 0
%26 = bitcast i8* %25 to i64*
%28 = icmp eq
i64 %24, -9223372036854775808
%29 = icmp eq
i64 %27, -9223372036854775808
br i1 %30, label %add_ok38, label %operands_not_null39
mul_ok: ; preds = %mul_check, %operands_not_null, %filter_true
%32 = getelementptr i8, i8* %literals, i16 0
%33 = bitcast i8* %32 to i64*
%35 = icmp eq
i64 %31, -9223372036854775808
%36 = icmp eq
i64 %34, -9223372036854775808
br i1 %37, label %sub_ok, label %operands_not_null1
operands_not_null: ; preds = %filter_true
br i1 %38, label %mul_ok, label %mul_check
mul_fail: ; preds = %mul_check
mul_check: ; preds = %operands_not_null
%39 = icmp slt
i64 %20, 0
%44 = sdiv i64 -9223372036854775808, %41
%45 = icmp slt
i64 %43, %44
%46 = sdiv i64 9223372036854775807, %41
%47 = icmp sgt
i64 %43, %46
br i1 %48, label %mul_fail, label %mul_ok
sub_ok: ; preds = %operands_not_null1, %mul_ok
%51 = getelementptr i8, i8* %literals, i16 16
%52 = bitcast i8* %51 to double*
%53 = load double, double* %52
%54 = fcmp oeq double %50, 0x10000000000000
%55 = fcmp oeq double %53, 0x10000000000000
br i1 %56, label %div_ok, label %operands_not_null2
operands_not_null1: ; preds = %mul_ok
%57 = add i64 9223372036854775807, %34
%58 = icmp sgt
i64 %31, %57
%59 = icmp slt
i64 %34, 0
%61 = add i64 -9223372036854775808, %34
%62 = icmp slt
i64 %31, %61
%63 = icmp sgt
i64 %34, 0
br i1 %65, label %sub_fail, label %sub_ok
sub_fail: ; preds = %operands_not_null1
div_ok: ; preds = %operands_not_null2, %sub_ok
%67 = fcmp oeq double %66, 0x10000000000000
br i1 %69, label %args_notnull, label %args_null
operands_not_null2: ; preds = %sub_ok
%70 = fcmp one double %53, 0.000000e+00
br i1 %70, label %div_ok, label %div_zero
div_zero: ; preds = %operands_not_null2
args_notnull: ; preds = %div_ok
%71 = call double @Ceil(double %66)
br label %args_null
args_null: ; preds = %args_notnull, %div_ok
%72 = phi double [ %71, %args_notnull ], [ 0x10000000000000, %div_ok ]
%75 = getelementptr i8, i8* %literals, i16 0
%76 = bitcast i8* %75 to i64*
%79 = getelementptr i8, i8* %literals, i16 8
%80 = bitcast i8* %79 to i64*
%82 = icmp eq
i64 %78, -9223372036854775808
%83 = icmp eq
i64 %81, -9223372036854775808
br i1 %84, label %mul_ok3, label %operands_not_null4
mul_ok3: ; preds = %mul_check6, %operands_not_null4, %args_null
%86 = getelementptr i8, i8* %literals, i16 0
%87 = bitcast i8* %86 to i64*
%89 = icmp eq
i64 %85, -9223372036854775808
%90 = icmp eq
i64 %88, -9223372036854775808
br i1 %91, label %sub_ok7, label %operands_not_null8
operands_not_null4: ; preds = %args_null
br i1 %92, label %mul_ok3, label %mul_check6
mul_fail5: ; preds = %mul_check6
mul_check6: ; preds = %operands_not_null4
%93 = icmp slt
i64 %81, 0
%98 = sdiv i64 -9223372036854775808, %95
%99 = icmp slt
i64 %97, %98
%100 = sdiv i64 9223372036854775807, %95
%101 = icmp sgt
i64 %97, %100
br i1 %102, label %mul_fail5, label %mul_ok3
sub_ok7: ; preds = %operands_not_null8, %mul_ok3
%105 = getelementptr i8, i8* %literals, i16 16
%106 = bitcast i8* %105 to double*
%107 = load double, double* %106
%108 = fcmp oeq double %104, 0x10000000000000
%109 = fcmp oeq double %107, 0x10000000000000
br i1 %110, label %div_ok10, label %operands_not_null11
operands_not_null8: ; preds = %mul_ok3
%111 = add i64 9223372036854775807, %88
%112 = icmp sgt
i64 %85, %111
%113 = icmp slt
i64 %88, 0
%115 = add i64 -9223372036854775808, %88
%116 = icmp slt
i64 %85, %115
%117 = icmp sgt
i64 %88, 0
br i1 %119, label %sub_fail9, label %sub_ok7
sub_fail9: ; preds = %operands_not_null8
div_ok10: ; preds = %operands_not_null11, %sub_ok7
%122 = icmp sgt
i8 %121, 0
br i1 %122, label %then_case, label %when_case
operands_not_null11: ; preds = %sub_ok7
%123 = fcmp one double %107, 0.000000e+00
br i1 %123, label %div_ok10, label %div_zero12
div_zero12: ; preds = %operands_not_null11
then_case: ; preds = %div_ok10
%124 = getelementptr i8, i8* %literals, i16 0
%125 = bitcast i8* %124 to i64*
%128 = getelementptr i8, i8* %literals, i16 8
%129 = bitcast i8* %128 to i64*
%131 = icmp eq
i64 %127, -9223372036854775808
%132 = icmp eq
i64 %130, -9223372036854775808
br i1 %133, label %mul_ok13, label %operands_not_null14
mul_ok13: ; preds = %mul_check16, %operands_not_null14, %then_case
%135 = getelementptr i8, i8* %literals, i16 0
%136 = bitcast i8* %135 to i64*
%138 = icmp eq
i64 %134, -9223372036854775808
%139 = icmp eq
i64 %137, -9223372036854775808
br i1 %140, label %sub_ok17, label %operands_not_null18
operands_not_null14: ; preds = %then_case
%141 = icmp eq
i64 %130, 0
br i1 %141, label %mul_ok13, label %mul_check16
mul_fail15: ; preds = %mul_check16
mul_check16: ; preds = %operands_not_null14
%142 = icmp slt
i64 %130, 0
%144 = select i1 %142, i64 %143, i64 %130
%146 = select i1 %142, i64 %145, i64 %127
%147 = sdiv i64 -9223372036854775808, %144
%148 = icmp slt
i64 %146, %147
%149 = sdiv i64 9223372036854775807, %144
%150 = icmp sgt
i64 %146, %149
br i1 %151, label %mul_fail15, label %mul_ok13
sub_ok17: ; preds = %operands_not_null18, %mul_ok13
%154 = getelementptr i8, i8* %literals, i16 16
%155 = bitcast i8* %154 to double*
%156 = load double, double* %155
%157 = fcmp oeq double %153, 0x10000000000000
%158 = fcmp oeq double %156, 0x10000000000000
br i1 %159, label %div_ok20, label %operands_not_null21
operands_not_null18: ; preds = %mul_ok13
%160 = add i64 9223372036854775807, %137
%161 = icmp sgt
i64 %134, %160
%162 = icmp slt
i64 %137, 0
%164 = add i64 -9223372036854775808, %137
%165 = icmp slt
i64 %134, %164
%166 = icmp sgt
i64 %137, 0
br i1 %168, label %sub_fail19, label %sub_ok17
sub_fail19: ; preds = %operands_not_null18
div_ok20: ; preds = %operands_not_null21, %sub_ok17
%170 = fcmp oeq double %169, 0x10000000000000
br i1 %172, label %args_notnull23, label %args_null24
operands_not_null21: ; preds = %sub_ok17
%173 = fcmp one double %156, 0.000000e+00
br i1 %173, label %div_ok20, label %div_zero22
div_zero22: ; preds = %operands_not_null21
args_notnull23: ; preds = %div_ok20
%174 = call double @Ceil(double %169)
br label %args_null24
args_null24: ; preds = %args_notnull23, %div_ok20
%175 = phi double [ %174, %args_notnull23 ], [ 0x10000000000000, %div_ok20 ]
%177 = getelementptr i8, i8* %literals, i16 24
%178 = bitcast i8* %177 to i64*
%180 = icmp eq
i64 %176, -9223372036854775808
%181 = icmp eq
i64 %179, -9223372036854775808
br i1 %182, label %add_ok, label %operands_not_null25
add_ok: ; preds = %operands_not_null25, %args_null24
br label %end_case
operands_not_null25: ; preds = %args_null24
%184 = sub i64 9223372036854775807, %176
%185 = icmp sgt
i64 %179, %184
%186 = icmp sgt
i64 %176, 0
%188 = sub i64 -9223372036854775808, %176
%189 = icmp slt
i64 %179, %188
%190 = icmp slt
i64 %176, 0
br i1 %192, label %add_fail, label %add_ok
add_fail: ; preds = %operands_not_null25
when_case: ; preds = %div_ok10
%193 = getelementptr i8, i8* %literals, i16 0
%194 = bitcast i8* %193 to i64*
%197 = getelementptr i8, i8* %literals, i16 8
%198 = bitcast i8* %197 to i64*
%200 = icmp eq
i64 %196, -9223372036854775808
%201 = icmp eq
i64 %199, -9223372036854775808
br i1 %202, label %mul_ok26, label %operands_not_null27
mul_ok26: ; preds = %mul_check29, %operands_not_null27, %when_case
%204 = getelementptr i8, i8* %literals, i16 0
%205 = bitcast i8* %204 to i64*
%207 = icmp eq
i64 %203, -9223372036854775808
%208 = icmp eq
i64 %206, -9223372036854775808
br i1 %209, label %sub_ok30, label %operands_not_null31
operands_not_null27: ; preds = %when_case
%210 = icmp eq
i64 %199, 0
br i1 %210, label %mul_ok26, label %mul_check29
mul_fail28: ; preds = %mul_check29
mul_check29: ; preds = %operands_not_null27
%211 = icmp slt
i64 %199, 0
%213 = select i1 %211, i64 %212, i64 %199
%215 = select i1 %211, i64 %214, i64 %196
%216 = sdiv i64 -9223372036854775808, %213
%217 = icmp slt
i64 %215, %216
%218 = sdiv i64 9223372036854775807, %213
%219 = icmp sgt
i64 %215, %218
br i1 %220, label %mul_fail28, label %mul_ok26
sub_ok30: ; preds = %operands_not_null31, %mul_ok26
%223 = getelementptr i8, i8* %literals, i16 16
%224 = bitcast i8* %223 to double*
%225 = load double, double* %224
%226 = fcmp oeq double %222, 0x10000000000000
%227 = fcmp oeq double %225, 0x10000000000000
br i1 %228, label %div_ok33, label %operands_not_null34
operands_not_null31: ; preds = %mul_ok26
%229 = add i64 9223372036854775807, %206
%230 = icmp sgt
i64 %203, %229
%231 = icmp slt
i64 %206, 0
%233 = add i64 -9223372036854775808, %206
%234 = icmp slt
i64 %203, %233
%235 = icmp sgt
i64 %206, 0
br i1 %237, label %sub_fail32, label %sub_ok30
sub_fail32: ; preds = %operands_not_null31
div_ok33: ; preds = %operands_not_null34, %sub_ok30
%239 = fcmp oeq double %238, 0x10000000000000
br i1 %241, label %args_notnull36, label %args_null37
operands_not_null34: ; preds = %sub_ok30
%242 = fcmp one double %225, 0.000000e+00
br i1 %242, label %div_ok33, label %div_zero35
div_zero35: ; preds = %operands_not_null34
args_notnull36: ; preds = %div_ok33
%243 = call double @Ceil(double %238)
br label %args_null37
args_null37: ; preds = %args_notnull36, %div_ok33
%244 = phi double [ %243, %args_notnull36 ], [ 0x10000000000000, %div_ok33 ]
br label %end_case
add_ok38: ; preds = %operands_not_null39, %end_case
%247 = getelementptr i8, i8* %literals, i16 24
%248 = bitcast i8* %247 to i64*
%250 = icmp eq
i64 %246, -9223372036854775808
%251 = icmp eq
i64 %249, -9223372036854775808
br i1 %252, label %sub_ok41, label %operands_not_null42
operands_not_null39: ; preds = %end_case
%253 = sub i64 9223372036854775807, %24
%254 = icmp sgt
i64 %27, %253
%255 = icmp sgt
i64 %24, 0
%257 = sub i64 -9223372036854775808, %24
%258 = icmp slt
i64 %27, %257
%259 = icmp slt
i64 %24, 0
br i1 %261, label %add_fail40, label %add_ok38
add_fail40: ; preds = %operands_not_null39
sub_ok41: ; preds = %operands_not_null42, %add_ok38
%263 = getelementptr i8, i8* %literals, i16 32
%264 = bitcast i8* %263 to i64*
%266 = icmp eq
i64 %262, -9223372036854775808
%267 = icmp eq
i64 %265, -9223372036854775808
br i1 %268, label %mul_ok44, label %operands_not_null45
operands_not_null42: ; preds = %add_ok38
%269 = add i64 9223372036854775807, %249
%270 = icmp sgt
i64 %246, %269
%271 = icmp slt
i64 %249, 0
%273 = add i64 -9223372036854775808, %249
%274 = icmp slt
i64 %246, %273
%275 = icmp sgt
i64 %249, 0
br i1 %277, label %sub_fail43, label %sub_ok41
sub_fail43: ; preds = %operands_not_null42
mul_ok44: ; preds = %mul_check47, %operands_not_null45, %sub_ok41
%279 = getelementptr i8, i8* %literals, i16 0
%280 = bitcast i8* %279 to i64*
%282 = icmp eq
i64 %278, -9223372036854775808
%283 = icmp eq
i64 %281, -9223372036854775808
br i1 %284, label %add_ok48, label %operands_not_null49
operands_not_null45: ; preds = %sub_ok41
%285 = icmp eq
i64 %265, 0
br i1 %285, label %mul_ok44, label %mul_check47
mul_fail46: ; preds = %mul_check47
mul_check47: ; preds = %operands_not_null45
%286 = icmp slt
i64 %265, 0
%288 = select i1 %286, i64 %287, i64 %265
%290 = select i1 %286, i64 %289, i64 %262
%291 = sdiv i64 -9223372036854775808, %288
%292 = icmp slt
i64 %290, %291
%293 = sdiv i64 9223372036854775807, %288
%294 = icmp sgt
i64 %290, %293
br i1 %295, label %mul_fail46, label %mul_ok44
add_ok48: ; preds = %operands_not_null49, %mul_ok44
%297 = getelementptr i8, i8* %literals, i16 40
%298 = bitcast i8* %297 to i64*
%300 = icmp eq
i64 %296, -9223372036854775808
%301 = icmp eq
i64 %299, -9223372036854775808
br i1 %302, label %div_ok51, label %operands_not_null52
operands_not_null49: ; preds = %mul_ok44
%303 = sub i64 9223372036854775807, %278
%304 = icmp sgt
i64 %281, %303
%305 = icmp sgt
i64 %278, 0
%307 = sub i64 -9223372036854775808, %278
%308 = icmp slt
i64 %281, %307
%309 = icmp slt
i64 %278, 0
br i1 %311, label %add_fail50, label %add_ok48
add_fail50: ; preds = %operands_not_null49
div_ok51: ; preds = %operands_not_null52, %add_ok48
%313 = icmp eq
i64 %13, -9223372036854775808
%314 = icmp eq
i64 %312, -9223372036854775808
br i1 %315, label %mul_ok54, label %operands_not_null55
operands_not_null52: ; preds = %add_ok48
%316 = icmp ne
i64 %299, 0
br i1 %316, label %div_ok51, label %div_zero53
div_zero53: ; preds = %operands_not_null52
mul_ok54: ; preds = %mul_check57, %operands_not_null55, %div_ok51
%318 = getelementptr i8, i8* %literals, i16 8
%319 = bitcast i8* %318 to i64*
%321 = icmp eq
i64 %317, -9223372036854775808
%322 = icmp eq
i64 %320, -9223372036854775808
br i1 %323, label %div_ok58, label %operands_not_null59
operands_not_null55: ; preds = %div_ok51
%324 = icmp eq
i64 %312, 0
br i1 %324, label %mul_ok54, label %mul_check57
mul_fail56: ; preds = %mul_check57
mul_check57: ; preds = %operands_not_null55
%325 = icmp slt
i64 %312, 0
%327 = select i1 %325, i64 %326, i64 %312
%329 = select i1 %325, i64 %328, i64 %13
%330 = sdiv i64 -9223372036854775808, %327
%331 = icmp slt
i64 %329, %330
%332 = sdiv i64 9223372036854775807, %327
%333 = icmp sgt
i64 %329, %332
br i1 %334, label %mul_fail56, label %mul_ok54
div_ok58: ; preds = %operands_not_null59, %mul_ok54
%338 = getelementptr i8, i8* %literals, i16 8
%339 = bitcast i8* %338 to i64*
%341 = icmp eq
i64 %337, -9223372036854775808
%342 = icmp eq
i64 %340, -9223372036854775808
br i1 %343, label %mul_ok61, label %operands_not_null62
operands_not_null59: ; preds = %mul_ok54
%344 = icmp ne
i64 %320, 0
br i1 %344, label %div_ok58, label %div_zero60
div_zero60: ; preds = %operands_not_null59
mul_ok61: ; preds = %mul_check64, %operands_not_null62, %div_ok58
%347 = getelementptr i8, i8* %literals, i16 48
%348 = bitcast i8* %347 to double*
%349 = load double, double* %348
%350 = fcmp oeq double %346, 0x10000000000000
%351 = fcmp oeq double %349, 0x10000000000000
br i1 %352, label %div_ok65, label %operands_not_null66
operands_not_null62: ; preds = %div_ok58
%353 = icmp eq
i64 %340, 0
br i1 %353, label %mul_ok61, label %mul_check64
mul_fail63: ; preds = %mul_check64
mul_check64: ; preds = %operands_not_null62
%354 = icmp slt
i64 %340, 0
%356 = select i1 %354, i64 %355, i64 %340
%358 = select i1 %354, i64 %357, i64 %337
%359 = sdiv i64 -9223372036854775808, %356
%360 = icmp slt
i64 %358, %359
%361 = sdiv i64 9223372036854775807, %356
%362 = icmp sgt
i64 %358, %361
br i1 %363, label %mul_fail63, label %mul_ok61
div_ok65: ; preds = %operands_not_null66, %mul_ok61
%371 = bitcast i64* %out to i8*
%372 = bitcast i64* %4 to i8*
br label %filter_false
operands_not_null66: ; preds = %mul_ok61
%373 = fcmp one double %349, 0.000000e+00
br i1 %373, label %div_ok65, label %div_zero67
div_zero67: ; preds = %operands_not_null66
}