.ai/ compiler/ lib/ scripts/ seed/ test/ tests/ abi.sizes.rad 3.4 KiB addfn.rad 52 B addfn.ril 76 B aggregate.return.rad 4.1 KiB arith.assignment.rad 595 B arith.basic.rad 191 B arith.modulo.rad 111 B arith.subword.rad 3.9 KiB arith.subword.ril 4.3 KiB arith.sum.rad 192 B arith.w64.rad 4.1 KiB arith.w64.ril 5.2 KiB array.aggregate.stride.rad 753 B array.aggregate.stride.ril 460 B array.assign.rad 221 B array.assign.ril 525 B array.bounds.check.rad 321 B array.index.assign.rad 382 B array.index.rad 264 B array.index.ril 495 B array.len.const.rad 348 B array.len.const.ril 200 B array.length.rad 277 B array.literal.rad 136 B array.literal.ril 329 B array.math.rad 1.2 KiB array.nested.assign.rad 319 B array.nested.rad 325 B array.nested.ril 921 B array.record.elements.rad 1.7 KiB array.repeat.edge.rad 548 B array.repeat.rad 828 B array.repeat.ril 3.0 KiB array.return.rad 345 B array.slice.empty.rad 123 B array.slice.full.rad 110 B array.slice.full.ril 168 B array.slice.gen.end.rad 141 B array.slice.gen.index.rad 154 B array.slice.gen.open.rad 140 B array.slice.gen.start.end.rad 142 B array.slice.gen.start.rad 141 B array.slice.openend.rad 134 B array.slice.openend.ril 245 B array.slice.openstart.rad 134 B array.slice.openstart.ril 183 B array.slice.rad 774 B as.precedence.rad 226 B assert.basic.rad 402 B assert.basic.ril 623 B assert.fail.rad 138 B assert.false.rad 140 B assert.message.rad 123 B assert.message.ril 141 B assert.true.rad 115 B assign.loop.rad 205 B assign.loop.ril 242 B assign.multi.var.rad 182 B assign.multi.var.ril 73 B assign.mutable.rad 6.1 KiB assign.param.rad 142 B assign.param.ril 96 B assign.rad 144 B assign.self.ref.rad 153 B assign.self.ref.ril 92 B assign.sequential.rad 155 B assign.sequential.ril 52 B assign.shadow.mutable.rad 461 B assign.use.intermediate.rad 187 B assign.use.intermediate.ril 99 B average.rad 185 B average.ril 359 B binop.arith.rad 479 B binop.arith.ril 389 B binop.bitwise.rad 1.2 KiB binop.bitwise.ril 1.2 KiB binop.cmp.rad 441 B binop.logical.rad 216 B binop.logical.ril 373 B binop.shift.rad 197 B binop.shift.ril 149 B binop.unsigned.rad 317 B binop.unsigned.ril 236 B bool.comparison.array.rad 688 B bool.comparison.nested.gen.rad 1.0 KiB bool.comparison.opt.rad 905 B bool.comparison.record.gen.rad 1.0 KiB bool.comparison.record.rad 1.1 KiB bool.comparison.slice.gen.rad 157 B bool.comparison.slice.rad 4.1 KiB bool.comparison.slice.record.gen.rad 2.0 KiB bool.comparison.slice.union.gen.rad 2.5 KiB bool.comparison.union.ctor.rad 705 B bool.comparison.union.gen.rad 1.2 KiB bool.comparison.union.record.gen.rad 1.5 KiB bool.comparison.union.simple.gen.rad 296 B bool.operators.complex.rad 384 B bool.operators.rad 831 B bool.short.circuit.rad 2.3 KiB bool.simple.rad 209 B bool.values.rad 787 B builtin.alignof.rad 692 B builtin.alignof.ril 287 B builtin.size.align.rad 1.2 KiB builtin.sizeof.rad 650 B builtin.sizeof.ril 282 B builtin.sliceof.mut.rad 621 B builtin.sliceof.rad 505 B byte.load.store.rad 372 B byte.load.store.ril 520 B call.arg.clobber.rad 732 B call.basic.rad 256 B call.clobber.rad 477 B call.tests.rad 764 B call.tests.ril 603 B cast.basic.rad 848 B cast.basic.ril 594 B cast.narrow.rad 583 B cast.narrow.ril 557 B cast.ptr.rad 276 B cast.ptr.ril 231 B cast.same.size.rad 1.0 KiB cast.same.size.ril 1.1 KiB casting.numbers.rad 1.5 KiB char.literal.rad 180 B cmp.rel.rad 733 B cmp.rel.ril 467 B cmp.unsigned.rad 733 B cmp.unsigned.ril 467 B coercion.implicit.rad 917 B coercion.implicit.ril 1.0 KiB compound.assign.field.rad 300 B compound.assign.rad 1.1 KiB compound.assign.ril 2.0 KiB cond.assign.merge.basic.rad 213 B cond.assign.merge.basic.ril 172 B cond.assign.merge.rad 206 B cond.assign.merge.ril 169 B cond.assign.rad 738 B cond.elseif.rad 204 B cond.elseif.ril 181 B cond.expr.aggregate.rad 1.2 KiB cond.expr.rad 1.9 KiB cond.expr.ril 3.5 KiB cond.for.else.break.rad 341 B cond.for.indexed.rad 253 B cond.for.rad 180 B cond.for.range.indexed.rad 541 B cond.for.range.rad 186 B cond.for.unsigned.range.rad 659 B cond.forever.break.continue.rad 197 B cond.forever.break.rad 247 B cond.fused.rad 941 B cond.if.case.rad 2.2 KiB cond.if.else.min.rad 158 B cond.if.else.rad 240 B cond.if.elseif.rad 435 B cond.if.noelse.rad 135 B cond.if.rad 880 B cond.ifelse.rad 104 B cond.ifelse.ril 117 B cond.iflet.case.rad 170 B cond.iflet.case.ril 114 B cond.iflet.guard.rad 182 B cond.iflet.guard.ril 165 B cond.iflet.mut.rad 191 B cond.iflet.mut.ril 217 B cond.iflet.noelse.rad 156 B cond.iflet.noelse.ril 225 B cond.iflet.optional.rad 184 B cond.iflet.optional.ril 118 B cond.iflet.optional.value.rad 194 B cond.iflet.optional.value.ril 206 B cond.letelse.case.rad 146 B cond.letelse.case.ril 118 B cond.letelse.guard.rad 160 B cond.letelse.guard.ril 169 B cond.letelse.mut.rad 181 B cond.letelse.mut.ril 221 B cond.letelse.optional.rad 160 B cond.letelse.optional.ril 122 B cond.match.fallthrough.rad 384 B cond.match.guard.rad 1.4 KiB cond.match.guard.regalloc.rad 1.3 KiB cond.nested.rad 138 B cond.nested.ril 185 B cond.simple.rad 86 B cond.simple.ril 118 B cond.while.else.break.rad 297 B cond.while.rad 134 B const-expr-array-size.rad 356 B const-expr-cast.rad 1.0 KiB const-expr-literal.rad 628 B const-expr-refs.rad 716 B const.array.copy.mutate.rad 386 B const.array.ident.rad 238 B const.array.ident.ril 146 B const.array.rad 210 B const.array.record.ident.rad 378 B const.array.record.ident.ril 353 B const.array.repeat.record.rad 216 B const.array.repeat.record.ril 399 B const.array.ril 371 B const.array.strings.slice.rad 271 B const.array.strings.slice.ril 539 B const.basic.rad 340 B const.char.rad 174 B const.fn.array.rad 664 B const.negative.rad 322 B const.negative.ril 338 B const.record.array.rad 1.2 KiB const.record.array.simple.rad 538 B const.record.ctor.rad 185 B const.record.ctor.ril 414 B const.record.fn.rad 353 B const.record.mutcopy.rad 450 B const.record.mutcopy.ril 385 B const.record.nested.rad 393 B const.record.nested.ril 474 B const.record.packed.rad 266 B const.record.packed.ril 284 B const.record.padded.rad 266 B const.record.padded.ril 318 B const.record.rad 197 B const.record.ril 220 B const.record.union.rad 593 B const.record.union.ril 625 B const.scalar.rad 102 B const.scalar.ril 82 B const.slice.of.slices.rad 232 B const.slice.of.slices.ril 749 B const.slice.param.rad 333 B const.string.rad 111 B const.string.ril 285 B const.string.scoped.names.rad 254 B const.string.scoped.names.ril 840 B const.union.payload.ctor.rad 364 B const.union.payload.ctor.ril 506 B const.union.record.literal.rad 374 B const.union.record.literal.ril 505 B data.array.rad 782 B data.bool.rad 231 B data.i16.rad 276 B data.i32.rad 296 B data.i8.rad 263 B data.record.rad 576 B data.simple.rad 451 B data.u16.rad 235 B data.u32.rad 255 B data.u8.rad 223 B data.union.rad 901 B debug.tag.rad 557 B ecall.i64.rad 497 B edge.cases.2.rad 352 B edge.cases.3.rad 594 B edge.cases.4.rad 1.2 KiB edge.cases.5.rad 1.1 KiB edge.cases.6.rad 2.6 KiB edge.cases.7.addr.bug.rad 224 B edge.cases.8.bug.rad 523 B edge.cases.rad 238 B error.basic.rad 174 B error.catch.rad 1.6 KiB error.catch.return.rad 403 B error.catch.return.ril 634 B error.division.zero.rad 164 B error.modulo.zero.rad 162 B error.multi.basic.rad 687 B error.multi.catch.rad 787 B error.multi.catch.typed.binding.rad 806 B error.multi.catch.typed.catchall.rad 1.0 KiB error.multi.catch.typed.rad 1.1 KiB error.multi.propagate.multi.rad 968 B error.multi.propagate.rad 840 B error.multi.try.optional.rad 522 B error.slice.bounds.rad 219 B error.try.bang.success.rad 370 B error.try.catch.binding.rad 2.0 KiB error.try.optional.rad 1.9 KiB error.try.rad 4.0 KiB externfn.rad 39 B externfn.ril 37 B fibonacci.rad 122 B fibonacci.ril 247 B field.aggregate.rad 793 B field.aggregate.ril 782 B fn.block.scope.rad 508 B fn.callback.nested.rad 1.2 KiB fn.default.rad 146 B fn.local.rad 155 B fn.ptr.assign.rad 277 B fn.ptr.assign.ril 143 B fn.ptr.call.rad 258 B fn.ptr.call.ril 183 B fn.ptr.param.rad 356 B fn.ptr.param.ril 282 B fn.recursion.2.rad 239 B fn.void.rad 165 B for.else.continue.rad 1.1 KiB frame.large.rad 582 B if-let-mut.rad 1.2 KiB iflet.shadow.leak.rad 317 B index.u8.rad 594 B int.default.i64.rad 1.1 KiB integer.bitwise.basic.rad 708 B integer.overflow.rad 1.8 KiB intrinsic.ebreak.rad 97 B intrinsic.ebreak.ril 76 B intrinsic.ecall.rad 175 B intrinsic.ecall.ril 131 B large.blit.store.rad 2.1 KiB let.copy.semantics.rad 871 B let.copy.semantics.ril 879 B let.guard.rad 1.9 KiB let.placeholder.rad 291 B let.placeholder.ril 220 B literal.char.rad 209 B literal.char.ril 127 B literal.slice.bytes.rad 124 B literal.slice.bytes.ril 245 B literal.slice.dedup.rad 199 B literal.slice.dedup.ril 407 B literal.slice.empty.rad 100 B literal.slice.empty.ril 157 B literal.slice.multi.rad 170 B literal.slice.multi.ril 460 B literal.slice.rad 123 B literal.slice.record.rad 211 B literal.slice.record.ril 468 B literal.slice.ril 254 B literal.string.dedup.rad 179 B literal.string.dedup.ril 395 B literal.string.empty.rad 93 B literal.string.empty.ril 230 B literal.string.fns.rad 180 B literal.string.fns.ril 434 B literal.string.multi.rad 153 B literal.string.multi.ril 444 B literal.string.rad 108 B literal.string.ril 229 B literal.w64.rad 1.7 KiB load.u32.high.rad 1.8 KiB loc.addr.offset.bug.rad 425 B loc.addr.opt.to.opt.rad 448 B loc.addr.optional.assign.rad 423 B loc.addr.record.assign.rad 458 B local.multi.rad 85 B local.multi.ril 67 B local.mut.rad 75 B local.mut.ril 45 B local.simple.rad 60 B local.simple.ril 45 B loop.break.rad 152 B loop.break.ril 228 B loop.complex.flow.rad 1022 B loop.continue.rad 211 B loop.continue.ril 327 B loop.for.array.rad 219 B loop.for.array.ril 295 B loop.for.break.bound.rad 161 B loop.for.break.bound.ril 264 B loop.for.continue.rad 395 B loop.for.continue.ril 721 B loop.for.indexed.rad 145 B loop.for.indexed.ril 285 B loop.for.placeholder.rad 313 B loop.for.placeholder.ril 457 B loop.for.rad 116 B loop.for.ril 220 B loop.for.slice.rad 212 B loop.for.slice.ril 341 B loop.for.unsigned.range.rad 309 B loop.for.unsigned.range.ril 481 B loop.infinite.rad 41 B loop.infinite.ril 78 B loop.mutable.rad 371 B loop.mutable.ril 489 B loop.nested.break.rad 380 B loop.nested.break.ril 461 B loop.nested.continue.rad 406 B loop.nested.continue.ril 581 B loop.return.rad 137 B loop.return.ril 179 B loop.sealblock.rad 926 B loop.while.false.noparams.rad 175 B loop.while.false.noparams.ril 171 B loop.while.nested.shortcircuit.rad 860 B loop.while.nested.shortcircuit.ril 589 B loop.while.rad 156 B loop.while.ril 241 B loop.whilelet.case.rad 251 B loop.whilelet.case.ril 204 B loop.whilelet.guard.rad 257 B loop.whilelet.guard.ril 256 B loop.whilelet.optional.rad 208 B loop.whilelet.optional.ril 217 B loop.whilelet.union.rad 368 B loop.whilelet.union.ril 382 B match.array.rad 3.5 KiB match.char.rad 1.6 KiB match.more.rad 643 B match.more.ril 683 B match.multi.seal.rad 1002 B match.multi.seal.ril 923 B match.multi.survive.rad 1.6 KiB match.mutref.push.rad 1.0 KiB match.mutref.union.rad 677 B match.nested.call.rad 1.7 KiB match.nested.deep.rad 2.2 KiB match.nested.deref.rad 3.7 KiB match.nested.guard.rad 1.6 KiB match.nested.iflet.guard.rad 1.6 KiB match.nested.iflet.rad 1.4 KiB match.nested.iflet.ril 2.3 KiB match.nested.letelse.rad 828 B match.nested.letelse.union.rad 1.3 KiB match.nested.literal.rad 3.1 KiB match.nested.multi.rad 2.4 KiB match.nested.pattern.rad 5.2 KiB match.nested.pattern.ril 8.3 KiB match.nested.record.rad 2.1 KiB match.nested.record.ril 3.5 KiB match.nested.union.rad 2.3 KiB match.nested.union.ril 4.5 KiB match.nested.whilelet.rad 2.4 KiB match.optional.aggregate.rad 222 B match.optional.aggregate.ril 578 B match.optional.rad 183 B match.optional.ril 164 B match.record.pattern.rad 325 B match.record.pattern.ril 287 B match.simple.rad 367 B match.simple.ril 347 B match.string.rad 1.8 KiB match.switch.rad 217 B match.switch.ril 187 B match.value.copy.rad 2.0 KiB match.void.then.or.rad 1.6 KiB memzero.result.bug.rad 821 B memzero.union.bug.rad 591 B method.basic.rad 554 B method.chain.rad 560 B method.multiple.rad 888 B method.ptr.rad 662 B method.pub.rad 238 B method.return.rad 599 B method.throws.rad 829 B method.union.rad 424 B method.with.trait.rad 644 B mixedtypes.rad 79 B mixedtypes.ril 82 B multi.throw.basic.rad 272 B multi.throw.basic.ril 526 B multi.throw.catch.typed.rad 436 B multi.throw.catch.typed.ril 1015 B multi.throw.propagate.rad 335 B multi.throw.propagate.ril 873 B multiplefns.rad 110 B multiplefns.ril 146 B mutref.loop.bug.rad 1.8 KiB mutref.loop.rad 281 B mutref.loop.ril 368 B mutref.scalar.rad 228 B mutref.scalar.ril 324 B nil.cmp.rad 622 B nil.cmp.ril 423 B noparams.rad 38 B noparams.ril 43 B opt.array.hint.rad 951 B opt.assignment.bug.rad 1.3 KiB opt.bug.test.rad 1.4 KiB opt.if.let.complex.rad 6.2 KiB opt.if.let.guard.rad 809 B opt.if.let.rad 956 B opt.nil.check.rad 1.5 KiB opt.ptr.return.nil.rad 85 B opt.ptr.return.nil.ril 51 B opt.record.eq.rad 842 B opt.record.eq.rev.rad 307 B opt.record.eq.rev.ril 635 B opt.record.eq.ril 3.4 KiB opt.record.rad 655 B opt.return.array.rad 289 B opt.return.nested.rad 797 B opt.return.nil.rad 82 B opt.return.nil.ril 114 B opt.return.record.rad 344 B opt.return.value.rad 91 B opt.return.value.ril 138 B opt.slice.npo.rad 2.8 KiB opt.slice.npo.ril 6.5 KiB opt.type.rad 215 B opt.while.let.complex.rad 404 B optional.aggregate.eq.rad 286 B optional.aggregate.eq.ril 695 B optional.eq.rad 131 B optional.eq.ril 253 B optional.ptr.eq.rad 313 B optional.ptr.eq.ril 309 B panic.basic.rad 70 B panic.basic.ril 46 B panic.rad 111 B placeholder.basic.rad 148 B placeholder.comprehensive.rad 577 B pointer.copy.edge.case.rad 1.3 KiB pointer.slice.index.rad 284 B pointer.slice.store.rad 896 B pointerfn.rad 50 B pointerfn.ril 54 B prog.ackermann.rad 5.0 KiB prog.bignum.rad 9.5 KiB prog.binsearch.rad 2.5 KiB prog.bubblesort.rad 2.0 KiB prog.cordic.rad 6.9 KiB prog.crc32.rad 2.7 KiB prog.dijkstra.rad 7.7 KiB prog.eval.rad 6.2 KiB prog.hanoi.rad 3.8 KiB prog.huffman.rad 9.3 KiB prog.hybridsort.rad 3.1 KiB prog.linkedlist.rad 5.9 KiB prog.lzw.rad 6.7 KiB prog.matmul.rad 2.9 KiB prog.mersenne.rad 5.2 KiB prog.nqueens.rad 3.4 KiB prog.rbtree.rad 8.3 KiB prog.regex.rad 10.2 KiB prog.sha256.rad 7.1 KiB prog.sieve.rad 2.8 KiB prog.symtab.rad 10.1 KiB prog.tokenizer.rad 13.9 KiB prog.vm.rad 17.4 KiB ptr.addressof.field.rad 132 B ptr.addressof.field.ril 78 B ptr.addressof.local.rad 455 B ptr.addressof.local.ril 280 B ptr.addressof.rad 119 B ptr.addressof.ril 87 B ptr.assign.rad 137 B ptr.assign.ril 129 B ptr.deref.rad 622 B ptr.deref.record.rad 282 B ptr.deref.record.ril 190 B ptr.deref.ril 1.0 KiB ptr.eq.rad 981 B ptr.mutate.rad 244 B ptr.opaque.rad 1.4 KiB ptr.subscript.assign.rad 129 B ptr.subscript.assign.ril 162 B range.arithmetic.rad 723 B record.access.rad 300 B record.alignment.rad 194 B record.array.elements.rad 1.7 KiB record.assign.blit.rad 111 B record.assign.blit.ril 158 B record.copy.rad 2.0 KiB record.ctor.tuple.rad 69 B record.ctor.tuple.ril 127 B record.empty.eq.rad 272 B record.empty.eq.ril 226 B record.eq.rad 223 B record.eq.ril 214 B record.field.assign.rad 199 B record.field.assign.ril 307 B record.literal.labeled.rad 103 B record.literal.labeled.ril 127 B record.mixed.layout.rad 116 B record.mixed.layout.ril 149 B record.nested.calls.2.rad 612 B record.nested.calls.3.rad 749 B record.nested.eq.rad 246 B record.nested.eq.ril 522 B record.nested.lit.rad 170 B record.nested.lit.ril 188 B record.param.lit.rad 368 B record.ptr.access.rad 242 B record.ptr.access.ril 197 B record.ptr.mutate.rad 235 B record.shorthand.rad 1.5 KiB record.unlabeled.deref.rad 1.4 KiB record.unlabeled.rad 407 B ref.if.bug.rad 519 B ref.immut.loop.bug.rad 670 B ref.mut.ptr.rad 253 B regalloc.callee.save.rad 1.5 KiB regalloc.spill.reuse.rad 488 B reserve.loop.rad 407 B reserve.loop.ril 472 B result.void.success.rad 701 B return.lit.rad 45 B return.lit.ril 50 B return.param.rad 48 B return.param.ril 54 B simplefn.rad 45 B simplefn.ril 51 B slice.alloc.loop.rad 803 B slice.append.rad 4.1 KiB slice.append.ril 16.7 KiB slice.assign.mismatch.rad 216 B slice.assign.rad 1.4 KiB slice.basic.rad 742 B slice.basic.ril 711 B slice.cap.rad 956 B slice.delete.rad 986 B slice.delete.ril 3.4 KiB slice.eq.rad 126 B slice.eq.ril 209 B slice.index.rad 104 B slice.index.ril 152 B slice.mutable.rad 281 B slice.mutable.ril 876 B slice.of.rad 475 B slice.range.rad 606 B slice.range.ril 1.2 KiB slice.runtime.i32.rad 237 B slice.runtime.i32.ril 725 B slice.runtime.literal.rad 240 B slice.runtime.literal.ril 455 B slice.subslice.rad 1.4 KiB spill.blockarg.clobber.rad 3.5 KiB spill.loop.rad 1.6 KiB stack.local.corrupt.rad 335 B static.array.mutate.rad 402 B static.assign.rad 127 B static.assign.ril 244 B static.basic.rad 327 B static.fn.array.rad 628 B static.local.decl.rad 191 B static.local.decl.ril 280 B static.record.array.rad 518 B static.scalar.rad 109 B static.scalar.ril 135 B static.slice.index.assign.rad 408 B static.slice.offset.rad 683 B string.basic.rad 164 B string.escape.rad 364 B string.index.rad 131 B switch.blockargs.clobber.rad 1.4 KiB trait.aggregate.ret.rad 1.5 KiB trait.array.optional.rad 1.7 KiB trait.basic.rad 580 B trait.control.flow.rad 1.2 KiB trait.dispatch.rad 323 B trait.dispatch.ril 469 B trait.fn.param.rad 1.7 KiB trait.multiple.methods.rad 1.2 KiB trait.multiple.traits.rad 1.2 KiB trait.multiple.types.rad 1.3 KiB trait.object.rad 356 B trait.object.ril 496 B trait.supertrait.rad 2.6 KiB trait.supertrait.ril 3.4 KiB trait.throws.rad 1.0 KiB trait.writer.rad 2.6 KiB trivial.phi.rad 1.1 KiB trivial.phi.ril 512 B try.basic.rad 391 B try.basic.ril 879 B try.catch.rad 339 B try.catch.ril 837 B try.optional.rad 363 B try.optional.ril 760 B try.panic.rad 351 B try.panic.ril 639 B type.unify.rad 4.5 KiB undefined.aggregate.rad 152 B undefined.aggregate.ril 84 B undefined.primitive.rad 115 B undefined.primitive.ril 48 B undefined.rad 432 B undefined.record.field.rad 1.6 KiB undefined.record.field.ril 751 B union-tag.rad 926 B union.bitfield.rad 1.2 KiB union.ctor.rad 552 B union.ctor.ril 385 B union.discriminant.cast.rad 389 B union.edge.case.2.rad 694 B union.edge.case.3.rad 623 B union.eq.rad 783 B union.eq.ril 1.4 KiB union.eq.void.ctor.rad 378 B union.eq.void.ctor.ril 131 B union.eq.void.rad 178 B union.eq.void.ril 75 B union.match.bind.rad 259 B union.match.bind.ril 238 B union.match.ref.rad 1.1 KiB union.match.ref.ril 1.2 KiB union.match.tag.rad 858 B union.match.tag.ril 820 B union.mixed.assign.rad 992 B union.payload.mutref.rad 1.4 KiB union.payload.rad 595 B union.payload.record.eq.rad 292 B union.payload.record.eq.ril 984 B union.record.forward.rad 1.3 KiB union.record.literal.rad 444 B union.record.literal.ril 391 B union.variant.access.rad 731 B union.variant.access.ril 506 B union.void.match.rad 418 B union.void.rad 839 B unop.rad 478 B unop.ril 376 B unsafe.basic.rad 574 B unsafe.basic.ril 434 B unsigned.compare.rad 1.9 KiB var.align.rad 1.0 KiB var.infer.rad 564 B var.shadow.rad 236 B var.shadow.ril 145 B void.throw.rad 270 B void.throw.ril 707 B voidfn.rad 18 B voidfn.ril 43 B run 1.9 KiB runner.rad 7.0 KiB vim/ .gitignore 353 B .gitsigners 112 B LICENSE 1.1 KiB Makefile 3.0 KiB README 2.5 KiB std.lib 1.0 KiB std.lib.test 252 B
test/tests/opt.slice.npo.ril 6.5 KiB raw
1
fn w8 $checkSizes() {
2
  @entry0
3
    br.eq w32 16 16 @assert.ok2 @assert.fail1;
4
  @assert.fail1
5
    unreachable;
6
  @assert.ok2
7
    br.eq w32 8 8 @assert.ok4 @assert.fail3;
8
  @assert.fail3
9
    unreachable;
10
  @assert.ok4
11
    br.eq w32 16 16 @assert.ok6 @assert.fail5;
12
  @assert.fail5
13
    unreachable;
14
  @assert.ok6
15
    br.eq w32 16 16 @assert.ok8 @assert.fail7;
16
  @assert.fail7
17
    unreachable;
18
  @assert.ok8
19
    ret 0;
20
}
21
22
fn w8 $checkNil() {
23
  @entry0
24
    reserve %0 16 8;
25
    store ptr 0 %0 0;
26
    store w32 0 %0 8;
27
    store w32 0 %0 12;
28
    load ptr %1 %0 0;
29
    eq ptr %2 %1 0;
30
    br.ne w32 %2 0 @assert.ok2 @assert.fail1;
31
  @assert.fail1
32
    unreachable;
33
  @assert.ok2
34
    ret 0;
35
}
36
37
fn w8 $checkWrap() {
38
  @entry0
39
    reserve %0 3 1;
40
    store w8 1 %0 0;
41
    store w8 2 %0 1;
42
    store w8 3 %0 2;
43
    reserve %1 16 8;
44
    store ptr %0 %1 0;
45
    store w32 3 %1 8;
46
    store w32 3 %1 12;
47
    reserve %2 16 8;
48
    blit %2 %1 16;
49
    load ptr %3 %2 0;
50
    ne ptr %4 %3 0;
51
    br.ne w32 %4 0 @assert.ok2 @assert.fail1;
52
  @assert.fail1
53
    unreachable;
54
  @assert.ok2
55
    ret 0;
56
}
57
58
fn w8 $checkIfLet() {
59
  @entry0
60
    reserve %0 3 1;
61
    store w8 10 %0 0;
62
    store w8 20 %0 1;
63
    store w8 30 %0 2;
64
    reserve %1 16 8;
65
    store ptr %0 %1 0;
66
    store w32 3 %1 8;
67
    store w32 3 %1 12;
68
    reserve %2 16 8;
69
    blit %2 %1 16;
70
    reserve %3 16 8;
71
    blit %3 %2 16;
72
    load ptr %4 %3 0;
73
    br.ne w32 %4 0 @then1 @else2;
74
  @then1
75
    load w32 %5 %3 8;
76
    br.eq w32 %5 3 @assert.ok4 @assert.fail3;
77
  @else2
78
    ret 34;
79
  @assert.fail3
80
    unreachable;
81
  @assert.ok4
82
    load w32 %6 %3 8;
83
    load ptr %7 %3 0;
84
    elem %8 %7 0 %6 1;
85
    load w8 %9 %8 0;
86
    br.eq w8 %9 10 @assert.ok6 @assert.fail5;
87
  @assert.fail5
88
    unreachable;
89
  @assert.ok6
90
    load w32 %10 %3 8;
91
    load ptr %11 %3 0;
92
    elem %12 %11 1 %10 1;
93
    load w8 %13 %12 0;
94
    br.eq w8 %13 20 @assert.ok8 @assert.fail7;
95
  @assert.fail7
96
    unreachable;
97
  @assert.ok8
98
    jmp @merge9;
99
  @merge9
100
    reserve %14 16 8;
101
    store ptr 0 %14 0;
102
    store w32 0 %14 8;
103
    store w32 0 %14 12;
104
    reserve %15 16 8;
105
    blit %15 %14 16;
106
    load ptr %16 %15 0;
107
    br.ne w32 %16 0 @then10 @else11;
108
  @then10
109
    ret 35;
110
  @else11
111
    jmp @merge12;
112
  @merge12
113
    ret 0;
114
}
115
116
fn w8 $checkLetElse() {
117
  @entry0
118
    reserve %0 3 1;
119
    store w8 10 %0 0;
120
    store w8 20 %0 1;
121
    store w8 30 %0 2;
122
    reserve %1 16 8;
123
    store ptr %0 %1 0;
124
    store w32 3 %1 8;
125
    store w32 3 %1 12;
126
    reserve %2 16 8;
127
    blit %2 %1 16;
128
    reserve %3 16 8;
129
    blit %3 %2 16;
130
    load ptr %4 %3 0;
131
    br.ne w32 %4 0 @merge1 @else2;
132
  @merge1
133
    load w32 %5 %3 8;
134
    br.eq w32 %5 3 @assert.ok4 @assert.fail3;
135
  @else2
136
    ret 40;
137
  @assert.fail3
138
    unreachable;
139
  @assert.ok4
140
    ret 0;
141
}
142
143
fn ptr $returnNil(ptr %0) {
144
  @entry0
145
    reserve %1 16 8;
146
    store ptr 0 %1 0;
147
    store w32 0 %1 8;
148
    store w32 0 %1 12;
149
    blit %0 %1 16;
150
    ret %0;
151
}
152
153
fn ptr $returnSome(ptr %0) {
154
  @entry0
155
    reserve %1 2 1;
156
    store w8 42 %1 0;
157
    store w8 99 %1 1;
158
    reserve %2 16 8;
159
    store ptr %1 %2 0;
160
    store w32 2 %2 8;
161
    store w32 2 %2 12;
162
    blit %0 %2 16;
163
    ret %0;
164
}
165
166
fn w8 $checkReturn() {
167
  @entry0
168
    reserve %0 16 8;
169
    call ptr %1 $returnNil(%0);
170
    load ptr %2 %1 0;
171
    eq ptr %3 %2 0;
172
    br.ne w32 %3 0 @assert.ok2 @assert.fail1;
173
  @assert.fail1
174
    unreachable;
175
  @assert.ok2
176
    reserve %4 16 8;
177
    call ptr %5 $returnSome(%4);
178
    load ptr %6 %5 0;
179
    ne ptr %7 %6 0;
180
    br.ne w32 %7 0 @assert.ok4 @assert.fail3;
181
  @assert.fail3
182
    unreachable;
183
  @assert.ok4
184
    reserve %8 16 8;
185
    blit %8 %5 16;
186
    load ptr %9 %8 0;
187
    br.ne w32 %9 0 @then5 @else6;
188
  @then5
189
    load w32 %10 %8 8;
190
    load ptr %11 %8 0;
191
    elem %12 %11 0 %10 1;
192
    load w8 %13 %12 0;
193
    br.eq w8 %13 42 @assert.ok8 @assert.fail7;
194
  @else6
195
    ret 53;
196
  @assert.fail7
197
    unreachable;
198
  @assert.ok8
199
    jmp @merge9;
200
  @merge9
201
    ret 0;
202
}
203
204
fn w8 $checkMatch() {
205
  @entry0
206
    reserve %0 2 1;
207
    store w8 5 %0 0;
208
    store w8 6 %0 1;
209
    reserve %1 16 8;
210
    store ptr %0 %1 0;
211
    store w32 2 %1 8;
212
    store w32 2 %1 12;
213
    reserve %2 16 8;
214
    blit %2 %1 16;
215
    reserve %3 16 8;
216
    blit %3 %2 16;
217
    jmp @arm1;
218
  @arm1
219
    load ptr %4 %3 0;
220
    br.eq ptr %4 0 @case2 @arm3;
221
  @case2
222
    ret 60;
223
  @arm3
224
    jmp @else4;
225
  @else4
226
    jmp @merge6;
227
  @merge6
228
    reserve %5 16 8;
229
    store ptr 0 %5 0;
230
    store w32 0 %5 8;
231
    store w32 0 %5 12;
232
    reserve %6 16 8;
233
    blit %6 %5 16;
234
    jmp @arm7;
235
  @arm7
236
    load ptr %7 %6 0;
237
    br.eq ptr %7 0 @case8 @arm9;
238
  @case8
239
    jmp @merge10;
240
  @arm9
241
    jmp @else11;
242
  @merge10
243
    ret 0;
244
  @else11
245
    ret 61;
246
}
247
248
fn w8 $checkEq() {
249
  @entry0
250
    reserve %0 16 8;
251
    store ptr 0 %0 0;
252
    store w32 0 %0 8;
253
    store w32 0 %0 12;
254
    reserve %1 16 8;
255
    store ptr 0 %1 0;
256
    store w32 0 %1 8;
257
    store w32 0 %1 12;
258
    load ptr %2 %0 0;
259
    load ptr %3 %1 0;
260
    eq ptr %4 %2 %3;
261
    load w32 %5 %0 8;
262
    load w32 %6 %1 8;
263
    eq w32 %7 %5 %6;
264
    and w32 %8 %4 %7;
265
    br.ne w32 %8 0 @assert.ok2 @assert.fail1;
266
  @assert.fail1
267
    unreachable;
268
  @assert.ok2
269
    reserve %9 2 1;
270
    store w8 1 %9 0;
271
    store w8 2 %9 1;
272
    reserve %10 16 8;
273
    store ptr %9 %10 0;
274
    store w32 2 %10 8;
275
    store w32 2 %10 12;
276
    reserve %11 16 8;
277
    blit %11 %10 16;
278
    load ptr %12 %11 0;
279
    load ptr %13 %0 0;
280
    eq ptr %14 %12 %13;
281
    load w32 %15 %11 8;
282
    load w32 %16 %0 8;
283
    eq w32 %17 %15 %16;
284
    and w32 %18 %14 %17;
285
    eq w32 %19 %18 0;
286
    br.ne w32 %19 0 @assert.ok4 @assert.fail3;
287
  @assert.fail3
288
    unreachable;
289
  @assert.ok4
290
    reserve %20 16 8;
291
    blit %20 %10 16;
292
    load ptr %21 %11 0;
293
    load ptr %22 %20 0;
294
    eq ptr %23 %21 %22;
295
    load w32 %24 %11 8;
296
    load w32 %25 %20 8;
297
    eq w32 %26 %24 %25;
298
    and w32 %27 %23 %26;
299
    br.ne w32 %27 0 @assert.ok6 @assert.fail5;
300
  @assert.fail5
301
    unreachable;
302
  @assert.ok6
303
    ret 0;
304
}
305
306
fn w8 $main() {
307
  @entry0
308
    call w8 %0 $checkSizes();
309
    br.ne w8 %0 0 @then1 @merge2;
310
  @then1
311
    ret %0;
312
  @merge2
313
    call w8 %1 $checkNil();
314
    br.ne w8 %1 0 @then3 @merge4;
315
  @then3
316
    ret %1;
317
  @merge4
318
    call w8 %2 $checkWrap();
319
    br.ne w8 %2 0 @then5 @merge6;
320
  @then5
321
    ret %2;
322
  @merge6
323
    call w8 %3 $checkIfLet();
324
    br.ne w8 %3 0 @then7 @merge8;
325
  @then7
326
    ret %3;
327
  @merge8
328
    call w8 %4 $checkLetElse();
329
    br.ne w8 %4 0 @then9 @merge10;
330
  @then9
331
    ret %4;
332
  @merge10
333
    call w8 %5 $checkReturn();
334
    br.ne w8 %5 0 @then11 @merge12;
335
  @then11
336
    ret %5;
337
  @merge12
338
    call w8 %6 $checkMatch();
339
    br.ne w8 %6 0 @then13 @merge14;
340
  @then13
341
    ret %6;
342
  @merge14
343
    call w8 %7 $checkEq();
344
    br.ne w8 %7 0 @then15 @merge16;
345
  @then15
346
    ret %7;
347
  @merge16
348
    ret 0;
349
}