il: add Ptr type distinct from W64
b1f8d523dbff6618addd6a728774839d6dc6c68e0ef4ad5c518306d9a142ddba
Add a Ptr variant to il::Type that is semantically distinct from W64. Both are 64-bit on RV64, but Ptr marks values with pointer provenance, enabling future static verification of memory safety. - il.rad: Add Type::Ptr, update typeSize - il/printer.rad: Print 'ptr' for the new type - lower.rad: ilType maps Pointer/Fn/TraitObject/Slice/Array/Optional/ Nominal to Ptr; update pointer arithmetic, trait object loads/stores, null-pointer comparisons, return-param conventions - rv64/emit.rad: Ptr uses same load/store instructions as W64 - rv64/isel.rad: Ptr uses same extension/range logic as W64 - Regenerate .ril test snapshots
1 parent
41b8d492
lib/std/arch/rv64/emit.rad
+6 -3
| 492 | 492 | let adj = adjustOffset(e, base, offset); |
|
| 493 | 493 | match typ { |
|
| 494 | 494 | case il::Type::W8 => emit(e, encode::lbu(rd, adj.base, adj.offset)), |
|
| 495 | 495 | case il::Type::W16 => emit(e, encode::lhu(rd, adj.base, adj.offset)), |
|
| 496 | 496 | case il::Type::W32 => emit(e, encode::lwu(rd, adj.base, adj.offset)), |
|
| 497 | - | case il::Type::W64 => emit(e, encode::ld(rd, adj.base, adj.offset)), |
|
| 497 | + | case il::Type::W64, |
|
| 498 | + | il::Type::Ptr => emit(e, encode::ld(rd, adj.base, adj.offset)), |
|
| 498 | 499 | } |
|
| 499 | 500 | } |
|
| 500 | 501 | ||
| 501 | 502 | /// Emit signed load with automatic offset adjustment. |
|
| 502 | 503 | pub fn emitSload(e: *mut Emitter, rd: gen::Reg, base: gen::Reg, offset: i32, typ: il::Type) { |
|
| 503 | 504 | let adj = adjustOffset(e, base, offset); |
|
| 504 | 505 | match typ { |
|
| 505 | 506 | case il::Type::W8 => emit(e, encode::lb(rd, adj.base, adj.offset)), |
|
| 506 | 507 | case il::Type::W16 => emit(e, encode::lh(rd, adj.base, adj.offset)), |
|
| 507 | 508 | case il::Type::W32 => emit(e, encode::lw(rd, adj.base, adj.offset)), |
|
| 508 | - | case il::Type::W64 => emit(e, encode::ld(rd, adj.base, adj.offset)), |
|
| 509 | + | case il::Type::W64, |
|
| 510 | + | il::Type::Ptr => emit(e, encode::ld(rd, adj.base, adj.offset)), |
|
| 509 | 511 | } |
|
| 510 | 512 | } |
|
| 511 | 513 | ||
| 512 | 514 | /// Emit store with automatic offset adjustment. |
|
| 513 | 515 | pub fn emitStore(e: *mut Emitter, rs: gen::Reg, base: gen::Reg, offset: i32, typ: il::Type) { |
|
| 514 | 516 | let adj = adjustOffset(e, base, offset); |
|
| 515 | 517 | match typ { |
|
| 516 | 518 | case il::Type::W8 => emit(e, encode::sb(rs, adj.base, adj.offset)), |
|
| 517 | 519 | case il::Type::W16 => emit(e, encode::sh(rs, adj.base, adj.offset)), |
|
| 518 | 520 | case il::Type::W32 => emit(e, encode::sw(rs, adj.base, adj.offset)), |
|
| 519 | - | case il::Type::W64 => emit(e, encode::sd(rs, adj.base, adj.offset)), |
|
| 521 | + | case il::Type::W64, |
|
| 522 | + | il::Type::Ptr => emit(e, encode::sd(rs, adj.base, adj.offset)), |
|
| 520 | 523 | } |
|
| 521 | 524 | } |
|
| 522 | 525 | ||
| 523 | 526 | /// Emit 64-bit load with automatic offset adjustment. |
|
| 524 | 527 | pub fn emitLd(e: *mut Emitter, rd: gen::Reg, base: gen::Reg, offset: i32) { |
lib/std/arch/rv64/isel.rad
+8 -4
| 228 | 228 | }, |
|
| 229 | 229 | case il::Type::W32 => { |
|
| 230 | 230 | emit::emit(e, encode::slli(rd, rs, SHIFT_W32)); |
|
| 231 | 231 | emit::emit(e, encode::srli(rd, rd, SHIFT_W32)); |
|
| 232 | 232 | }, |
|
| 233 | - | case il::Type::W64 => {} |
|
| 233 | + | case il::Type::W64, |
|
| 234 | + | il::Type::Ptr => {} |
|
| 234 | 235 | } |
|
| 235 | 236 | } |
|
| 236 | 237 | ||
| 237 | 238 | /// Emit sign-extension from a sub-word type to the full register width. |
|
| 238 | 239 | fn emitSext(e: *mut emit::Emitter, rd: gen::Reg, rs: gen::Reg, typ: il::Type) { |
| 246 | 247 | emit::emit(e, encode::srai(rd, rd, SHIFT_W16)); |
|
| 247 | 248 | }, |
|
| 248 | 249 | case il::Type::W32 => { |
|
| 249 | 250 | emit::emit(e, encode::addiw(rd, rs, 0)); |
|
| 250 | 251 | }, |
|
| 251 | - | case il::Type::W64 => {} |
|
| 252 | + | case il::Type::W64, |
|
| 253 | + | il::Type::Ptr => {} |
|
| 252 | 254 | } |
|
| 253 | 255 | } |
|
| 254 | 256 | ||
| 255 | 257 | /// Resolve a value, trap if zero (unless known non-zero), and return the register. |
|
| 256 | 258 | fn resolveAndTrapIfZero(s: *mut Selector, b: il::Val) -> gen::Reg { |
| 780 | 782 | // fits in the signed range of the target type. |
|
| 781 | 783 | match typ { |
|
| 782 | 784 | case il::Type::W8 => return imm >= I8_MIN and imm <= I8_MAX, |
|
| 783 | 785 | case il::Type::W16 => return imm >= I16_MIN and imm <= I16_MAX, |
|
| 784 | 786 | case il::Type::W32 => return imm >= I32_MIN and imm <= I32_MAX, |
|
| 785 | - | case il::Type::W64 => return true, |
|
| 787 | + | case il::Type::W64, |
|
| 788 | + | il::Type::Ptr => return true, |
|
| 786 | 789 | } |
|
| 787 | 790 | } else { |
|
| 788 | 791 | // Zero-extension: value must be non-negative and within unsigned range. |
|
| 789 | 792 | match typ { |
|
| 790 | 793 | case il::Type::W8 => return imm >= 0 and imm <= U8_MAX, |
|
| 791 | 794 | case il::Type::W16 => return imm >= 0 and imm <= U16_MAX, |
|
| 792 | 795 | case il::Type::W32 => return imm >= 0 and imm <= U32_MAX, |
|
| 793 | - | case il::Type::W64 => return true, |
|
| 796 | + | case il::Type::W64, |
|
| 797 | + | il::Type::Ptr => return true, |
|
| 794 | 798 | } |
|
| 795 | 799 | } |
|
| 796 | 800 | } |
|
| 797 | 801 | return false; |
|
| 798 | 802 | } |
lib/std/lang/il.rad
+7 -2
| 109 | 109 | W8, |
|
| 110 | 110 | /// 16-bit value. |
|
| 111 | 111 | W16, |
|
| 112 | 112 | /// 32-bit value. |
|
| 113 | 113 | W32, |
|
| 114 | - | /// 64-bit value (used for pointers on RV64). |
|
| 114 | + | /// 64-bit value. |
|
| 115 | 115 | W64, |
|
| 116 | + | /// Pointer-width value with provenance. |
|
| 117 | + | /// Same physical width as W64 on RV64, but semantically distinct: |
|
| 118 | + | /// a verifier treats Ptr and W64 as incompatible types. |
|
| 119 | + | Ptr, |
|
| 116 | 120 | } |
|
| 117 | 121 | ||
| 118 | 122 | /// Get the size of a type in bytes. |
|
| 119 | 123 | pub fn typeSize(t: Type) -> u32 { |
|
| 120 | 124 | match t { |
|
| 121 | 125 | case Type::W8 => return 1, |
|
| 122 | 126 | case Type::W16 => return 2, |
|
| 123 | 127 | case Type::W32 => return 4, |
|
| 124 | - | case Type::W64 => return 8, |
|
| 128 | + | case Type::W64, |
|
| 129 | + | Type::Ptr => return 8, |
|
| 125 | 130 | } |
|
| 126 | 131 | } |
|
| 127 | 132 | ||
| 128 | 133 | /// SSA register reference. |
|
| 129 | 134 | pub record Reg { n: u32 } |
lib/std/lang/il/printer.rad
+1 -0
| 97 | 97 | match typ { |
|
| 98 | 98 | case super::Type::W8 => return "w8", |
|
| 99 | 99 | case super::Type::W16 => return "w16", |
|
| 100 | 100 | case super::Type::W32 => return "w32", |
|
| 101 | 101 | case super::Type::W64 => return "w64", |
|
| 102 | + | case super::Type::Ptr => return "ptr", |
|
| 102 | 103 | } |
|
| 103 | 104 | } |
|
| 104 | 105 | ||
| 105 | 106 | /// Write a type. |
|
| 106 | 107 | fn writeType(out: *mut sexpr::Output, typ: super::Type) { |
lib/std/lang/lower.rad
+23 -23
| 936 | 936 | returnType: undefined, |
|
| 937 | 937 | isExtern, |
|
| 938 | 938 | isLeaf: true, |
|
| 939 | 939 | blocks: &[], |
|
| 940 | 940 | }; |
|
| 941 | - | // Throwing functions return a result aggregate (word-sized pointer). |
|
| 941 | + | // Throwing functions return a result aggregate (pointer to stack slot). |
|
| 942 | 942 | // TODO: The resolver should set an appropriate type that takes into account |
|
| 943 | 943 | // the throws list. It shouldn't set the return type to the "success" |
|
| 944 | 944 | // value only. |
|
| 945 | 945 | if fnType.throwList.len > 0 { |
|
| 946 | - | func.returnType = il::Type::W64; |
|
| 946 | + | func.returnType = il::Type::Ptr; |
|
| 947 | 947 | } else { |
|
| 948 | 948 | func.returnType = ilType(self, *fnType.returnType); |
|
| 949 | 949 | } |
|
| 950 | 950 | let body = decl.body else { |
|
| 951 | 951 | // Extern functions have no body. |
| 1103 | 1103 | isExtern: false, |
|
| 1104 | 1104 | isLeaf: true, |
|
| 1105 | 1105 | blocks: &[], |
|
| 1106 | 1106 | }; |
|
| 1107 | 1107 | if fnType.throwList.len > 0 { |
|
| 1108 | - | func.returnType = il::Type::W64; |
|
| 1108 | + | func.returnType = il::Type::Ptr; |
|
| 1109 | 1109 | } |
|
| 1110 | 1110 | func.blocks = try lowerFnBody(&mut fnLow, body); |
|
| 1111 | 1111 | func.isLeaf = fnLow.isLeaf; |
|
| 1112 | 1112 | ||
| 1113 | 1113 | return func; |
| 2193 | 2193 | ||
| 2194 | 2194 | match subject.kind { |
|
| 2195 | 2195 | case MatchSubjectKind::OptionalPtr if isNil => { |
|
| 2196 | 2196 | // Null pointer optimization: branch on the data pointer being null. |
|
| 2197 | 2197 | let nilReg = try optionalNilReg(self, subject.val, subject.type); |
|
| 2198 | - | try emitBrCmp(self, il::CmpOp::Eq, il::Type::W64, il::Val::Reg(nilReg), il::Val::Imm(0), matchBlock, fallthrough); |
|
| 2198 | + | try emitBrCmp(self, il::CmpOp::Eq, il::Type::Ptr, il::Val::Reg(nilReg), il::Val::Imm(0), matchBlock, fallthrough); |
|
| 2199 | 2199 | } |
|
| 2200 | 2200 | case MatchSubjectKind::OptionalAggregate => { |
|
| 2201 | 2201 | let base = emitValToReg(self, subject.val); |
|
| 2202 | 2202 | ||
| 2203 | 2203 | if isNil { // Optional aggregate: `nil` means tag is zero. |
| 2881 | 2881 | let params = try! alloc::allocSlice( |
|
| 2882 | 2882 | self.low.arena, @sizeOf(il::Param), @alignOf(il::Param), totalLen |
|
| 2883 | 2883 | ) as *mut [il::Param]; |
|
| 2884 | 2884 | ||
| 2885 | 2885 | if let reg = self.returnReg { |
|
| 2886 | - | params[0] = il::Param { value: reg, type: il::Type::W64 }; |
|
| 2886 | + | params[0] = il::Param { value: reg, type: il::Type::Ptr }; |
|
| 2887 | 2887 | } |
|
| 2888 | 2888 | for i in 0..fnType.paramTypes.len as u32 { |
|
| 2889 | 2889 | let type = ilType(self.low, *fnType.paramTypes[i]); |
|
| 2890 | 2890 | let reg = nextReg(self); |
|
| 2891 | 2891 |
| 2996 | 2996 | let val = try lowerExpr(self, opt); |
|
| 2997 | 2997 | let cmpReg = try optionalNilReg(self, val, optTy); |
|
| 2998 | 2998 | ||
| 2999 | 2999 | // Null-pointer-optimized types compare a 64-bit pointer against zero. |
|
| 3000 | 3000 | // Aggregate optionals compare an 8-bit tag byte against zero. |
|
| 3001 | - | let cmpType = il::Type::W64 if resolver::isOptionalPointer(optTy) else il::Type::W8; |
|
| 3001 | + | let cmpType = il::Type::Ptr if resolver::isOptionalPointer(optTy) else il::Type::W8; |
|
| 3002 | 3002 | ||
| 3003 | 3003 | let op = il::BinOp::Eq if isEq else il::BinOp::Ne; |
|
| 3004 | 3004 | return emitTypedBinOp(self, op, cmpType, il::Val::Reg(cmpReg), il::Val::Imm(0)); |
|
| 3005 | 3005 | } |
|
| 3006 | 3006 |
| 4068 | 4068 | alignment: resolver::PTR_SIZE, |
|
| 4069 | 4069 | }); |
|
| 4070 | 4070 | ||
| 4071 | 4071 | // Store data pointer. |
|
| 4072 | 4072 | emit(self, il::Instr::Store { |
|
| 4073 | - | typ: il::Type::W64, |
|
| 4073 | + | typ: il::Type::Ptr, |
|
| 4074 | 4074 | src: dataVal, |
|
| 4075 | 4075 | dst: slot, |
|
| 4076 | 4076 | offset: TRAIT_OBJ_DATA_OFFSET, |
|
| 4077 | 4077 | }); |
|
| 4078 | 4078 | ||
| 4079 | 4079 | // Store v-table address. |
|
| 4080 | 4080 | emit(self, il::Instr::Store { |
|
| 4081 | - | typ: il::Type::W64, |
|
| 4081 | + | typ: il::Type::Ptr, |
|
| 4082 | 4082 | src: il::Val::DataSym(vName), |
|
| 4083 | 4083 | dst: slot, |
|
| 4084 | 4084 | offset: TRAIT_OBJ_VTABLE_OFFSET, |
|
| 4085 | 4085 | }); |
|
| 4086 | 4086 | return il::Val::Reg(slot); |
| 4093 | 4093 | } |
|
| 4094 | 4094 | let dst = nextReg(self); |
|
| 4095 | 4095 | ||
| 4096 | 4096 | emit(self, il::Instr::BinOp { |
|
| 4097 | 4097 | op: il::BinOp::Add, |
|
| 4098 | - | typ: il::Type::W64, |
|
| 4098 | + | typ: il::Type::Ptr, |
|
| 4099 | 4099 | dst, |
|
| 4100 | 4100 | a: il::Val::Reg(base), |
|
| 4101 | 4101 | b: il::Val::Imm(offset as i64), |
|
| 4102 | 4102 | }); |
|
| 4103 | 4103 | return dst; |
| 4114 | 4114 | if stride == 1 { |
|
| 4115 | 4115 | let dst = nextReg(self); |
|
| 4116 | 4116 | ||
| 4117 | 4117 | emit(self, il::Instr::BinOp { |
|
| 4118 | 4118 | op: il::BinOp::Add, |
|
| 4119 | - | typ: il::Type::W64, |
|
| 4119 | + | typ: il::Type::Ptr, |
|
| 4120 | 4120 | dst, |
|
| 4121 | 4121 | a: il::Val::Reg(base), |
|
| 4122 | 4122 | b: idx |
|
| 4123 | 4123 | }); |
|
| 4124 | 4124 | return dst; |
| 4135 | 4135 | }); |
|
| 4136 | 4136 | // Compute `dst = base + offset`. |
|
| 4137 | 4137 | let dst = nextReg(self); |
|
| 4138 | 4138 | emit(self, il::Instr::BinOp { |
|
| 4139 | 4139 | op: il::BinOp::Add, |
|
| 4140 | - | typ: il::Type::W64, |
|
| 4140 | + | typ: il::Type::Ptr, |
|
| 4141 | 4141 | dst, |
|
| 4142 | 4142 | a: il::Val::Reg(base), |
|
| 4143 | 4143 | b: il::Val::Reg(offset) |
|
| 4144 | 4144 | }); |
|
| 4145 | 4145 | return dst; |
| 6271 | 6271 | args[1] = byteSize; |
|
| 6272 | 6272 | args[2] = il::Val::Imm(alignment as i64); |
|
| 6273 | 6273 | ||
| 6274 | 6274 | let newPtrReg = nextReg(self); |
|
| 6275 | 6275 | emit(self, il::Instr::Call { |
|
| 6276 | - | retTy: il::Type::W64, |
|
| 6276 | + | retTy: il::Type::Ptr, |
|
| 6277 | 6277 | dst: newPtrReg, |
|
| 6278 | 6278 | func: il::Val::Reg(allocFnReg), |
|
| 6279 | 6279 | args, |
|
| 6280 | 6280 | }); |
|
| 6281 | 6281 |
| 6407 | 6407 | let traitObjReg = emitValToReg(self, traitObjVal); |
|
| 6408 | 6408 | ||
| 6409 | 6409 | // Load data pointer from trait object. |
|
| 6410 | 6410 | let dataReg = nextReg(self); |
|
| 6411 | 6411 | emit(self, il::Instr::Load { |
|
| 6412 | - | typ: il::Type::W64, |
|
| 6412 | + | typ: il::Type::Ptr, |
|
| 6413 | 6413 | dst: dataReg, |
|
| 6414 | 6414 | src: traitObjReg, |
|
| 6415 | 6415 | offset: TRAIT_OBJ_DATA_OFFSET, |
|
| 6416 | 6416 | }); |
|
| 6417 | 6417 | ||
| 6418 | 6418 | // Load v-table pointer from trait object. |
|
| 6419 | 6419 | let vtableReg = nextReg(self); |
|
| 6420 | 6420 | emit(self, il::Instr::Load { |
|
| 6421 | - | typ: il::Type::W64, |
|
| 6421 | + | typ: il::Type::Ptr, |
|
| 6422 | 6422 | dst: vtableReg, |
|
| 6423 | 6423 | src: traitObjReg, |
|
| 6424 | 6424 | offset: TRAIT_OBJ_VTABLE_OFFSET, |
|
| 6425 | 6425 | }); |
|
| 6426 | 6426 | ||
| 6427 | 6427 | // Load function pointer from v-table at the method's slot offset. |
|
| 6428 | 6428 | let fnPtrReg = nextReg(self); |
|
| 6429 | 6429 | let slotOffset = (methodIndex * resolver::PTR_SIZE) as i32; |
|
| 6430 | 6430 | ||
| 6431 | 6431 | emit(self, il::Instr::Load { |
|
| 6432 | - | typ: il::Type::W64, |
|
| 6432 | + | typ: il::Type::Ptr, |
|
| 6433 | 6433 | dst: fnPtrReg, |
|
| 6434 | 6434 | src: vtableReg, |
|
| 6435 | 6435 | offset: slotOffset, |
|
| 6436 | 6436 | }); |
|
| 6437 | 6437 | let methodFnType = traitInfo.methods[methodIndex].fnType; |
| 6469 | 6469 | args[0] = il::Val::Reg(try emitReserve(self, retTy)); |
|
| 6470 | 6470 | } |
|
| 6471 | 6471 | let dst = nextReg(self); |
|
| 6472 | 6472 | ||
| 6473 | 6473 | emit(self, il::Instr::Call { |
|
| 6474 | - | retTy: il::Type::W64, |
|
| 6474 | + | retTy: il::Type::Ptr, |
|
| 6475 | 6475 | dst, |
|
| 6476 | 6476 | func: callee, |
|
| 6477 | 6477 | args, |
|
| 6478 | 6478 | }); |
|
| 6479 | 6479 | return il::Val::Reg(dst); |
| 6979 | 6979 | case resolver::Type::I16, |
|
| 6980 | 6980 | resolver::Type::U16 => return il::Type::W16, |
|
| 6981 | 6981 | case resolver::Type::I32, |
|
| 6982 | 6982 | resolver::Type::U32 => return il::Type::W32, |
|
| 6983 | 6983 | case resolver::Type::I64, |
|
| 6984 | - | resolver::Type::U64, |
|
| 6985 | - | resolver::Type::Pointer { .. }, |
|
| 6986 | - | resolver::Type::Slice { .. }, |
|
| 6987 | - | resolver::Type::Array(_), |
|
| 6988 | - | resolver::Type::Optional(_), |
|
| 6984 | + | resolver::Type::U64 => return il::Type::W64, |
|
| 6985 | + | case resolver::Type::Pointer { .. }, |
|
| 6989 | 6986 | resolver::Type::Fn(_), |
|
| 6990 | - | resolver::Type::TraitObject { .. } => return il::Type::W64, |
|
| 6987 | + | resolver::Type::TraitObject { .. } => return il::Type::Ptr, |
|
| 6988 | + | case resolver::Type::Slice { .. }, |
|
| 6989 | + | resolver::Type::Array(_), |
|
| 6990 | + | resolver::Type::Optional(_) => return il::Type::Ptr, |
|
| 6991 | 6991 | case resolver::Type::Nominal(_) => { |
|
| 6992 | 6992 | if resolver::isVoidUnion(typ) { |
|
| 6993 | 6993 | return il::Type::W8; |
|
| 6994 | 6994 | } |
|
| 6995 | - | return il::Type::W64; |
|
| 6995 | + | return il::Type::Ptr; |
|
| 6996 | 6996 | } |
|
| 6997 | 6997 | case resolver::Type::Void => return il::Type::W64, |
|
| 6998 | 6998 | // [`Type::Int`] is the type of unsuffixed integer literals and their |
|
| 6999 | 6999 | // compound expressions (e.g. `1 + 2`). It defaults to W64 (i64) here, |
|
| 7000 | 7000 | // matching the native word size on RV64. It cannot be resolved earlier |
test/tests/arith.subword.ril
+0 -1
| 242 | 242 | @assert.fail29 |
|
| 243 | 243 | unreachable; |
|
| 244 | 244 | @assert.ok30 |
|
| 245 | 245 | ret 0; |
|
| 246 | 246 | } |
|
| 247 | - |
test/tests/arith.w64.ril
+0 -1
| 293 | 293 | @assert.fail35 |
|
| 294 | 294 | unreachable; |
|
| 295 | 295 | @assert.ok36 |
|
| 296 | 296 | ret 0; |
|
| 297 | 297 | } |
|
| 298 | - |
test/tests/array.aggregate.stride.ril
+9 -9
| 1 | - | fn w32 $arrayOfRecords(w64 %0, w32 %1) { |
|
| 1 | + | fn w32 $arrayOfRecords(ptr %0, w32 %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | br.ult w32 %1 3 @guard#pass1 @guard#trap2; |
|
| 4 | 4 | @guard#pass1 |
|
| 5 | 5 | mul w64 %2 %1 8; |
|
| 6 | - | add w64 %3 %0 %2; |
|
| 6 | + | add ptr %3 %0 %2; |
|
| 7 | 7 | sload w32 %4 %3 0; |
|
| 8 | 8 | ret %4; |
|
| 9 | 9 | @guard#trap2 |
|
| 10 | 10 | ebreak; |
|
| 11 | 11 | unreachable; |
|
| 12 | 12 | } |
|
| 13 | 13 | ||
| 14 | - | fn w64 $addressOfRecord(w64 %0, w32 %1) { |
|
| 14 | + | fn ptr $addressOfRecord(ptr %0, w32 %1) { |
|
| 15 | 15 | @entry0 |
|
| 16 | 16 | br.ult w32 %1 3 @guard#pass1 @guard#trap2; |
|
| 17 | 17 | @guard#pass1 |
|
| 18 | 18 | mul w64 %2 %1 8; |
|
| 19 | - | add w64 %3 %0 %2; |
|
| 19 | + | add ptr %3 %0 %2; |
|
| 20 | 20 | ret %3; |
|
| 21 | 21 | @guard#trap2 |
|
| 22 | 22 | ebreak; |
|
| 23 | 23 | unreachable; |
|
| 24 | 24 | } |
|
| 25 | 25 | ||
| 26 | - | fn w32 $arrayOfArrays(w64 %0, w32 %1) { |
|
| 26 | + | fn w32 $arrayOfArrays(ptr %0, w32 %1) { |
|
| 27 | 27 | @entry0 |
|
| 28 | 28 | br.ult w32 %1 3 @guard#pass1 @guard#trap2; |
|
| 29 | 29 | @guard#pass1 |
|
| 30 | 30 | mul w64 %2 %1 16; |
|
| 31 | - | add w64 %3 %0 %2; |
|
| 31 | + | add ptr %3 %0 %2; |
|
| 32 | 32 | sload w32 %4 %3 0; |
|
| 33 | 33 | ret %4; |
|
| 34 | 34 | @guard#trap2 |
|
| 35 | 35 | ebreak; |
|
| 36 | 36 | unreachable; |
|
| 37 | 37 | } |
|
| 38 | 38 | ||
| 39 | - | fn w32 $nestedLargeStride(w64 %0, w32 %1, w32 %2) { |
|
| 39 | + | fn w32 $nestedLargeStride(ptr %0, w32 %1, w32 %2) { |
|
| 40 | 40 | @entry0 |
|
| 41 | 41 | br.ult w32 %1 3 @guard#pass1 @guard#trap2; |
|
| 42 | 42 | @guard#pass1 |
|
| 43 | 43 | mul w64 %3 %1 16; |
|
| 44 | - | add w64 %4 %0 %3; |
|
| 44 | + | add ptr %4 %0 %3; |
|
| 45 | 45 | br.ult w32 %2 2 @guard#pass3 @guard#trap4; |
|
| 46 | 46 | @guard#trap2 |
|
| 47 | 47 | ebreak; |
|
| 48 | 48 | unreachable; |
|
| 49 | 49 | @guard#pass3 |
|
| 50 | 50 | mul w64 %5 %2 8; |
|
| 51 | - | add w64 %6 %4 %5; |
|
| 51 | + | add ptr %6 %4 %5; |
|
| 52 | 52 | sload w32 %7 %6 4; |
|
| 53 | 53 | ret %7; |
|
| 54 | 54 | @guard#trap4 |
|
| 55 | 55 | ebreak; |
|
| 56 | 56 | unreachable; |
test/tests/array.assign.ril
+2 -3
| 13 | 13 | store w32 6 %1 12; |
|
| 14 | 14 | store w32 0 %1 16; |
|
| 15 | 15 | blit %1 %0 20; |
|
| 16 | 16 | sload w32 %2 %1 0; |
|
| 17 | 17 | mul w64 %3 3 4; |
|
| 18 | - | add w64 %4 %1 %3; |
|
| 18 | + | add ptr %4 %1 %3; |
|
| 19 | 19 | sload w32 %5 %4 0; |
|
| 20 | 20 | add w32 %6 %2 %5; |
|
| 21 | 21 | mul w64 %7 2 4; |
|
| 22 | - | add w64 %8 %1 %7; |
|
| 22 | + | add ptr %8 %1 %7; |
|
| 23 | 23 | sload w32 %9 %8 0; |
|
| 24 | 24 | sub w32 %10 %6 %9; |
|
| 25 | 25 | ret %10; |
|
| 26 | 26 | } |
|
| 27 | - |
test/tests/array.index.ril
+3 -4
| 6 | 6 | store w32 30 %0 8; |
|
| 7 | 7 | store w32 40 %0 12; |
|
| 8 | 8 | sload w32 %1 %0 0; |
|
| 9 | 9 | add w32 %2 0 %1; |
|
| 10 | 10 | mul w64 %3 1 4; |
|
| 11 | - | add w64 %4 %0 %3; |
|
| 11 | + | add ptr %4 %0 %3; |
|
| 12 | 12 | sload w32 %5 %4 0; |
|
| 13 | 13 | add w32 %6 %2 %5; |
|
| 14 | 14 | mul w64 %7 2 4; |
|
| 15 | - | add w64 %8 %0 %7; |
|
| 15 | + | add ptr %8 %0 %7; |
|
| 16 | 16 | sload w32 %9 %8 0; |
|
| 17 | 17 | add w32 %10 %6 %9; |
|
| 18 | 18 | mul w64 %11 3 4; |
|
| 19 | - | add w64 %12 %0 %11; |
|
| 19 | + | add ptr %12 %0 %11; |
|
| 20 | 20 | sload w32 %13 %12 0; |
|
| 21 | 21 | add w32 %14 %10 %13; |
|
| 22 | 22 | sub w32 %15 %14 100; |
|
| 23 | 23 | ret %15; |
|
| 24 | 24 | } |
|
| 25 | - |
test/tests/array.len.const.ril
+3 -3
| 1 | - | fn w32 $arrayLen(w64 %0) { |
|
| 1 | + | fn w32 $arrayLen(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | ret 5; |
|
| 4 | 4 | } |
|
| 5 | 5 | ||
| 6 | - | fn w32 $arrayLenExpr(w64 %0) { |
|
| 6 | + | fn w32 $arrayLenExpr(ptr %0) { |
|
| 7 | 7 | @entry0 |
|
| 8 | 8 | add w32 %1 3 10; |
|
| 9 | 9 | ret %1; |
|
| 10 | 10 | } |
|
| 11 | 11 | ||
| 12 | - | fn w8 $arrayLenCmp(w64 %0) { |
|
| 12 | + | fn w8 $arrayLenCmp(ptr %0) { |
|
| 13 | 13 | @entry0 |
|
| 14 | 14 | eq w32 %1 4 4; |
|
| 15 | 15 | ret %1; |
|
| 16 | 16 | } |
test/tests/array.literal.ril
+2 -2
| 4 | 4 | store w32 1 %0 0; |
|
| 5 | 5 | store w32 2 %0 4; |
|
| 6 | 6 | store w32 3 %0 8; |
|
| 7 | 7 | sload w32 %1 %0 0; |
|
| 8 | 8 | mul w64 %2 1 4; |
|
| 9 | - | add w64 %3 %0 %2; |
|
| 9 | + | add ptr %3 %0 %2; |
|
| 10 | 10 | sload w32 %4 %3 0; |
|
| 11 | 11 | add w32 %5 %1 %4; |
|
| 12 | 12 | mul w64 %6 2 4; |
|
| 13 | - | add w64 %7 %0 %6; |
|
| 13 | + | add ptr %7 %0 %6; |
|
| 14 | 14 | sload w32 %8 %7 0; |
|
| 15 | 15 | add w32 %9 %5 %8; |
|
| 16 | 16 | ret %9; |
|
| 17 | 17 | } |
test/tests/array.nested.ril
+8 -9
| 8 | 8 | blit %0 %1 12; |
|
| 9 | 9 | reserve %2 12 4; |
|
| 10 | 10 | store w32 4 %2 0; |
|
| 11 | 11 | store w32 5 %2 4; |
|
| 12 | 12 | store w32 6 %2 8; |
|
| 13 | - | add w64 %3 %0 12; |
|
| 13 | + | add ptr %3 %0 12; |
|
| 14 | 14 | blit %3 %2 12; |
|
| 15 | 15 | reserve %4 24 4; |
|
| 16 | 16 | blit %4 %0 24; |
|
| 17 | 17 | sload w32 %5 %0 0; |
|
| 18 | 18 | mul w64 %6 1 4; |
|
| 19 | - | add w64 %7 %4 %6; |
|
| 19 | + | add ptr %7 %4 %6; |
|
| 20 | 20 | sload w32 %8 %7 0; |
|
| 21 | 21 | add w32 %9 %5 %8; |
|
| 22 | 22 | mul w64 %10 2 4; |
|
| 23 | - | add w64 %11 %0 %10; |
|
| 23 | + | add ptr %11 %0 %10; |
|
| 24 | 24 | sload w32 %12 %11 0; |
|
| 25 | 25 | add w32 %13 %9 %12; |
|
| 26 | 26 | mul w64 %14 1 12; |
|
| 27 | - | add w64 %15 %4 %14; |
|
| 27 | + | add ptr %15 %4 %14; |
|
| 28 | 28 | sload w32 %16 %15 0; |
|
| 29 | 29 | add w32 %17 %13 %16; |
|
| 30 | 30 | mul w64 %18 1 12; |
|
| 31 | - | add w64 %19 %0 %18; |
|
| 31 | + | add ptr %19 %0 %18; |
|
| 32 | 32 | mul w64 %20 1 4; |
|
| 33 | - | add w64 %21 %19 %20; |
|
| 33 | + | add ptr %21 %19 %20; |
|
| 34 | 34 | sload w32 %22 %21 0; |
|
| 35 | 35 | add w32 %23 %17 %22; |
|
| 36 | 36 | mul w64 %24 1 12; |
|
| 37 | - | add w64 %25 %4 %24; |
|
| 37 | + | add ptr %25 %4 %24; |
|
| 38 | 38 | mul w64 %26 2 4; |
|
| 39 | - | add w64 %27 %25 %26; |
|
| 39 | + | add ptr %27 %25 %26; |
|
| 40 | 40 | sload w32 %28 %27 0; |
|
| 41 | 41 | add w32 %29 %23 %28; |
|
| 42 | 42 | ret %29; |
|
| 43 | 43 | } |
|
| 44 | - |
test/tests/array.repeat.ril
+9 -10
| 6 | 6 | store w32 42 %0 8; |
|
| 7 | 7 | sload w32 %3 %0 0; |
|
| 8 | 8 | br.eq w32 %3 42 @and#then4 @and#else5; |
|
| 9 | 9 | @and#then1 |
|
| 10 | 10 | mul w64 %9 2 4; |
|
| 11 | - | add w64 %10 %0 %9; |
|
| 11 | + | add ptr %10 %0 %9; |
|
| 12 | 12 | sload w32 %11 %10 0; |
|
| 13 | 13 | eq w32 %12 %11 42; |
|
| 14 | 14 | jmp @and#end3(%12); |
|
| 15 | 15 | @and#else2 |
|
| 16 | 16 | jmp @and#end3(0); |
|
| 17 | 17 | @and#end3(w8 %1) |
|
| 18 | 18 | ret %1; |
|
| 19 | 19 | @and#then4 |
|
| 20 | 20 | mul w64 %4 1 4; |
|
| 21 | - | add w64 %5 %0 %4; |
|
| 21 | + | add ptr %5 %0 %4; |
|
| 22 | 22 | sload w32 %6 %5 0; |
|
| 23 | 23 | eq w32 %7 %6 42; |
|
| 24 | 24 | jmp @and#end6(%7); |
|
| 25 | 25 | @and#else5 |
|
| 26 | 26 | jmp @and#end6(0); |
| 38 | 38 | store w32 0 %0 16; |
|
| 39 | 39 | sload w32 %5 %0 0; |
|
| 40 | 40 | br.eq w32 %5 0 @and#then10 @and#else11; |
|
| 41 | 41 | @and#then1 |
|
| 42 | 42 | mul w64 %21 4 4; |
|
| 43 | - | add w64 %22 %0 %21; |
|
| 43 | + | add ptr %22 %0 %21; |
|
| 44 | 44 | sload w32 %23 %22 0; |
|
| 45 | 45 | eq w32 %24 %23 0; |
|
| 46 | 46 | jmp @and#end3(%24); |
|
| 47 | 47 | @and#else2 |
|
| 48 | 48 | jmp @and#end3(0); |
|
| 49 | 49 | @and#end3(w8 %1) |
|
| 50 | 50 | ret %1; |
|
| 51 | 51 | @and#then4 |
|
| 52 | 52 | mul w64 %16 3 4; |
|
| 53 | - | add w64 %17 %0 %16; |
|
| 53 | + | add ptr %17 %0 %16; |
|
| 54 | 54 | sload w32 %18 %17 0; |
|
| 55 | 55 | eq w32 %19 %18 0; |
|
| 56 | 56 | jmp @and#end6(%19); |
|
| 57 | 57 | @and#else5 |
|
| 58 | 58 | jmp @and#end6(0); |
|
| 59 | 59 | @and#end6(w8 %2) |
|
| 60 | 60 | br.ne w32 %2 0 @and#then1 @and#else2; |
|
| 61 | 61 | @and#then7 |
|
| 62 | 62 | mul w64 %11 2 4; |
|
| 63 | - | add w64 %12 %0 %11; |
|
| 63 | + | add ptr %12 %0 %11; |
|
| 64 | 64 | sload w32 %13 %12 0; |
|
| 65 | 65 | eq w32 %14 %13 0; |
|
| 66 | 66 | jmp @and#end9(%14); |
|
| 67 | 67 | @and#else8 |
|
| 68 | 68 | jmp @and#end9(0); |
|
| 69 | 69 | @and#end9(w8 %3) |
|
| 70 | 70 | br.ne w32 %3 0 @and#then4 @and#else5; |
|
| 71 | 71 | @and#then10 |
|
| 72 | 72 | mul w64 %6 1 4; |
|
| 73 | - | add w64 %7 %0 %6; |
|
| 73 | + | add ptr %7 %0 %6; |
|
| 74 | 74 | sload w32 %8 %7 0; |
|
| 75 | 75 | eq w32 %9 %8 0; |
|
| 76 | 76 | jmp @and#end12(%9); |
|
| 77 | 77 | @and#else11 |
|
| 78 | 78 | jmp @and#end12(0); |
| 88 | 88 | store w8 1 %0 2; |
|
| 89 | 89 | store w8 1 %0 3; |
|
| 90 | 90 | load w8 %4 %0 0; |
|
| 91 | 91 | br.ne w32 %4 0 @and#then7 @and#else8; |
|
| 92 | 92 | @and#then1 |
|
| 93 | - | add w64 %11 %0 3; |
|
| 93 | + | add ptr %11 %0 3; |
|
| 94 | 94 | load w8 %12 %11 0; |
|
| 95 | 95 | jmp @and#end3(%12); |
|
| 96 | 96 | @and#else2 |
|
| 97 | 97 | jmp @and#end3(0); |
|
| 98 | 98 | @and#end3(w8 %1) |
|
| 99 | 99 | ret %1; |
|
| 100 | 100 | @and#then4 |
|
| 101 | - | add w64 %8 %0 2; |
|
| 101 | + | add ptr %8 %0 2; |
|
| 102 | 102 | load w8 %9 %8 0; |
|
| 103 | 103 | jmp @and#end6(%9); |
|
| 104 | 104 | @and#else5 |
|
| 105 | 105 | jmp @and#end6(0); |
|
| 106 | 106 | @and#end6(w8 %2) |
|
| 107 | 107 | br.ne w32 %2 0 @and#then1 @and#else2; |
|
| 108 | 108 | @and#then7 |
|
| 109 | - | add w64 %5 %0 1; |
|
| 109 | + | add ptr %5 %0 1; |
|
| 110 | 110 | load w8 %6 %5 0; |
|
| 111 | 111 | jmp @and#end9(%6); |
|
| 112 | 112 | @and#else8 |
|
| 113 | 113 | jmp @and#end9(0); |
|
| 114 | 114 | @and#end9(w8 %3) |
| 148 | 148 | @and#else8 |
|
| 149 | 149 | jmp @and#end9(0); |
|
| 150 | 150 | @and#end9(w8 %2) |
|
| 151 | 151 | br.ne w32 %2 0 @and#then4 @and#else5; |
|
| 152 | 152 | } |
|
| 153 | - |
test/tests/array.slice.full.ril
+2 -2
| 1 | - | fn w64 $sliceFull(w64 %0, w64 %1) { |
|
| 1 | + | fn ptr $sliceFull(ptr %0, ptr %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %2 16 8; |
|
| 4 | - | store w64 %1 %2 0; |
|
| 4 | + | store ptr %1 %2 0; |
|
| 5 | 5 | store w32 4 %2 8; |
|
| 6 | 6 | store w32 4 %2 12; |
|
| 7 | 7 | blit %0 %2 16; |
|
| 8 | 8 | ret %0; |
|
| 9 | 9 | } |
test/tests/array.slice.openend.ril
+3 -3
| 1 | - | fn w64 $sliceOpenEnd(w64 %0, w64 %1, w32 %2) { |
|
| 1 | + | fn ptr $sliceOpenEnd(ptr %0, ptr %1, w32 %2) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | mul w64 %3 %2 4; |
|
| 4 | - | add w64 %4 %1 %3; |
|
| 4 | + | add ptr %4 %1 %3; |
|
| 5 | 5 | sub w32 %5 4 %2; |
|
| 6 | 6 | reserve %6 16 8; |
|
| 7 | - | store w64 %4 %6 0; |
|
| 7 | + | store ptr %4 %6 0; |
|
| 8 | 8 | store w32 %5 %6 8; |
|
| 9 | 9 | store w32 %5 %6 12; |
|
| 10 | 10 | blit %0 %6 16; |
|
| 11 | 11 | ret %0; |
|
| 12 | 12 | } |
test/tests/array.slice.openstart.ril
+2 -2
| 1 | - | fn w64 $sliceOpenStart(w64 %0, w64 %1, w32 %2) { |
|
| 1 | + | fn ptr $sliceOpenStart(ptr %0, ptr %1, w32 %2) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %3 16 8; |
|
| 4 | - | store w64 %1 %3 0; |
|
| 4 | + | store ptr %1 %3 0; |
|
| 5 | 5 | store w32 %2 %3 8; |
|
| 6 | 6 | store w32 %2 %3 12; |
|
| 7 | 7 | blit %0 %3 16; |
|
| 8 | 8 | ret %0; |
|
| 9 | 9 | } |
test/tests/assert.basic.ril
+0 -1
| 25 | 25 | @assert.fail11 |
|
| 26 | 26 | unreachable; |
|
| 27 | 27 | @assert.ok12 |
|
| 28 | 28 | ret 0; |
|
| 29 | 29 | } |
|
| 30 | - |
test/tests/average.ril
+2 -2
| 1 | - | fn w32 $average(w64 %0) { |
|
| 1 | + | fn w32 $average(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | load w32 %1 %0 8; |
|
| 4 | 4 | load w64 %2 %0 0; |
|
| 5 | 5 | jmp @loop1(0, 0); |
|
| 6 | 6 | @loop1(w32 %3, w32 %7) |
|
| 7 | 7 | br.slt w32 %3 %1 @body2 @merge3; |
|
| 8 | 8 | @body2 |
|
| 9 | 9 | mul w64 %4 %3 4; |
|
| 10 | - | add w64 %5 %2 %4; |
|
| 10 | + | add ptr %5 %2 %4; |
|
| 11 | 11 | load w32 %6 %5 0; |
|
| 12 | 12 | add w32 %8 %7 %6; |
|
| 13 | 13 | add w32 %9 %3 1; |
|
| 14 | 14 | jmp @loop1(%9, %8); |
|
| 15 | 15 | @merge3 |
test/tests/byte.load.store.ril
+7 -7
| 1 | - | fn w8 $loadByte(w64 %0) { |
|
| 1 | + | fn w8 $loadByte(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | load w8 %1 %0 0; |
|
| 4 | 4 | ret %1; |
|
| 5 | 5 | } |
|
| 6 | 6 | ||
| 7 | - | fn w64 $storeByte(w64 %0, w8 %1) { |
|
| 7 | + | fn w64 $storeByte(ptr %0, w8 %1) { |
|
| 8 | 8 | @entry0 |
|
| 9 | 9 | store w8 %1 %0 0; |
|
| 10 | 10 | ret; |
|
| 11 | 11 | } |
|
| 12 | 12 | ||
| 13 | - | fn w64 $loadStoreByte(w64 %0, w64 %1) { |
|
| 13 | + | fn w64 $loadStoreByte(ptr %0, ptr %1) { |
|
| 14 | 14 | @entry0 |
|
| 15 | 15 | load w8 %2 %0 0; |
|
| 16 | 16 | store w8 %2 %1 0; |
|
| 17 | 17 | ret; |
|
| 18 | 18 | } |
|
| 19 | 19 | ||
| 20 | - | fn w8 $byteArrayAccess(w64 %0, w32 %1) { |
|
| 20 | + | fn w8 $byteArrayAccess(ptr %0, w32 %1) { |
|
| 21 | 21 | @entry0 |
|
| 22 | 22 | br.ult w32 %1 4 @guard#pass1 @guard#trap2; |
|
| 23 | 23 | @guard#pass1 |
|
| 24 | - | add w64 %2 %0 %1; |
|
| 24 | + | add ptr %2 %0 %1; |
|
| 25 | 25 | load w8 %3 %2 0; |
|
| 26 | 26 | ret %3; |
|
| 27 | 27 | @guard#trap2 |
|
| 28 | 28 | ebreak; |
|
| 29 | 29 | unreachable; |
|
| 30 | 30 | } |
|
| 31 | 31 | ||
| 32 | - | fn w8 $byteSliceAccess(w64 %0, w32 %1) { |
|
| 32 | + | fn w8 $byteSliceAccess(ptr %0, w32 %1) { |
|
| 33 | 33 | @entry0 |
|
| 34 | 34 | load w32 %2 %0 8; |
|
| 35 | 35 | br.ult w32 %1 %2 @guard#pass1 @guard#trap2; |
|
| 36 | 36 | @guard#pass1 |
|
| 37 | 37 | load w64 %3 %0 0; |
|
| 38 | - | add w64 %4 %3 %1; |
|
| 38 | + | add ptr %4 %3 %1; |
|
| 39 | 39 | load w8 %5 %4 0; |
|
| 40 | 40 | ret %5; |
|
| 41 | 41 | @guard#trap2 |
|
| 42 | 42 | ebreak; |
|
| 43 | 43 | unreachable; |
test/tests/cast.basic.ril
+1 -1
| 43 | 43 | @entry0 |
|
| 44 | 44 | sext w16 %1 %0; |
|
| 45 | 45 | ret %1; |
|
| 46 | 46 | } |
|
| 47 | 47 | ||
| 48 | - | fn w64 $ptrCast(w64 %0) { |
|
| 48 | + | fn ptr $ptrCast(ptr %0) { |
|
| 49 | 49 | @entry0 |
|
| 50 | 50 | ret %0; |
|
| 51 | 51 | } |
test/tests/cast.same.size.ril
+0 -1
| 46 | 46 | @assert.fail19 |
|
| 47 | 47 | unreachable; |
|
| 48 | 48 | @assert.ok20 |
|
| 49 | 49 | ret 0; |
|
| 50 | 50 | } |
|
| 51 | - |
test/tests/coercion.implicit.ril
+1 -1
| 30 | 30 | ret %5; |
|
| 31 | 31 | @else2 |
|
| 32 | 32 | ret 0; |
|
| 33 | 33 | } |
|
| 34 | 34 | ||
| 35 | - | fn w64 $optionalLiftReturn(w64 %0, w32 %1) { |
|
| 35 | + | fn ptr $optionalLiftReturn(ptr %0, w32 %1) { |
|
| 36 | 36 | @entry0 |
|
| 37 | 37 | reserve %2 8 4; |
|
| 38 | 38 | store w8 1 %2 0; |
|
| 39 | 39 | store w32 %1 %2 4; |
|
| 40 | 40 | blit %0 %2 8; |
test/tests/compound.assign.ril
+3 -4
| 53 | 53 | reserve %10 12 4; |
|
| 54 | 54 | store w32 10 %10 0; |
|
| 55 | 55 | store w32 20 %10 4; |
|
| 56 | 56 | store w32 30 %10 8; |
|
| 57 | 57 | mul w64 %11 1 4; |
|
| 58 | - | add w64 %12 %10 %11; |
|
| 58 | + | add ptr %12 %10 %11; |
|
| 59 | 59 | sload w32 %13 %12 0; |
|
| 60 | 60 | add w32 %14 %13 5; |
|
| 61 | 61 | mul w64 %15 1 4; |
|
| 62 | - | add w64 %16 %10 %15; |
|
| 62 | + | add ptr %16 %10 %15; |
|
| 63 | 63 | store w32 %14 %16 0; |
|
| 64 | 64 | mul w64 %17 1 4; |
|
| 65 | - | add w64 %18 %10 %17; |
|
| 65 | + | add ptr %18 %10 %17; |
|
| 66 | 66 | sload w32 %19 %18 0; |
|
| 67 | 67 | br.eq w32 %19 25 @assert.ok22 @assert.fail21; |
|
| 68 | 68 | @assert.fail21 |
|
| 69 | 69 | unreachable; |
|
| 70 | 70 | @assert.ok22 |
| 85 | 85 | @assert.fail25 |
|
| 86 | 86 | unreachable; |
|
| 87 | 87 | @assert.ok26 |
|
| 88 | 88 | ret 0; |
|
| 89 | 89 | } |
|
| 90 | - |
test/tests/cond.iflet.mut.ril
+1 -1
| 1 | - | fn w32 $ifLetMut(w64 %0) { |
|
| 1 | + | fn w32 $ifLetMut(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %1 8 4; |
|
| 4 | 4 | blit %1 %0 8; |
|
| 5 | 5 | load w8 %2 %1 0; |
|
| 6 | 6 | br.ne w32 %2 0 @then1 @else2; |
test/tests/cond.iflet.noelse.ril
+1 -1
| 1 | - | fn w32 $ifLetNoElse(w64 %0) { |
|
| 1 | + | fn w32 $ifLetNoElse(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %1 8 4; |
|
| 4 | 4 | blit %1 %0 8; |
|
| 5 | 5 | load w8 %2 %1 0; |
|
| 6 | 6 | br.ne w32 %2 0 @then1 @else2; |
test/tests/cond.iflet.optional.ril
+1 -1
| 1 | - | fn w32 $ifLetOptional(w64 %0) { |
|
| 1 | + | fn w32 $ifLetOptional(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | br.ne w32 %0 0 @then1 @else2; |
|
| 4 | 4 | @then1 |
|
| 5 | 5 | ret 1; |
|
| 6 | 6 | @else2 |
test/tests/cond.iflet.optional.value.ril
+1 -1
| 1 | - | fn w32 $ifLetOptionalValue(w64 %0) { |
|
| 1 | + | fn w32 $ifLetOptionalValue(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %1 8 4; |
|
| 4 | 4 | blit %1 %0 8; |
|
| 5 | 5 | load w8 %2 %1 0; |
|
| 6 | 6 | br.ne w32 %2 0 @then1 @else2; |
test/tests/cond.letelse.mut.ril
+1 -1
| 1 | - | fn w32 $letMutElse(w64 %0) { |
|
| 1 | + | fn w32 $letMutElse(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %1 8 4; |
|
| 4 | 4 | blit %1 %0 8; |
|
| 5 | 5 | load w8 %2 %1 0; |
|
| 6 | 6 | br.ne w32 %2 0 @merge1 @else2; |
test/tests/cond.letelse.optional.ril
+1 -1
| 1 | - | fn w32 $letElseOptional(w64 %0) { |
|
| 1 | + | fn w32 $letElseOptional(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | br.ne w32 %0 0 @merge1 @else2; |
|
| 4 | 4 | @merge1 |
|
| 5 | 5 | ret 1; |
|
| 6 | 6 | @else2 |
test/tests/const.array.record.ident.ril
+1 -1
| 19 | 19 | @entry0 |
|
| 20 | 20 | copy %0 $POINTS; |
|
| 21 | 21 | sload w32 %1 %0 0; |
|
| 22 | 22 | copy %2 $POINTS; |
|
| 23 | 23 | mul w64 %3 1 8; |
|
| 24 | - | add w64 %4 %2 %3; |
|
| 24 | + | add ptr %4 %2 %3; |
|
| 25 | 25 | sload w32 %5 %4 4; |
|
| 26 | 26 | add w32 %6 %1 %5; |
|
| 27 | 27 | ret %6; |
|
| 28 | 28 | } |
test/tests/const.array.repeat.record.ril
+2 -2
| 11 | 11 | @entry0 |
|
| 12 | 12 | copy %0 $POINTS; |
|
| 13 | 13 | sload w32 %1 %0 0; |
|
| 14 | 14 | copy %2 $POINTS; |
|
| 15 | 15 | mul w64 %3 1 8; |
|
| 16 | - | add w64 %4 %2 %3; |
|
| 16 | + | add ptr %4 %2 %3; |
|
| 17 | 17 | sload w32 %5 %4 4; |
|
| 18 | 18 | add w32 %6 %1 %5; |
|
| 19 | 19 | copy %7 $POINTS; |
|
| 20 | 20 | mul w64 %8 2 8; |
|
| 21 | - | add w64 %9 %7 %8; |
|
| 21 | + | add ptr %9 %7 %8; |
|
| 22 | 22 | sload w32 %10 %9 0; |
|
| 23 | 23 | add w32 %11 %6 %10; |
|
| 24 | 24 | ret %11; |
|
| 25 | 25 | } |
test/tests/const.array.ril
+1 -2
| 11 | 11 | jmp @loop1(0, 0); |
|
| 12 | 12 | @loop1(w32 %1, w32 %5) |
|
| 13 | 13 | br.slt w32 %1 4 @body2 @merge3; |
|
| 14 | 14 | @body2 |
|
| 15 | 15 | mul w64 %2 %1 4; |
|
| 16 | - | add w64 %3 %0 %2; |
|
| 16 | + | add ptr %3 %0 %2; |
|
| 17 | 17 | sload w32 %4 %3 0; |
|
| 18 | 18 | add w32 %6 %5 %4; |
|
| 19 | 19 | add w32 %7 %1 1; |
|
| 20 | 20 | jmp @loop1(%7, %6); |
|
| 21 | 21 | @merge3 |
|
| 22 | 22 | sub w32 %8 %5 10; |
|
| 23 | 23 | ret %8; |
|
| 24 | 24 | } |
|
| 25 | - |
test/tests/const.array.strings.slice.ril
+2 -2
| 22 | 22 | @entry0 |
|
| 23 | 23 | copy %0 $WORDS; |
|
| 24 | 24 | load w32 %1 %0 8; |
|
| 25 | 25 | copy %2 $WORDS; |
|
| 26 | 26 | mul w64 %3 1 16; |
|
| 27 | - | add w64 %4 %2 %3; |
|
| 27 | + | add ptr %4 %2 %3; |
|
| 28 | 28 | load w32 %5 %4 8; |
|
| 29 | 29 | add w32 %6 %1 %5; |
|
| 30 | 30 | copy %7 $WORDS; |
|
| 31 | 31 | mul w64 %8 2 16; |
|
| 32 | - | add w64 %9 %7 %8; |
|
| 32 | + | add ptr %9 %7 %8; |
|
| 33 | 33 | load w32 %10 %9 8; |
|
| 34 | 34 | add w32 %11 %6 %10; |
|
| 35 | 35 | ret %11; |
|
| 36 | 36 | } |
test/tests/const.record.ctor.ril
+0 -1
| 20 | 20 | @assert.fail1 |
|
| 21 | 21 | unreachable; |
|
| 22 | 22 | @assert.ok2 |
|
| 23 | 23 | ret 0; |
|
| 24 | 24 | } |
|
| 25 | - |
test/tests/const.record.mutcopy.ril
+1 -1
| 4 | 4 | ||
| 5 | 5 | data $SCRATCH2 align 1 { |
|
| 6 | 6 | w8 31; |
|
| 7 | 7 | } |
|
| 8 | 8 | ||
| 9 | - | fn w64 $test(w64 %0) { |
|
| 9 | + | fn ptr $test(ptr %0) { |
|
| 10 | 10 | @entry0 |
|
| 11 | 11 | copy %1 $SCRATCH1; |
|
| 12 | 12 | reserve %2 1 1; |
|
| 13 | 13 | blit %2 %1 1; |
|
| 14 | 14 | load w8 %3 %0 0; |
test/tests/const.record.nested.ril
+2 -2
| 16 | 16 | } |
|
| 17 | 17 | ||
| 18 | 18 | fn w8 $getInnerA() { |
|
| 19 | 19 | @entry0 |
|
| 20 | 20 | copy %0 $O; |
|
| 21 | - | add w64 %1 %0 4; |
|
| 21 | + | add ptr %1 %0 4; |
|
| 22 | 22 | load w8 %2 %1 0; |
|
| 23 | 23 | ret %2; |
|
| 24 | 24 | } |
|
| 25 | 25 | ||
| 26 | 26 | fn w32 $getInnerB() { |
|
| 27 | 27 | @entry0 |
|
| 28 | 28 | copy %0 $O; |
|
| 29 | - | add w64 %1 %0 4; |
|
| 29 | + | add ptr %1 %0 4; |
|
| 30 | 30 | sload w32 %2 %1 4; |
|
| 31 | 31 | ret %2; |
|
| 32 | 32 | } |
|
| 33 | 33 | ||
| 34 | 34 | fn w8 $getY() { |
test/tests/const.record.ril
+0 -1
| 11 | 11 | sload w32 %3 %2 4; |
|
| 12 | 12 | add w32 %4 %1 %3; |
|
| 13 | 13 | sub w32 %5 %4 7; |
|
| 14 | 14 | ret %5; |
|
| 15 | 15 | } |
|
| 16 | - |
test/tests/const.slice.of.slices.ril
+2 -2
| 38 | 38 | @entry0 |
|
| 39 | 39 | copy %0 $GROUPS; |
|
| 40 | 40 | load w32 %1 %0 8; |
|
| 41 | 41 | copy %2 $GROUPS; |
|
| 42 | 42 | mul w64 %3 1 16; |
|
| 43 | - | add w64 %4 %2 %3; |
|
| 43 | + | add ptr %4 %2 %3; |
|
| 44 | 44 | load w32 %5 %4 8; |
|
| 45 | 45 | add w32 %6 %1 %5; |
|
| 46 | 46 | copy %7 $GROUPS; |
|
| 47 | 47 | load w32 %8 %7 8; |
|
| 48 | 48 | br.ult w32 1 %8 @guard#pass1 @guard#trap2; |
|
| 49 | 49 | @guard#pass1 |
|
| 50 | 50 | load w64 %9 %7 0; |
|
| 51 | 51 | mul w64 %10 1 16; |
|
| 52 | - | add w64 %11 %9 %10; |
|
| 52 | + | add ptr %11 %9 %10; |
|
| 53 | 53 | load w32 %12 %11 8; |
|
| 54 | 54 | add w32 %13 %6 %12; |
|
| 55 | 55 | ret %13; |
|
| 56 | 56 | @guard#trap2 |
|
| 57 | 57 | ebreak; |
test/tests/const.string.ril
+1 -1
| 10 | 10 | ||
| 11 | 11 | fn w32 $getLen() { |
|
| 12 | 12 | @entry0 |
|
| 13 | 13 | copy %0 $HELLO$0; |
|
| 14 | 14 | reserve %1 16 8; |
|
| 15 | - | store w64 %0 %1 0; |
|
| 15 | + | store ptr %0 %1 0; |
|
| 16 | 16 | store w32 5 %1 8; |
|
| 17 | 17 | store w32 5 %1 12; |
|
| 18 | 18 | load w32 %2 %1 8; |
|
| 19 | 19 | ret %2; |
|
| 20 | 20 | } |
test/tests/const.string.scoped.names.ril
+3 -3
| 29 | 29 | ||
| 30 | 30 | fn w32 $totalLen() { |
|
| 31 | 31 | @entry0 |
|
| 32 | 32 | copy %0 $HELLO1$0; |
|
| 33 | 33 | reserve %1 16 8; |
|
| 34 | - | store w64 %0 %1 0; |
|
| 34 | + | store ptr %0 %1 0; |
|
| 35 | 35 | store w32 5 %1 8; |
|
| 36 | 36 | store w32 5 %1 12; |
|
| 37 | 37 | load w32 %2 %1 8; |
|
| 38 | 38 | copy %3 $HELLO1$0; |
|
| 39 | 39 | reserve %4 16 8; |
|
| 40 | - | store w64 %3 %4 0; |
|
| 40 | + | store ptr %3 %4 0; |
|
| 41 | 41 | store w32 5 %4 8; |
|
| 42 | 42 | store w32 5 %4 12; |
|
| 43 | 43 | load w32 %5 %4 8; |
|
| 44 | 44 | add w32 %6 %2 %5; |
|
| 45 | 45 | copy %7 $MSGS; |
|
| 46 | 46 | load w32 %8 %7 8; |
|
| 47 | 47 | add w32 %9 %6 %8; |
|
| 48 | 48 | copy %10 $MSGS; |
|
| 49 | 49 | mul w64 %11 1 16; |
|
| 50 | - | add w64 %12 %10 %11; |
|
| 50 | + | add ptr %12 %10 %11; |
|
| 51 | 51 | load w32 %13 %12 8; |
|
| 52 | 52 | add w32 %14 %9 %13; |
|
| 53 | 53 | ret %14; |
|
| 54 | 54 | } |
test/tests/const.union.payload.ctor.ril
+0 -1
| 30 | 30 | @arm8 |
|
| 31 | 31 | jmp @case9; |
|
| 32 | 32 | @case9 |
|
| 33 | 33 | ret 3; |
|
| 34 | 34 | } |
|
| 35 | - |
test/tests/const.union.record.literal.ril
+1 -2
| 17 | 17 | @case2 |
|
| 18 | 18 | ret 1; |
|
| 19 | 19 | @arm3 |
|
| 20 | 20 | jmp @case4; |
|
| 21 | 21 | @case4 |
|
| 22 | - | add w64 %3 %1 4; |
|
| 22 | + | add ptr %3 %1 4; |
|
| 23 | 23 | sload w32 %4 %3 0; |
|
| 24 | 24 | sload w32 %5 %3 4; |
|
| 25 | 25 | add w32 %6 %4 %5; |
|
| 26 | 26 | br.eq w32 %6 42 @assert.ok7 @assert.fail6; |
|
| 27 | 27 | @assert.fail6 |
| 29 | 29 | @assert.ok7 |
|
| 30 | 30 | jmp @merge8; |
|
| 31 | 31 | @merge8 |
|
| 32 | 32 | ret 0; |
|
| 33 | 33 | } |
|
| 34 | - |
test/tests/error.catch.return.ril
+2 -2
| 1 | - | fn w64 $fallible(w64 %0, w8 %1) { |
|
| 1 | + | fn ptr $fallible(ptr %0, w8 %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | br.ne w32 %1 0 @then1 @merge2; |
|
| 4 | 4 | @then1 |
|
| 5 | 5 | reserve %2 1 1; |
|
| 6 | 6 | store w8 0 %2 0; |
| 18 | 18 | } |
|
| 19 | 19 | ||
| 20 | 20 | fn w32 $caller(w8 %0) { |
|
| 21 | 21 | @entry0 |
|
| 22 | 22 | reserve %1 12 8; |
|
| 23 | - | call w64 %2 $fallible(%1, %0); |
|
| 23 | + | call ptr %2 $fallible(%1, %0); |
|
| 24 | 24 | load w64 %3 %2 0; |
|
| 25 | 25 | reserve %4 4 4; |
|
| 26 | 26 | br.ne w32 %3 0 @err2 @ok1; |
|
| 27 | 27 | @ok1 |
|
| 28 | 28 | sload w32 %5 %2 8; |
test/tests/field.aggregate.ril
+3 -3
| 8 | 8 | store w32 30 %0 8; |
|
| 9 | 9 | sload w32 %2 %0 4; |
|
| 10 | 10 | ret %2; |
|
| 11 | 11 | } |
|
| 12 | 12 | ||
| 13 | - | fn w64 $accessUnionField() { |
|
| 13 | + | fn ptr $accessUnionField() { |
|
| 14 | 14 | @entry0 |
|
| 15 | 15 | reserve %0 12 4; |
|
| 16 | 16 | reserve %1 4 4; |
|
| 17 | 17 | store w32 42 %1 0; |
|
| 18 | 18 | reserve %2 8 4; |
|
| 19 | 19 | store w8 1 %2 0; |
|
| 20 | - | add w64 %3 %2 4; |
|
| 20 | + | add ptr %3 %2 4; |
|
| 21 | 21 | blit %3 %1 4; |
|
| 22 | 22 | blit %0 %2 8; |
|
| 23 | 23 | store w32 99 %0 8; |
|
| 24 | 24 | load w64 %4 %0 0; |
|
| 25 | 25 | ret %4; |
| 31 | 31 | store w32 1 %0 0; |
|
| 32 | 32 | store w32 2 %0 4; |
|
| 33 | 33 | store w32 3 %0 8; |
|
| 34 | 34 | reserve %1 24 8; |
|
| 35 | 35 | reserve %2 16 8; |
|
| 36 | - | store w64 %0 %2 0; |
|
| 36 | + | store ptr %0 %2 0; |
|
| 37 | 37 | store w32 3 %2 8; |
|
| 38 | 38 | store w32 3 %2 12; |
|
| 39 | 39 | blit %1 %2 16; |
|
| 40 | 40 | store w32 77 %1 16; |
|
| 41 | 41 | load w32 %3 %1 8; |
test/tests/fn.ptr.assign.ril
+1 -1
| 2 | 2 | @entry0 |
|
| 3 | 3 | add w32 %2 %0 %1; |
|
| 4 | 4 | ret %2; |
|
| 5 | 5 | } |
|
| 6 | 6 | ||
| 7 | - | fn w64 $assignFnPtr() { |
|
| 7 | + | fn ptr $assignFnPtr() { |
|
| 8 | 8 | @entry0 |
|
| 9 | 9 | copy %0 $add; |
|
| 10 | 10 | ret %0; |
|
| 11 | 11 | } |
test/tests/fn.ptr.param.ril
+1 -1
| 2 | 2 | @entry0 |
|
| 3 | 3 | add w32 %2 %0 %1; |
|
| 4 | 4 | ret %2; |
|
| 5 | 5 | } |
|
| 6 | 6 | ||
| 7 | - | fn w32 $apply(w64 %0, w32 %1, w32 %2) { |
|
| 7 | + | fn w32 $apply(ptr %0, w32 %1, w32 %2) { |
|
| 8 | 8 | @entry0 |
|
| 9 | 9 | call w32 %3 %0(%1, %2); |
|
| 10 | 10 | ret %3; |
|
| 11 | 11 | } |
|
| 12 | 12 |
test/tests/let.copy.semantics.ril
+4 -4
| 1 | - | fn w64 $makePoint() { |
|
| 1 | + | fn ptr $makePoint() { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %0 8 4; |
|
| 4 | 4 | store w32 1 %0 0; |
|
| 5 | 5 | store w32 2 %0 4; |
|
| 6 | 6 | load w64 %1 %0 0; |
|
| 7 | 7 | ret %1; |
|
| 8 | 8 | } |
|
| 9 | 9 | ||
| 10 | 10 | fn w32 $letFromCall() { |
|
| 11 | 11 | @entry0 |
|
| 12 | - | call w64 %0 $makePoint(); |
|
| 12 | + | call ptr %0 $makePoint(); |
|
| 13 | 13 | reserve %1 8 8; |
|
| 14 | 14 | store w64 %0 %1 0; |
|
| 15 | 15 | sload w32 %2 %1 0; |
|
| 16 | 16 | ret %2; |
|
| 17 | 17 | } |
| 38 | 38 | store w32 2 %1 4; |
|
| 39 | 39 | blit %0 %1 8; |
|
| 40 | 40 | reserve %2 8 4; |
|
| 41 | 41 | store w32 3 %2 0; |
|
| 42 | 42 | store w32 4 %2 4; |
|
| 43 | - | add w64 %3 %0 8; |
|
| 43 | + | add ptr %3 %0 8; |
|
| 44 | 44 | blit %3 %2 8; |
|
| 45 | 45 | mul w64 %4 1 8; |
|
| 46 | - | add w64 %5 %0 %4; |
|
| 46 | + | add ptr %5 %0 %4; |
|
| 47 | 47 | reserve %6 8 4; |
|
| 48 | 48 | blit %6 %5 8; |
|
| 49 | 49 | sload w32 %7 %6 0; |
|
| 50 | 50 | ret %7; |
|
| 51 | 51 | } |
test/tests/let.placeholder.ril
+1 -1
| 1 | 1 | fn w32 $placeholder() { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | ret 1; |
|
| 4 | 4 | } |
|
| 5 | 5 | ||
| 6 | - | fn w32 $placeholderWithSideEffect(w64 %0) { |
|
| 6 | + | fn w32 $placeholderWithSideEffect(ptr %0) { |
|
| 7 | 7 | @entry0 |
|
| 8 | 8 | sload w32 %1 %0 0; |
|
| 9 | 9 | ret 0; |
|
| 10 | 10 | } |
|
| 11 | 11 |
test/tests/literal.slice.bytes.ril
+1 -1
| 6 | 6 | ||
| 7 | 7 | fn w32 $byteSlice() { |
|
| 8 | 8 | @entry0 |
|
| 9 | 9 | copy %0 $byteSlice0; |
|
| 10 | 10 | reserve %1 16 8; |
|
| 11 | - | store w64 %0 %1 0; |
|
| 11 | + | store ptr %0 %1 0; |
|
| 12 | 12 | store w32 3 %1 8; |
|
| 13 | 13 | store w32 3 %1 12; |
|
| 14 | 14 | load w32 %2 %1 8; |
|
| 15 | 15 | ret %2; |
|
| 16 | 16 | } |
test/tests/literal.slice.dedup.ril
+2 -2
| 6 | 6 | ||
| 7 | 7 | fn w32 $dedupSlice() { |
|
| 8 | 8 | @entry0 |
|
| 9 | 9 | copy %0 $dedupSlice0; |
|
| 10 | 10 | reserve %1 16 8; |
|
| 11 | - | store w64 %0 %1 0; |
|
| 11 | + | store ptr %0 %1 0; |
|
| 12 | 12 | store w32 3 %1 8; |
|
| 13 | 13 | store w32 3 %1 12; |
|
| 14 | 14 | copy %2 $dedupSlice0; |
|
| 15 | 15 | reserve %3 16 8; |
|
| 16 | - | store w64 %2 %3 0; |
|
| 16 | + | store ptr %2 %3 0; |
|
| 17 | 17 | store w32 3 %3 8; |
|
| 18 | 18 | store w32 3 %3 12; |
|
| 19 | 19 | load w32 %4 %1 8; |
|
| 20 | 20 | load w32 %5 %3 8; |
|
| 21 | 21 | add w32 %6 %4 %5; |
test/tests/literal.slice.empty.ril
+1 -1
| 1 | 1 | fn w32 $emptySlice() { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %0 16 8; |
|
| 4 | - | store w64 0 %0 0; |
|
| 4 | + | store ptr 0 %0 0; |
|
| 5 | 5 | store w32 0 %0 8; |
|
| 6 | 6 | store w32 0 %0 12; |
|
| 7 | 7 | load w32 %1 %0 8; |
|
| 8 | 8 | ret %1; |
|
| 9 | 9 | } |
test/tests/literal.slice.multi.ril
+2 -2
| 11 | 11 | ||
| 12 | 12 | fn w32 $multiSlice() { |
|
| 13 | 13 | @entry0 |
|
| 14 | 14 | copy %0 $multiSlice0; |
|
| 15 | 15 | reserve %1 16 8; |
|
| 16 | - | store w64 %0 %1 0; |
|
| 16 | + | store ptr %0 %1 0; |
|
| 17 | 17 | store w32 2 %1 8; |
|
| 18 | 18 | store w32 2 %1 12; |
|
| 19 | 19 | copy %2 $multiSlice1; |
|
| 20 | 20 | reserve %3 16 8; |
|
| 21 | - | store w64 %2 %3 0; |
|
| 21 | + | store ptr %2 %3 0; |
|
| 22 | 22 | store w32 3 %3 8; |
|
| 23 | 23 | store w32 3 %3 12; |
|
| 24 | 24 | load w32 %4 %1 8; |
|
| 25 | 25 | load w32 %5 %3 8; |
|
| 26 | 26 | add w32 %6 %4 %5; |
test/tests/literal.slice.record.ril
+2 -2
| 7 | 7 | ||
| 8 | 8 | fn w32 $localSliceOfRecords() { |
|
| 9 | 9 | @entry0 |
|
| 10 | 10 | copy %0 $localSliceOfRecords0; |
|
| 11 | 11 | reserve %1 16 8; |
|
| 12 | - | store w64 %0 %1 0; |
|
| 12 | + | store ptr %0 %1 0; |
|
| 13 | 13 | store w32 2 %1 8; |
|
| 14 | 14 | store w32 2 %1 12; |
|
| 15 | 15 | load w32 %2 %1 8; |
|
| 16 | 16 | br.ult w32 0 %2 @guard#pass1 @guard#trap2; |
|
| 17 | 17 | @guard#pass1 |
| 23 | 23 | ebreak; |
|
| 24 | 24 | unreachable; |
|
| 25 | 25 | @guard#pass3 |
|
| 26 | 26 | load w64 %6 %1 0; |
|
| 27 | 27 | mul w64 %7 1 8; |
|
| 28 | - | add w64 %8 %6 %7; |
|
| 28 | + | add ptr %8 %6 %7; |
|
| 29 | 29 | sload w32 %9 %8 4; |
|
| 30 | 30 | add w32 %10 %4 %9; |
|
| 31 | 31 | ret %10; |
|
| 32 | 32 | @guard#trap4 |
|
| 33 | 33 | ebreak; |
test/tests/literal.slice.ril
+1 -1
| 6 | 6 | ||
| 7 | 7 | fn w32 $sliceLiteral() { |
|
| 8 | 8 | @entry0 |
|
| 9 | 9 | copy %0 $sliceLiteral0; |
|
| 10 | 10 | reserve %1 16 8; |
|
| 11 | - | store w64 %0 %1 0; |
|
| 11 | + | store ptr %0 %1 0; |
|
| 12 | 12 | store w32 3 %1 8; |
|
| 13 | 13 | store w32 3 %1 12; |
|
| 14 | 14 | load w32 %2 %1 8; |
|
| 15 | 15 | ret %2; |
|
| 16 | 16 | } |
test/tests/literal.string.dedup.ril
+2 -2
| 4 | 4 | ||
| 5 | 5 | fn w32 $dedupString() { |
|
| 6 | 6 | @entry0 |
|
| 7 | 7 | copy %0 $dedupString0; |
|
| 8 | 8 | reserve %1 16 8; |
|
| 9 | - | store w64 %0 %1 0; |
|
| 9 | + | store ptr %0 %1 0; |
|
| 10 | 10 | store w32 5 %1 8; |
|
| 11 | 11 | store w32 5 %1 12; |
|
| 12 | 12 | copy %2 $dedupString0; |
|
| 13 | 13 | reserve %3 16 8; |
|
| 14 | - | store w64 %2 %3 0; |
|
| 14 | + | store ptr %2 %3 0; |
|
| 15 | 15 | store w32 5 %3 8; |
|
| 16 | 16 | store w32 5 %3 12; |
|
| 17 | 17 | load w32 %4 %1 8; |
|
| 18 | 18 | load w32 %5 %3 8; |
|
| 19 | 19 | add w32 %6 %4 %5; |
test/tests/literal.string.empty.ril
+1 -1
| 4 | 4 | ||
| 5 | 5 | fn w32 $emptyString() { |
|
| 6 | 6 | @entry0 |
|
| 7 | 7 | copy %0 $emptyString0; |
|
| 8 | 8 | reserve %1 16 8; |
|
| 9 | - | store w64 %0 %1 0; |
|
| 9 | + | store ptr %0 %1 0; |
|
| 10 | 10 | store w32 0 %1 8; |
|
| 11 | 11 | store w32 0 %1 12; |
|
| 12 | 12 | load w32 %2 %1 8; |
|
| 13 | 13 | ret %2; |
|
| 14 | 14 | } |
test/tests/literal.string.fns.ril
+2 -2
| 8 | 8 | ||
| 9 | 9 | fn w32 $first() { |
|
| 10 | 10 | @entry0 |
|
| 11 | 11 | copy %0 $first0; |
|
| 12 | 12 | reserve %1 16 8; |
|
| 13 | - | store w64 %0 %1 0; |
|
| 13 | + | store ptr %0 %1 0; |
|
| 14 | 14 | store w32 3 %1 8; |
|
| 15 | 15 | store w32 3 %1 12; |
|
| 16 | 16 | load w32 %2 %1 8; |
|
| 17 | 17 | ret %2; |
|
| 18 | 18 | } |
|
| 19 | 19 | ||
| 20 | 20 | fn w32 $second() { |
|
| 21 | 21 | @entry0 |
|
| 22 | 22 | copy %0 $second0; |
|
| 23 | 23 | reserve %1 16 8; |
|
| 24 | - | store w64 %0 %1 0; |
|
| 24 | + | store ptr %0 %1 0; |
|
| 25 | 25 | store w32 3 %1 8; |
|
| 26 | 26 | store w32 3 %1 12; |
|
| 27 | 27 | load w32 %2 %1 8; |
|
| 28 | 28 | ret %2; |
|
| 29 | 29 | } |
test/tests/literal.string.multi.ril
+2 -2
| 8 | 8 | ||
| 9 | 9 | fn w32 $multiString() { |
|
| 10 | 10 | @entry0 |
|
| 11 | 11 | copy %0 $multiString0; |
|
| 12 | 12 | reserve %1 16 8; |
|
| 13 | - | store w64 %0 %1 0; |
|
| 13 | + | store ptr %0 %1 0; |
|
| 14 | 14 | store w32 5 %1 8; |
|
| 15 | 15 | store w32 5 %1 12; |
|
| 16 | 16 | copy %2 $multiString1; |
|
| 17 | 17 | reserve %3 16 8; |
|
| 18 | - | store w64 %2 %3 0; |
|
| 18 | + | store ptr %2 %3 0; |
|
| 19 | 19 | store w32 5 %3 8; |
|
| 20 | 20 | store w32 5 %3 12; |
|
| 21 | 21 | load w32 %4 %1 8; |
|
| 22 | 22 | load w32 %5 %3 8; |
|
| 23 | 23 | add w32 %6 %4 %5; |
test/tests/literal.string.ril
+1 -1
| 4 | 4 | ||
| 5 | 5 | fn w32 $stringLen() { |
|
| 6 | 6 | @entry0 |
|
| 7 | 7 | copy %0 $stringLen0; |
|
| 8 | 8 | reserve %1 16 8; |
|
| 9 | - | store w64 %0 %1 0; |
|
| 9 | + | store ptr %0 %1 0; |
|
| 10 | 10 | store w32 5 %1 8; |
|
| 11 | 11 | store w32 5 %1 12; |
|
| 12 | 12 | load w32 %2 %1 8; |
|
| 13 | 13 | ret %2; |
|
| 14 | 14 | } |
test/tests/loop.for.array.ril
+2 -2
| 1 | - | fn w32 $forArrayIndexed(w64 %0) { |
|
| 1 | + | fn w32 $forArrayIndexed(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | jmp @loop1(0, 0); |
|
| 4 | 4 | @loop1(w32 %1, w32 %5) |
|
| 5 | 5 | br.slt w32 %1 3 @body2 @merge3; |
|
| 6 | 6 | @body2 |
|
| 7 | 7 | mul w64 %2 %1 4; |
|
| 8 | - | add w64 %3 %0 %2; |
|
| 8 | + | add ptr %3 %0 %2; |
|
| 9 | 9 | sload w32 %4 %3 0; |
|
| 10 | 10 | add w32 %6 %4 %1; |
|
| 11 | 11 | add w32 %7 %5 %6; |
|
| 12 | 12 | add w32 %8 %1 1; |
|
| 13 | 13 | jmp @loop1(%8, %7); |
test/tests/loop.for.continue.ril
+2 -2
| 15 | 15 | @step6(w32 %6) |
|
| 16 | 16 | add w32 %5 %1 1; |
|
| 17 | 17 | jmp @loop1(%5, %6); |
|
| 18 | 18 | } |
|
| 19 | 19 | ||
| 20 | - | fn w32 $forContinueArray(w64 %0) { |
|
| 20 | + | fn w32 $forContinueArray(ptr %0) { |
|
| 21 | 21 | @entry0 |
|
| 22 | 22 | jmp @loop1(0, 0); |
|
| 23 | 23 | @loop1(w32 %1, w32 %5) |
|
| 24 | 24 | br.slt w32 %1 4 @body2 @merge3; |
|
| 25 | 25 | @body2 |
|
| 26 | 26 | mul w64 %2 %1 4; |
|
| 27 | - | add w64 %3 %0 %2; |
|
| 27 | + | add ptr %3 %0 %2; |
|
| 28 | 28 | sload w32 %4 %3 0; |
|
| 29 | 29 | br.eq w32 %4 0 @then4 @merge5; |
|
| 30 | 30 | @merge3 |
|
| 31 | 31 | ret %5; |
|
| 32 | 32 | @then4 |
test/tests/loop.for.placeholder.ril
+1 -1
| 9 | 9 | jmp @loop1(%4, %3); |
|
| 10 | 10 | @merge3 |
|
| 11 | 11 | ret %2; |
|
| 12 | 12 | } |
|
| 13 | 13 | ||
| 14 | - | fn w32 $forPlaceholderArray(w64 %0) { |
|
| 14 | + | fn w32 $forPlaceholderArray(ptr %0) { |
|
| 15 | 15 | @entry0 |
|
| 16 | 16 | jmp @loop1(0, 0); |
|
| 17 | 17 | @loop1(w32 %1, w32 %2) |
|
| 18 | 18 | br.slt w32 %1 4 @body2 @merge3; |
|
| 19 | 19 | @body2 |
test/tests/loop.for.slice.ril
+2 -2
| 1 | - | fn w32 $forSliceIndexed(w64 %0) { |
|
| 1 | + | fn w32 $forSliceIndexed(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | load w32 %1 %0 8; |
|
| 4 | 4 | load w64 %2 %0 0; |
|
| 5 | 5 | jmp @loop1(0, 0); |
|
| 6 | 6 | @loop1(w32 %3, w32 %7) |
|
| 7 | 7 | br.slt w32 %3 %1 @body2 @merge3; |
|
| 8 | 8 | @body2 |
|
| 9 | 9 | mul w64 %4 %3 4; |
|
| 10 | - | add w64 %5 %2 %4; |
|
| 10 | + | add ptr %5 %2 %4; |
|
| 11 | 11 | sload w32 %6 %5 0; |
|
| 12 | 12 | add w32 %8 %6 %3; |
|
| 13 | 13 | add w32 %9 %7 %8; |
|
| 14 | 14 | add w32 %10 %3 1; |
|
| 15 | 15 | jmp @loop1(%10, %9); |
test/tests/loop.mutable.ril
+3 -3
| 5 | 5 | ret %0; |
|
| 6 | 6 | @merge2 |
|
| 7 | 7 | ret %1; |
|
| 8 | 8 | } |
|
| 9 | 9 | ||
| 10 | - | fn w32 $computeMaxAlign(w64 %0) { |
|
| 10 | + | fn w32 $computeMaxAlign(ptr %0) { |
|
| 11 | 11 | @entry0 |
|
| 12 | 12 | load w32 %1 %0 8; |
|
| 13 | 13 | jmp @loop1(0, 1, %0); |
|
| 14 | - | @loop1(w32 %2, w32 %3, w64 %4) |
|
| 14 | + | @loop1(w32 %2, w32 %3, ptr %4) |
|
| 15 | 15 | br.ult w32 %2 %1 @body2 @merge3; |
|
| 16 | 16 | @body2 |
|
| 17 | 17 | load w32 %5 %4 8; |
|
| 18 | 18 | br.ult w32 %2 %5 @guard#pass4 @guard#trap5; |
|
| 19 | 19 | @merge3 |
|
| 20 | 20 | ret %3; |
|
| 21 | 21 | @guard#pass4 |
|
| 22 | 22 | load w64 %6 %4 0; |
|
| 23 | 23 | mul w64 %7 %2 4; |
|
| 24 | - | add w64 %8 %6 %7; |
|
| 24 | + | add ptr %8 %6 %7; |
|
| 25 | 25 | load w32 %9 %8 0; |
|
| 26 | 26 | call w32 %10 $max(%3, %9); |
|
| 27 | 27 | add w32 %11 %2 1; |
|
| 28 | 28 | jmp @loop1(%11, %10, %4); |
|
| 29 | 29 | @guard#trap5 |
test/tests/loop.whilelet.optional.ril
+2 -2
| 1 | - | fn w32 $whileLetOptional(w64 %0) { |
|
| 1 | + | fn w32 $whileLetOptional(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | jmp @while1(%0, 0); |
|
| 4 | - | @while1(w64 %1, w32 %2) |
|
| 4 | + | @while1(ptr %1, w32 %2) |
|
| 5 | 5 | br.ne w32 %1 0 @body2 @merge3(%2); |
|
| 6 | 6 | @body2 |
|
| 7 | 7 | add w32 %3 %2 1; |
|
| 8 | 8 | jmp @merge3(%3); |
|
| 9 | 9 | @merge3(w32 %4) |
test/tests/loop.whilelet.union.ril
+2 -2
| 1 | - | fn w32 $sumWhileLet(w64 %0) { |
|
| 1 | + | fn w32 $sumWhileLet(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %1 8 4; |
|
| 4 | 4 | blit %1 %0 8; |
|
| 5 | 5 | jmp @while1(%1, 0); |
|
| 6 | - | @while1(w64 %2, w32 %6) |
|
| 6 | + | @while1(ptr %2, w32 %6) |
|
| 7 | 7 | reserve %3 8 4; |
|
| 8 | 8 | blit %3 %2 8; |
|
| 9 | 9 | load w8 %4 %3 0; |
|
| 10 | 10 | br.eq w8 %4 1 @body2 @merge3; |
|
| 11 | 11 | @body2 |
test/tests/match.multi.seal.ril
+0 -1
| 44 | 44 | @assert.fail7 |
|
| 45 | 45 | unreachable; |
|
| 46 | 46 | @assert.ok8 |
|
| 47 | 47 | ret 0; |
|
| 48 | 48 | } |
|
| 49 | - |
test/tests/match.nested.iflet.ril
+7 -8
| 1 | - | fn w32 $ifLetNested(w64 %0) { |
|
| 1 | + | fn w32 $ifLetNested(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %1 16 4; |
|
| 4 | 4 | blit %1 %0 16; |
|
| 5 | 5 | load w8 %2 %1 0; |
|
| 6 | 6 | br.eq w8 %2 0 @then1 @else2; |
|
| 7 | 7 | @then1 |
|
| 8 | - | add w64 %3 %1 4; |
|
| 8 | + | add ptr %3 %1 4; |
|
| 9 | 9 | sload w32 %4 %3 0; |
|
| 10 | 10 | sload w32 %5 %3 4; |
|
| 11 | 11 | sload w32 %6 %3 8; |
|
| 12 | 12 | add w32 %7 %4 %5; |
|
| 13 | 13 | add w32 %8 %7 %6; |
| 16 | 16 | jmp @merge3; |
|
| 17 | 17 | @merge3 |
|
| 18 | 18 | ret -1; |
|
| 19 | 19 | } |
|
| 20 | 20 | ||
| 21 | - | fn w32 $ifLetNestedUnion(w64 %0) { |
|
| 21 | + | fn w32 $ifLetNestedUnion(ptr %0) { |
|
| 22 | 22 | @entry0 |
|
| 23 | 23 | reserve %1 12 4; |
|
| 24 | 24 | blit %1 %0 12; |
|
| 25 | 25 | load w8 %2 %1 0; |
|
| 26 | 26 | br.eq w8 %2 0 @then1 @else2; |
|
| 27 | 27 | @then1 |
|
| 28 | - | add w64 %3 %1 4; |
|
| 28 | + | add ptr %3 %1 4; |
|
| 29 | 29 | load w8 %4 %3 0; |
|
| 30 | 30 | br.eq w8 %4 0 @nest3 @else2; |
|
| 31 | 31 | @else2 |
|
| 32 | 32 | jmp @merge5; |
|
| 33 | 33 | @nest3 |
| 37 | 37 | ret %5; |
|
| 38 | 38 | @merge5 |
|
| 39 | 39 | ret 0; |
|
| 40 | 40 | } |
|
| 41 | 41 | ||
| 42 | - | fn w32 $ifLetPlaceholder(w64 %0) { |
|
| 42 | + | fn w32 $ifLetPlaceholder(ptr %0) { |
|
| 43 | 43 | @entry0 |
|
| 44 | 44 | reserve %1 16 4; |
|
| 45 | 45 | blit %1 %0 16; |
|
| 46 | 46 | load w8 %2 %1 0; |
|
| 47 | 47 | br.eq w8 %2 0 @then1 @else2; |
|
| 48 | 48 | @then1 |
|
| 49 | - | add w64 %3 %1 4; |
|
| 49 | + | add ptr %3 %1 4; |
|
| 50 | 50 | sload w32 %4 %3 0; |
|
| 51 | 51 | ret %4; |
|
| 52 | 52 | @else2 |
|
| 53 | 53 | jmp @merge3; |
|
| 54 | 54 | @merge3 |
| 60 | 60 | reserve %0 16 4; |
|
| 61 | 61 | store w8 0 %0 0; |
|
| 62 | 62 | reserve %1 8 4; |
|
| 63 | 63 | store w32 10 %1 0; |
|
| 64 | 64 | store w32 20 %1 4; |
|
| 65 | - | add w64 %2 %0 4; |
|
| 65 | + | add ptr %2 %0 4; |
|
| 66 | 66 | blit %2 %1 8; |
|
| 67 | 67 | store w32 30 %0 12; |
|
| 68 | 68 | call w32 %3 $ifLetNested(%0); |
|
| 69 | 69 | br.eq w32 %3 60 @assert.ok2 @assert.fail1; |
|
| 70 | 70 | @assert.fail1 |
| 114 | 114 | @assert.fail13 |
|
| 115 | 115 | unreachable; |
|
| 116 | 116 | @assert.ok14 |
|
| 117 | 117 | ret 0; |
|
| 118 | 118 | } |
|
| 119 | - |
test/tests/match.nested.pattern.ril
+30 -31
| 1 | - | fn w32 $testNestedMatch(w64 %0) { |
|
| 1 | + | fn w32 $testNestedMatch(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %1 16 4; |
|
| 4 | 4 | blit %1 %0 16; |
|
| 5 | 5 | jmp @arm1; |
|
| 6 | 6 | @arm1 |
|
| 7 | 7 | load w8 %2 %1 0; |
|
| 8 | 8 | br.eq w8 %2 0 @case2 @arm3; |
|
| 9 | 9 | @case2 |
|
| 10 | - | add w64 %3 %1 4; |
|
| 10 | + | add ptr %3 %1 4; |
|
| 11 | 11 | sload w32 %4 %3 0; |
|
| 12 | 12 | sload w32 %5 %3 4; |
|
| 13 | 13 | sload w32 %6 %3 8; |
|
| 14 | 14 | add w32 %7 %4 %5; |
|
| 15 | 15 | add w32 %8 %7 %6; |
| 18 | 18 | jmp @case4; |
|
| 19 | 19 | @case4 |
|
| 20 | 20 | ret 0; |
|
| 21 | 21 | } |
|
| 22 | 22 | ||
| 23 | - | fn w32 $testNestedIfLetCase(w64 %0) { |
|
| 23 | + | fn w32 $testNestedIfLetCase(ptr %0) { |
|
| 24 | 24 | @entry0 |
|
| 25 | 25 | reserve %1 16 4; |
|
| 26 | 26 | blit %1 %0 16; |
|
| 27 | 27 | load w8 %2 %1 0; |
|
| 28 | 28 | br.eq w8 %2 0 @then1 @else2; |
|
| 29 | 29 | @then1 |
|
| 30 | - | add w64 %3 %1 4; |
|
| 30 | + | add ptr %3 %1 4; |
|
| 31 | 31 | sload w32 %4 %3 0; |
|
| 32 | 32 | sload w32 %5 %3 4; |
|
| 33 | 33 | sload w32 %6 %3 8; |
|
| 34 | 34 | add w32 %7 %4 %5; |
|
| 35 | 35 | add w32 %8 %7 %6; |
| 38 | 38 | jmp @merge3; |
|
| 39 | 39 | @merge3 |
|
| 40 | 40 | ret 0; |
|
| 41 | 41 | } |
|
| 42 | 42 | ||
| 43 | - | fn w32 $testNestedPlaceholder(w64 %0) { |
|
| 43 | + | fn w32 $testNestedPlaceholder(ptr %0) { |
|
| 44 | 44 | @entry0 |
|
| 45 | 45 | reserve %1 16 4; |
|
| 46 | 46 | blit %1 %0 16; |
|
| 47 | 47 | jmp @arm1; |
|
| 48 | 48 | @arm1 |
|
| 49 | 49 | load w8 %2 %1 0; |
|
| 50 | 50 | br.eq w8 %2 0 @case2 @arm3; |
|
| 51 | 51 | @case2 |
|
| 52 | - | add w64 %3 %1 4; |
|
| 52 | + | add ptr %3 %1 4; |
|
| 53 | 53 | sload w32 %4 %3 0; |
|
| 54 | 54 | sload w32 %5 %3 8; |
|
| 55 | 55 | add w32 %6 %4 %5; |
|
| 56 | 56 | ret %6; |
|
| 57 | 57 | @arm3 |
|
| 58 | 58 | jmp @case4; |
|
| 59 | 59 | @case4 |
|
| 60 | 60 | ret 0; |
|
| 61 | 61 | } |
|
| 62 | 62 | ||
| 63 | - | fn w32 $testDeepNesting(w64 %0) { |
|
| 63 | + | fn w32 $testDeepNesting(ptr %0) { |
|
| 64 | 64 | @entry0 |
|
| 65 | 65 | reserve %1 16 4; |
|
| 66 | 66 | blit %1 %0 16; |
|
| 67 | 67 | jmp @arm1; |
|
| 68 | 68 | @arm1 |
|
| 69 | 69 | load w8 %2 %1 0; |
|
| 70 | 70 | br.eq w8 %2 0 @case2 @arm3; |
|
| 71 | 71 | @case2 |
|
| 72 | - | add w64 %3 %1 4; |
|
| 72 | + | add ptr %3 %1 4; |
|
| 73 | 73 | sload w32 %4 %3 0; |
|
| 74 | 74 | sload w32 %5 %3 4; |
|
| 75 | 75 | sload w32 %6 %3 8; |
|
| 76 | 76 | add w32 %7 %4 %5; |
|
| 77 | 77 | add w32 %8 %7 %6; |
| 80 | 80 | jmp @case4; |
|
| 81 | 81 | @case4 |
|
| 82 | 82 | ret 0; |
|
| 83 | 83 | } |
|
| 84 | 84 | ||
| 85 | - | fn w32 $testNestedUnionLiteral(w64 %0) { |
|
| 85 | + | fn w32 $testNestedUnionLiteral(ptr %0) { |
|
| 86 | 86 | @entry0 |
|
| 87 | 87 | reserve %1 12 4; |
|
| 88 | 88 | blit %1 %0 12; |
|
| 89 | 89 | jmp @arm1; |
|
| 90 | 90 | @arm1 |
|
| 91 | 91 | load w8 %2 %1 0; |
|
| 92 | 92 | br.eq w8 %2 0 @case2 @arm3; |
|
| 93 | 93 | @case2 |
|
| 94 | - | add w64 %3 %1 4; |
|
| 94 | + | add ptr %3 %1 4; |
|
| 95 | 95 | load w8 %4 %3 0; |
|
| 96 | 96 | br.eq w8 %4 0 @nest4 @arm3; |
|
| 97 | 97 | @arm3 |
|
| 98 | 98 | load w8 %6 %1 0; |
|
| 99 | 99 | br.eq w8 %6 0 @case6 @arm7; |
| 101 | 101 | sload w32 %5 %3 4; |
|
| 102 | 102 | jmp @case5; |
|
| 103 | 103 | @case5 |
|
| 104 | 104 | ret %5; |
|
| 105 | 105 | @case6 |
|
| 106 | - | add w64 %7 %1 4; |
|
| 106 | + | add ptr %7 %1 4; |
|
| 107 | 107 | load w8 %8 %7 0; |
|
| 108 | 108 | br.eq w8 %8 1 @nest8 @arm7; |
|
| 109 | 109 | @arm7 |
|
| 110 | 110 | jmp @else10; |
|
| 111 | 111 | @nest8 |
| 116 | 116 | ret %10; |
|
| 117 | 117 | @else10 |
|
| 118 | 118 | ret 0; |
|
| 119 | 119 | } |
|
| 120 | 120 | ||
| 121 | - | fn w32 $testMixedNesting(w64 %0) { |
|
| 121 | + | fn w32 $testMixedNesting(ptr %0) { |
|
| 122 | 122 | @entry0 |
|
| 123 | 123 | reserve %1 20 4; |
|
| 124 | 124 | blit %1 %0 20; |
|
| 125 | 125 | jmp @arm1; |
|
| 126 | 126 | @arm1 |
|
| 127 | 127 | load w8 %2 %1 0; |
|
| 128 | 128 | br.eq w8 %2 0 @case2 @arm3; |
|
| 129 | 129 | @case2 |
|
| 130 | - | add w64 %3 %1 4; |
|
| 130 | + | add ptr %3 %1 4; |
|
| 131 | 131 | sload w32 %4 %3 0; |
|
| 132 | 132 | sload w32 %5 %3 4; |
|
| 133 | 133 | sload w32 %6 %3 8; |
|
| 134 | 134 | add w32 %7 %4 %5; |
|
| 135 | 135 | add w32 %8 %7 %6; |
|
| 136 | 136 | ret %8; |
|
| 137 | 137 | @arm3 |
|
| 138 | 138 | load w8 %9 %1 0; |
|
| 139 | 139 | br.eq w8 %9 1 @case4 @arm5; |
|
| 140 | 140 | @case4 |
|
| 141 | - | add w64 %10 %1 4; |
|
| 141 | + | add ptr %10 %1 4; |
|
| 142 | 142 | sload w32 %11 %10 0; |
|
| 143 | 143 | sload w32 %12 %10 4; |
|
| 144 | - | add w64 %13 %10 8; |
|
| 144 | + | add ptr %13 %10 8; |
|
| 145 | 145 | sload w32 %14 %13 0; |
|
| 146 | 146 | sload w32 %15 %13 4; |
|
| 147 | 147 | add w32 %16 %11 %12; |
|
| 148 | 148 | add w32 %17 %16 %14; |
|
| 149 | 149 | add w32 %18 %17 %15; |
| 152 | 152 | jmp @case6; |
|
| 153 | 153 | @case6 |
|
| 154 | 154 | ret 0; |
|
| 155 | 155 | } |
|
| 156 | 156 | ||
| 157 | - | fn w32 $testNestedUnionInRecord(w64 %0) { |
|
| 157 | + | fn w32 $testNestedUnionInRecord(ptr %0) { |
|
| 158 | 158 | @entry0 |
|
| 159 | 159 | reserve %1 20 4; |
|
| 160 | 160 | blit %1 %0 20; |
|
| 161 | 161 | jmp @arm1; |
|
| 162 | 162 | @arm1 |
|
| 163 | 163 | load w8 %2 %1 0; |
|
| 164 | 164 | br.eq w8 %2 0 @case2 @arm3; |
|
| 165 | 165 | @case2 |
|
| 166 | - | add w64 %3 %1 4; |
|
| 166 | + | add ptr %3 %1 4; |
|
| 167 | 167 | load w8 %4 %3 0; |
|
| 168 | 168 | br.eq w8 %4 0 @nest4 @arm3; |
|
| 169 | 169 | @arm3 |
|
| 170 | 170 | load w8 %11 %1 0; |
|
| 171 | 171 | br.eq w8 %11 0 @case6 @arm7; |
|
| 172 | 172 | @nest4 |
|
| 173 | - | add w64 %5 %3 4; |
|
| 173 | + | add ptr %5 %3 4; |
|
| 174 | 174 | sload w32 %6 %5 0; |
|
| 175 | 175 | sload w32 %7 %5 4; |
|
| 176 | 176 | sload w32 %8 %3 12; |
|
| 177 | 177 | jmp @case5; |
|
| 178 | 178 | @case5 |
|
| 179 | 179 | add w32 %9 %6 %7; |
|
| 180 | 180 | add w32 %10 %9 %8; |
|
| 181 | 181 | ret %10; |
|
| 182 | 182 | @case6 |
|
| 183 | - | add w64 %12 %1 4; |
|
| 183 | + | add ptr %12 %1 4; |
|
| 184 | 184 | load w8 %13 %12 0; |
|
| 185 | 185 | br.eq w8 %13 1 @nest8 @arm7; |
|
| 186 | 186 | @arm7 |
|
| 187 | 187 | jmp @else10; |
|
| 188 | 188 | @nest8 |
| 191 | 191 | ret -1; |
|
| 192 | 192 | @else10 |
|
| 193 | 193 | ret 0; |
|
| 194 | 194 | } |
|
| 195 | 195 | ||
| 196 | - | fn w32 $testPartialNesting(w64 %0) { |
|
| 196 | + | fn w32 $testPartialNesting(ptr %0) { |
|
| 197 | 197 | @entry0 |
|
| 198 | 198 | reserve %1 20 4; |
|
| 199 | 199 | blit %1 %0 20; |
|
| 200 | 200 | jmp @arm1; |
|
| 201 | 201 | @arm1 |
|
| 202 | 202 | load w8 %2 %1 0; |
|
| 203 | 203 | br.eq w8 %2 0 @case2 @arm3; |
|
| 204 | 204 | @case2 |
|
| 205 | - | add w64 %3 %1 4; |
|
| 205 | + | add ptr %3 %1 4; |
|
| 206 | 206 | sload w32 %4 %3 8; |
|
| 207 | 207 | sload w32 %5 %3 0; |
|
| 208 | 208 | sload w32 %6 %3 4; |
|
| 209 | 209 | add w32 %7 %5 %6; |
|
| 210 | 210 | add w32 %8 %7 %4; |
|
| 211 | 211 | ret %8; |
|
| 212 | 212 | @arm3 |
|
| 213 | 213 | load w8 %9 %1 0; |
|
| 214 | 214 | br.eq w8 %9 1 @case4 @arm5; |
|
| 215 | 215 | @case4 |
|
| 216 | - | add w64 %10 %1 4; |
|
| 217 | - | add w64 %11 %10 8; |
|
| 216 | + | add ptr %10 %1 4; |
|
| 217 | + | add ptr %11 %10 8; |
|
| 218 | 218 | sload w32 %12 %11 0; |
|
| 219 | 219 | sload w32 %13 %11 4; |
|
| 220 | 220 | sload w32 %14 %10 0; |
|
| 221 | 221 | sload w32 %15 %10 4; |
|
| 222 | 222 | add w32 %16 %14 %15; |
| 234 | 234 | reserve %0 16 4; |
|
| 235 | 235 | store w8 0 %0 0; |
|
| 236 | 236 | reserve %1 8 4; |
|
| 237 | 237 | store w32 10 %1 0; |
|
| 238 | 238 | store w32 20 %1 4; |
|
| 239 | - | add w64 %2 %0 4; |
|
| 239 | + | add ptr %2 %0 4; |
|
| 240 | 240 | blit %2 %1 8; |
|
| 241 | 241 | store w32 30 %0 12; |
|
| 242 | 242 | call w32 %3 $testNestedMatch(%0); |
|
| 243 | 243 | br.eq w32 %3 60 @assert.ok2 @assert.fail1; |
|
| 244 | 244 | @assert.fail1 |
| 273 | 273 | reserve %11 8 4; |
|
| 274 | 274 | reserve %12 4 4; |
|
| 275 | 275 | store w32 100 %12 0; |
|
| 276 | 276 | blit %11 %12 4; |
|
| 277 | 277 | store w32 200 %11 4; |
|
| 278 | - | add w64 %13 %10 4; |
|
| 278 | + | add ptr %13 %10 4; |
|
| 279 | 279 | blit %13 %11 8; |
|
| 280 | 280 | store w32 300 %10 12; |
|
| 281 | 281 | call w32 %14 $testDeepNesting(%10); |
|
| 282 | 282 | br.eq w32 %14 600 @assert.ok12 @assert.fail11; |
|
| 283 | 283 | @assert.fail11 |
| 318 | 318 | reserve %23 20 4; |
|
| 319 | 319 | store w8 0 %23 0; |
|
| 320 | 320 | reserve %24 8 4; |
|
| 321 | 321 | store w32 1 %24 0; |
|
| 322 | 322 | store w32 2 %24 4; |
|
| 323 | - | add w64 %25 %23 4; |
|
| 323 | + | add ptr %25 %23 4; |
|
| 324 | 324 | blit %25 %24 8; |
|
| 325 | 325 | store w32 10 %23 12; |
|
| 326 | 326 | call w32 %26 $testMixedNesting(%23); |
|
| 327 | 327 | br.eq w32 %26 13 @assert.ok22 @assert.fail21; |
|
| 328 | 328 | @assert.fail21 |
| 331 | 331 | reserve %27 20 4; |
|
| 332 | 332 | store w8 1 %27 0; |
|
| 333 | 333 | reserve %28 8 4; |
|
| 334 | 334 | store w32 3 %28 0; |
|
| 335 | 335 | store w32 4 %28 4; |
|
| 336 | - | add w64 %29 %27 4; |
|
| 336 | + | add ptr %29 %27 4; |
|
| 337 | 337 | blit %29 %28 8; |
|
| 338 | 338 | reserve %30 8 4; |
|
| 339 | 339 | store w32 5 %30 0; |
|
| 340 | 340 | store w32 6 %30 4; |
|
| 341 | - | add w64 %31 %27 12; |
|
| 341 | + | add ptr %31 %27 12; |
|
| 342 | 342 | blit %31 %30 8; |
|
| 343 | 343 | call w32 %32 $testMixedNesting(%27); |
|
| 344 | 344 | br.eq w32 %32 18 @assert.ok24 @assert.fail23; |
|
| 345 | 345 | @assert.fail23 |
|
| 346 | 346 | unreachable; |
| 359 | 359 | store w8 0 %37 0; |
|
| 360 | 360 | store w32 7 %37 4; |
|
| 361 | 361 | store w32 8 %37 8; |
|
| 362 | 362 | blit %36 %37 12; |
|
| 363 | 363 | store w32 100 %36 12; |
|
| 364 | - | add w64 %38 %35 4; |
|
| 364 | + | add ptr %38 %35 4; |
|
| 365 | 365 | blit %38 %36 16; |
|
| 366 | 366 | call w32 %39 $testNestedUnionInRecord(%35); |
|
| 367 | 367 | br.eq w32 %39 115 @assert.ok28 @assert.fail27; |
|
| 368 | 368 | @assert.fail27 |
|
| 369 | 369 | unreachable; |
| 373 | 373 | reserve %41 16 4; |
|
| 374 | 374 | reserve %42 12 4; |
|
| 375 | 375 | store w8 1 %42 0; |
|
| 376 | 376 | blit %41 %42 12; |
|
| 377 | 377 | store w32 99 %41 12; |
|
| 378 | - | add w64 %43 %40 4; |
|
| 378 | + | add ptr %43 %40 4; |
|
| 379 | 379 | blit %43 %41 16; |
|
| 380 | 380 | call w32 %44 $testNestedUnionInRecord(%40); |
|
| 381 | 381 | br.eq w32 %44 -1 @assert.ok30 @assert.fail29; |
|
| 382 | 382 | @assert.fail29 |
|
| 383 | 383 | unreachable; |
| 406 | 406 | @assert.fail37 |
|
| 407 | 407 | unreachable; |
|
| 408 | 408 | @assert.ok38 |
|
| 409 | 409 | ret 0; |
|
| 410 | 410 | } |
|
| 411 | - |
test/tests/match.nested.record.ril
+16 -17
| 1 | - | fn w32 $area(w64 %0) { |
|
| 1 | + | fn w32 $area(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %1 20 4; |
|
| 4 | 4 | blit %1 %0 20; |
|
| 5 | 5 | jmp @arm1; |
|
| 6 | 6 | @arm1 |
|
| 7 | 7 | load w8 %2 %1 0; |
|
| 8 | 8 | br.eq w8 %2 0 @case2 @arm3; |
|
| 9 | 9 | @case2 |
|
| 10 | - | add w64 %3 %1 4; |
|
| 10 | + | add ptr %3 %1 4; |
|
| 11 | 11 | sload w32 %4 %3 0; |
|
| 12 | 12 | sload w32 %5 %3 4; |
|
| 13 | 13 | sload w32 %6 %3 8; |
|
| 14 | 14 | add w32 %7 %4 %5; |
|
| 15 | 15 | add w32 %8 %7 %6; |
|
| 16 | 16 | ret %8; |
|
| 17 | 17 | @arm3 |
|
| 18 | 18 | load w8 %9 %1 0; |
|
| 19 | 19 | br.eq w8 %9 1 @case4 @arm5; |
|
| 20 | 20 | @case4 |
|
| 21 | - | add w64 %10 %1 4; |
|
| 21 | + | add ptr %10 %1 4; |
|
| 22 | 22 | sload w32 %11 %10 0; |
|
| 23 | 23 | sload w32 %12 %10 4; |
|
| 24 | - | add w64 %13 %10 8; |
|
| 24 | + | add ptr %13 %10 8; |
|
| 25 | 25 | sload w32 %14 %13 0; |
|
| 26 | 26 | sload w32 %15 %13 4; |
|
| 27 | 27 | add w32 %16 %11 %12; |
|
| 28 | 28 | mul w32 %17 %14 %15; |
|
| 29 | 29 | add w32 %18 %16 %17; |
| 32 | 32 | jmp @case6; |
|
| 33 | 33 | @case6 |
|
| 34 | 34 | ret 0; |
|
| 35 | 35 | } |
|
| 36 | 36 | ||
| 37 | - | fn w32 $partial(w64 %0) { |
|
| 37 | + | fn w32 $partial(ptr %0) { |
|
| 38 | 38 | @entry0 |
|
| 39 | 39 | reserve %1 20 4; |
|
| 40 | 40 | blit %1 %0 20; |
|
| 41 | 41 | jmp @arm1; |
|
| 42 | 42 | @arm1 |
|
| 43 | 43 | load w8 %2 %1 0; |
|
| 44 | 44 | br.eq w8 %2 0 @case2 @arm3; |
|
| 45 | 45 | @case2 |
|
| 46 | - | add w64 %3 %1 4; |
|
| 46 | + | add ptr %3 %1 4; |
|
| 47 | 47 | sload w32 %4 %3 8; |
|
| 48 | 48 | sload w32 %5 %3 0; |
|
| 49 | 49 | sload w32 %6 %3 4; |
|
| 50 | 50 | add w32 %7 %5 %6; |
|
| 51 | 51 | add w32 %8 %7 %4; |
|
| 52 | 52 | ret %8; |
|
| 53 | 53 | @arm3 |
|
| 54 | 54 | load w8 %9 %1 0; |
|
| 55 | 55 | br.eq w8 %9 1 @case4 @arm5; |
|
| 56 | 56 | @case4 |
|
| 57 | - | add w64 %10 %1 4; |
|
| 57 | + | add ptr %10 %1 4; |
|
| 58 | 58 | sload w32 %11 %10 0; |
|
| 59 | - | add w64 %12 %10 8; |
|
| 59 | + | add ptr %12 %10 8; |
|
| 60 | 60 | sload w32 %13 %12 0; |
|
| 61 | - | add w64 %14 %10 8; |
|
| 61 | + | add ptr %14 %10 8; |
|
| 62 | 62 | sload w32 %15 %14 4; |
|
| 63 | 63 | mul w32 %16 %13 %15; |
|
| 64 | 64 | add w32 %17 %11 %16; |
|
| 65 | 65 | ret %17; |
|
| 66 | 66 | @arm5 |
|
| 67 | 67 | jmp @case6; |
|
| 68 | 68 | @case6 |
|
| 69 | 69 | ret -1; |
|
| 70 | 70 | } |
|
| 71 | 71 | ||
| 72 | - | fn w32 $withPlaceholder(w64 %0) { |
|
| 72 | + | fn w32 $withPlaceholder(ptr %0) { |
|
| 73 | 73 | @entry0 |
|
| 74 | 74 | reserve %1 20 4; |
|
| 75 | 75 | blit %1 %0 20; |
|
| 76 | 76 | jmp @arm1; |
|
| 77 | 77 | @arm1 |
|
| 78 | 78 | load w8 %2 %1 0; |
|
| 79 | 79 | br.eq w8 %2 0 @case2 @arm3; |
|
| 80 | 80 | @case2 |
|
| 81 | - | add w64 %3 %1 4; |
|
| 81 | + | add ptr %3 %1 4; |
|
| 82 | 82 | sload w32 %4 %3 0; |
|
| 83 | 83 | sload w32 %5 %3 8; |
|
| 84 | 84 | add w32 %6 %4 %5; |
|
| 85 | 85 | ret %6; |
|
| 86 | 86 | @arm3 |
|
| 87 | 87 | load w8 %7 %1 0; |
|
| 88 | 88 | br.eq w8 %7 1 @case4 @arm5; |
|
| 89 | 89 | @case4 |
|
| 90 | - | add w64 %8 %1 4; |
|
| 91 | - | add w64 %9 %8 8; |
|
| 90 | + | add ptr %8 %1 4; |
|
| 91 | + | add ptr %9 %8 8; |
|
| 92 | 92 | sload w32 %10 %9 0; |
|
| 93 | 93 | sload w32 %11 %9 4; |
|
| 94 | 94 | mul w32 %12 %10 %11; |
|
| 95 | 95 | ret %12; |
|
| 96 | 96 | @arm5 |
| 104 | 104 | reserve %0 20 4; |
|
| 105 | 105 | store w8 0 %0 0; |
|
| 106 | 106 | reserve %1 8 4; |
|
| 107 | 107 | store w32 3 %1 0; |
|
| 108 | 108 | store w32 4 %1 4; |
|
| 109 | - | add w64 %2 %0 4; |
|
| 109 | + | add ptr %2 %0 4; |
|
| 110 | 110 | blit %2 %1 8; |
|
| 111 | 111 | store w32 5 %0 12; |
|
| 112 | 112 | reserve %3 20 4; |
|
| 113 | 113 | store w8 1 %3 0; |
|
| 114 | 114 | reserve %4 16 4; |
| 117 | 117 | store w32 2 %5 4; |
|
| 118 | 118 | blit %4 %5 8; |
|
| 119 | 119 | reserve %6 8 4; |
|
| 120 | 120 | store w32 10 %6 0; |
|
| 121 | 121 | store w32 20 %6 4; |
|
| 122 | - | add w64 %7 %4 8; |
|
| 122 | + | add ptr %7 %4 8; |
|
| 123 | 123 | blit %7 %6 8; |
|
| 124 | - | add w64 %8 %3 4; |
|
| 124 | + | add ptr %8 %3 4; |
|
| 125 | 125 | blit %8 %4 16; |
|
| 126 | 126 | call w32 %9 $area(%0); |
|
| 127 | 127 | br.eq w32 %9 12 @assert.ok2 @assert.fail1; |
|
| 128 | 128 | @assert.fail1 |
|
| 129 | 129 | unreachable; |
| 174 | 174 | @assert.fail17 |
|
| 175 | 175 | unreachable; |
|
| 176 | 176 | @assert.ok18 |
|
| 177 | 177 | ret 0; |
|
| 178 | 178 | } |
|
| 179 | - |
test/tests/match.nested.union.ril
+10 -11
| 1 | - | fn w32 $dispatch(w64 %0) { |
|
| 1 | + | fn w32 $dispatch(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %1 12 4; |
|
| 4 | 4 | blit %1 %0 12; |
|
| 5 | 5 | jmp @arm1; |
|
| 6 | 6 | @arm1 |
|
| 7 | 7 | load w8 %2 %1 0; |
|
| 8 | 8 | br.eq w8 %2 0 @case2 @arm3; |
|
| 9 | 9 | @case2 |
|
| 10 | - | add w64 %3 %1 4; |
|
| 10 | + | add ptr %3 %1 4; |
|
| 11 | 11 | load w8 %4 %3 0; |
|
| 12 | 12 | br.eq w8 %4 0 @nest4 @arm3; |
|
| 13 | 13 | @arm3 |
|
| 14 | 14 | load w8 %6 %1 0; |
|
| 15 | 15 | br.eq w8 %6 0 @case6 @arm7; |
| 17 | 17 | sload w32 %5 %3 4; |
|
| 18 | 18 | jmp @case5; |
|
| 19 | 19 | @case5 |
|
| 20 | 20 | ret %5; |
|
| 21 | 21 | @case6 |
|
| 22 | - | add w64 %7 %1 4; |
|
| 22 | + | add ptr %7 %1 4; |
|
| 23 | 23 | load w8 %8 %7 0; |
|
| 24 | 24 | br.eq w8 %8 1 @nest8 @arm7; |
|
| 25 | 25 | @arm7 |
|
| 26 | 26 | load w8 %11 %1 0; |
|
| 27 | 27 | br.eq w8 %11 0 @case10 @arm11; |
| 30 | 30 | jmp @case9; |
|
| 31 | 31 | @case9 |
|
| 32 | 32 | sub w32 %10 0 %9; |
|
| 33 | 33 | ret %10; |
|
| 34 | 34 | @case10 |
|
| 35 | - | add w64 %12 %1 4; |
|
| 35 | + | add ptr %12 %1 4; |
|
| 36 | 36 | load w8 %13 %12 0; |
|
| 37 | 37 | br.eq w8 %13 2 @nest12 @arm11; |
|
| 38 | 38 | @arm11 |
|
| 39 | 39 | load w8 %16 %1 0; |
|
| 40 | 40 | br.eq w8 %16 0 @case14 @arm15; |
| 43 | 43 | jmp @case13; |
|
| 44 | 44 | @case13 |
|
| 45 | 45 | mul w32 %15 %14 2; |
|
| 46 | 46 | ret %15; |
|
| 47 | 47 | @case14 |
|
| 48 | - | add w64 %17 %1 4; |
|
| 48 | + | add ptr %17 %1 4; |
|
| 49 | 49 | load w8 %18 %17 0; |
|
| 50 | 50 | br.eq w8 %18 3 @nest16 @arm15; |
|
| 51 | 51 | @arm15 |
|
| 52 | 52 | load w8 %21 %1 0; |
|
| 53 | 53 | br.eq w8 %21 1 @case18 @arm19; |
| 56 | 56 | jmp @case17; |
|
| 57 | 57 | @case17 |
|
| 58 | 58 | mul w32 %20 %19 3; |
|
| 59 | 59 | ret %20; |
|
| 60 | 60 | @case18 |
|
| 61 | - | add w64 %22 %1 4; |
|
| 61 | + | add ptr %22 %1 4; |
|
| 62 | 62 | load w8 %23 %22 0; |
|
| 63 | 63 | br.eq w8 %23 0 @nest20 @arm19; |
|
| 64 | 64 | @arm19 |
|
| 65 | 65 | load w8 %24 %1 0; |
|
| 66 | 66 | br.eq w8 %24 1 @case22 @arm23; |
|
| 67 | 67 | @nest20 |
|
| 68 | 68 | jmp @case21; |
|
| 69 | 69 | @case21 |
|
| 70 | 70 | ret 100; |
|
| 71 | 71 | @case22 |
|
| 72 | - | add w64 %25 %1 4; |
|
| 72 | + | add ptr %25 %1 4; |
|
| 73 | 73 | load w8 %26 %25 0; |
|
| 74 | 74 | br.eq w8 %26 1 @nest24 @arm23; |
|
| 75 | 75 | @arm23 |
|
| 76 | 76 | jmp @else26; |
|
| 77 | 77 | @nest24 |
| 80 | 80 | ret 200; |
|
| 81 | 81 | @else26 |
|
| 82 | 82 | ret 0; |
|
| 83 | 83 | } |
|
| 84 | 84 | ||
| 85 | - | fn w32 $moveOnly(w64 %0) { |
|
| 85 | + | fn w32 $moveOnly(ptr %0) { |
|
| 86 | 86 | @entry0 |
|
| 87 | 87 | reserve %1 12 4; |
|
| 88 | 88 | blit %1 %0 12; |
|
| 89 | 89 | jmp @arm1; |
|
| 90 | 90 | @arm1 |
|
| 91 | 91 | load w8 %2 %1 0; |
|
| 92 | 92 | br.eq w8 %2 0 @case2 @arm3; |
|
| 93 | 93 | @case2 |
|
| 94 | - | add w64 %3 %1 4; |
|
| 94 | + | add ptr %3 %1 4; |
|
| 95 | 95 | load w8 %4 %3 0; |
|
| 96 | 96 | br.eq w8 %4 0 @nest4 @arm3; |
|
| 97 | 97 | @arm3 |
|
| 98 | 98 | load w8 %7 %1 0; |
|
| 99 | 99 | br.eq w8 %7 0 @case6 @arm7; |
| 102 | 102 | jmp @case5; |
|
| 103 | 103 | @case5 |
|
| 104 | 104 | add w32 %6 %5 10; |
|
| 105 | 105 | ret %6; |
|
| 106 | 106 | @case6 |
|
| 107 | - | add w64 %8 %1 4; |
|
| 107 | + | add ptr %8 %1 4; |
|
| 108 | 108 | load w8 %9 %8 0; |
|
| 109 | 109 | br.eq w8 %9 1 @nest8 @arm7; |
|
| 110 | 110 | @arm7 |
|
| 111 | 111 | jmp @else10; |
|
| 112 | 112 | @nest8 |
| 222 | 222 | @assert.fail23 |
|
| 223 | 223 | unreachable; |
|
| 224 | 224 | @assert.ok24 |
|
| 225 | 225 | ret 0; |
|
| 226 | 226 | } |
|
| 227 | - |
test/tests/match.optional.aggregate.ril
+1 -1
| 1 | - | fn w32 $matchOptionalAggregate(w64 %0) { |
|
| 1 | + | fn w32 $matchOptionalAggregate(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %1 8 4; |
|
| 4 | 4 | blit %1 %0 8; |
|
| 5 | 5 | jmp @arm1; |
|
| 6 | 6 | @arm1 |
test/tests/match.optional.ril
+2 -2
| 1 | - | fn w32 $matchOptional(w64 %0) { |
|
| 1 | + | fn w32 $matchOptional(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | jmp @arm1; |
|
| 4 | 4 | @arm1 |
|
| 5 | - | br.eq w64 %0 0 @case2 @arm3; |
|
| 5 | + | br.eq ptr %0 0 @case2 @arm3; |
|
| 6 | 6 | @case2 |
|
| 7 | 7 | ret 0; |
|
| 8 | 8 | @arm3 |
|
| 9 | 9 | jmp @case4; |
|
| 10 | 10 | @case4 |
test/tests/match.record.pattern.ril
+2 -2
| 1 | - | fn w32 $getFirst(w64 %0) { |
|
| 1 | + | fn w32 $getFirst(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %1 12 4; |
|
| 4 | 4 | blit %1 %0 12; |
|
| 5 | 5 | jmp @arm1; |
|
| 6 | 6 | @arm1 |
| 9 | 9 | @case2 |
|
| 10 | 10 | ret 0; |
|
| 11 | 11 | @arm3 |
|
| 12 | 12 | jmp @case4; |
|
| 13 | 13 | @case4 |
|
| 14 | - | add w64 %3 %1 4; |
|
| 14 | + | add ptr %3 %1 4; |
|
| 15 | 15 | sload w32 %4 %3 0; |
|
| 16 | 16 | sload w32 %5 %3 4; |
|
| 17 | 17 | ret %4; |
|
| 18 | 18 | } |
test/tests/multi.throw.basic.ril
+1 -1
| 1 | - | fn w64 $fallible(w64 %0, w32 %1) { |
|
| 1 | + | fn ptr $fallible(ptr %0, w32 %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | br.eq w32 %1 1 @then1 @merge2; |
|
| 4 | 4 | @then1 |
|
| 5 | 5 | reserve %2 1 1; |
|
| 6 | 6 | store w8 0 %2 0; |
test/tests/multi.throw.catch.typed.ril
+2 -2
| 1 | - | fn w64 $fallible(w64 %0, w32 %1) { |
|
| 1 | + | fn ptr $fallible(ptr %0, w32 %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | br.eq w32 %1 1 @then1 @merge2; |
|
| 4 | 4 | @then1 |
|
| 5 | 5 | reserve %2 1 1; |
|
| 6 | 6 | store w8 0 %2 0; |
| 28 | 28 | } |
|
| 29 | 29 | ||
| 30 | 30 | fn w32 $caller(w32 %0) { |
|
| 31 | 31 | @entry0 |
|
| 32 | 32 | reserve %1 12 8; |
|
| 33 | - | call w64 %2 $fallible(%1, %0); |
|
| 33 | + | call ptr %2 $fallible(%1, %0); |
|
| 34 | 34 | load w64 %3 %2 0; |
|
| 35 | 35 | reserve %4 4 4; |
|
| 36 | 36 | br.ne w32 %3 0 @err2 @ok1; |
|
| 37 | 37 | @ok1 |
|
| 38 | 38 | sload w32 %5 %2 8; |
test/tests/multi.throw.propagate.ril
+5 -5
| 1 | - | fn w64 $inner(w64 %0, w8 %1) { |
|
| 1 | + | fn ptr $inner(ptr %0, w8 %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | br.ne w32 %1 0 @then1 @merge2; |
|
| 4 | 4 | @then1 |
|
| 5 | 5 | reserve %2 1 1; |
|
| 6 | 6 | store w8 0 %2 0; |
| 15 | 15 | store w32 10 %4 8; |
|
| 16 | 16 | blit %0 %4 12; |
|
| 17 | 17 | ret %0; |
|
| 18 | 18 | } |
|
| 19 | 19 | ||
| 20 | - | fn w64 $outer(w64 %0, w8 %1) { |
|
| 20 | + | fn ptr $outer(ptr %0, w8 %1) { |
|
| 21 | 21 | @entry0 |
|
| 22 | 22 | reserve %2 12 8; |
|
| 23 | - | call w64 %3 $inner(%2, %1); |
|
| 23 | + | call ptr %3 $inner(%2, %1); |
|
| 24 | 24 | load w64 %4 %3 0; |
|
| 25 | 25 | reserve %5 4 4; |
|
| 26 | 26 | br.ne w32 %4 0 @err2 @ok1; |
|
| 27 | 27 | @ok1 |
|
| 28 | 28 | sload w32 %6 %3 8; |
|
| 29 | 29 | store w32 %6 %5 0; |
|
| 30 | 30 | jmp @merge3; |
|
| 31 | 31 | @err2 |
|
| 32 | 32 | reserve %7 12 8; |
|
| 33 | 33 | store w64 %4 %7 0; |
|
| 34 | - | add w64 %8 %3 8; |
|
| 35 | - | add w64 %9 %7 8; |
|
| 34 | + | add ptr %8 %3 8; |
|
| 35 | + | add ptr %9 %7 8; |
|
| 36 | 36 | blit %9 %8 1; |
|
| 37 | 37 | blit %0 %7 12; |
|
| 38 | 38 | ret %0; |
|
| 39 | 39 | @merge3 |
|
| 40 | 40 | sload w32 %10 %5 0; |
test/tests/mutref.loop.ril
+1 -1
| 1 | - | fn w64 $callback(w32 %0, w64 %1) { |
|
| 1 | + | fn w64 $callback(w32 %0, ptr %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | store w32 %0 %1 0; |
|
| 4 | 4 | ret; |
|
| 5 | 5 | } |
|
| 6 | 6 |
test/tests/mutref.scalar.ril
+1 -1
| 1 | - | fn w8 $modify(w64 %0, w8 %1) { |
|
| 1 | + | fn w8 $modify(ptr %0, w8 %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | sload w32 %2 %0 0; |
|
| 4 | 4 | add w32 %3 %2 1; |
|
| 5 | 5 | store w32 %3 %0 0; |
|
| 6 | 6 | ret %1; |
test/tests/nil.cmp.ril
+6 -6
| 6 | 6 | fn w8 $nilNeNil() { |
|
| 7 | 7 | @entry0 |
|
| 8 | 8 | ret 0; |
|
| 9 | 9 | } |
|
| 10 | 10 | ||
| 11 | - | fn w8 $nilEqOptPtr(w64 %0) { |
|
| 11 | + | fn w8 $nilEqOptPtr(ptr %0) { |
|
| 12 | 12 | @entry0 |
|
| 13 | - | eq w64 %1 %0 0; |
|
| 13 | + | eq ptr %1 %0 0; |
|
| 14 | 14 | ret %1; |
|
| 15 | 15 | } |
|
| 16 | 16 | ||
| 17 | - | fn w8 $nilNeOptPtr(w64 %0) { |
|
| 17 | + | fn w8 $nilNeOptPtr(ptr %0) { |
|
| 18 | 18 | @entry0 |
|
| 19 | - | ne w64 %1 %0 0; |
|
| 19 | + | ne ptr %1 %0 0; |
|
| 20 | 20 | ret %1; |
|
| 21 | 21 | } |
|
| 22 | 22 | ||
| 23 | - | fn w8 $nilEqOptAgg(w64 %0) { |
|
| 23 | + | fn w8 $nilEqOptAgg(ptr %0) { |
|
| 24 | 24 | @entry0 |
|
| 25 | 25 | load w8 %1 %0 0; |
|
| 26 | 26 | eq w8 %2 %1 0; |
|
| 27 | 27 | ret %2; |
|
| 28 | 28 | } |
|
| 29 | 29 | ||
| 30 | - | fn w8 $nilNeOptAgg(w64 %0) { |
|
| 30 | + | fn w8 $nilNeOptAgg(ptr %0) { |
|
| 31 | 31 | @entry0 |
|
| 32 | 32 | load w8 %1 %0 0; |
|
| 33 | 33 | ne w8 %2 %1 0; |
|
| 34 | 34 | ret %2; |
|
| 35 | 35 | } |
test/tests/opt.ptr.return.nil.ril
+1 -1
| 1 | - | fn w64 $optPtrReturnNil() { |
|
| 1 | + | fn ptr $optPtrReturnNil() { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | ret 0; |
|
| 4 | 4 | } |
test/tests/opt.record.eq.rev.ril
+4 -4
| 1 | - | fn w64 $makeOpt(w64 %0, w64 %1) { |
|
| 1 | + | fn ptr $makeOpt(ptr %0, ptr %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %2 8 4; |
|
| 4 | 4 | store w8 1 %2 0; |
|
| 5 | - | add w64 %3 %2 4; |
|
| 5 | + | add ptr %3 %2 4; |
|
| 6 | 6 | blit %3 %1 4; |
|
| 7 | 7 | blit %0 %2 8; |
|
| 8 | 8 | ret %0; |
|
| 9 | 9 | } |
|
| 10 | 10 | ||
| 11 | 11 | fn w32 $main() { |
|
| 12 | 12 | @entry0 |
|
| 13 | 13 | reserve %0 4 4; |
|
| 14 | 14 | store w32 5 %0 0; |
|
| 15 | 15 | reserve %1 8 4; |
|
| 16 | - | call w64 %2 $makeOpt(%1, %0); |
|
| 16 | + | call ptr %2 $makeOpt(%1, %0); |
|
| 17 | 17 | reserve %3 8 4; |
|
| 18 | 18 | store w8 1 %3 0; |
|
| 19 | - | add w64 %4 %3 4; |
|
| 19 | + | add ptr %4 %3 4; |
|
| 20 | 20 | blit %4 %0 4; |
|
| 21 | 21 | load w8 %5 %2 0; |
|
| 22 | 22 | load w8 %6 %3 0; |
|
| 23 | 23 | eq w8 %7 %5 %6; |
|
| 24 | 24 | eq w8 %8 %5 0; |
test/tests/opt.record.eq.ril
+6 -7
| 4 | 4 | reserve %1 8 4; |
|
| 5 | 5 | store w32 3 %1 0; |
|
| 6 | 6 | store w32 9 %1 4; |
|
| 7 | 7 | reserve %2 12 4; |
|
| 8 | 8 | store w8 1 %2 0; |
|
| 9 | - | add w64 %3 %2 4; |
|
| 9 | + | add ptr %3 %2 4; |
|
| 10 | 10 | blit %3 %1 8; |
|
| 11 | 11 | blit %0 %2 12; |
|
| 12 | 12 | reserve %4 12 4; |
|
| 13 | 13 | reserve %5 8 4; |
|
| 14 | 14 | store w32 3 %5 0; |
|
| 15 | 15 | store w32 9 %5 4; |
|
| 16 | 16 | reserve %6 12 4; |
|
| 17 | 17 | store w8 1 %6 0; |
|
| 18 | - | add w64 %7 %6 4; |
|
| 18 | + | add ptr %7 %6 4; |
|
| 19 | 19 | blit %7 %5 8; |
|
| 20 | 20 | blit %4 %6 12; |
|
| 21 | 21 | load w8 %8 %0 0; |
|
| 22 | 22 | load w8 %9 %4 0; |
|
| 23 | 23 | eq w8 %10 %8 %9; |
| 40 | 40 | reserve %23 8 4; |
|
| 41 | 41 | store w32 4 %23 0; |
|
| 42 | 42 | store w32 6 %23 4; |
|
| 43 | 43 | reserve %24 12 4; |
|
| 44 | 44 | store w8 1 %24 0; |
|
| 45 | - | add w64 %25 %24 4; |
|
| 45 | + | add ptr %25 %24 4; |
|
| 46 | 46 | blit %25 %23 8; |
|
| 47 | 47 | blit %22 %24 12; |
|
| 48 | 48 | load w8 %26 %0 0; |
|
| 49 | 49 | load w8 %27 %22 0; |
|
| 50 | 50 | eq w8 %28 %26 %27; |
| 70 | 70 | store w8 0 %41 0; |
|
| 71 | 71 | reserve %42 16 4; |
|
| 72 | 72 | store w8 0 %42 0; |
|
| 73 | 73 | reserve %43 16 4; |
|
| 74 | 74 | store w8 1 %43 0; |
|
| 75 | - | add w64 %44 %43 4; |
|
| 75 | + | add ptr %44 %43 4; |
|
| 76 | 76 | blit %44 %0 12; |
|
| 77 | 77 | blit %39 %43 16; |
|
| 78 | 78 | reserve %45 16 4; |
|
| 79 | 79 | store w8 1 %45 0; |
|
| 80 | - | add w64 %46 %45 4; |
|
| 80 | + | add ptr %46 %45 4; |
|
| 81 | 81 | blit %46 %4 12; |
|
| 82 | 82 | blit %40 %45 16; |
|
| 83 | 83 | reserve %47 16 4; |
|
| 84 | 84 | store w8 1 %47 0; |
|
| 85 | - | add w64 %48 %47 4; |
|
| 85 | + | add ptr %48 %47 4; |
|
| 86 | 86 | blit %48 %22 12; |
|
| 87 | 87 | blit %41 %47 16; |
|
| 88 | 88 | load w8 %49 %39 0; |
|
| 89 | 89 | load w8 %50 %40 0; |
|
| 90 | 90 | eq w8 %51 %49 %50; |
| 155 | 155 | @then9 |
|
| 156 | 156 | ret 0; |
|
| 157 | 157 | @merge10 |
|
| 158 | 158 | ret 1; |
|
| 159 | 159 | } |
|
| 160 | - |
test/tests/opt.return.nil.ril
+1 -1
| 1 | - | fn w64 $optReturnNil(w64 %0) { |
|
| 1 | + | fn ptr $optReturnNil(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %1 8 4; |
|
| 4 | 4 | store w8 0 %1 0; |
|
| 5 | 5 | blit %0 %1 8; |
|
| 6 | 6 | ret %0; |
test/tests/opt.return.value.ril
+1 -1
| 1 | - | fn w64 $optReturnValue(w64 %0) { |
|
| 1 | + | fn ptr $optReturnValue(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %1 8 4; |
|
| 4 | 4 | store w8 1 %1 0; |
|
| 5 | 5 | store w32 7 %1 4; |
|
| 6 | 6 | blit %0 %1 8; |
test/tests/opt.slice.npo.ril
+32 -33
| 20 | 20 | } |
|
| 21 | 21 | ||
| 22 | 22 | fn w8 $checkNil() { |
|
| 23 | 23 | @entry0 |
|
| 24 | 24 | reserve %0 16 8; |
|
| 25 | - | store w64 0 %0 0; |
|
| 25 | + | store ptr 0 %0 0; |
|
| 26 | 26 | store w32 0 %0 8; |
|
| 27 | 27 | store w32 0 %0 12; |
|
| 28 | 28 | load w64 %1 %0 0; |
|
| 29 | - | eq w64 %2 %1 0; |
|
| 29 | + | eq ptr %2 %1 0; |
|
| 30 | 30 | br.ne w32 %2 0 @assert.ok2 @assert.fail1; |
|
| 31 | 31 | @assert.fail1 |
|
| 32 | 32 | unreachable; |
|
| 33 | 33 | @assert.ok2 |
|
| 34 | 34 | ret 0; |
| 39 | 39 | reserve %0 3 1; |
|
| 40 | 40 | store w8 1 %0 0; |
|
| 41 | 41 | store w8 2 %0 1; |
|
| 42 | 42 | store w8 3 %0 2; |
|
| 43 | 43 | reserve %1 16 8; |
|
| 44 | - | store w64 %0 %1 0; |
|
| 44 | + | store ptr %0 %1 0; |
|
| 45 | 45 | store w32 3 %1 8; |
|
| 46 | 46 | store w32 3 %1 12; |
|
| 47 | 47 | reserve %2 16 8; |
|
| 48 | 48 | blit %2 %1 16; |
|
| 49 | 49 | load w64 %3 %2 0; |
|
| 50 | - | ne w64 %4 %3 0; |
|
| 50 | + | ne ptr %4 %3 0; |
|
| 51 | 51 | br.ne w32 %4 0 @assert.ok2 @assert.fail1; |
|
| 52 | 52 | @assert.fail1 |
|
| 53 | 53 | unreachable; |
|
| 54 | 54 | @assert.ok2 |
|
| 55 | 55 | ret 0; |
| 60 | 60 | reserve %0 3 1; |
|
| 61 | 61 | store w8 10 %0 0; |
|
| 62 | 62 | store w8 20 %0 1; |
|
| 63 | 63 | store w8 30 %0 2; |
|
| 64 | 64 | reserve %1 16 8; |
|
| 65 | - | store w64 %0 %1 0; |
|
| 65 | + | store ptr %0 %1 0; |
|
| 66 | 66 | store w32 3 %1 8; |
|
| 67 | 67 | store w32 3 %1 12; |
|
| 68 | 68 | reserve %2 16 8; |
|
| 69 | 69 | blit %2 %1 16; |
|
| 70 | 70 | reserve %3 16 8; |
| 97 | 97 | unreachable; |
|
| 98 | 98 | @assert.ok10 |
|
| 99 | 99 | jmp @merge13; |
|
| 100 | 100 | @guard#pass11 |
|
| 101 | 101 | load w64 %10 %3 0; |
|
| 102 | - | add w64 %11 %10 1; |
|
| 102 | + | add ptr %11 %10 1; |
|
| 103 | 103 | load w8 %12 %11 0; |
|
| 104 | 104 | br.eq w8 %12 20 @assert.ok10 @assert.fail9; |
|
| 105 | 105 | @guard#trap12 |
|
| 106 | 106 | ebreak; |
|
| 107 | 107 | unreachable; |
|
| 108 | 108 | @merge13 |
|
| 109 | 109 | reserve %13 16 8; |
|
| 110 | - | store w64 0 %13 0; |
|
| 110 | + | store ptr 0 %13 0; |
|
| 111 | 111 | store w32 0 %13 8; |
|
| 112 | 112 | store w32 0 %13 12; |
|
| 113 | 113 | reserve %14 16 8; |
|
| 114 | 114 | blit %14 %13 16; |
|
| 115 | 115 | load w64 %15 %14 0; |
| 127 | 127 | reserve %0 3 1; |
|
| 128 | 128 | store w8 10 %0 0; |
|
| 129 | 129 | store w8 20 %0 1; |
|
| 130 | 130 | store w8 30 %0 2; |
|
| 131 | 131 | reserve %1 16 8; |
|
| 132 | - | store w64 %0 %1 0; |
|
| 132 | + | store ptr %0 %1 0; |
|
| 133 | 133 | store w32 3 %1 8; |
|
| 134 | 134 | store w32 3 %1 12; |
|
| 135 | 135 | reserve %2 16 8; |
|
| 136 | 136 | blit %2 %1 16; |
|
| 137 | 137 | reserve %3 16 8; |
| 147 | 147 | unreachable; |
|
| 148 | 148 | @assert.ok4 |
|
| 149 | 149 | ret 0; |
|
| 150 | 150 | } |
|
| 151 | 151 | ||
| 152 | - | fn w64 $returnNil(w64 %0) { |
|
| 152 | + | fn ptr $returnNil(ptr %0) { |
|
| 153 | 153 | @entry0 |
|
| 154 | 154 | reserve %1 16 8; |
|
| 155 | - | store w64 0 %1 0; |
|
| 155 | + | store ptr 0 %1 0; |
|
| 156 | 156 | store w32 0 %1 8; |
|
| 157 | 157 | store w32 0 %1 12; |
|
| 158 | 158 | blit %0 %1 16; |
|
| 159 | 159 | ret %0; |
|
| 160 | 160 | } |
|
| 161 | 161 | ||
| 162 | - | fn w64 $returnSome(w64 %0) { |
|
| 162 | + | fn ptr $returnSome(ptr %0) { |
|
| 163 | 163 | @entry0 |
|
| 164 | 164 | reserve %1 2 1; |
|
| 165 | 165 | store w8 42 %1 0; |
|
| 166 | 166 | store w8 99 %1 1; |
|
| 167 | 167 | reserve %2 16 8; |
|
| 168 | - | store w64 %1 %2 0; |
|
| 168 | + | store ptr %1 %2 0; |
|
| 169 | 169 | store w32 2 %2 8; |
|
| 170 | 170 | store w32 2 %2 12; |
|
| 171 | 171 | blit %0 %2 16; |
|
| 172 | 172 | ret %0; |
|
| 173 | 173 | } |
|
| 174 | 174 | ||
| 175 | 175 | fn w8 $checkReturn() { |
|
| 176 | 176 | @entry0 |
|
| 177 | 177 | reserve %0 16 8; |
|
| 178 | - | call w64 %1 $returnNil(%0); |
|
| 178 | + | call ptr %1 $returnNil(%0); |
|
| 179 | 179 | load w64 %2 %1 0; |
|
| 180 | - | eq w64 %3 %2 0; |
|
| 180 | + | eq ptr %3 %2 0; |
|
| 181 | 181 | br.ne w32 %3 0 @assert.ok2 @assert.fail1; |
|
| 182 | 182 | @assert.fail1 |
|
| 183 | 183 | unreachable; |
|
| 184 | 184 | @assert.ok2 |
|
| 185 | 185 | reserve %4 16 8; |
|
| 186 | - | call w64 %5 $returnSome(%4); |
|
| 186 | + | call ptr %5 $returnSome(%4); |
|
| 187 | 187 | load w64 %6 %5 0; |
|
| 188 | - | ne w64 %7 %6 0; |
|
| 188 | + | ne ptr %7 %6 0; |
|
| 189 | 189 | br.ne w32 %7 0 @assert.ok4 @assert.fail3; |
|
| 190 | 190 | @assert.fail3 |
|
| 191 | 191 | unreachable; |
|
| 192 | 192 | @assert.ok4 |
|
| 193 | 193 | reserve %8 16 8; |
| 218 | 218 | @entry0 |
|
| 219 | 219 | reserve %0 2 1; |
|
| 220 | 220 | store w8 5 %0 0; |
|
| 221 | 221 | store w8 6 %0 1; |
|
| 222 | 222 | reserve %1 16 8; |
|
| 223 | - | store w64 %0 %1 0; |
|
| 223 | + | store ptr %0 %1 0; |
|
| 224 | 224 | store w32 2 %1 8; |
|
| 225 | 225 | store w32 2 %1 12; |
|
| 226 | 226 | reserve %2 16 8; |
|
| 227 | 227 | blit %2 %1 16; |
|
| 228 | 228 | reserve %3 16 8; |
|
| 229 | 229 | blit %3 %2 16; |
|
| 230 | 230 | jmp @arm1; |
|
| 231 | 231 | @arm1 |
|
| 232 | 232 | load w64 %4 %3 0; |
|
| 233 | - | br.eq w64 %4 0 @case2 @arm3; |
|
| 233 | + | br.eq ptr %4 0 @case2 @arm3; |
|
| 234 | 234 | @case2 |
|
| 235 | 235 | ret 60; |
|
| 236 | 236 | @arm3 |
|
| 237 | 237 | jmp @else4; |
|
| 238 | 238 | @else4 |
|
| 239 | 239 | jmp @merge6; |
|
| 240 | 240 | @merge6 |
|
| 241 | 241 | reserve %5 16 8; |
|
| 242 | - | store w64 0 %5 0; |
|
| 242 | + | store ptr 0 %5 0; |
|
| 243 | 243 | store w32 0 %5 8; |
|
| 244 | 244 | store w32 0 %5 12; |
|
| 245 | 245 | reserve %6 16 8; |
|
| 246 | 246 | blit %6 %5 16; |
|
| 247 | 247 | jmp @arm7; |
|
| 248 | 248 | @arm7 |
|
| 249 | 249 | load w64 %7 %6 0; |
|
| 250 | - | br.eq w64 %7 0 @case8 @arm9; |
|
| 250 | + | br.eq ptr %7 0 @case8 @arm9; |
|
| 251 | 251 | @case8 |
|
| 252 | 252 | jmp @merge10; |
|
| 253 | 253 | @arm9 |
|
| 254 | 254 | jmp @else11; |
|
| 255 | 255 | @merge10 |
| 259 | 259 | } |
|
| 260 | 260 | ||
| 261 | 261 | fn w8 $checkEq() { |
|
| 262 | 262 | @entry0 |
|
| 263 | 263 | reserve %0 16 8; |
|
| 264 | - | store w64 0 %0 0; |
|
| 264 | + | store ptr 0 %0 0; |
|
| 265 | 265 | store w32 0 %0 8; |
|
| 266 | 266 | store w32 0 %0 12; |
|
| 267 | 267 | reserve %1 16 8; |
|
| 268 | - | store w64 0 %1 0; |
|
| 268 | + | store ptr 0 %1 0; |
|
| 269 | 269 | store w32 0 %1 8; |
|
| 270 | 270 | store w32 0 %1 12; |
|
| 271 | - | load w64 %2 %0 0; |
|
| 272 | - | load w64 %3 %1 0; |
|
| 273 | - | eq w64 %4 %2 %3; |
|
| 271 | + | load ptr %2 %0 0; |
|
| 272 | + | load ptr %3 %1 0; |
|
| 273 | + | eq ptr %4 %2 %3; |
|
| 274 | 274 | load w32 %5 %0 8; |
|
| 275 | 275 | load w32 %6 %1 8; |
|
| 276 | 276 | eq w32 %7 %5 %6; |
|
| 277 | 277 | and w32 %8 %4 %7; |
|
| 278 | 278 | br.ne w32 %8 0 @assert.ok2 @assert.fail1; |
| 281 | 281 | @assert.ok2 |
|
| 282 | 282 | reserve %9 2 1; |
|
| 283 | 283 | store w8 1 %9 0; |
|
| 284 | 284 | store w8 2 %9 1; |
|
| 285 | 285 | reserve %10 16 8; |
|
| 286 | - | store w64 %9 %10 0; |
|
| 286 | + | store ptr %9 %10 0; |
|
| 287 | 287 | store w32 2 %10 8; |
|
| 288 | 288 | store w32 2 %10 12; |
|
| 289 | 289 | reserve %11 16 8; |
|
| 290 | 290 | blit %11 %10 16; |
|
| 291 | - | load w64 %12 %11 0; |
|
| 292 | - | load w64 %13 %0 0; |
|
| 293 | - | eq w64 %14 %12 %13; |
|
| 291 | + | load ptr %12 %11 0; |
|
| 292 | + | load ptr %13 %0 0; |
|
| 293 | + | eq ptr %14 %12 %13; |
|
| 294 | 294 | load w32 %15 %11 8; |
|
| 295 | 295 | load w32 %16 %0 8; |
|
| 296 | 296 | eq w32 %17 %15 %16; |
|
| 297 | 297 | and w32 %18 %14 %17; |
|
| 298 | 298 | eq w32 %19 %18 0; |
| 300 | 300 | @assert.fail3 |
|
| 301 | 301 | unreachable; |
|
| 302 | 302 | @assert.ok4 |
|
| 303 | 303 | reserve %20 16 8; |
|
| 304 | 304 | blit %20 %10 16; |
|
| 305 | - | load w64 %21 %11 0; |
|
| 306 | - | load w64 %22 %20 0; |
|
| 307 | - | eq w64 %23 %21 %22; |
|
| 305 | + | load ptr %21 %11 0; |
|
| 306 | + | load ptr %22 %20 0; |
|
| 307 | + | eq ptr %23 %21 %22; |
|
| 308 | 308 | load w32 %24 %11 8; |
|
| 309 | 309 | load w32 %25 %20 8; |
|
| 310 | 310 | eq w32 %26 %24 %25; |
|
| 311 | 311 | and w32 %27 %23 %26; |
|
| 312 | 312 | br.ne w32 %27 0 @assert.ok6 @assert.fail5; |
| 358 | 358 | @then15 |
|
| 359 | 359 | ret %7; |
|
| 360 | 360 | @merge16 |
|
| 361 | 361 | ret 0; |
|
| 362 | 362 | } |
|
| 363 | - |
test/tests/optional.aggregate.eq.ril
+3 -3
| 1 | - | fn w8 $optPairEq(w64 %0, w64 %1) { |
|
| 1 | + | fn w8 $optPairEq(ptr %0, ptr %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | load w8 %2 %0 0; |
|
| 4 | 4 | load w8 %3 %1 0; |
|
| 5 | 5 | eq w8 %4 %2 %3; |
|
| 6 | 6 | eq w8 %5 %2 0; |
| 14 | 14 | or w32 %13 %5 %12; |
|
| 15 | 15 | and w32 %14 %4 %13; |
|
| 16 | 16 | ret %14; |
|
| 17 | 17 | } |
|
| 18 | 18 | ||
| 19 | - | fn w8 $optI32Eq(w64 %0, w64 %1) { |
|
| 19 | + | fn w8 $optI32Eq(ptr %0, ptr %1) { |
|
| 20 | 20 | @entry0 |
|
| 21 | 21 | load w8 %2 %0 0; |
|
| 22 | 22 | load w8 %3 %1 0; |
|
| 23 | 23 | eq w8 %4 %2 %3; |
|
| 24 | 24 | eq w8 %5 %2 0; |
| 28 | 28 | or w32 %9 %5 %8; |
|
| 29 | 29 | and w32 %10 %4 %9; |
|
| 30 | 30 | ret %10; |
|
| 31 | 31 | } |
|
| 32 | 32 | ||
| 33 | - | fn w8 $optI32EqNil(w64 %0) { |
|
| 33 | + | fn w8 $optI32EqNil(ptr %0) { |
|
| 34 | 34 | @entry0 |
|
| 35 | 35 | load w8 %1 %0 0; |
|
| 36 | 36 | eq w8 %2 %1 0; |
|
| 37 | 37 | ret %2; |
|
| 38 | 38 | } |
test/tests/optional.eq.ril
+1 -1
| 1 | - | fn w8 $optionalEq(w64 %0, w64 %1) { |
|
| 1 | + | fn w8 $optionalEq(ptr %0, ptr %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | load w8 %2 %0 0; |
|
| 4 | 4 | load w8 %3 %1 0; |
|
| 5 | 5 | eq w8 %4 %2 %3; |
|
| 6 | 6 | eq w8 %5 %2 0; |
test/tests/optional.ptr.eq.ril
+8 -8
| 1 | - | fn w8 $optPtrEq(w64 %0, w64 %1) { |
|
| 1 | + | fn w8 $optPtrEq(ptr %0, ptr %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | - | eq w64 %2 %0 %1; |
|
| 3 | + | eq ptr %2 %0 %1; |
|
| 4 | 4 | ret %2; |
|
| 5 | 5 | } |
|
| 6 | 6 | ||
| 7 | - | fn w8 $optPtrNeq(w64 %0, w64 %1) { |
|
| 7 | + | fn w8 $optPtrNeq(ptr %0, ptr %1) { |
|
| 8 | 8 | @entry0 |
|
| 9 | - | ne w64 %2 %0 %1; |
|
| 9 | + | ne ptr %2 %0 %1; |
|
| 10 | 10 | ret %2; |
|
| 11 | 11 | } |
|
| 12 | 12 | ||
| 13 | - | fn w8 $optPtrEqNil(w64 %0) { |
|
| 13 | + | fn w8 $optPtrEqNil(ptr %0) { |
|
| 14 | 14 | @entry0 |
|
| 15 | - | eq w64 %1 %0 0; |
|
| 15 | + | eq ptr %1 %0 0; |
|
| 16 | 16 | ret %1; |
|
| 17 | 17 | } |
|
| 18 | 18 | ||
| 19 | - | fn w8 $optPtrNeqNil(w64 %0) { |
|
| 19 | + | fn w8 $optPtrNeqNil(ptr %0) { |
|
| 20 | 20 | @entry0 |
|
| 21 | - | ne w64 %1 %0 0; |
|
| 21 | + | ne ptr %1 %0 0; |
|
| 22 | 22 | ret %1; |
|
| 23 | 23 | } |
test/tests/pointerfn.ril
+1 -1
| 1 | - | fn w64 $takePointer(w64 %0) { |
|
| 1 | + | fn ptr $takePointer(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | ret %0; |
|
| 4 | 4 | } |
test/tests/ptr.addressof.field.ril
+2 -2
| 1 | - | fn w64 $addressOfField(w64 %0) { |
|
| 1 | + | fn ptr $addressOfField(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | - | add w64 %1 %0 4; |
|
| 3 | + | add ptr %1 %0 4; |
|
| 4 | 4 | ret %1; |
|
| 5 | 5 | } |
test/tests/ptr.addressof.local.ril
+3 -3
| 1 | - | fn w64 $addressOfRecordLocal() { |
|
| 1 | + | fn ptr $addressOfRecordLocal() { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %0 8 4; |
|
| 4 | 4 | store w32 1 %0 0; |
|
| 5 | 5 | store w32 2 %0 4; |
|
| 6 | 6 | ret %0; |
|
| 7 | 7 | } |
|
| 8 | 8 | ||
| 9 | - | fn w64 $addressOfScalarLocal() { |
|
| 9 | + | fn ptr $addressOfScalarLocal() { |
|
| 10 | 10 | @entry0 |
|
| 11 | 11 | reserve %0 4 4; |
|
| 12 | 12 | store w32 42 %0 0; |
|
| 13 | 13 | ret %0; |
|
| 14 | 14 | } |
|
| 15 | 15 | ||
| 16 | - | fn w64 $addressOfDeref(w64 %0) { |
|
| 16 | + | fn ptr $addressOfDeref(ptr %0) { |
|
| 17 | 17 | @entry0 |
|
| 18 | 18 | ret %0; |
|
| 19 | 19 | } |
test/tests/ptr.addressof.ril
+2 -2
| 1 | - | fn w64 $addressOfElem(w64 %0, w32 %1) { |
|
| 1 | + | fn ptr $addressOfElem(ptr %0, w32 %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | br.ult w32 %1 4 @guard#pass1 @guard#trap2; |
|
| 4 | 4 | @guard#pass1 |
|
| 5 | 5 | mul w64 %2 %1 4; |
|
| 6 | - | add w64 %3 %0 %2; |
|
| 6 | + | add ptr %3 %0 %2; |
|
| 7 | 7 | ret %3; |
|
| 8 | 8 | @guard#trap2 |
|
| 9 | 9 | ebreak; |
|
| 10 | 10 | unreachable; |
|
| 11 | 11 | } |
test/tests/ptr.assign.ril
+0 -1
| 4 | 4 | store w32 1 %0 0; |
|
| 5 | 5 | store w32 42 %0 0; |
|
| 6 | 6 | sload w32 %1 %0 0; |
|
| 7 | 7 | ret %1; |
|
| 8 | 8 | } |
|
| 9 | - |
test/tests/ptr.deref.record.ril
+2 -2
| 1 | - | fn w32 $derefField(w64 %0) { |
|
| 1 | + | fn w32 $derefField(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | sload w32 %1 %0 0; |
|
| 4 | 4 | ret %1; |
|
| 5 | 5 | } |
|
| 6 | 6 | ||
| 7 | - | fn w32 $derefCopy(w64 %0) { |
|
| 7 | + | fn w32 $derefCopy(ptr %0) { |
|
| 8 | 8 | @entry0 |
|
| 9 | 9 | reserve %1 8 4; |
|
| 10 | 10 | blit %1 %0 8; |
|
| 11 | 11 | sload w32 %2 %1 4; |
|
| 12 | 12 | ret %2; |
test/tests/ptr.deref.ril
+5 -6
| 2 | 2 | w32 2; |
|
| 3 | 3 | w32 4; |
|
| 4 | 4 | w32 6; |
|
| 5 | 5 | } |
|
| 6 | 6 | ||
| 7 | - | fn w32 $derefArrayIndex(w64 %0) { |
|
| 7 | + | fn w32 $derefArrayIndex(ptr %0) { |
|
| 8 | 8 | @entry0 |
|
| 9 | 9 | mul w64 %1 1 4; |
|
| 10 | - | add w64 %2 %0 %1; |
|
| 10 | + | add ptr %2 %0 %1; |
|
| 11 | 11 | sload w32 %3 %2 0; |
|
| 12 | 12 | ret %3; |
|
| 13 | 13 | } |
|
| 14 | 14 | ||
| 15 | - | fn w32 $derefSliceIndex(w64 %0) { |
|
| 15 | + | fn w32 $derefSliceIndex(ptr %0) { |
|
| 16 | 16 | @entry0 |
|
| 17 | 17 | load w32 %1 %0 8; |
|
| 18 | 18 | br.ult w32 2 %1 @guard#pass1 @guard#trap2; |
|
| 19 | 19 | @guard#pass1 |
|
| 20 | 20 | load w64 %2 %0 0; |
|
| 21 | 21 | mul w64 %3 2 4; |
|
| 22 | - | add w64 %4 %2 %3; |
|
| 22 | + | add ptr %4 %2 %3; |
|
| 23 | 23 | sload w32 %5 %4 0; |
|
| 24 | 24 | ret %5; |
|
| 25 | 25 | @guard#trap2 |
|
| 26 | 26 | ebreak; |
|
| 27 | 27 | unreachable; |
| 50 | 50 | store w32 8 %3 4; |
|
| 51 | 51 | store w32 9 %3 8; |
|
| 52 | 52 | call w32 %4 $derefArrayIndex(%3); |
|
| 53 | 53 | copy %5 $main0; |
|
| 54 | 54 | reserve %6 16 8; |
|
| 55 | - | store w64 %5 %6 0; |
|
| 55 | + | store ptr %5 %6 0; |
|
| 56 | 56 | store w32 3 %6 8; |
|
| 57 | 57 | store w32 3 %6 12; |
|
| 58 | 58 | call w32 %7 $derefSliceIndex(%6); |
|
| 59 | 59 | add w32 %8 %1 %2; |
|
| 60 | 60 | add w32 %9 %8 %4; |
|
| 61 | 61 | add w32 %10 %9 %7; |
|
| 62 | 62 | ret %10; |
|
| 63 | 63 | } |
|
| 64 | - |
test/tests/ptr.subscript.assign.ril
+2 -2
| 1 | - | fn w64 $subscriptAssign(w64 %0, w32 %1, w32 %2) { |
|
| 1 | + | fn w64 $subscriptAssign(ptr %0, w32 %1, w32 %2) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | load w32 %3 %0 8; |
|
| 4 | 4 | br.ult w32 %1 %3 @guard#pass1 @guard#trap2; |
|
| 5 | 5 | @guard#pass1 |
|
| 6 | 6 | load w64 %4 %0 0; |
|
| 7 | 7 | mul w64 %5 %1 4; |
|
| 8 | - | add w64 %6 %4 %5; |
|
| 8 | + | add ptr %6 %4 %5; |
|
| 9 | 9 | store w32 %2 %6 0; |
|
| 10 | 10 | ret; |
|
| 11 | 11 | @guard#trap2 |
|
| 12 | 12 | ebreak; |
|
| 13 | 13 | unreachable; |
test/tests/record.ctor.tuple.ril
+1 -1
| 1 | - | fn w64 $make() { |
|
| 1 | + | fn ptr $make() { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %0 8 4; |
|
| 4 | 4 | store w32 1 %0 0; |
|
| 5 | 5 | store w32 2 %0 4; |
|
| 6 | 6 | load w64 %1 %0 0; |
test/tests/record.empty.eq.ril
+2 -2
| 1 | - | fn w8 $emptyEq(w64 %0, w64 %1) { |
|
| 1 | + | fn w8 $emptyEq(ptr %0, ptr %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | ret 1; |
|
| 4 | 4 | } |
|
| 5 | 5 | ||
| 6 | - | fn w8 $emptyNeq(w64 %0, w64 %1) { |
|
| 6 | + | fn w8 $emptyNeq(ptr %0, ptr %1) { |
|
| 7 | 7 | @entry0 |
|
| 8 | 8 | eq w32 %2 1 0; |
|
| 9 | 9 | ret %2; |
|
| 10 | 10 | } |
|
| 11 | 11 |
test/tests/record.eq.ril
+1 -1
| 1 | - | fn w8 $recordEq(w64 %0, w64 %1) { |
|
| 1 | + | fn w8 $recordEq(ptr %0, ptr %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | sload w32 %2 %0 0; |
|
| 4 | 4 | sload w32 %3 %1 0; |
|
| 5 | 5 | eq w32 %4 %2 %3; |
|
| 6 | 6 | sload w32 %5 %0 4; |
test/tests/record.field.assign.ril
+0 -1
| 12 | 12 | sload w32 %4 %0 4; |
|
| 13 | 13 | add w32 %5 %3 %4; |
|
| 14 | 14 | sub w32 %6 %5 42; |
|
| 15 | 15 | ret %6; |
|
| 16 | 16 | } |
|
| 17 | - |
test/tests/record.nested.eq.ril
+2 -2
| 1 | - | fn w8 $innerEq(w64 %0, w64 %1) { |
|
| 1 | + | fn w8 $innerEq(ptr %0, ptr %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | sload w32 %2 %0 0; |
|
| 4 | 4 | sload w32 %3 %1 0; |
|
| 5 | 5 | eq w32 %4 %2 %3; |
|
| 6 | 6 | sload w32 %5 %0 4; |
| 8 | 8 | eq w32 %7 %5 %6; |
|
| 9 | 9 | and w32 %8 %4 %7; |
|
| 10 | 10 | ret %8; |
|
| 11 | 11 | } |
|
| 12 | 12 | ||
| 13 | - | fn w8 $outerEq(w64 %0, w64 %1) { |
|
| 13 | + | fn w8 $outerEq(ptr %0, ptr %1) { |
|
| 14 | 14 | @entry0 |
|
| 15 | 15 | sload w32 %2 %0 0; |
|
| 16 | 16 | sload w32 %3 %1 0; |
|
| 17 | 17 | eq w32 %4 %2 %3; |
|
| 18 | 18 | sload w32 %5 %0 4; |
test/tests/record.ptr.access.ril
+0 -1
| 7 | 7 | sload w32 %2 %0 4; |
|
| 8 | 8 | add w32 %3 %1 %2; |
|
| 9 | 9 | sub w32 %4 %3 42; |
|
| 10 | 10 | ret %4; |
|
| 11 | 11 | } |
|
| 12 | - |
test/tests/reserve.loop.ril
+0 -1
| 19 | 19 | @assert.fail4 |
|
| 20 | 20 | unreachable; |
|
| 21 | 21 | @assert.ok5 |
|
| 22 | 22 | ret 0; |
|
| 23 | 23 | } |
|
| 24 | - |
test/tests/slice.append.ril
+76 -77
| 1 | 1 | data mut $BUF align 1 { |
|
| 2 | 2 | undef * 4096; |
|
| 3 | 3 | } |
|
| 4 | 4 | ||
| 5 | - | fn w64 $newArena(w64 %0, w64 %1) { |
|
| 5 | + | fn ptr $newArena(ptr %0, ptr %1) { |
|
| 6 | 6 | @entry0 |
|
| 7 | 7 | reserve %2 24 8; |
|
| 8 | 8 | blit %2 %1 16; |
|
| 9 | 9 | store w32 0 %2 16; |
|
| 10 | 10 | blit %0 %2 24; |
|
| 11 | 11 | ret %0; |
|
| 12 | 12 | } |
|
| 13 | 13 | ||
| 14 | - | fn w64 $arenaAlloc(w64 %0, w32 %1, w32 %2) { |
|
| 14 | + | fn ptr $arenaAlloc(ptr %0, w32 %1, w32 %2) { |
|
| 15 | 15 | @entry0 |
|
| 16 | 16 | load w32 %3 %0 16; |
|
| 17 | 17 | add w32 %4 %3 %2; |
|
| 18 | 18 | sub w32 %5 %4 1; |
|
| 19 | 19 | udiv w32 %6 %5 %2; |
| 26 | 26 | @assert.ok2 |
|
| 27 | 27 | load w32 %10 %0 8; |
|
| 28 | 28 | br.ult w32 %7 %10 @guard#pass3 @guard#trap4; |
|
| 29 | 29 | @guard#pass3 |
|
| 30 | 30 | load w64 %11 %0 0; |
|
| 31 | - | add w64 %12 %11 %7; |
|
| 31 | + | add ptr %12 %11 %7; |
|
| 32 | 32 | store w32 %8 %0 16; |
|
| 33 | 33 | ret %12; |
|
| 34 | 34 | @guard#trap4 |
|
| 35 | 35 | ebreak; |
|
| 36 | 36 | unreachable; |
|
| 37 | 37 | } |
|
| 38 | 38 | ||
| 39 | - | fn w64 $arenaAllocFn(w64 %0, w32 %1, w32 %2) { |
|
| 39 | + | fn ptr $arenaAllocFn(ptr %0, w32 %1, w32 %2) { |
|
| 40 | 40 | @entry0 |
|
| 41 | - | call w64 %3 $arenaAlloc(%0, %1, %2); |
|
| 41 | + | call ptr %3 $arenaAlloc(%0, %1, %2); |
|
| 42 | 42 | ret %3; |
|
| 43 | 43 | } |
|
| 44 | 44 | ||
| 45 | - | fn w64 $arenaAllocator(w64 %0, w64 %1) { |
|
| 45 | + | fn ptr $arenaAllocator(ptr %0, ptr %1) { |
|
| 46 | 46 | @entry0 |
|
| 47 | 47 | reserve %2 16 8; |
|
| 48 | 48 | copy %3 $arenaAllocFn; |
|
| 49 | - | store w64 %3 %2 0; |
|
| 50 | - | store w64 %1 %2 8; |
|
| 49 | + | store ptr %3 %2 0; |
|
| 50 | + | store ptr %1 %2 8; |
|
| 51 | 51 | blit %0 %2 16; |
|
| 52 | 52 | ret %0; |
|
| 53 | 53 | } |
|
| 54 | 54 | ||
| 55 | 55 | fn w32 $main() { |
|
| 56 | 56 | @entry0 |
|
| 57 | 57 | copy %0 $BUF; |
|
| 58 | 58 | reserve %1 16 8; |
|
| 59 | - | store w64 %0 %1 0; |
|
| 59 | + | store ptr %0 %1 0; |
|
| 60 | 60 | store w32 4096 %1 8; |
|
| 61 | 61 | store w32 4096 %1 12; |
|
| 62 | 62 | reserve %2 24 8; |
|
| 63 | - | call w64 %3 $newArena(%2, %1); |
|
| 63 | + | call ptr %3 $newArena(%2, %1); |
|
| 64 | 64 | reserve %4 16 8; |
|
| 65 | - | call w64 %5 $arenaAllocator(%4, %3); |
|
| 65 | + | call ptr %5 $arenaAllocator(%4, %3); |
|
| 66 | 66 | mul w32 %6 4 4; |
|
| 67 | - | call w64 %7 $arenaAlloc(%3, %6, 4); |
|
| 67 | + | call ptr %7 $arenaAlloc(%3, %6, 4); |
|
| 68 | 68 | reserve %8 16 8; |
|
| 69 | - | store w64 %7 %8 0; |
|
| 69 | + | store ptr %7 %8 0; |
|
| 70 | 70 | store w32 0 %8 8; |
|
| 71 | 71 | store w32 4 %8 12; |
|
| 72 | 72 | load w32 %9 %8 8; |
|
| 73 | 73 | load w32 %10 %8 12; |
|
| 74 | 74 | br.ult w32 %9 %10 @append.store1 @append.grow2; |
|
| 75 | 75 | @append.store1 |
|
| 76 | 76 | load w64 %24 %8 0; |
|
| 77 | 77 | mul w64 %25 %9 4; |
|
| 78 | - | add w64 %26 %24 %25; |
|
| 78 | + | add ptr %26 %24 %25; |
|
| 79 | 79 | store w32 10 %26 0; |
|
| 80 | 80 | add w32 %27 %9 1; |
|
| 81 | 81 | store w32 %27 %8 8; |
|
| 82 | 82 | load w32 %32 %8 8; |
|
| 83 | 83 | load w32 %33 %8 12; |
| 86 | 86 | shl w32 %11 %10 1; |
|
| 87 | 87 | or w32 %12 %11 1; |
|
| 88 | 88 | load w64 %13 %5 0; |
|
| 89 | 89 | load w64 %14 %5 8; |
|
| 90 | 90 | mul w32 %15 %12 4; |
|
| 91 | - | call w64 %16 %13(%14, %15, 4); |
|
| 91 | + | call ptr %16 %13(%14, %15, 4); |
|
| 92 | 92 | load w64 %17 %8 0; |
|
| 93 | 93 | mul w32 %18 %9 4; |
|
| 94 | 94 | jmp @append3(0); |
|
| 95 | 95 | @append3(w32 %19) |
|
| 96 | 96 | br.ult w32 %19 %18 @append4 @append5; |
|
| 97 | 97 | @append4 |
|
| 98 | - | add w64 %20 %17 %19; |
|
| 98 | + | add ptr %20 %17 %19; |
|
| 99 | 99 | load w8 %21 %20 0; |
|
| 100 | - | add w64 %22 %16 %19; |
|
| 100 | + | add ptr %22 %16 %19; |
|
| 101 | 101 | store w8 %21 %22 0; |
|
| 102 | 102 | add w32 %23 %19 1; |
|
| 103 | 103 | jmp @append3(%23); |
|
| 104 | 104 | @append5 |
|
| 105 | 105 | store w64 %16 %8 0; |
|
| 106 | 106 | store w32 %12 %8 12; |
|
| 107 | 107 | jmp @append.store1; |
|
| 108 | 108 | @append.store6 |
|
| 109 | 109 | load w64 %47 %8 0; |
|
| 110 | 110 | mul w64 %48 %32 4; |
|
| 111 | - | add w64 %49 %47 %48; |
|
| 111 | + | add ptr %49 %47 %48; |
|
| 112 | 112 | store w32 20 %49 0; |
|
| 113 | 113 | add w32 %50 %32 1; |
|
| 114 | 114 | store w32 %50 %8 8; |
|
| 115 | 115 | load w32 %55 %8 8; |
|
| 116 | 116 | load w32 %56 %8 12; |
| 119 | 119 | shl w32 %34 %33 1; |
|
| 120 | 120 | or w32 %35 %34 1; |
|
| 121 | 121 | load w64 %36 %5 0; |
|
| 122 | 122 | load w64 %37 %5 8; |
|
| 123 | 123 | mul w32 %38 %35 4; |
|
| 124 | - | call w64 %39 %36(%37, %38, 4); |
|
| 124 | + | call ptr %39 %36(%37, %38, 4); |
|
| 125 | 125 | load w64 %40 %8 0; |
|
| 126 | 126 | mul w32 %41 %32 4; |
|
| 127 | 127 | jmp @append8(0); |
|
| 128 | 128 | @append8(w32 %42) |
|
| 129 | 129 | br.ult w32 %42 %41 @append9 @append10; |
|
| 130 | 130 | @append9 |
|
| 131 | - | add w64 %43 %40 %42; |
|
| 131 | + | add ptr %43 %40 %42; |
|
| 132 | 132 | load w8 %44 %43 0; |
|
| 133 | - | add w64 %45 %39 %42; |
|
| 133 | + | add ptr %45 %39 %42; |
|
| 134 | 134 | store w8 %44 %45 0; |
|
| 135 | 135 | add w32 %46 %42 1; |
|
| 136 | 136 | jmp @append8(%46); |
|
| 137 | 137 | @append10 |
|
| 138 | 138 | store w64 %39 %8 0; |
|
| 139 | 139 | store w32 %35 %8 12; |
|
| 140 | 140 | jmp @append.store6; |
|
| 141 | 141 | @append.store11 |
|
| 142 | 142 | load w64 %70 %8 0; |
|
| 143 | 143 | mul w64 %71 %55 4; |
|
| 144 | - | add w64 %72 %70 %71; |
|
| 144 | + | add ptr %72 %70 %71; |
|
| 145 | 145 | store w32 30 %72 0; |
|
| 146 | 146 | add w32 %73 %55 1; |
|
| 147 | 147 | store w32 %73 %8 8; |
|
| 148 | 148 | load w32 %76 %8 8; |
|
| 149 | 149 | br.ne w32 %76 3 @then16 @merge17; |
| 151 | 151 | shl w32 %57 %56 1; |
|
| 152 | 152 | or w32 %58 %57 1; |
|
| 153 | 153 | load w64 %59 %5 0; |
|
| 154 | 154 | load w64 %60 %5 8; |
|
| 155 | 155 | mul w32 %61 %58 4; |
|
| 156 | - | call w64 %62 %59(%60, %61, 4); |
|
| 156 | + | call ptr %62 %59(%60, %61, 4); |
|
| 157 | 157 | load w64 %63 %8 0; |
|
| 158 | 158 | mul w32 %64 %55 4; |
|
| 159 | 159 | jmp @append13(0); |
|
| 160 | 160 | @append13(w32 %65) |
|
| 161 | 161 | br.ult w32 %65 %64 @append14 @append15; |
|
| 162 | 162 | @append14 |
|
| 163 | - | add w64 %66 %63 %65; |
|
| 163 | + | add ptr %66 %63 %65; |
|
| 164 | 164 | load w8 %67 %66 0; |
|
| 165 | - | add w64 %68 %62 %65; |
|
| 165 | + | add ptr %68 %62 %65; |
|
| 166 | 166 | store w8 %67 %68 0; |
|
| 167 | 167 | add w32 %69 %65 1; |
|
| 168 | 168 | jmp @append13(%69); |
|
| 169 | 169 | @append15 |
|
| 170 | 170 | store w64 %62 %8 0; |
| 198 | 198 | load w32 %86 %8 8; |
|
| 199 | 199 | br.ult w32 2 %86 @guard#pass30 @guard#trap31; |
|
| 200 | 200 | @guard#pass26 |
|
| 201 | 201 | load w64 %82 %8 0; |
|
| 202 | 202 | mul w64 %83 1 4; |
|
| 203 | - | add w64 %84 %82 %83; |
|
| 203 | + | add ptr %84 %82 %83; |
|
| 204 | 204 | sload w32 %85 %84 0; |
|
| 205 | 205 | br.ne w32 %85 20 @then24 @merge25; |
|
| 206 | 206 | @guard#trap27 |
|
| 207 | 207 | ebreak; |
|
| 208 | 208 | unreachable; |
| 213 | 213 | load w32 %94 %8 12; |
|
| 214 | 214 | br.ult w32 %93 %94 @append.store32 @append.grow33; |
|
| 215 | 215 | @guard#pass30 |
|
| 216 | 216 | load w64 %87 %8 0; |
|
| 217 | 217 | mul w64 %88 2 4; |
|
| 218 | - | add w64 %89 %87 %88; |
|
| 218 | + | add ptr %89 %87 %88; |
|
| 219 | 219 | sload w32 %90 %89 0; |
|
| 220 | 220 | br.ne w32 %90 30 @then28 @merge29; |
|
| 221 | 221 | @guard#trap31 |
|
| 222 | 222 | ebreak; |
|
| 223 | 223 | unreachable; |
|
| 224 | 224 | @append.store32 |
|
| 225 | 225 | load w64 %108 %8 0; |
|
| 226 | 226 | mul w64 %109 %93 4; |
|
| 227 | - | add w64 %110 %108 %109; |
|
| 227 | + | add ptr %110 %108 %109; |
|
| 228 | 228 | store w32 40 %110 0; |
|
| 229 | 229 | add w32 %111 %93 1; |
|
| 230 | 230 | store w32 %111 %8 8; |
|
| 231 | 231 | load w32 %114 %8 8; |
|
| 232 | 232 | br.ne w32 %114 4 @then37 @merge38; |
| 234 | 234 | shl w32 %95 %94 1; |
|
| 235 | 235 | or w32 %96 %95 1; |
|
| 236 | 236 | load w64 %97 %5 0; |
|
| 237 | 237 | load w64 %98 %5 8; |
|
| 238 | 238 | mul w32 %99 %96 4; |
|
| 239 | - | call w64 %100 %97(%98, %99, 4); |
|
| 239 | + | call ptr %100 %97(%98, %99, 4); |
|
| 240 | 240 | load w64 %101 %8 0; |
|
| 241 | 241 | mul w32 %102 %93 4; |
|
| 242 | 242 | jmp @append34(0); |
|
| 243 | 243 | @append34(w32 %103) |
|
| 244 | 244 | br.ult w32 %103 %102 @append35 @append36; |
|
| 245 | 245 | @append35 |
|
| 246 | - | add w64 %104 %101 %103; |
|
| 246 | + | add ptr %104 %101 %103; |
|
| 247 | 247 | load w8 %105 %104 0; |
|
| 248 | - | add w64 %106 %100 %103; |
|
| 248 | + | add ptr %106 %100 %103; |
|
| 249 | 249 | store w8 %105 %106 0; |
|
| 250 | 250 | add w32 %107 %103 1; |
|
| 251 | 251 | jmp @append34(%107); |
|
| 252 | 252 | @append36 |
|
| 253 | 253 | store w64 %100 %8 0; |
| 265 | 265 | load w32 %119 %8 12; |
|
| 266 | 266 | br.ult w32 %118 %119 @append.store41 @append.grow42; |
|
| 267 | 267 | @append.store41 |
|
| 268 | 268 | load w64 %133 %8 0; |
|
| 269 | 269 | mul w64 %134 %118 4; |
|
| 270 | - | add w64 %135 %133 %134; |
|
| 270 | + | add ptr %135 %133 %134; |
|
| 271 | 271 | store w32 50 %135 0; |
|
| 272 | 272 | add w32 %136 %118 1; |
|
| 273 | 273 | store w32 %136 %8 8; |
|
| 274 | 274 | load w32 %139 %8 8; |
|
| 275 | 275 | br.ne w32 %139 5 @then46 @merge47; |
| 277 | 277 | shl w32 %120 %119 1; |
|
| 278 | 278 | or w32 %121 %120 1; |
|
| 279 | 279 | load w64 %122 %5 0; |
|
| 280 | 280 | load w64 %123 %5 8; |
|
| 281 | 281 | mul w32 %124 %121 4; |
|
| 282 | - | call w64 %125 %122(%123, %124, 4); |
|
| 282 | + | call ptr %125 %122(%123, %124, 4); |
|
| 283 | 283 | load w64 %126 %8 0; |
|
| 284 | 284 | mul w32 %127 %118 4; |
|
| 285 | 285 | jmp @append43(0); |
|
| 286 | 286 | @append43(w32 %128) |
|
| 287 | 287 | br.ult w32 %128 %127 @append44 @append45; |
|
| 288 | 288 | @append44 |
|
| 289 | - | add w64 %129 %126 %128; |
|
| 289 | + | add ptr %129 %126 %128; |
|
| 290 | 290 | load w8 %130 %129 0; |
|
| 291 | - | add w64 %131 %125 %128; |
|
| 291 | + | add ptr %131 %125 %128; |
|
| 292 | 292 | store w8 %130 %131 0; |
|
| 293 | 293 | add w32 %132 %128 1; |
|
| 294 | 294 | jmp @append43(%132); |
|
| 295 | 295 | @append45 |
|
| 296 | 296 | store w64 %125 %8 0; |
| 312 | 312 | load w32 %146 %8 8; |
|
| 313 | 313 | br.ult w32 0 %146 @guard#pass56 @guard#trap57; |
|
| 314 | 314 | @guard#pass52 |
|
| 315 | 315 | load w64 %142 %8 0; |
|
| 316 | 316 | mul w64 %143 4 4; |
|
| 317 | - | add w64 %144 %142 %143; |
|
| 317 | + | add ptr %144 %142 %143; |
|
| 318 | 318 | sload w32 %145 %144 0; |
|
| 319 | 319 | br.ne w32 %145 50 @then50 @merge51; |
|
| 320 | 320 | @guard#trap53 |
|
| 321 | 321 | ebreak; |
|
| 322 | 322 | unreachable; |
| 334 | 334 | unreachable; |
|
| 335 | 335 | @then58 |
|
| 336 | 336 | ret 12; |
|
| 337 | 337 | @merge59 |
|
| 338 | 338 | reserve %164 16 8; |
|
| 339 | - | store w64 %7 %164 0; |
|
| 339 | + | store ptr %7 %164 0; |
|
| 340 | 340 | store w32 0 %164 8; |
|
| 341 | 341 | store w32 0 %164 12; |
|
| 342 | 342 | load w32 %167 %164 8; |
|
| 343 | 343 | load w32 %168 %164 12; |
|
| 344 | 344 | br.ult w32 %167 %168 @append.store62 @append.grow63; |
|
| 345 | 345 | @guard#pass60 |
|
| 346 | 346 | load w64 %150 %8 0; |
|
| 347 | 347 | mul w64 %151 3 4; |
|
| 348 | - | add w64 %152 %150 %151; |
|
| 348 | + | add ptr %152 %150 %151; |
|
| 349 | 349 | sload w32 %153 %152 0; |
|
| 350 | 350 | br.ne w32 %153 40 @then58 @merge59; |
|
| 351 | 351 | @guard#trap61 |
|
| 352 | 352 | ebreak; |
|
| 353 | 353 | unreachable; |
|
| 354 | 354 | @append.store62 |
|
| 355 | 355 | load w64 %182 %164 0; |
|
| 356 | 356 | mul w64 %183 %167 4; |
|
| 357 | - | add w64 %184 %182 %183; |
|
| 357 | + | add ptr %184 %182 %183; |
|
| 358 | 358 | store w32 99 %184 0; |
|
| 359 | 359 | add w32 %185 %167 1; |
|
| 360 | 360 | store w32 %185 %164 8; |
|
| 361 | 361 | load w32 %188 %164 8; |
|
| 362 | 362 | br.ne w32 %188 1 @then67 @merge68; |
| 364 | 364 | shl w32 %169 %168 1; |
|
| 365 | 365 | or w32 %170 %169 1; |
|
| 366 | 366 | load w64 %171 %5 0; |
|
| 367 | 367 | load w64 %172 %5 8; |
|
| 368 | 368 | mul w32 %173 %170 4; |
|
| 369 | - | call w64 %174 %171(%172, %173, 4); |
|
| 369 | + | call ptr %174 %171(%172, %173, 4); |
|
| 370 | 370 | load w64 %175 %164 0; |
|
| 371 | 371 | mul w32 %176 %167 4; |
|
| 372 | 372 | jmp @append64(0); |
|
| 373 | 373 | @append64(w32 %177) |
|
| 374 | 374 | br.ult w32 %177 %176 @append65 @append66; |
|
| 375 | 375 | @append65 |
|
| 376 | - | add w64 %178 %175 %177; |
|
| 376 | + | add ptr %178 %175 %177; |
|
| 377 | 377 | load w8 %179 %178 0; |
|
| 378 | - | add w64 %180 %174 %177; |
|
| 378 | + | add ptr %180 %174 %177; |
|
| 379 | 379 | store w8 %179 %180 0; |
|
| 380 | 380 | add w32 %181 %177 1; |
|
| 381 | 381 | jmp @append64(%181); |
|
| 382 | 382 | @append66 |
|
| 383 | 383 | store w64 %174 %164 0; |
| 408 | 408 | unreachable; |
|
| 409 | 409 | @loop75(w32 %197, w32 %201) |
|
| 410 | 410 | br.slt w32 %197 %195 @body76 @merge77; |
|
| 411 | 411 | @body76 |
|
| 412 | 412 | mul w64 %198 %197 4; |
|
| 413 | - | add w64 %199 %196 %198; |
|
| 413 | + | add ptr %199 %196 %198; |
|
| 414 | 414 | sload w32 %200 %199 0; |
|
| 415 | 415 | add w32 %202 %201 %200; |
|
| 416 | 416 | add w32 %203 %197 1; |
|
| 417 | 417 | jmp @loop75(%203, %202); |
|
| 418 | 418 | @merge77 |
|
| 419 | 419 | br.ne w32 %201 150 @then78 @merge79; |
|
| 420 | 420 | @then78 |
|
| 421 | 421 | ret 16; |
|
| 422 | 422 | @merge79 |
|
| 423 | - | call w64 %217 $arenaAlloc(%3, 2, 1); |
|
| 423 | + | call ptr %217 $arenaAlloc(%3, 2, 1); |
|
| 424 | 424 | reserve %218 16 8; |
|
| 425 | - | store w64 %217 %218 0; |
|
| 425 | + | store ptr %217 %218 0; |
|
| 426 | 426 | store w32 0 %218 8; |
|
| 427 | 427 | store w32 2 %218 12; |
|
| 428 | 428 | load w32 %222 %218 8; |
|
| 429 | 429 | load w32 %223 %218 12; |
|
| 430 | 430 | br.ult w32 %222 %223 @append.store80 @append.grow81; |
|
| 431 | 431 | @append.store80 |
|
| 432 | 432 | load w64 %237 %218 0; |
|
| 433 | - | add w64 %238 %237 %222; |
|
| 433 | + | add ptr %238 %237 %222; |
|
| 434 | 434 | store w8 171 %238 0; |
|
| 435 | 435 | add w32 %239 %222 1; |
|
| 436 | 436 | store w32 %239 %218 8; |
|
| 437 | 437 | load w32 %244 %218 8; |
|
| 438 | 438 | load w32 %245 %218 12; |
| 441 | 441 | shl w32 %224 %223 1; |
|
| 442 | 442 | or w32 %225 %224 1; |
|
| 443 | 443 | load w64 %226 %5 0; |
|
| 444 | 444 | load w64 %227 %5 8; |
|
| 445 | 445 | mul w32 %228 %225 1; |
|
| 446 | - | call w64 %229 %226(%227, %228, 1); |
|
| 446 | + | call ptr %229 %226(%227, %228, 1); |
|
| 447 | 447 | load w64 %230 %218 0; |
|
| 448 | 448 | mul w32 %231 %222 1; |
|
| 449 | 449 | jmp @append82(0); |
|
| 450 | 450 | @append82(w32 %232) |
|
| 451 | 451 | br.ult w32 %232 %231 @append83 @append84; |
|
| 452 | 452 | @append83 |
|
| 453 | - | add w64 %233 %230 %232; |
|
| 453 | + | add ptr %233 %230 %232; |
|
| 454 | 454 | load w8 %234 %233 0; |
|
| 455 | - | add w64 %235 %229 %232; |
|
| 455 | + | add ptr %235 %229 %232; |
|
| 456 | 456 | store w8 %234 %235 0; |
|
| 457 | 457 | add w32 %236 %232 1; |
|
| 458 | 458 | jmp @append82(%236); |
|
| 459 | 459 | @append84 |
|
| 460 | 460 | store w64 %229 %218 0; |
|
| 461 | 461 | store w32 %225 %218 12; |
|
| 462 | 462 | jmp @append.store80; |
|
| 463 | 463 | @append.store85 |
|
| 464 | 464 | load w64 %259 %218 0; |
|
| 465 | - | add w64 %260 %259 %244; |
|
| 465 | + | add ptr %260 %259 %244; |
|
| 466 | 466 | store w8 205 %260 0; |
|
| 467 | 467 | add w32 %261 %244 1; |
|
| 468 | 468 | store w32 %261 %218 8; |
|
| 469 | 469 | load w32 %264 %218 8; |
|
| 470 | 470 | br.ne w32 %264 2 @then90 @merge91; |
| 472 | 472 | shl w32 %246 %245 1; |
|
| 473 | 473 | or w32 %247 %246 1; |
|
| 474 | 474 | load w64 %248 %5 0; |
|
| 475 | 475 | load w64 %249 %5 8; |
|
| 476 | 476 | mul w32 %250 %247 1; |
|
| 477 | - | call w64 %251 %248(%249, %250, 1); |
|
| 477 | + | call ptr %251 %248(%249, %250, 1); |
|
| 478 | 478 | load w64 %252 %218 0; |
|
| 479 | 479 | mul w32 %253 %244 1; |
|
| 480 | 480 | jmp @append87(0); |
|
| 481 | 481 | @append87(w32 %254) |
|
| 482 | 482 | br.ult w32 %254 %253 @append88 @append89; |
|
| 483 | 483 | @append88 |
|
| 484 | - | add w64 %255 %252 %254; |
|
| 484 | + | add ptr %255 %252 %254; |
|
| 485 | 485 | load w8 %256 %255 0; |
|
| 486 | - | add w64 %257 %251 %254; |
|
| 486 | + | add ptr %257 %251 %254; |
|
| 487 | 487 | store w8 %256 %257 0; |
|
| 488 | 488 | add w32 %258 %254 1; |
|
| 489 | 489 | jmp @append87(%258); |
|
| 490 | 490 | @append89 |
|
| 491 | 491 | store w64 %251 %218 0; |
| 514 | 514 | load w32 %274 %218 8; |
|
| 515 | 515 | load w32 %275 %218 12; |
|
| 516 | 516 | br.ult w32 %274 %275 @append.store100 @append.grow101; |
|
| 517 | 517 | @guard#pass98 |
|
| 518 | 518 | load w64 %269 %218 0; |
|
| 519 | - | add w64 %270 %269 1; |
|
| 519 | + | add ptr %270 %269 1; |
|
| 520 | 520 | load w8 %271 %270 0; |
|
| 521 | 521 | br.ne w8 %271 205 @then96 @merge97; |
|
| 522 | 522 | @guard#trap99 |
|
| 523 | 523 | ebreak; |
|
| 524 | 524 | unreachable; |
|
| 525 | 525 | @append.store100 |
|
| 526 | 526 | load w64 %289 %218 0; |
|
| 527 | - | add w64 %290 %289 %274; |
|
| 527 | + | add ptr %290 %289 %274; |
|
| 528 | 528 | store w8 239 %290 0; |
|
| 529 | 529 | add w32 %291 %274 1; |
|
| 530 | 530 | store w32 %291 %218 8; |
|
| 531 | 531 | load w32 %294 %218 8; |
|
| 532 | 532 | br.ne w32 %294 3 @then105 @merge106; |
| 534 | 534 | shl w32 %276 %275 1; |
|
| 535 | 535 | or w32 %277 %276 1; |
|
| 536 | 536 | load w64 %278 %5 0; |
|
| 537 | 537 | load w64 %279 %5 8; |
|
| 538 | 538 | mul w32 %280 %277 1; |
|
| 539 | - | call w64 %281 %278(%279, %280, 1); |
|
| 539 | + | call ptr %281 %278(%279, %280, 1); |
|
| 540 | 540 | load w64 %282 %218 0; |
|
| 541 | 541 | mul w32 %283 %274 1; |
|
| 542 | 542 | jmp @append102(0); |
|
| 543 | 543 | @append102(w32 %284) |
|
| 544 | 544 | br.ult w32 %284 %283 @append103 @append104; |
|
| 545 | 545 | @append103 |
|
| 546 | - | add w64 %285 %282 %284; |
|
| 546 | + | add ptr %285 %282 %284; |
|
| 547 | 547 | load w8 %286 %285 0; |
|
| 548 | - | add w64 %287 %281 %284; |
|
| 548 | + | add ptr %287 %281 %284; |
|
| 549 | 549 | store w8 %286 %287 0; |
|
| 550 | 550 | add w32 %288 %284 1; |
|
| 551 | 551 | jmp @append102(%288); |
|
| 552 | 552 | @append104 |
|
| 553 | 553 | store w64 %281 %218 0; |
| 568 | 568 | @merge110 |
|
| 569 | 569 | load w32 %300 %218 8; |
|
| 570 | 570 | br.ult w32 0 %300 @guard#pass115 @guard#trap116; |
|
| 571 | 571 | @guard#pass111 |
|
| 572 | 572 | load w64 %297 %218 0; |
|
| 573 | - | add w64 %298 %297 2; |
|
| 573 | + | add ptr %298 %297 2; |
|
| 574 | 574 | load w8 %299 %298 0; |
|
| 575 | 575 | br.ne w8 %299 239 @then109 @merge110; |
|
| 576 | 576 | @guard#trap112 |
|
| 577 | 577 | ebreak; |
|
| 578 | 578 | unreachable; |
|
| 579 | 579 | @then113 |
|
| 580 | 580 | ret 23; |
|
| 581 | 581 | @merge114 |
|
| 582 | 582 | mul w32 %309 4 2; |
|
| 583 | - | call w64 %310 $arenaAlloc(%3, %309, 4); |
|
| 583 | + | call ptr %310 $arenaAlloc(%3, %309, 4); |
|
| 584 | 584 | reserve %311 16 8; |
|
| 585 | - | store w64 %310 %311 0; |
|
| 585 | + | store ptr %310 %311 0; |
|
| 586 | 586 | store w32 0 %311 8; |
|
| 587 | 587 | store w32 2 %311 12; |
|
| 588 | 588 | load w32 %314 %311 8; |
|
| 589 | 589 | load w32 %315 %311 12; |
|
| 590 | 590 | br.ult w32 %314 %315 @append.store117 @append.grow118; |
| 596 | 596 | ebreak; |
|
| 597 | 597 | unreachable; |
|
| 598 | 598 | @append.store117 |
|
| 599 | 599 | load w64 %329 %311 0; |
|
| 600 | 600 | mul w64 %330 %314 4; |
|
| 601 | - | add w64 %331 %329 %330; |
|
| 601 | + | add ptr %331 %329 %330; |
|
| 602 | 602 | store w32 42 %331 0; |
|
| 603 | 603 | add w32 %332 %314 1; |
|
| 604 | 604 | store w32 %332 %311 8; |
|
| 605 | 605 | blit %311 %311 16; |
|
| 606 | 606 | load w32 %335 %311 8; |
| 609 | 609 | shl w32 %316 %315 1; |
|
| 610 | 610 | or w32 %317 %316 1; |
|
| 611 | 611 | load w64 %318 %5 0; |
|
| 612 | 612 | load w64 %319 %5 8; |
|
| 613 | 613 | mul w32 %320 %317 4; |
|
| 614 | - | call w64 %321 %318(%319, %320, 4); |
|
| 614 | + | call ptr %321 %318(%319, %320, 4); |
|
| 615 | 615 | load w64 %322 %311 0; |
|
| 616 | 616 | mul w32 %323 %314 4; |
|
| 617 | 617 | jmp @append119(0); |
|
| 618 | 618 | @append119(w32 %324) |
|
| 619 | 619 | br.ult w32 %324 %323 @append120 @append121; |
|
| 620 | 620 | @append120 |
|
| 621 | - | add w64 %325 %322 %324; |
|
| 621 | + | add ptr %325 %322 %324; |
|
| 622 | 622 | load w8 %326 %325 0; |
|
| 623 | - | add w64 %327 %321 %324; |
|
| 623 | + | add ptr %327 %321 %324; |
|
| 624 | 624 | store w8 %326 %327 0; |
|
| 625 | 625 | add w32 %328 %324 1; |
|
| 626 | 626 | jmp @append119(%328); |
|
| 627 | 627 | @append121 |
|
| 628 | 628 | store w64 %321 %311 0; |
| 647 | 647 | ebreak; |
|
| 648 | 648 | unreachable; |
|
| 649 | 649 | @append.store128 |
|
| 650 | 650 | load w64 %356 %311 0; |
|
| 651 | 651 | mul w64 %357 %341 4; |
|
| 652 | - | add w64 %358 %356 %357; |
|
| 652 | + | add ptr %358 %356 %357; |
|
| 653 | 653 | store w32 43 %358 0; |
|
| 654 | 654 | add w32 %359 %341 1; |
|
| 655 | 655 | store w32 %359 %311 8; |
|
| 656 | 656 | blit %311 %311 16; |
|
| 657 | 657 | load w32 %362 %311 8; |
| 660 | 660 | shl w32 %343 %342 1; |
|
| 661 | 661 | or w32 %344 %343 1; |
|
| 662 | 662 | load w64 %345 %5 0; |
|
| 663 | 663 | load w64 %346 %5 8; |
|
| 664 | 664 | mul w32 %347 %344 4; |
|
| 665 | - | call w64 %348 %345(%346, %347, 4); |
|
| 665 | + | call ptr %348 %345(%346, %347, 4); |
|
| 666 | 666 | load w64 %349 %311 0; |
|
| 667 | 667 | mul w32 %350 %341 4; |
|
| 668 | 668 | jmp @append130(0); |
|
| 669 | 669 | @append130(w32 %351) |
|
| 670 | 670 | br.ult w32 %351 %350 @append131 @append132; |
|
| 671 | 671 | @append131 |
|
| 672 | - | add w64 %352 %349 %351; |
|
| 672 | + | add ptr %352 %349 %351; |
|
| 673 | 673 | load w8 %353 %352 0; |
|
| 674 | - | add w64 %354 %348 %351; |
|
| 674 | + | add ptr %354 %348 %351; |
|
| 675 | 675 | store w8 %353 %354 0; |
|
| 676 | 676 | add w32 %355 %351 1; |
|
| 677 | 677 | jmp @append130(%355); |
|
| 678 | 678 | @append132 |
|
| 679 | 679 | store w64 %348 %311 0; |
| 693 | 693 | ebreak; |
|
| 694 | 694 | unreachable; |
|
| 695 | 695 | @append.store137 |
|
| 696 | 696 | load w64 %382 %311 0; |
|
| 697 | 697 | mul w64 %383 %367 4; |
|
| 698 | - | add w64 %384 %382 %383; |
|
| 698 | + | add ptr %384 %382 %383; |
|
| 699 | 699 | store w32 44 %384 0; |
|
| 700 | 700 | add w32 %385 %367 1; |
|
| 701 | 701 | store w32 %385 %311 8; |
|
| 702 | 702 | blit %311 %311 16; |
|
| 703 | 703 | load w32 %388 %311 8; |
| 706 | 706 | shl w32 %369 %368 1; |
|
| 707 | 707 | or w32 %370 %369 1; |
|
| 708 | 708 | load w64 %371 %5 0; |
|
| 709 | 709 | load w64 %372 %5 8; |
|
| 710 | 710 | mul w32 %373 %370 4; |
|
| 711 | - | call w64 %374 %371(%372, %373, 4); |
|
| 711 | + | call ptr %374 %371(%372, %373, 4); |
|
| 712 | 712 | load w64 %375 %311 0; |
|
| 713 | 713 | mul w32 %376 %367 4; |
|
| 714 | 714 | jmp @append139(0); |
|
| 715 | 715 | @append139(w32 %377) |
|
| 716 | 716 | br.ult w32 %377 %376 @append140 @append141; |
|
| 717 | 717 | @append140 |
|
| 718 | - | add w64 %378 %375 %377; |
|
| 718 | + | add ptr %378 %375 %377; |
|
| 719 | 719 | load w8 %379 %378 0; |
|
| 720 | - | add w64 %380 %374 %377; |
|
| 720 | + | add ptr %380 %374 %377; |
|
| 721 | 721 | store w8 %379 %380 0; |
|
| 722 | 722 | add w32 %381 %377 1; |
|
| 723 | 723 | jmp @append139(%381); |
|
| 724 | 724 | @append141 |
|
| 725 | 725 | store w64 %374 %311 0; |
| 735 | 735 | @assert.ok145 |
|
| 736 | 736 | load w32 %390 %311 8; |
|
| 737 | 737 | br.ult w32 0 %390 @guard#pass146 @guard#trap147; |
|
| 738 | 738 | @guard#pass146 |
|
| 739 | 739 | load w64 %391 %311 0; |
|
| 740 | - | br.ne w64 %364 %391 @assert.ok149 @assert.fail148; |
|
| 740 | + | br.ne ptr %364 %391 @assert.ok149 @assert.fail148; |
|
| 741 | 741 | @guard#trap147 |
|
| 742 | 742 | ebreak; |
|
| 743 | 743 | unreachable; |
|
| 744 | 744 | @assert.fail148 |
|
| 745 | 745 | unreachable; |
| 764 | 764 | load w32 %402 %311 8; |
|
| 765 | 765 | br.ult w32 2 %402 @guard#pass160 @guard#trap161; |
|
| 766 | 766 | @guard#pass156 |
|
| 767 | 767 | load w64 %398 %311 0; |
|
| 768 | 768 | mul w64 %399 1 4; |
|
| 769 | - | add w64 %400 %398 %399; |
|
| 769 | + | add ptr %400 %398 %399; |
|
| 770 | 770 | sload w32 %401 %400 0; |
|
| 771 | 771 | br.eq w32 %401 43 @assert.ok155 @assert.fail154; |
|
| 772 | 772 | @guard#trap157 |
|
| 773 | 773 | ebreak; |
|
| 774 | 774 | unreachable; |
| 777 | 777 | @assert.ok159 |
|
| 778 | 778 | ret 0; |
|
| 779 | 779 | @guard#pass160 |
|
| 780 | 780 | load w64 %403 %311 0; |
|
| 781 | 781 | mul w64 %404 2 4; |
|
| 782 | - | add w64 %405 %403 %404; |
|
| 782 | + | add ptr %405 %403 %404; |
|
| 783 | 783 | sload w32 %406 %405 0; |
|
| 784 | 784 | br.eq w32 %406 44 @assert.ok159 @assert.fail158; |
|
| 785 | 785 | @guard#trap161 |
|
| 786 | 786 | ebreak; |
|
| 787 | 787 | unreachable; |
|
| 788 | 788 | } |
|
| 789 | - |
test/tests/slice.basic.ril
+9 -9
| 1 | - | fn w32 $sliceLen(w64 %0) { |
|
| 1 | + | fn w32 $sliceLen(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | load w32 %1 %0 8; |
|
| 4 | 4 | ret %1; |
|
| 5 | 5 | } |
|
| 6 | 6 | ||
| 7 | - | fn w32 $sliceCap(w64 %0) { |
|
| 7 | + | fn w32 $sliceCap(ptr %0) { |
|
| 8 | 8 | @entry0 |
|
| 9 | 9 | load w32 %1 %0 12; |
|
| 10 | 10 | ret %1; |
|
| 11 | 11 | } |
|
| 12 | 12 | ||
| 13 | - | fn w64 $slicePtr(w64 %0) { |
|
| 13 | + | fn ptr $slicePtr(ptr %0) { |
|
| 14 | 14 | @entry0 |
|
| 15 | - | load w64 %1 %0 0; |
|
| 15 | + | load ptr %1 %0 0; |
|
| 16 | 16 | ret %1; |
|
| 17 | 17 | } |
|
| 18 | 18 | ||
| 19 | - | fn w64 $sliceCopy(w64 %0, w64 %1) { |
|
| 19 | + | fn ptr $sliceCopy(ptr %0, ptr %1) { |
|
| 20 | 20 | @entry0 |
|
| 21 | 21 | reserve %2 16 8; |
|
| 22 | 22 | blit %2 %1 16; |
|
| 23 | 23 | blit %0 %2 16; |
|
| 24 | 24 | ret %0; |
|
| 25 | 25 | } |
|
| 26 | 26 | ||
| 27 | - | fn w64 $sliceOf(w64 %0, w64 %1, w32 %2) { |
|
| 27 | + | fn ptr $sliceOf(ptr %0, ptr %1, w32 %2) { |
|
| 28 | 28 | @entry0 |
|
| 29 | 29 | reserve %3 16 8; |
|
| 30 | - | store w64 %1 %3 0; |
|
| 30 | + | store ptr %1 %3 0; |
|
| 31 | 31 | store w32 %2 %3 8; |
|
| 32 | 32 | store w32 %2 %3 12; |
|
| 33 | 33 | blit %0 %3 16; |
|
| 34 | 34 | ret %0; |
|
| 35 | 35 | } |
|
| 36 | 36 | ||
| 37 | - | fn w64 $sliceOfWithCap(w64 %0, w64 %1, w32 %2, w32 %3) { |
|
| 37 | + | fn ptr $sliceOfWithCap(ptr %0, ptr %1, w32 %2, w32 %3) { |
|
| 38 | 38 | @entry0 |
|
| 39 | 39 | reserve %4 16 8; |
|
| 40 | - | store w64 %1 %4 0; |
|
| 40 | + | store ptr %1 %4 0; |
|
| 41 | 41 | store w32 %2 %4 8; |
|
| 42 | 42 | store w32 %3 %4 12; |
|
| 43 | 43 | blit %0 %4 16; |
|
| 44 | 44 | ret %0; |
|
| 45 | 45 | } |
test/tests/slice.delete.ril
+18 -19
| 5 | 5 | store w32 20 %0 4; |
|
| 6 | 6 | store w32 30 %0 8; |
|
| 7 | 7 | store w32 40 %0 12; |
|
| 8 | 8 | store w32 50 %0 16; |
|
| 9 | 9 | reserve %1 16 8; |
|
| 10 | - | store w64 %0 %1 0; |
|
| 10 | + | store ptr %0 %1 0; |
|
| 11 | 11 | store w32 5 %1 8; |
|
| 12 | 12 | store w32 5 %1 12; |
|
| 13 | 13 | load w32 %2 %1 8; |
|
| 14 | 14 | br.ult w32 2 %2 @guard#pass1 @guard#trap2; |
|
| 15 | 15 | @guard#pass1 |
|
| 16 | 16 | load w64 %3 %1 0; |
|
| 17 | 17 | mul w64 %4 2 4; |
|
| 18 | - | add w64 %5 %3 %4; |
|
| 19 | - | add w64 %6 %5 4; |
|
| 18 | + | add ptr %5 %3 %4; |
|
| 19 | + | add ptr %6 %5 4; |
|
| 20 | 20 | sub w32 %7 %2 2; |
|
| 21 | 21 | sub w32 %8 %7 1; |
|
| 22 | 22 | mul w32 %9 %8 4; |
|
| 23 | 23 | jmp @delete3(0); |
|
| 24 | 24 | @guard#trap2 |
|
| 25 | 25 | ebreak; |
|
| 26 | 26 | unreachable; |
|
| 27 | 27 | @delete3(w32 %10) |
|
| 28 | 28 | br.ult w32 %10 %9 @delete4 @delete5; |
|
| 29 | 29 | @delete4 |
|
| 30 | - | add w64 %11 %6 %10; |
|
| 30 | + | add ptr %11 %6 %10; |
|
| 31 | 31 | load w8 %12 %11 0; |
|
| 32 | - | add w64 %13 %5 %10; |
|
| 32 | + | add ptr %13 %5 %10; |
|
| 33 | 33 | store w8 %12 %13 0; |
|
| 34 | 34 | add w32 %14 %10 1; |
|
| 35 | 35 | jmp @delete3(%14); |
|
| 36 | 36 | @delete5 |
|
| 37 | 37 | sub w32 %15 %2 1; |
| 61 | 61 | load w32 %26 %1 8; |
|
| 62 | 62 | br.ult w32 2 %26 @guard#pass18 @guard#trap19; |
|
| 63 | 63 | @guard#pass14 |
|
| 64 | 64 | load w64 %22 %1 0; |
|
| 65 | 65 | mul w64 %23 1 4; |
|
| 66 | - | add w64 %24 %22 %23; |
|
| 66 | + | add ptr %24 %22 %23; |
|
| 67 | 67 | sload w32 %25 %24 0; |
|
| 68 | 68 | br.ne w32 %25 20 @then12 @merge13; |
|
| 69 | 69 | @guard#trap15 |
|
| 70 | 70 | ebreak; |
|
| 71 | 71 | unreachable; |
| 75 | 75 | load w32 %31 %1 8; |
|
| 76 | 76 | br.ult w32 3 %31 @guard#pass22 @guard#trap23; |
|
| 77 | 77 | @guard#pass18 |
|
| 78 | 78 | load w64 %27 %1 0; |
|
| 79 | 79 | mul w64 %28 2 4; |
|
| 80 | - | add w64 %29 %27 %28; |
|
| 80 | + | add ptr %29 %27 %28; |
|
| 81 | 81 | sload w32 %30 %29 0; |
|
| 82 | 82 | br.ne w32 %30 40 @then16 @merge17; |
|
| 83 | 83 | @guard#trap19 |
|
| 84 | 84 | ebreak; |
|
| 85 | 85 | unreachable; |
| 89 | 89 | load w32 %36 %1 8; |
|
| 90 | 90 | br.ult w32 0 %36 @guard#pass24 @guard#trap25; |
|
| 91 | 91 | @guard#pass22 |
|
| 92 | 92 | load w64 %32 %1 0; |
|
| 93 | 93 | mul w64 %33 3 4; |
|
| 94 | - | add w64 %34 %32 %33; |
|
| 94 | + | add ptr %34 %32 %33; |
|
| 95 | 95 | sload w32 %35 %34 0; |
|
| 96 | 96 | br.ne w32 %35 50 @then20 @merge21; |
|
| 97 | 97 | @guard#trap23 |
|
| 98 | 98 | ebreak; |
|
| 99 | 99 | unreachable; |
|
| 100 | 100 | @guard#pass24 |
|
| 101 | 101 | load w64 %37 %1 0; |
|
| 102 | - | add w64 %38 %37 4; |
|
| 102 | + | add ptr %38 %37 4; |
|
| 103 | 103 | sub w32 %39 %36 0; |
|
| 104 | 104 | sub w32 %40 %39 1; |
|
| 105 | 105 | mul w32 %41 %40 4; |
|
| 106 | 106 | jmp @delete26(0); |
|
| 107 | 107 | @guard#trap25 |
|
| 108 | 108 | ebreak; |
|
| 109 | 109 | unreachable; |
|
| 110 | 110 | @delete26(w32 %42) |
|
| 111 | 111 | br.ult w32 %42 %41 @delete27 @delete28; |
|
| 112 | 112 | @delete27 |
|
| 113 | - | add w64 %43 %38 %42; |
|
| 113 | + | add ptr %43 %38 %42; |
|
| 114 | 114 | load w8 %44 %43 0; |
|
| 115 | - | add w64 %45 %37 %42; |
|
| 115 | + | add ptr %45 %37 %42; |
|
| 116 | 116 | store w8 %44 %45 0; |
|
| 117 | 117 | add w32 %46 %42 1; |
|
| 118 | 118 | jmp @delete26(%46); |
|
| 119 | 119 | @delete28 |
|
| 120 | 120 | sub w32 %47 %36 1; |
| 144 | 144 | load w32 %58 %1 8; |
|
| 145 | 145 | br.ult w32 2 %58 @guard#pass41 @guard#trap42; |
|
| 146 | 146 | @guard#pass37 |
|
| 147 | 147 | load w64 %54 %1 0; |
|
| 148 | 148 | mul w64 %55 1 4; |
|
| 149 | - | add w64 %56 %54 %55; |
|
| 149 | + | add ptr %56 %54 %55; |
|
| 150 | 150 | sload w32 %57 %56 0; |
|
| 151 | 151 | br.ne w32 %57 40 @then35 @merge36; |
|
| 152 | 152 | @guard#trap38 |
|
| 153 | 153 | ebreak; |
|
| 154 | 154 | unreachable; |
| 158 | 158 | load w32 %63 %1 8; |
|
| 159 | 159 | br.ult w32 2 %63 @guard#pass43 @guard#trap44; |
|
| 160 | 160 | @guard#pass41 |
|
| 161 | 161 | load w64 %59 %1 0; |
|
| 162 | 162 | mul w64 %60 2 4; |
|
| 163 | - | add w64 %61 %59 %60; |
|
| 163 | + | add ptr %61 %59 %60; |
|
| 164 | 164 | sload w32 %62 %61 0; |
|
| 165 | 165 | br.ne w32 %62 50 @then39 @merge40; |
|
| 166 | 166 | @guard#trap42 |
|
| 167 | 167 | ebreak; |
|
| 168 | 168 | unreachable; |
|
| 169 | 169 | @guard#pass43 |
|
| 170 | 170 | load w64 %64 %1 0; |
|
| 171 | 171 | mul w64 %65 2 4; |
|
| 172 | - | add w64 %66 %64 %65; |
|
| 173 | - | add w64 %67 %66 4; |
|
| 172 | + | add ptr %66 %64 %65; |
|
| 173 | + | add ptr %67 %66 4; |
|
| 174 | 174 | sub w32 %68 %63 2; |
|
| 175 | 175 | sub w32 %69 %68 1; |
|
| 176 | 176 | mul w32 %70 %69 4; |
|
| 177 | 177 | jmp @delete45(0); |
|
| 178 | 178 | @guard#trap44 |
|
| 179 | 179 | ebreak; |
|
| 180 | 180 | unreachable; |
|
| 181 | 181 | @delete45(w32 %71) |
|
| 182 | 182 | br.ult w32 %71 %70 @delete46 @delete47; |
|
| 183 | 183 | @delete46 |
|
| 184 | - | add w64 %72 %67 %71; |
|
| 184 | + | add ptr %72 %67 %71; |
|
| 185 | 185 | load w8 %73 %72 0; |
|
| 186 | - | add w64 %74 %66 %71; |
|
| 186 | + | add ptr %74 %66 %71; |
|
| 187 | 187 | store w8 %73 %74 0; |
|
| 188 | 188 | add w32 %75 %71 1; |
|
| 189 | 189 | jmp @delete45(%75); |
|
| 190 | 190 | @delete47 |
|
| 191 | 191 | sub w32 %76 %63 1; |
| 215 | 215 | load w32 %87 %1 12; |
|
| 216 | 216 | br.ne w32 %87 5 @then58 @merge59; |
|
| 217 | 217 | @guard#pass56 |
|
| 218 | 218 | load w64 %83 %1 0; |
|
| 219 | 219 | mul w64 %84 1 4; |
|
| 220 | - | add w64 %85 %83 %84; |
|
| 220 | + | add ptr %85 %83 %84; |
|
| 221 | 221 | sload w32 %86 %85 0; |
|
| 222 | 222 | br.ne w32 %86 40 @then54 @merge55; |
|
| 223 | 223 | @guard#trap57 |
|
| 224 | 224 | ebreak; |
|
| 225 | 225 | unreachable; |
|
| 226 | 226 | @then58 |
|
| 227 | 227 | ret 13; |
|
| 228 | 228 | @merge59 |
|
| 229 | 229 | ret 0; |
|
| 230 | 230 | } |
|
| 231 | - |
test/tests/slice.eq.ril
+4 -4
| 1 | - | fn w8 $sliceEq(w64 %0, w64 %1) { |
|
| 1 | + | fn w8 $sliceEq(ptr %0, ptr %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | - | load w64 %2 %0 0; |
|
| 4 | - | load w64 %3 %1 0; |
|
| 5 | - | eq w64 %4 %2 %3; |
|
| 3 | + | load ptr %2 %0 0; |
|
| 4 | + | load ptr %3 %1 0; |
|
| 5 | + | eq ptr %4 %2 %3; |
|
| 6 | 6 | load w32 %5 %0 8; |
|
| 7 | 7 | load w32 %6 %1 8; |
|
| 8 | 8 | eq w32 %7 %5 %6; |
|
| 9 | 9 | and w32 %8 %4 %7; |
|
| 10 | 10 | ret %8; |
test/tests/slice.index.ril
+2 -2
| 1 | - | fn w32 $sliceIndex(w64 %0, w32 %1) { |
|
| 1 | + | fn w32 $sliceIndex(ptr %0, w32 %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | load w32 %2 %0 8; |
|
| 4 | 4 | br.ult w32 %1 %2 @guard#pass1 @guard#trap2; |
|
| 5 | 5 | @guard#pass1 |
|
| 6 | 6 | load w64 %3 %0 0; |
|
| 7 | 7 | mul w64 %4 %1 4; |
|
| 8 | - | add w64 %5 %3 %4; |
|
| 8 | + | add ptr %5 %3 %4; |
|
| 9 | 9 | sload w32 %6 %5 0; |
|
| 10 | 10 | ret %6; |
|
| 11 | 11 | @guard#trap2 |
|
| 12 | 12 | ebreak; |
|
| 13 | 13 | unreachable; |
test/tests/slice.mutable.ril
+10 -10
| 1 | - | fn w64 $mutSliceStore(w64 %0, w32 %1, w32 %2) { |
|
| 1 | + | fn w64 $mutSliceStore(ptr %0, w32 %1, w32 %2) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | load w32 %3 %0 8; |
|
| 4 | 4 | br.ult w32 %1 %3 @guard#pass1 @guard#trap2; |
|
| 5 | 5 | @guard#pass1 |
|
| 6 | 6 | load w64 %4 %0 0; |
|
| 7 | 7 | mul w64 %5 %1 4; |
|
| 8 | - | add w64 %6 %4 %5; |
|
| 8 | + | add ptr %6 %4 %5; |
|
| 9 | 9 | store w32 %2 %6 0; |
|
| 10 | 10 | ret; |
|
| 11 | 11 | @guard#trap2 |
|
| 12 | 12 | ebreak; |
|
| 13 | 13 | unreachable; |
|
| 14 | 14 | } |
|
| 15 | 15 | ||
| 16 | - | fn w64 $mutSliceIncrement(w64 %0, w32 %1) { |
|
| 16 | + | fn w64 $mutSliceIncrement(ptr %0, w32 %1) { |
|
| 17 | 17 | @entry0 |
|
| 18 | 18 | load w32 %2 %0 8; |
|
| 19 | 19 | br.ult w32 %1 %2 @guard#pass1 @guard#trap2; |
|
| 20 | 20 | @guard#pass1 |
|
| 21 | 21 | load w64 %3 %0 0; |
|
| 22 | 22 | mul w64 %4 %1 4; |
|
| 23 | - | add w64 %5 %3 %4; |
|
| 23 | + | add ptr %5 %3 %4; |
|
| 24 | 24 | sload w32 %6 %5 0; |
|
| 25 | 25 | add w32 %7 %6 1; |
|
| 26 | 26 | load w32 %8 %0 8; |
|
| 27 | 27 | br.ult w32 %1 %8 @guard#pass3 @guard#trap4; |
|
| 28 | 28 | @guard#trap2 |
|
| 29 | 29 | ebreak; |
|
| 30 | 30 | unreachable; |
|
| 31 | 31 | @guard#pass3 |
|
| 32 | 32 | load w64 %9 %0 0; |
|
| 33 | 33 | mul w64 %10 %1 4; |
|
| 34 | - | add w64 %11 %9 %10; |
|
| 34 | + | add ptr %11 %9 %10; |
|
| 35 | 35 | store w32 %7 %11 0; |
|
| 36 | 36 | ret; |
|
| 37 | 37 | @guard#trap4 |
|
| 38 | 38 | ebreak; |
|
| 39 | 39 | unreachable; |
|
| 40 | 40 | } |
|
| 41 | 41 | ||
| 42 | - | fn w64 $mutSliceSwap(w64 %0, w32 %1, w32 %2) { |
|
| 42 | + | fn w64 $mutSliceSwap(ptr %0, w32 %1, w32 %2) { |
|
| 43 | 43 | @entry0 |
|
| 44 | 44 | load w32 %3 %0 8; |
|
| 45 | 45 | br.ult w32 %1 %3 @guard#pass1 @guard#trap2; |
|
| 46 | 46 | @guard#pass1 |
|
| 47 | 47 | load w64 %4 %0 0; |
|
| 48 | 48 | mul w64 %5 %1 4; |
|
| 49 | - | add w64 %6 %4 %5; |
|
| 49 | + | add ptr %6 %4 %5; |
|
| 50 | 50 | sload w32 %7 %6 0; |
|
| 51 | 51 | load w32 %8 %0 8; |
|
| 52 | 52 | br.ult w32 %2 %8 @guard#pass3 @guard#trap4; |
|
| 53 | 53 | @guard#trap2 |
|
| 54 | 54 | ebreak; |
|
| 55 | 55 | unreachable; |
|
| 56 | 56 | @guard#pass3 |
|
| 57 | 57 | load w64 %9 %0 0; |
|
| 58 | 58 | mul w64 %10 %2 4; |
|
| 59 | - | add w64 %11 %9 %10; |
|
| 59 | + | add ptr %11 %9 %10; |
|
| 60 | 60 | sload w32 %12 %11 0; |
|
| 61 | 61 | load w32 %13 %0 8; |
|
| 62 | 62 | br.ult w32 %1 %13 @guard#pass5 @guard#trap6; |
|
| 63 | 63 | @guard#trap4 |
|
| 64 | 64 | ebreak; |
|
| 65 | 65 | unreachable; |
|
| 66 | 66 | @guard#pass5 |
|
| 67 | 67 | load w64 %14 %0 0; |
|
| 68 | 68 | mul w64 %15 %1 4; |
|
| 69 | - | add w64 %16 %14 %15; |
|
| 69 | + | add ptr %16 %14 %15; |
|
| 70 | 70 | store w32 %12 %16 0; |
|
| 71 | 71 | load w32 %17 %0 8; |
|
| 72 | 72 | br.ult w32 %2 %17 @guard#pass7 @guard#trap8; |
|
| 73 | 73 | @guard#trap6 |
|
| 74 | 74 | ebreak; |
|
| 75 | 75 | unreachable; |
|
| 76 | 76 | @guard#pass7 |
|
| 77 | 77 | load w64 %18 %0 0; |
|
| 78 | 78 | mul w64 %19 %2 4; |
|
| 79 | - | add w64 %20 %18 %19; |
|
| 79 | + | add ptr %20 %18 %19; |
|
| 80 | 80 | store w32 %7 %20 0; |
|
| 81 | 81 | ret; |
|
| 82 | 82 | @guard#trap8 |
|
| 83 | 83 | ebreak; |
|
| 84 | 84 | unreachable; |
test/tests/slice.range.ril
+13 -13
| 1 | - | fn w64 $sliceRange(w64 %0, w64 %1, w32 %2, w32 %3) { |
|
| 1 | + | fn ptr $sliceRange(ptr %0, ptr %1, w32 %2, w32 %3) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | load w64 %4 %1 0; |
|
| 4 | 4 | load w32 %5 %1 8; |
|
| 5 | 5 | mul w64 %6 %2 4; |
|
| 6 | - | add w64 %7 %4 %6; |
|
| 6 | + | add ptr %7 %4 %6; |
|
| 7 | 7 | sub w32 %8 %3 %2; |
|
| 8 | 8 | reserve %9 16 8; |
|
| 9 | - | store w64 %7 %9 0; |
|
| 9 | + | store ptr %7 %9 0; |
|
| 10 | 10 | store w32 %8 %9 8; |
|
| 11 | 11 | store w32 %8 %9 12; |
|
| 12 | 12 | blit %0 %9 16; |
|
| 13 | 13 | ret %0; |
|
| 14 | 14 | } |
|
| 15 | 15 | ||
| 16 | - | fn w64 $sliceRangeOpenEnd(w64 %0, w64 %1, w32 %2) { |
|
| 16 | + | fn ptr $sliceRangeOpenEnd(ptr %0, ptr %1, w32 %2) { |
|
| 17 | 17 | @entry0 |
|
| 18 | 18 | load w64 %3 %1 0; |
|
| 19 | 19 | load w32 %4 %1 8; |
|
| 20 | 20 | mul w64 %5 %2 4; |
|
| 21 | - | add w64 %6 %3 %5; |
|
| 21 | + | add ptr %6 %3 %5; |
|
| 22 | 22 | sub w32 %7 %4 %2; |
|
| 23 | 23 | reserve %8 16 8; |
|
| 24 | - | store w64 %6 %8 0; |
|
| 24 | + | store ptr %6 %8 0; |
|
| 25 | 25 | store w32 %7 %8 8; |
|
| 26 | 26 | store w32 %7 %8 12; |
|
| 27 | 27 | blit %0 %8 16; |
|
| 28 | 28 | ret %0; |
|
| 29 | 29 | } |
|
| 30 | 30 | ||
| 31 | - | fn w64 $sliceRangeOpenStart(w64 %0, w64 %1, w32 %2) { |
|
| 31 | + | fn ptr $sliceRangeOpenStart(ptr %0, ptr %1, w32 %2) { |
|
| 32 | 32 | @entry0 |
|
| 33 | 33 | load w64 %3 %1 0; |
|
| 34 | 34 | load w32 %4 %1 8; |
|
| 35 | 35 | reserve %5 16 8; |
|
| 36 | - | store w64 %3 %5 0; |
|
| 36 | + | store ptr %3 %5 0; |
|
| 37 | 37 | store w32 %2 %5 8; |
|
| 38 | 38 | store w32 %2 %5 12; |
|
| 39 | 39 | blit %0 %5 16; |
|
| 40 | 40 | ret %0; |
|
| 41 | 41 | } |
|
| 42 | 42 | ||
| 43 | - | fn w64 $sliceRangeFull(w64 %0, w64 %1) { |
|
| 43 | + | fn ptr $sliceRangeFull(ptr %0, ptr %1) { |
|
| 44 | 44 | @entry0 |
|
| 45 | 45 | load w64 %2 %1 0; |
|
| 46 | 46 | load w32 %3 %1 8; |
|
| 47 | 47 | reserve %4 16 8; |
|
| 48 | - | store w64 %2 %4 0; |
|
| 48 | + | store ptr %2 %4 0; |
|
| 49 | 49 | store w32 %3 %4 8; |
|
| 50 | 50 | store w32 %3 %4 12; |
|
| 51 | 51 | blit %0 %4 16; |
|
| 52 | 52 | ret %0; |
|
| 53 | 53 | } |
|
| 54 | 54 | ||
| 55 | - | fn w64 $sliceArray(w64 %0, w64 %1) { |
|
| 55 | + | fn ptr $sliceArray(ptr %0, ptr %1) { |
|
| 56 | 56 | @entry0 |
|
| 57 | 57 | mul w64 %2 1 4; |
|
| 58 | - | add w64 %3 %1 %2; |
|
| 58 | + | add ptr %3 %1 %2; |
|
| 59 | 59 | sub w32 %4 3 1; |
|
| 60 | 60 | reserve %5 16 8; |
|
| 61 | - | store w64 %3 %5 0; |
|
| 61 | + | store ptr %3 %5 0; |
|
| 62 | 62 | store w32 %4 %5 8; |
|
| 63 | 63 | store w32 %4 %5 12; |
|
| 64 | 64 | blit %0 %5 16; |
|
| 65 | 65 | ret %0; |
|
| 66 | 66 | } |
test/tests/slice.runtime.i32.ril
+6 -6
| 1 | - | fn w64 $sliceWithVar(w64 %0, w32 %1) { |
|
| 1 | + | fn ptr $sliceWithVar(ptr %0, w32 %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %2 4 4; |
|
| 4 | 4 | store w32 %1 %2 0; |
|
| 5 | 5 | reserve %3 16 8; |
|
| 6 | - | store w64 %2 %3 0; |
|
| 6 | + | store ptr %2 %3 0; |
|
| 7 | 7 | store w32 1 %3 8; |
|
| 8 | 8 | store w32 1 %3 12; |
|
| 9 | 9 | blit %0 %3 16; |
|
| 10 | 10 | ret %0; |
|
| 11 | 11 | } |
|
| 12 | 12 | ||
| 13 | - | fn w64 $sliceWithVars(w64 %0, w32 %1, w32 %2) { |
|
| 13 | + | fn ptr $sliceWithVars(ptr %0, w32 %1, w32 %2) { |
|
| 14 | 14 | @entry0 |
|
| 15 | 15 | reserve %3 8 4; |
|
| 16 | 16 | store w32 %1 %3 0; |
|
| 17 | 17 | store w32 %2 %3 4; |
|
| 18 | 18 | reserve %4 16 8; |
|
| 19 | - | store w64 %3 %4 0; |
|
| 19 | + | store ptr %3 %4 0; |
|
| 20 | 20 | store w32 2 %4 8; |
|
| 21 | 21 | store w32 2 %4 12; |
|
| 22 | 22 | blit %0 %4 16; |
|
| 23 | 23 | ret %0; |
|
| 24 | 24 | } |
|
| 25 | 25 | ||
| 26 | - | fn w64 $sliceWithMixed(w64 %0, w32 %1) { |
|
| 26 | + | fn ptr $sliceWithMixed(ptr %0, w32 %1) { |
|
| 27 | 27 | @entry0 |
|
| 28 | 28 | reserve %2 12 4; |
|
| 29 | 29 | store w32 %1 %2 0; |
|
| 30 | 30 | store w32 42 %2 4; |
|
| 31 | 31 | store w32 %1 %2 8; |
|
| 32 | 32 | reserve %3 16 8; |
|
| 33 | - | store w64 %2 %3 0; |
|
| 33 | + | store ptr %2 %3 0; |
|
| 34 | 34 | store w32 3 %3 8; |
|
| 35 | 35 | store w32 3 %3 12; |
|
| 36 | 36 | blit %0 %3 16; |
|
| 37 | 37 | ret %0; |
|
| 38 | 38 | } |
test/tests/slice.runtime.literal.ril
+4 -4
| 1 | - | fn w64 $sliceWithVar(w64 %0, w8 %1) { |
|
| 1 | + | fn ptr $sliceWithVar(ptr %0, w8 %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %2 1 1; |
|
| 4 | 4 | store w8 %1 %2 0; |
|
| 5 | 5 | reserve %3 16 8; |
|
| 6 | - | store w64 %2 %3 0; |
|
| 6 | + | store ptr %2 %3 0; |
|
| 7 | 7 | store w32 1 %3 8; |
|
| 8 | 8 | store w32 1 %3 12; |
|
| 9 | 9 | blit %0 %3 16; |
|
| 10 | 10 | ret %0; |
|
| 11 | 11 | } |
|
| 12 | 12 | ||
| 13 | - | fn w64 $sliceWithVars(w64 %0, w8 %1, w8 %2) { |
|
| 13 | + | fn ptr $sliceWithVars(ptr %0, w8 %1, w8 %2) { |
|
| 14 | 14 | @entry0 |
|
| 15 | 15 | reserve %3 2 1; |
|
| 16 | 16 | store w8 %1 %3 0; |
|
| 17 | 17 | store w8 %2 %3 1; |
|
| 18 | 18 | reserve %4 16 8; |
|
| 19 | - | store w64 %3 %4 0; |
|
| 19 | + | store ptr %3 %4 0; |
|
| 20 | 20 | store w32 2 %4 8; |
|
| 21 | 21 | store w32 2 %4 12; |
|
| 22 | 22 | blit %0 %4 16; |
|
| 23 | 23 | ret %0; |
|
| 24 | 24 | } |
test/tests/trait.dispatch.ril
+9 -9
| 1 | 1 | data $"vtable::Acc::Ops" align 8 { |
|
| 2 | 2 | fn $"Acc::get"; |
|
| 3 | 3 | fn $"Acc::set"; |
|
| 4 | 4 | } |
|
| 5 | 5 | ||
| 6 | - | fn w32 $"Acc::get"(w64 %0) { |
|
| 6 | + | fn w32 $"Acc::get"(ptr %0) { |
|
| 7 | 7 | @entry0 |
|
| 8 | 8 | sload w32 %1 %0 0; |
|
| 9 | 9 | ret %1; |
|
| 10 | 10 | } |
|
| 11 | 11 | ||
| 12 | - | fn w64 $"Acc::set"(w64 %0, w32 %1) { |
|
| 12 | + | fn w64 $"Acc::set"(ptr %0, w32 %1) { |
|
| 13 | 13 | @entry0 |
|
| 14 | 14 | store w32 %1 %0 0; |
|
| 15 | 15 | ret; |
|
| 16 | 16 | } |
|
| 17 | 17 | ||
| 18 | - | fn w32 $dispatch(w64 %0) { |
|
| 18 | + | fn w32 $dispatch(ptr %0) { |
|
| 19 | 19 | @entry0 |
|
| 20 | - | load w64 %1 %0 0; |
|
| 21 | - | load w64 %2 %0 8; |
|
| 22 | - | load w64 %3 %2 8; |
|
| 20 | + | load ptr %1 %0 0; |
|
| 21 | + | load ptr %2 %0 8; |
|
| 22 | + | load ptr %3 %2 8; |
|
| 23 | 23 | call w64 %3(%1, 42); |
|
| 24 | - | load w64 %4 %0 0; |
|
| 25 | - | load w64 %5 %0 8; |
|
| 26 | - | load w64 %6 %5 0; |
|
| 24 | + | load ptr %4 %0 0; |
|
| 25 | + | load ptr %5 %0 8; |
|
| 26 | + | load ptr %6 %5 0; |
|
| 27 | 27 | call w32 %7 %6(%4); |
|
| 28 | 28 | ret %7; |
|
| 29 | 29 | } |
test/tests/trait.object.ril
+6 -6
| 1 | 1 | data $"vtable::Counter::Adder" align 8 { |
|
| 2 | 2 | fn $"Counter::add"; |
|
| 3 | 3 | } |
|
| 4 | 4 | ||
| 5 | - | fn w32 $"Counter::add"(w64 %0, w32 %1) { |
|
| 5 | + | fn w32 $"Counter::add"(ptr %0, w32 %1) { |
|
| 6 | 6 | @entry0 |
|
| 7 | 7 | sload w32 %2 %0 0; |
|
| 8 | 8 | add w32 %3 %2 %1; |
|
| 9 | 9 | store w32 %3 %0 0; |
|
| 10 | 10 | sload w32 %4 %0 0; |
| 14 | 14 | fn w32 $use_adder() { |
|
| 15 | 15 | @entry0 |
|
| 16 | 16 | reserve %0 4 4; |
|
| 17 | 17 | store w32 0 %0 0; |
|
| 18 | 18 | reserve %1 16 8; |
|
| 19 | - | store w64 %0 %1 0; |
|
| 20 | - | store w64 $"vtable::Counter::Adder" %1 8; |
|
| 21 | - | load w64 %2 %1 0; |
|
| 22 | - | load w64 %3 %1 8; |
|
| 23 | - | load w64 %4 %3 0; |
|
| 19 | + | store ptr %0 %1 0; |
|
| 20 | + | store ptr $"vtable::Counter::Adder" %1 8; |
|
| 21 | + | load ptr %2 %1 0; |
|
| 22 | + | load ptr %3 %1 8; |
|
| 23 | + | load ptr %4 %3 0; |
|
| 24 | 24 | call w32 %5 %4(%2, 1); |
|
| 25 | 25 | ret %5; |
|
| 26 | 26 | } |
test/tests/trait.supertrait.ril
+28 -29
| 14 | 14 | ||
| 15 | 15 | data $main0 align 1 { |
|
| 16 | 16 | str "abc"; |
|
| 17 | 17 | } |
|
| 18 | 18 | ||
| 19 | - | fn w32 $"Socket::read"(w64 %0, w64 %1) { |
|
| 19 | + | fn w32 $"Socket::read"(ptr %0, ptr %1) { |
|
| 20 | 20 | @entry0 |
|
| 21 | 21 | jmp @while1(0, %1, %0); |
|
| 22 | - | @while1(w32 %3, w64 %4, w64 %6) |
|
| 22 | + | @while1(w32 %3, ptr %4, ptr %6) |
|
| 23 | 23 | load w32 %5 %4 8; |
|
| 24 | 24 | br.ult w32 %3 %5 @and#then4 @and#else5; |
|
| 25 | 25 | @body2 |
|
| 26 | 26 | sload w32 %11 %6 32; |
|
| 27 | 27 | br.ult w32 %11 32 @guard#pass7 @guard#trap8; |
| 35 | 35 | @and#else5 |
|
| 36 | 36 | jmp @and#end6(0); |
|
| 37 | 37 | @and#end6(w8 %2) |
|
| 38 | 38 | br.ne w32 %2 0 @body2 @merge3; |
|
| 39 | 39 | @guard#pass7 |
|
| 40 | - | add w64 %12 %6 %11; |
|
| 40 | + | add ptr %12 %6 %11; |
|
| 41 | 41 | load w8 %13 %12 0; |
|
| 42 | 42 | load w32 %16 %4 8; |
|
| 43 | 43 | br.ult w32 %3 %16 @guard#pass9 @guard#trap10; |
|
| 44 | 44 | @guard#trap8 |
|
| 45 | 45 | ebreak; |
|
| 46 | 46 | unreachable; |
|
| 47 | 47 | @guard#pass9 |
|
| 48 | 48 | load w64 %17 %4 0; |
|
| 49 | - | add w64 %18 %17 %3; |
|
| 49 | + | add ptr %18 %17 %3; |
|
| 50 | 50 | store w8 %13 %18 0; |
|
| 51 | 51 | sload w32 %19 %6 32; |
|
| 52 | 52 | add w32 %20 %19 1; |
|
| 53 | 53 | store w32 %20 %6 32; |
|
| 54 | 54 | add w32 %21 %3 1; |
| 56 | 56 | @guard#trap10 |
|
| 57 | 57 | ebreak; |
|
| 58 | 58 | unreachable; |
|
| 59 | 59 | } |
|
| 60 | 60 | ||
| 61 | - | fn w32 $"Socket::write"(w64 %0, w64 %1) { |
|
| 61 | + | fn w32 $"Socket::write"(ptr %0, ptr %1) { |
|
| 62 | 62 | @entry0 |
|
| 63 | 63 | jmp @while1(0, %1, %0); |
|
| 64 | - | @while1(w32 %2, w64 %3, w64 %5) |
|
| 64 | + | @while1(w32 %2, ptr %3, ptr %5) |
|
| 65 | 65 | load w32 %4 %3 8; |
|
| 66 | 66 | br.ult w32 %2 %4 @body2 @merge3; |
|
| 67 | 67 | @body2 |
|
| 68 | 68 | sload w32 %6 %5 72; |
|
| 69 | 69 | br.slt w32 %6 32 @merge5 @then4; |
| 76 | 76 | @merge5 |
|
| 77 | 77 | load w32 %8 %3 8; |
|
| 78 | 78 | br.ult w32 %2 %8 @guard#pass6 @guard#trap7; |
|
| 79 | 79 | @guard#pass6 |
|
| 80 | 80 | load w64 %9 %3 0; |
|
| 81 | - | add w64 %10 %9 %2; |
|
| 81 | + | add ptr %10 %9 %2; |
|
| 82 | 82 | load w8 %11 %10 0; |
|
| 83 | 83 | sload w32 %12 %5 72; |
|
| 84 | - | add w64 %13 %5 40; |
|
| 84 | + | add ptr %13 %5 40; |
|
| 85 | 85 | br.ult w32 %12 32 @guard#pass8 @guard#trap9; |
|
| 86 | 86 | @guard#trap7 |
|
| 87 | 87 | ebreak; |
|
| 88 | 88 | unreachable; |
|
| 89 | 89 | @guard#pass8 |
|
| 90 | - | add w64 %14 %13 %12; |
|
| 90 | + | add ptr %14 %13 %12; |
|
| 91 | 91 | store w8 %11 %14 0; |
|
| 92 | 92 | sload w32 %15 %5 72; |
|
| 93 | 93 | add w32 %16 %15 1; |
|
| 94 | 94 | store w32 %16 %5 72; |
|
| 95 | 95 | add w32 %17 %2 1; |
| 97 | 97 | @guard#trap9 |
|
| 98 | 98 | ebreak; |
|
| 99 | 99 | unreachable; |
|
| 100 | 100 | } |
|
| 101 | 101 | ||
| 102 | - | fn w32 $"Socket::flush"(w64 %0) { |
|
| 102 | + | fn w32 $"Socket::flush"(ptr %0) { |
|
| 103 | 103 | @entry0 |
|
| 104 | 104 | sload w32 %1 %0 72; |
|
| 105 | 105 | store w32 0 %0 72; |
|
| 106 | 106 | ret %1; |
|
| 107 | 107 | } |
| 111 | 111 | reserve %0 76 4; |
|
| 112 | 112 | store w32 0 %0 32; |
|
| 113 | 113 | store w32 5 %0 36; |
|
| 114 | 114 | store w32 0 %0 72; |
|
| 115 | 115 | store w8 104 %0 0; |
|
| 116 | - | add w64 %1 %0 1; |
|
| 116 | + | add ptr %1 %0 1; |
|
| 117 | 117 | store w8 101 %1 0; |
|
| 118 | - | add w64 %2 %0 2; |
|
| 118 | + | add ptr %2 %0 2; |
|
| 119 | 119 | store w8 108 %2 0; |
|
| 120 | - | add w64 %3 %0 3; |
|
| 120 | + | add ptr %3 %0 3; |
|
| 121 | 121 | store w8 108 %3 0; |
|
| 122 | - | add w64 %4 %0 4; |
|
| 122 | + | add ptr %4 %0 4; |
|
| 123 | 123 | store w8 111 %4 0; |
|
| 124 | 124 | reserve %5 16 8; |
|
| 125 | - | store w64 %0 %5 0; |
|
| 126 | - | store w64 $"vtable::Socket::ReadWriter" %5 8; |
|
| 127 | - | load w64 %6 %5 0; |
|
| 128 | - | load w64 %7 %5 8; |
|
| 129 | - | load w64 %8 %7 8; |
|
| 125 | + | store ptr %0 %5 0; |
|
| 126 | + | store ptr $"vtable::Socket::ReadWriter" %5 8; |
|
| 127 | + | load ptr %6 %5 0; |
|
| 128 | + | load ptr %7 %5 8; |
|
| 129 | + | load ptr %8 %7 8; |
|
| 130 | 130 | copy %9 $main0; |
|
| 131 | 131 | reserve %10 16 8; |
|
| 132 | - | store w64 %9 %10 0; |
|
| 132 | + | store ptr %9 %10 0; |
|
| 133 | 133 | store w32 3 %10 8; |
|
| 134 | 134 | store w32 3 %10 12; |
|
| 135 | 135 | call w32 %11 %8(%6, %10); |
|
| 136 | 136 | br.eq w32 %11 3 @assert.ok2 @assert.fail1; |
|
| 137 | 137 | @assert.fail1 |
| 141 | 141 | br.eq w32 %12 3 @assert.ok4 @assert.fail3; |
|
| 142 | 142 | @assert.fail3 |
|
| 143 | 143 | unreachable; |
|
| 144 | 144 | @assert.ok4 |
|
| 145 | 145 | reserve %13 8 1; |
|
| 146 | - | load w64 %14 %5 0; |
|
| 147 | - | load w64 %15 %5 8; |
|
| 148 | - | load w64 %16 %15 0; |
|
| 146 | + | load ptr %14 %5 0; |
|
| 147 | + | load ptr %15 %5 8; |
|
| 148 | + | load ptr %16 %15 0; |
|
| 149 | 149 | reserve %17 16 8; |
|
| 150 | - | store w64 %13 %17 0; |
|
| 150 | + | store ptr %13 %17 0; |
|
| 151 | 151 | store w32 8 %17 8; |
|
| 152 | 152 | store w32 8 %17 12; |
|
| 153 | 153 | call w32 %18 %16(%14, %17); |
|
| 154 | 154 | br.eq w32 %18 5 @assert.ok6 @assert.fail5; |
|
| 155 | 155 | @assert.fail5 |
| 158 | 158 | load w8 %19 %13 0; |
|
| 159 | 159 | br.eq w8 %19 104 @assert.ok8 @assert.fail7; |
|
| 160 | 160 | @assert.fail7 |
|
| 161 | 161 | unreachable; |
|
| 162 | 162 | @assert.ok8 |
|
| 163 | - | add w64 %20 %13 4; |
|
| 163 | + | add ptr %20 %13 4; |
|
| 164 | 164 | load w8 %21 %20 0; |
|
| 165 | 165 | br.eq w8 %21 111 @assert.ok10 @assert.fail9; |
|
| 166 | 166 | @assert.fail9 |
|
| 167 | 167 | unreachable; |
|
| 168 | 168 | @assert.ok10 |
|
| 169 | - | load w64 %22 %5 0; |
|
| 170 | - | load w64 %23 %5 8; |
|
| 171 | - | load w64 %24 %23 16; |
|
| 169 | + | load ptr %22 %5 0; |
|
| 170 | + | load ptr %23 %5 8; |
|
| 171 | + | load ptr %24 %23 16; |
|
| 172 | 172 | call w32 %25 %24(%22); |
|
| 173 | 173 | br.eq w32 %25 3 @assert.ok12 @assert.fail11; |
|
| 174 | 174 | @assert.fail11 |
|
| 175 | 175 | unreachable; |
|
| 176 | 176 | @assert.ok12 |
| 179 | 179 | @assert.fail13 |
|
| 180 | 180 | unreachable; |
|
| 181 | 181 | @assert.ok14 |
|
| 182 | 182 | ret 0; |
|
| 183 | 183 | } |
|
| 184 | - |
test/tests/try.basic.ril
+5 -5
| 1 | - | fn w64 $fallible(w64 %0, w8 %1) { |
|
| 1 | + | fn ptr $fallible(ptr %0, w8 %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | br.ne w32 %1 0 @then1 @merge2; |
|
| 4 | 4 | @then1 |
|
| 5 | 5 | reserve %2 1 1; |
|
| 6 | 6 | store w8 0 %2 0; |
| 15 | 15 | store w32 7 %4 8; |
|
| 16 | 16 | blit %0 %4 12; |
|
| 17 | 17 | ret %0; |
|
| 18 | 18 | } |
|
| 19 | 19 | ||
| 20 | - | fn w64 $caller(w64 %0, w8 %1) { |
|
| 20 | + | fn ptr $caller(ptr %0, w8 %1) { |
|
| 21 | 21 | @entry0 |
|
| 22 | 22 | reserve %2 12 8; |
|
| 23 | - | call w64 %3 $fallible(%2, %1); |
|
| 23 | + | call ptr %3 $fallible(%2, %1); |
|
| 24 | 24 | load w64 %4 %3 0; |
|
| 25 | 25 | reserve %5 4 4; |
|
| 26 | 26 | br.ne w32 %4 0 @err2 @ok1; |
|
| 27 | 27 | @ok1 |
|
| 28 | 28 | sload w32 %6 %3 8; |
|
| 29 | 29 | store w32 %6 %5 0; |
|
| 30 | 30 | jmp @merge3; |
|
| 31 | 31 | @err2 |
|
| 32 | 32 | reserve %7 12 8; |
|
| 33 | 33 | store w64 %4 %7 0; |
|
| 34 | - | add w64 %8 %3 8; |
|
| 35 | - | add w64 %9 %7 8; |
|
| 34 | + | add ptr %8 %3 8; |
|
| 35 | + | add ptr %9 %7 8; |
|
| 36 | 36 | blit %9 %8 1; |
|
| 37 | 37 | blit %0 %7 12; |
|
| 38 | 38 | ret %0; |
|
| 39 | 39 | @merge3 |
|
| 40 | 40 | sload w32 %10 %5 0; |
test/tests/try.catch.ril
+3 -3
| 1 | - | fn w64 $fallible(w64 %0, w8 %1) { |
|
| 1 | + | fn ptr $fallible(ptr %0, w8 %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | br.ne w32 %1 0 @then1 @merge2; |
|
| 4 | 4 | @then1 |
|
| 5 | 5 | reserve %2 1 1; |
|
| 6 | 6 | store w8 0 %2 0; |
| 15 | 15 | store w32 42 %4 8; |
|
| 16 | 16 | blit %0 %4 12; |
|
| 17 | 17 | ret %0; |
|
| 18 | 18 | } |
|
| 19 | 19 | ||
| 20 | - | fn w64 $caller(w64 %0, w8 %1) { |
|
| 20 | + | fn ptr $caller(ptr %0, w8 %1) { |
|
| 21 | 21 | @entry0 |
|
| 22 | 22 | reserve %2 12 8; |
|
| 23 | - | call w64 %3 $fallible(%2, %1); |
|
| 23 | + | call ptr %3 $fallible(%2, %1); |
|
| 24 | 24 | load w64 %4 %3 0; |
|
| 25 | 25 | reserve %5 4 4; |
|
| 26 | 26 | br.ne w32 %4 0 @err2 @ok1; |
|
| 27 | 27 | @ok1 |
|
| 28 | 28 | sload w32 %6 %3 8; |
test/tests/try.optional.ril
+3 -3
| 1 | - | fn w64 $fallible(w64 %0, w8 %1) { |
|
| 1 | + | fn ptr $fallible(ptr %0, w8 %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | br.ne w32 %1 0 @then1 @merge2; |
|
| 4 | 4 | @then1 |
|
| 5 | 5 | reserve %2 1 1; |
|
| 6 | 6 | store w8 0 %2 0; |
| 15 | 15 | store w32 3 %4 8; |
|
| 16 | 16 | blit %0 %4 12; |
|
| 17 | 17 | ret %0; |
|
| 18 | 18 | } |
|
| 19 | 19 | ||
| 20 | - | fn w64 $caller(w64 %0, w8 %1) { |
|
| 20 | + | fn ptr $caller(ptr %0, w8 %1) { |
|
| 21 | 21 | @entry0 |
|
| 22 | 22 | reserve %2 12 8; |
|
| 23 | - | call w64 %3 $fallible(%2, %1); |
|
| 23 | + | call ptr %3 $fallible(%2, %1); |
|
| 24 | 24 | load w64 %4 %3 0; |
|
| 25 | 25 | reserve %5 8 4; |
|
| 26 | 26 | br.ne w32 %4 0 @err2 @ok1; |
|
| 27 | 27 | @ok1 |
|
| 28 | 28 | sload w32 %6 %3 8; |
test/tests/try.panic.ril
+2 -2
| 1 | - | fn w64 $fallible(w64 %0, w8 %1) { |
|
| 1 | + | fn ptr $fallible(ptr %0, w8 %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | br.ne w32 %1 0 @then1 @merge2; |
|
| 4 | 4 | @then1 |
|
| 5 | 5 | reserve %2 1 1; |
|
| 6 | 6 | store w8 0 %2 0; |
| 18 | 18 | } |
|
| 19 | 19 | ||
| 20 | 20 | fn w32 $caller(w8 %0) { |
|
| 21 | 21 | @entry0 |
|
| 22 | 22 | reserve %1 12 8; |
|
| 23 | - | call w64 %2 $fallible(%1, %0); |
|
| 23 | + | call ptr %2 $fallible(%1, %0); |
|
| 24 | 24 | load w64 %3 %2 0; |
|
| 25 | 25 | reserve %4 4 4; |
|
| 26 | 26 | br.ne w32 %3 0 @err2 @ok1; |
|
| 27 | 27 | @ok1 |
|
| 28 | 28 | sload w32 %5 %2 8; |
test/tests/undefined.record.field.ril
+1 -1
| 35 | 35 | jmp @arm1; |
|
| 36 | 36 | @arm1 |
|
| 37 | 37 | load w8 %2 %1 0; |
|
| 38 | 38 | br.eq w8 %2 0 @case2 @arm3; |
|
| 39 | 39 | @case2 |
|
| 40 | - | add w64 %3 %1 4; |
|
| 40 | + | add ptr %3 %1 4; |
|
| 41 | 41 | sload w32 %4 %3 16; |
|
| 42 | 42 | ret %4; |
|
| 43 | 43 | @arm3 |
|
| 44 | 44 | jmp @else4; |
|
| 45 | 45 | @else4 |
test/tests/union.ctor.ril
+3 -3
| 6 | 6 | fn w8 $makeBlue() { |
|
| 7 | 7 | @entry0 |
|
| 8 | 8 | ret 2; |
|
| 9 | 9 | } |
|
| 10 | 10 | ||
| 11 | - | fn w64 $makeSome() { |
|
| 11 | + | fn ptr $makeSome() { |
|
| 12 | 12 | @entry0 |
|
| 13 | 13 | reserve %0 4 4; |
|
| 14 | 14 | store w32 7 %0 0; |
|
| 15 | 15 | reserve %1 8 4; |
|
| 16 | 16 | store w8 1 %1 0; |
|
| 17 | - | add w64 %2 %1 4; |
|
| 17 | + | add ptr %2 %1 4; |
|
| 18 | 18 | blit %2 %0 4; |
|
| 19 | 19 | load w64 %3 %1 0; |
|
| 20 | 20 | ret %3; |
|
| 21 | 21 | } |
|
| 22 | 22 | ||
| 23 | - | fn w64 $makeNone() { |
|
| 23 | + | fn ptr $makeNone() { |
|
| 24 | 24 | @entry0 |
|
| 25 | 25 | reserve %0 8 4; |
|
| 26 | 26 | store w8 0 %0 0; |
|
| 27 | 27 | load w64 %1 %0 0; |
|
| 28 | 28 | ret %1; |
test/tests/union.eq.ril
+3 -3
| 2 | 2 | @entry0 |
|
| 3 | 3 | eq w8 %2 %0 %1; |
|
| 4 | 4 | ret %2; |
|
| 5 | 5 | } |
|
| 6 | 6 | ||
| 7 | - | fn w8 $maybeIntEq(w64 %0, w64 %1) { |
|
| 7 | + | fn w8 $maybeIntEq(ptr %0, ptr %1) { |
|
| 8 | 8 | @entry0 |
|
| 9 | 9 | load w8 %2 %0 0; |
|
| 10 | 10 | load w8 %3 %1 0; |
|
| 11 | 11 | br.eq w8 %2 %3 @eq#tag2 @eq#merge1(0); |
|
| 12 | 12 | @eq#merge1(w8 %4) |
| 20 | 20 | jmp @eq#merge1(%7); |
|
| 21 | 21 | @eq#unreachable4 |
|
| 22 | 22 | unreachable; |
|
| 23 | 23 | } |
|
| 24 | 24 | ||
| 25 | - | fn w8 $valueEq(w64 %0, w64 %1) { |
|
| 25 | + | fn w8 $valueEq(ptr %0, ptr %1) { |
|
| 26 | 26 | @entry0 |
|
| 27 | 27 | load w8 %2 %0 0; |
|
| 28 | 28 | load w8 %3 %1 0; |
|
| 29 | 29 | br.eq w8 %2 %3 @eq#tag2 @eq#merge1(0); |
|
| 30 | 30 | @eq#merge1(w8 %4) |
| 43 | 43 | jmp @eq#merge1(%10); |
|
| 44 | 44 | @eq#unreachable5 |
|
| 45 | 45 | unreachable; |
|
| 46 | 46 | } |
|
| 47 | 47 | ||
| 48 | - | fn w8 $shapeEq(w64 %0, w64 %1) { |
|
| 48 | + | fn w8 $shapeEq(ptr %0, ptr %1) { |
|
| 49 | 49 | @entry0 |
|
| 50 | 50 | load w8 %2 %0 0; |
|
| 51 | 51 | load w8 %3 %1 0; |
|
| 52 | 52 | br.eq w8 %2 %3 @eq#tag2 @eq#merge1(0); |
|
| 53 | 53 | @eq#merge1(w8 %4) |
test/tests/union.match.bind.ril
+1 -1
| 1 | - | fn w32 $unwrap(w64 %0) { |
|
| 1 | + | fn w32 $unwrap(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %1 8 4; |
|
| 4 | 4 | blit %1 %0 8; |
|
| 5 | 5 | jmp @arm1; |
|
| 6 | 6 | @arm1 |
test/tests/union.match.ref.ril
+9 -9
| 1 | - | fn w32 $matchColorRef(w64 %0) { |
|
| 1 | + | fn w32 $matchColorRef(ptr %0) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | jmp @arm1; |
|
| 4 | 4 | @arm1 |
|
| 5 | 5 | load w8 %1 %0 0; |
|
| 6 | 6 | br.eq w8 %1 0 @case2 @arm3; |
| 15 | 15 | jmp @case6; |
|
| 16 | 16 | @case6 |
|
| 17 | 17 | ret 2; |
|
| 18 | 18 | } |
|
| 19 | 19 | ||
| 20 | - | fn w32 $matchRef(w64 %0) { |
|
| 20 | + | fn w32 $matchRef(ptr %0) { |
|
| 21 | 21 | @entry0 |
|
| 22 | 22 | jmp @arm1; |
|
| 23 | 23 | @arm1 |
|
| 24 | 24 | load w8 %1 %0 0; |
|
| 25 | 25 | br.eq w8 %1 0 @case2 @arm3; |
|
| 26 | 26 | @case2 |
|
| 27 | 27 | ret 0; |
|
| 28 | 28 | @arm3 |
|
| 29 | 29 | jmp @case4; |
|
| 30 | 30 | @case4 |
|
| 31 | - | add w64 %2 %0 4; |
|
| 31 | + | add ptr %2 %0 4; |
|
| 32 | 32 | load w32 %3 %2 0; |
|
| 33 | 33 | ret %3; |
|
| 34 | 34 | } |
|
| 35 | 35 | ||
| 36 | - | fn w32 $ifLetRef(w64 %0) { |
|
| 36 | + | fn w32 $ifLetRef(ptr %0) { |
|
| 37 | 37 | @entry0 |
|
| 38 | 38 | load w8 %1 %0 0; |
|
| 39 | 39 | br.eq w8 %1 1 @then1 @else2; |
|
| 40 | 40 | @then1 |
|
| 41 | - | add w64 %2 %0 4; |
|
| 41 | + | add ptr %2 %0 4; |
|
| 42 | 42 | load w32 %3 %2 0; |
|
| 43 | 43 | ret %3; |
|
| 44 | 44 | @else2 |
|
| 45 | 45 | jmp @merge3; |
|
| 46 | 46 | @merge3 |
|
| 47 | 47 | ret 0; |
|
| 48 | 48 | } |
|
| 49 | 49 | ||
| 50 | - | fn w32 $whileLetRef(w64 %0) { |
|
| 50 | + | fn w32 $whileLetRef(ptr %0) { |
|
| 51 | 51 | @entry0 |
|
| 52 | 52 | jmp @while1(%0, 0); |
|
| 53 | - | @while1(w64 %1, w32 %4) |
|
| 53 | + | @while1(ptr %1, w32 %4) |
|
| 54 | 54 | load w8 %2 %1 0; |
|
| 55 | 55 | br.eq w8 %2 1 @body2 @merge3; |
|
| 56 | 56 | @body2 |
|
| 57 | - | add w64 %3 %1 4; |
|
| 57 | + | add ptr %3 %1 4; |
|
| 58 | 58 | load w32 %5 %3 0; |
|
| 59 | 59 | add w32 %6 %4 %5; |
|
| 60 | 60 | reserve %7 8 4; |
|
| 61 | 61 | store w8 0 %7 0; |
|
| 62 | 62 | blit %1 %7 8; |
|
| 63 | 63 | jmp @while1(%1, %6); |
|
| 64 | 64 | @merge3 |
|
| 65 | 65 | ret %4; |
|
| 66 | 66 | } |
|
| 67 | 67 | ||
| 68 | - | fn w32 $optionalRef(w64 %0) { |
|
| 68 | + | fn w32 $optionalRef(ptr %0) { |
|
| 69 | 69 | @entry0 |
|
| 70 | 70 | br.ne w32 %0 0 @then1 @else2; |
|
| 71 | 71 | @then1 |
|
| 72 | 72 | load w32 %1 %0 0; |
|
| 73 | 73 | ret %1; |
test/tests/union.match.tag.ril
+2 -2
| 26 | 26 | jmp @else4; |
|
| 27 | 27 | @else4 |
|
| 28 | 28 | ret 1; |
|
| 29 | 29 | } |
|
| 30 | 30 | ||
| 31 | - | fn w32 $matchTag(w64 %0) { |
|
| 31 | + | fn w32 $matchTag(ptr %0) { |
|
| 32 | 32 | @entry0 |
|
| 33 | 33 | reserve %1 8 4; |
|
| 34 | 34 | blit %1 %0 8; |
|
| 35 | 35 | jmp @arm1; |
|
| 36 | 36 | @arm1 |
| 42 | 42 | jmp @case4; |
|
| 43 | 43 | @case4 |
|
| 44 | 44 | ret 1; |
|
| 45 | 45 | } |
|
| 46 | 46 | ||
| 47 | - | fn w32 $matchElse(w64 %0) { |
|
| 47 | + | fn w32 $matchElse(ptr %0) { |
|
| 48 | 48 | @entry0 |
|
| 49 | 49 | reserve %1 8 4; |
|
| 50 | 50 | blit %1 %0 8; |
|
| 51 | 51 | jmp @arm1; |
|
| 52 | 52 | @arm1 |
test/tests/union.payload.record.eq.ril
+2 -2
| 1 | - | fn w8 $maybePointEq(w64 %0, w64 %1) { |
|
| 1 | + | fn w8 $maybePointEq(ptr %0, ptr %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | load w8 %2 %0 0; |
|
| 4 | 4 | load w8 %3 %1 0; |
|
| 5 | 5 | br.eq w8 %2 %3 @eq#tag2 @eq#merge1(0); |
|
| 6 | 6 | @eq#merge1(w8 %4) |
| 18 | 18 | jmp @eq#merge1(%11); |
|
| 19 | 19 | @eq#unreachable4 |
|
| 20 | 20 | unreachable; |
|
| 21 | 21 | } |
|
| 22 | 22 | ||
| 23 | - | fn w8 $maybePointNeq(w64 %0, w64 %1) { |
|
| 23 | + | fn w8 $maybePointNeq(ptr %0, ptr %1) { |
|
| 24 | 24 | @entry0 |
|
| 25 | 25 | load w8 %2 %0 0; |
|
| 26 | 26 | load w8 %3 %1 0; |
|
| 27 | 27 | br.eq w8 %2 %3 @eq#tag2 @eq#merge1(0); |
|
| 28 | 28 | @eq#merge1(w8 %4) |
test/tests/union.record.literal.ril
+2 -2
| 1 | - | fn w64 $makePair(w64 %0, w32 %1, w32 %2) { |
|
| 1 | + | fn ptr $makePair(ptr %0, w32 %1, w32 %2) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | reserve %3 12 4; |
|
| 4 | 4 | store w8 1 %3 0; |
|
| 5 | 5 | store w32 %1 %3 4; |
|
| 6 | 6 | store w32 %2 %3 8; |
|
| 7 | 7 | blit %0 %3 12; |
|
| 8 | 8 | ret %0; |
|
| 9 | 9 | } |
|
| 10 | 10 | ||
| 11 | - | fn w8 $isPair(w64 %0) { |
|
| 11 | + | fn w8 $isPair(ptr %0) { |
|
| 12 | 12 | @entry0 |
|
| 13 | 13 | reserve %1 12 4; |
|
| 14 | 14 | blit %1 %0 12; |
|
| 15 | 15 | jmp @arm1; |
|
| 16 | 16 | @arm1 |
test/tests/union.variant.access.ril
+4 -4
| 6 | 6 | fn w8 $assignGreen() { |
|
| 7 | 7 | @entry0 |
|
| 8 | 8 | ret 1; |
|
| 9 | 9 | } |
|
| 10 | 10 | ||
| 11 | - | fn w64 $makeNone() { |
|
| 11 | + | fn ptr $makeNone() { |
|
| 12 | 12 | @entry0 |
|
| 13 | 13 | reserve %0 8 4; |
|
| 14 | 14 | store w8 0 %0 0; |
|
| 15 | 15 | load w64 %1 %0 0; |
|
| 16 | 16 | ret %1; |
|
| 17 | 17 | } |
|
| 18 | 18 | ||
| 19 | - | fn w64 $makeSome(w32 %0) { |
|
| 19 | + | fn ptr $makeSome(w32 %0) { |
|
| 20 | 20 | @entry0 |
|
| 21 | 21 | reserve %1 4 4; |
|
| 22 | 22 | store w32 %0 %1 0; |
|
| 23 | 23 | reserve %2 8 4; |
|
| 24 | 24 | store w8 1 %2 0; |
|
| 25 | - | add w64 %3 %2 4; |
|
| 25 | + | add ptr %3 %2 4; |
|
| 26 | 26 | blit %3 %1 4; |
|
| 27 | 27 | load w64 %4 %2 0; |
|
| 28 | 28 | ret %4; |
|
| 29 | 29 | } |
|
| 30 | 30 | ||
| 31 | - | fn w64 $assignNone() { |
|
| 31 | + | fn ptr $assignNone() { |
|
| 32 | 32 | @entry0 |
|
| 33 | 33 | reserve %0 8 4; |
|
| 34 | 34 | store w8 0 %0 0; |
|
| 35 | 35 | load w64 %1 %0 0; |
|
| 36 | 36 | ret %1; |
test/tests/void.throw.ril
+5 -5
| 1 | - | fn w64 $fallible(w64 %0, w8 %1) { |
|
| 1 | + | fn ptr $fallible(ptr %0, w8 %1) { |
|
| 2 | 2 | @entry0 |
|
| 3 | 3 | br.ne w32 %1 0 @then1 @merge2; |
|
| 4 | 4 | @then1 |
|
| 5 | 5 | reserve %2 1 1; |
|
| 6 | 6 | store w8 0 %2 0; |
| 14 | 14 | store w64 0 %4 0; |
|
| 15 | 15 | blit %0 %4 9; |
|
| 16 | 16 | ret %0; |
|
| 17 | 17 | } |
|
| 18 | 18 | ||
| 19 | - | fn w64 $caller(w64 %0, w8 %1) { |
|
| 19 | + | fn ptr $caller(ptr %0, w8 %1) { |
|
| 20 | 20 | @entry0 |
|
| 21 | 21 | reserve %2 9 8; |
|
| 22 | - | call w64 %3 $fallible(%2, %1); |
|
| 22 | + | call ptr %3 $fallible(%2, %1); |
|
| 23 | 23 | load w64 %4 %3 0; |
|
| 24 | 24 | br.ne w32 %4 0 @err2 @ok1; |
|
| 25 | 25 | @ok1 |
|
| 26 | 26 | jmp @merge3; |
|
| 27 | 27 | @err2 |
|
| 28 | 28 | reserve %5 9 8; |
|
| 29 | 29 | store w64 %4 %5 0; |
|
| 30 | - | add w64 %6 %3 8; |
|
| 31 | - | add w64 %7 %5 8; |
|
| 30 | + | add ptr %6 %3 8; |
|
| 31 | + | add ptr %7 %5 8; |
|
| 32 | 32 | blit %7 %6 1; |
|
| 33 | 33 | blit %0 %5 9; |
|
| 34 | 34 | ret %0; |
|
| 35 | 35 | @merge3 |
|
| 36 | 36 | reserve %8 9 8; |