You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
return Compiler.getfield_tfunc(Compiler.typeinf_lattice(interp), a, b)
319
+
elseifisa(b, Incidence)
320
+
fT = Compiler.getfield_tfunc(Compiler.typeinf_lattice(interp), a, widenconst(b))
321
+
fT === Union{} &&return Union{}
322
+
Base.issingletontype(fT) &&return fT
323
+
returnIncidence(fT, copy(b.row))
324
+
end
325
+
return Compiler.getfield_tfunc(Compiler.typeinf_lattice(interp), a, b)
326
+
elseifisa(a, Incidence)
327
+
fT = Compiler.getfield_tfunc(Compiler.typeinf_lattice(interp), widenconst(a), b)
328
+
fT === Union{} &&return Union{}
329
+
Base.issingletontype(fT) &&return fT
330
+
returnIncidence(fT, copy(a.row))
331
+
end
332
+
return Compiler.getfield_tfunc(Compiler.typeinf_lattice(interp), a, b)
333
+
end
334
+
295
335
iflength(argtypes) ==1
336
+
if f === Core.Intrinsics.have_fma
337
+
returnIncidence(Bool)
338
+
end
296
339
a = argtypes[1]
297
340
ifis_any_incidence(a)
298
-
if f == Core.Intrinsics.neg_float
341
+
if f == Core.Intrinsics.neg_float|| f === Core.Intrinsics.neg_int
299
342
returntfunc(Val(f), a)
343
+
elseif f === Core.Intrinsics.ctlz_int || f === Core.Intrinsics.not_int || f === Core.Intrinsics.abs_float
344
+
returngeneric_math_onearg(f, a)
300
345
end
301
346
end
302
347
elseiflength(argtypes) ==2
303
348
a = argtypes[1]
304
349
b = argtypes[2]
305
350
ifis_any_incidence(a, b)
306
351
if (f == Core.Intrinsics.add_float || f == Core.Intrinsics.sub_float) ||
352
+
(f == Core.Intrinsics.add_int || f == Core.Intrinsics.sub_int) ||
307
353
(f == Core.Intrinsics.mul_float || f == Core.Intrinsics.div_float) ||
308
354
f == Core.Intrinsics.copysign_float
309
355
returntfunc(Val(f), a, b)
310
-
elseif f == Core.Intrinsics.or_int
311
-
returntfunc(Val(f), a, b)
312
-
elseif f == Core.Intrinsics.and_int
313
-
returntfunc(Val(f), a, b)
314
-
elseif f == Core.Intrinsics.fptosi || f == Core.Intrinsics.sitofp
356
+
elseif f in (Core.Intrinsics.or_int, Core.Intrinsics.and_int, Core.Intrinsics.xor_int, Core.Intrinsics.shl_int, Core.Intrinsics.lshr_int, Core.Intrinsics.flipsign_int)
357
+
returngeneric_math_twoarg(f, a, b)
358
+
elseif f == Core.Intrinsics.fptosi || f == Core.Intrinsics.sitofp || f == Core.Intrinsics.bitcast || f == Core.Intrinsics.trunc_int || f == Core.Intrinsics.zext_int || f == Core.Intrinsics.sext_int
315
359
# We keep the linearity structure here and absorb the rounding error into be base Int64
elseif f == Core.Intrinsics.lt_float || f == Core.Intrinsics.eq_float || f == Core.Intrinsics.slt_int
361
+
elseif f == Core.Intrinsics.lt_float || f == Core.Intrinsics.ne_float || f == Core.Intrinsics.eq_float || f == Core.Intrinsics.slt_int|| f == Core.Intrinsics.sle_int || f == Core.Intrinsics.ult_int || f == Core.Intrinsics.ule_int || f == Core.Intrinsics.eq_int || f == Base.:(===)
318
362
r = Compiler.tmerge(Compiler.typeinf_lattice(interp), argtypes[1], argtypes[2])
319
363
@assertisa(r, Incidence)
320
364
returnIncidence(Bool, r.row)
321
-
elseif f === Core.getfield &&isa(a, Incidence)
322
-
a = argtypes[1]
323
-
fT = Compiler.getfield_tfunc(Compiler.typeinf_lattice(interp), widenconst(a), argtypes[2])
324
-
fT === Union{} &&return Union{}
325
-
Base.issingletontype(fT) &&return fT
326
-
returnIncidence(fT, copy(a.row))
327
365
end
328
366
end
329
367
elseiflength(argtypes) ==3
330
368
a = argtypes[1]
331
369
b = argtypes[2]
332
370
c = argtypes[3]
333
371
ifis_any_incidence(a, b, c)
334
-
if f === Core.Intrinsics.muladd_float
372
+
if f === Core.Intrinsics.muladd_float|| f === Core.Intrinsics.fma_float
0 commit comments