| ... | ... | @@ -338,7 +338,6 @@ fn addInst(self: *Self, inst: Mir.Inst) error{OutOfMemory}!Mir.Inst.Index { |
| 338 | 338 | fn addNop(self: *Self) error{OutOfMemory}!Mir.Inst.Index { |
| 339 | 339 | return try self.addInst(.{ |
| 340 | 340 | .tag = .nop, |
| 341 | | .cond = .al, |
| 342 | 341 | .data = .{ .nop = {} }, |
| 343 | 342 | }); |
| 344 | 343 | } |
| ... | ... | @@ -371,7 +370,6 @@ fn gen(self: *Self) !void { |
| 371 | 370 | // mov fp, sp |
| 372 | 371 | _ = try self.addInst(.{ |
| 373 | 372 | .tag = .mov, |
| 374 | | .cond = .al, |
| 375 | 373 | .data = .{ .rr_op = .{ |
| 376 | 374 | .rd = .fp, |
| 377 | 375 | .rn = .r0, |
| ... | ... | @@ -405,7 +403,6 @@ fn gen(self: *Self) !void { |
| 405 | 403 | |
| 406 | 404 | self.mir_instructions.set(push_reloc, .{ |
| 407 | 405 | .tag = .push, |
| 408 | | .cond = .al, |
| 409 | 406 | .data = .{ .register_list = saved_regs }, |
| 410 | 407 | }); |
| 411 | 408 | |
| ... | ... | @@ -416,7 +413,6 @@ fn gen(self: *Self) !void { |
| 416 | 413 | if (Instruction.Operand.fromU32(stack_size)) |op| { |
| 417 | 414 | self.mir_instructions.set(sub_reloc, .{ |
| 418 | 415 | .tag = .sub, |
| 419 | | .cond = .al, |
| 420 | 416 | .data = .{ .rr_op = .{ .rd = .sp, .rn = .sp, .op = op } }, |
| 421 | 417 | }); |
| 422 | 418 | } else { |
| ... | ... | @@ -440,7 +436,6 @@ fn gen(self: *Self) !void { |
| 440 | 436 | } else for (self.exitlude_jump_relocs.items) |jmp_reloc| { |
| 441 | 437 | self.mir_instructions.set(jmp_reloc, .{ |
| 442 | 438 | .tag = .b, |
| 443 | | .cond = .al, |
| 444 | 439 | .data = .{ .inst = @intCast(u32, self.mir_instructions.len) }, |
| 445 | 440 | }); |
| 446 | 441 | } |
| ... | ... | @@ -452,7 +447,6 @@ fn gen(self: *Self) !void { |
| 452 | 447 | // mov sp, fp |
| 453 | 448 | _ = try self.addInst(.{ |
| 454 | 449 | .tag = .mov, |
| 455 | | .cond = .al, |
| 456 | 450 | .data = .{ .rr_op = .{ |
| 457 | 451 | .rd = .sp, |
| 458 | 452 | .rn = .r0, |
| ... | ... | @@ -463,7 +457,6 @@ fn gen(self: *Self) !void { |
| 463 | 457 | // pop {fp, pc} |
| 464 | 458 | _ = try self.addInst(.{ |
| 465 | 459 | .tag = .pop, |
| 466 | | .cond = .al, |
| 467 | 460 | .data = .{ .register_list = saved_regs }, |
| 468 | 461 | }); |
| 469 | 462 | } else { |
| ... | ... | @@ -1251,7 +1244,6 @@ fn airSliceElemVal(self: *Self, inst: Air.Inst.Index) !void { |
| 1251 | 1244 | |
| 1252 | 1245 | _ = try self.addInst(.{ |
| 1253 | 1246 | .tag = tag, |
| 1254 | | .cond = .al, |
| 1255 | 1247 | .data = .{ .rr_offset = .{ |
| 1256 | 1248 | .rt = dst_reg, |
| 1257 | 1249 | .rn = base_mcv.register, |
| ... | ... | @@ -1262,7 +1254,6 @@ fn airSliceElemVal(self: *Self, inst: Air.Inst.Index) !void { |
| 1262 | 1254 | 2 => { |
| 1263 | 1255 | _ = try self.addInst(.{ |
| 1264 | 1256 | .tag = .ldrh, |
| 1265 | | .cond = .al, |
| 1266 | 1257 | .data = .{ .rr_extra_offset = .{ |
| 1267 | 1258 | .rt = dst_reg, |
| 1268 | 1259 | .rn = base_mcv.register, |
| ... | ... | @@ -1406,7 +1397,6 @@ fn load(self: *Self, dst_mcv: MCValue, ptr: MCValue, ptr_ty: Type) InnerError!vo |
| 1406 | 1397 | .register => |dst_reg| { |
| 1407 | 1398 | _ = try self.addInst(.{ |
| 1408 | 1399 | .tag = .ldr, |
| 1409 | | .cond = .al, |
| 1410 | 1400 | .data = .{ .rr_offset = .{ |
| 1411 | 1401 | .rt = dst_reg, |
| 1412 | 1402 | .rn = reg, |
| ... | ... | @@ -1430,7 +1420,6 @@ fn load(self: *Self, dst_mcv: MCValue, ptr: MCValue, ptr_ty: Type) InnerError!vo |
| 1430 | 1420 | const tmp_regs = try self.register_manager.allocRegs(2, .{ null, null }, &.{reg}); |
| 1431 | 1421 | _ = try self.addInst(.{ |
| 1432 | 1422 | .tag = .ldr, |
| 1433 | | .cond = .al, |
| 1434 | 1423 | .data = .{ .rr_offset = .{ |
| 1435 | 1424 | .rt = tmp_regs[0], |
| 1436 | 1425 | .rn = reg, |
| ... | ... | @@ -1439,7 +1428,6 @@ fn load(self: *Self, dst_mcv: MCValue, ptr: MCValue, ptr_ty: Type) InnerError!vo |
| 1439 | 1428 | }); |
| 1440 | 1429 | _ = try self.addInst(.{ |
| 1441 | 1430 | .tag = .ldr, |
| 1442 | | .cond = .al, |
| 1443 | 1431 | .data = .{ .rr_offset = .{ |
| 1444 | 1432 | .rt = tmp_regs[1], |
| 1445 | 1433 | .rn = reg, |
| ... | ... | @@ -1465,7 +1453,6 @@ fn load(self: *Self, dst_mcv: MCValue, ptr: MCValue, ptr_ty: Type) InnerError!vo |
| 1465 | 1453 | }; |
| 1466 | 1454 | _ = try self.addInst(.{ |
| 1467 | 1455 | .tag = .sub, |
| 1468 | | .cond = .al, |
| 1469 | 1456 | .data = .{ .rr_op = .{ |
| 1470 | 1457 | .rd = dst_reg, |
| 1471 | 1458 | .rn = .fp, |
| ... | ... | @@ -1479,7 +1466,6 @@ fn load(self: *Self, dst_mcv: MCValue, ptr: MCValue, ptr_ty: Type) InnerError!vo |
| 1479 | 1466 | }; |
| 1480 | 1467 | _ = try self.addInst(.{ |
| 1481 | 1468 | .tag = .mov, |
| 1482 | | .cond = .al, |
| 1483 | 1469 | .data = .{ .rr_op = .{ |
| 1484 | 1470 | .rd = len_reg, |
| 1485 | 1471 | .rn = .r0, |
| ... | ... | @@ -1560,7 +1546,6 @@ fn store(self: *Self, ptr: MCValue, value: MCValue, ptr_ty: Type, value_ty: Type |
| 1560 | 1546 | .register => |value_reg| { |
| 1561 | 1547 | _ = try self.addInst(.{ |
| 1562 | 1548 | .tag = .str, |
| 1563 | | .cond = .al, |
| 1564 | 1549 | .data = .{ .rr_offset = .{ |
| 1565 | 1550 | .rt = value_reg, |
| 1566 | 1551 | .rn = addr_reg, |
| ... | ... | @@ -1866,7 +1851,6 @@ fn genArmBinOpCode( |
| 1866 | 1851 | |
| 1867 | 1852 | _ = try self.addInst(.{ |
| 1868 | 1853 | .tag = tag, |
| 1869 | | .cond = .al, |
| 1870 | 1854 | .data = .{ .rr_op = .{ |
| 1871 | 1855 | .rd = dst_reg, |
| 1872 | 1856 | .rn = op1, |
| ... | ... | @@ -1879,7 +1863,6 @@ fn genArmBinOpCode( |
| 1879 | 1863 | |
| 1880 | 1864 | _ = try self.addInst(.{ |
| 1881 | 1865 | .tag = tag, |
| 1882 | | .cond = .al, |
| 1883 | 1866 | .data = .{ .rr_op = .{ |
| 1884 | 1867 | .rd = dst_reg, |
| 1885 | 1868 | .rn = op1, |
| ... | ... | @@ -1890,7 +1873,6 @@ fn genArmBinOpCode( |
| 1890 | 1873 | .cmp_eq => { |
| 1891 | 1874 | _ = try self.addInst(.{ |
| 1892 | 1875 | .tag = .cmp, |
| 1893 | | .cond = .al, |
| 1894 | 1876 | .data = .{ .rr_op = .{ |
| 1895 | 1877 | .rd = .r0, |
| 1896 | 1878 | .rn = op1, |
| ... | ... | @@ -1916,7 +1898,6 @@ fn genArmBinOpCode( |
| 1916 | 1898 | |
| 1917 | 1899 | _ = try self.addInst(.{ |
| 1918 | 1900 | .tag = tag, |
| 1919 | | .cond = .al, |
| 1920 | 1901 | .data = .{ .rr_shift = .{ |
| 1921 | 1902 | .rd = dst_reg, |
| 1922 | 1903 | .rm = op1, |
| ... | ... | @@ -1993,7 +1974,6 @@ fn genArmMul(self: *Self, inst: Air.Inst.Index, op_lhs: Air.Inst.Ref, op_rhs: Ai |
| 1993 | 1974 | |
| 1994 | 1975 | _ = try self.addInst(.{ |
| 1995 | 1976 | .tag = .mul, |
| 1996 | | .cond = .al, |
| 1997 | 1977 | .data = .{ .rrr = .{ |
| 1998 | 1978 | .rd = dst_mcv.register, |
| 1999 | 1979 | .rn = lhs_mcv.register, |
| ... | ... | @@ -2045,7 +2025,6 @@ fn genArmMulConstant(self: *Self, inst: Air.Inst.Index, op: Air.Inst.Ref, op_ind |
| 2045 | 2025 | |
| 2046 | 2026 | _ = try self.addInst(.{ |
| 2047 | 2027 | .tag = .mul, |
| 2048 | | .cond = .al, |
| 2049 | 2028 | .data = .{ .rrr = .{ |
| 2050 | 2029 | .rd = dst_mcv.register, |
| 2051 | 2030 | .rn = lhs_mcv.register, |
| ... | ... | @@ -2066,7 +2045,6 @@ fn genArmInlineMemcpy( |
| 2066 | 2045 | // mov count, #0 |
| 2067 | 2046 | _ = try self.addInst(.{ |
| 2068 | 2047 | .tag = .mov, |
| 2069 | | .cond = .al, |
| 2070 | 2048 | .data = .{ .rr_op = .{ |
| 2071 | 2049 | .rd = count, |
| 2072 | 2050 | .rn = .r0, |
| ... | ... | @@ -2078,7 +2056,6 @@ fn genArmInlineMemcpy( |
| 2078 | 2056 | // cmp count, len |
| 2079 | 2057 | _ = try self.addInst(.{ |
| 2080 | 2058 | .tag = .cmp, |
| 2081 | | .cond = .al, |
| 2082 | 2059 | .data = .{ .rr_op = .{ |
| 2083 | 2060 | .rd = .r0, |
| 2084 | 2061 | .rn = count, |
| ... | ... | @@ -2096,7 +2073,6 @@ fn genArmInlineMemcpy( |
| 2096 | 2073 | // ldrb tmp, [src, count] |
| 2097 | 2074 | _ = try self.addInst(.{ |
| 2098 | 2075 | .tag = .ldrb, |
| 2099 | | .cond = .al, |
| 2100 | 2076 | .data = .{ .rr_offset = .{ |
| 2101 | 2077 | .rt = tmp, |
| 2102 | 2078 | .rn = src, |
| ... | ... | @@ -2107,7 +2083,6 @@ fn genArmInlineMemcpy( |
| 2107 | 2083 | // strb tmp, [src, count] |
| 2108 | 2084 | _ = try self.addInst(.{ |
| 2109 | 2085 | .tag = .strb, |
| 2110 | | .cond = .al, |
| 2111 | 2086 | .data = .{ .rr_offset = .{ |
| 2112 | 2087 | .rt = tmp, |
| 2113 | 2088 | .rn = dst, |
| ... | ... | @@ -2118,7 +2093,6 @@ fn genArmInlineMemcpy( |
| 2118 | 2093 | // add count, count, #1 |
| 2119 | 2094 | _ = try self.addInst(.{ |
| 2120 | 2095 | .tag = .add, |
| 2121 | | .cond = .al, |
| 2122 | 2096 | .data = .{ .rr_op = .{ |
| 2123 | 2097 | .rd = count, |
| 2124 | 2098 | .rn = count, |
| ... | ... | @@ -2129,7 +2103,6 @@ fn genArmInlineMemcpy( |
| 2129 | 2103 | // b loop |
| 2130 | 2104 | _ = try self.addInst(.{ |
| 2131 | 2105 | .tag = .b, |
| 2132 | | .cond = .al, |
| 2133 | 2106 | .data = .{ .inst = @intCast(u32, self.mir_instructions.len - 5) }, |
| 2134 | 2107 | }); |
| 2135 | 2108 | |
| ... | ... | @@ -2236,7 +2209,6 @@ fn airArg(self: *Self, inst: Air.Inst.Index) !void { |
| 2236 | 2209 | fn airBreakpoint(self: *Self) !void { |
| 2237 | 2210 | _ = try self.addInst(.{ |
| 2238 | 2211 | .tag = .bkpt, |
| 2239 | | .cond = .al, |
| 2240 | 2212 | .data = .{ .imm16 = 0 }, |
| 2241 | 2213 | }); |
| 2242 | 2214 | return self.finishAirBookkeeping(); |
| ... | ... | @@ -2348,14 +2320,12 @@ fn airCall(self: *Self, inst: Air.Inst.Index) !void { |
| 2348 | 2320 | if (Target.arm.featureSetHas(self.target.cpu.features, .has_v5t)) { |
| 2349 | 2321 | _ = try self.addInst(.{ |
| 2350 | 2322 | .tag = .blx, |
| 2351 | | .cond = .al, |
| 2352 | 2323 | .data = .{ .reg = .lr }, |
| 2353 | 2324 | }); |
| 2354 | 2325 | } else { |
| 2355 | 2326 | return self.fail("TODO fix blx emulation for ARM <v5", .{}); |
| 2356 | 2327 | // _ = try self.addInst(.{ |
| 2357 | 2328 | // .tag = .mov, |
| 2358 | | // .cond = .al, |
| 2359 | 2329 | // .data = .{ .rr_op = .{ |
| 2360 | 2330 | // .rd = .lr, |
| 2361 | 2331 | // .rn = .r0, |
| ... | ... | @@ -2364,7 +2334,6 @@ fn airCall(self: *Self, inst: Air.Inst.Index) !void { |
| 2364 | 2334 | // }); |
| 2365 | 2335 | // _ = try self.addInst(.{ |
| 2366 | 2336 | // .tag = .bx, |
| 2367 | | // .cond = .al, |
| 2368 | 2337 | // .data = .{ .reg = .lr }, |
| 2369 | 2338 | // }); |
| 2370 | 2339 | } |
| ... | ... | @@ -2539,7 +2508,6 @@ fn airCondBr(self: *Self, inst: Air.Inst.Index) !void { |
| 2539 | 2508 | // bne ... |
| 2540 | 2509 | _ = try self.addInst(.{ |
| 2541 | 2510 | .tag = .cmp, |
| 2542 | | .cond = .al, |
| 2543 | 2511 | .data = .{ .rr_op = .{ |
| 2544 | 2512 | .rd = .r0, |
| 2545 | 2513 | .rn = reg, |
| ... | ... | @@ -2889,7 +2857,6 @@ fn airLoop(self: *Self, inst: Air.Inst.Index) !void { |
| 2889 | 2857 | fn jump(self: *Self, inst: Mir.Inst.Index) !void { |
| 2890 | 2858 | _ = try self.addInst(.{ |
| 2891 | 2859 | .tag = .b, |
| 2892 | | .cond = .al, |
| 2893 | 2860 | .data = .{ .inst = inst }, |
| 2894 | 2861 | }); |
| 2895 | 2862 | } |
| ... | ... | @@ -2973,7 +2940,6 @@ fn brVoid(self: *Self, block: Air.Inst.Index) !void { |
| 2973 | 2940 | // Emit a jump with a relocation. It will be patched up after the block ends. |
| 2974 | 2941 | try block_data.relocs.append(self.gpa, try self.addInst(.{ |
| 2975 | 2942 | .tag = .b, |
| 2976 | | .cond = .al, |
| 2977 | 2943 | .data = .{ .inst = undefined }, // populated later through performReloc |
| 2978 | 2944 | })); |
| 2979 | 2945 | } |
| ... | ... | @@ -3029,7 +2995,6 @@ fn airAsm(self: *Self, inst: Air.Inst.Index) !void { |
| 3029 | 2995 | if (mem.eql(u8, asm_source, "svc #0")) { |
| 3030 | 2996 | _ = try self.addInst(.{ |
| 3031 | 2997 | .tag = .svc, |
| 3032 | | .cond = .al, |
| 3033 | 2998 | .data = .{ .imm24 = 0 }, |
| 3034 | 2999 | }); |
| 3035 | 3000 | } else { |
| ... | ... | @@ -3135,7 +3100,6 @@ fn genSetStack(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) InnerErro |
| 3135 | 3100 | |
| 3136 | 3101 | _ = try self.addInst(.{ |
| 3137 | 3102 | .tag = tag, |
| 3138 | | .cond = .al, |
| 3139 | 3103 | .data = .{ .rr_offset = .{ |
| 3140 | 3104 | .rt = reg, |
| 3141 | 3105 | .rn = .fp, |
| ... | ... | @@ -3153,7 +3117,6 @@ fn genSetStack(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) InnerErro |
| 3153 | 3117 | |
| 3154 | 3118 | _ = try self.addInst(.{ |
| 3155 | 3119 | .tag = .strh, |
| 3156 | | .cond = .al, |
| 3157 | 3120 | .data = .{ .rr_extra_offset = .{ |
| 3158 | 3121 | .rt = reg, |
| 3159 | 3122 | .rn = .fp, |
| ... | ... | @@ -3200,7 +3163,6 @@ fn genSetStack(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) InnerErro |
| 3200 | 3163 | }; |
| 3201 | 3164 | _ = try self.addInst(.{ |
| 3202 | 3165 | .tag = .sub, |
| 3203 | | .cond = .al, |
| 3204 | 3166 | .data = .{ .rr_op = .{ |
| 3205 | 3167 | .rd = src_reg, |
| 3206 | 3168 | .rn = .fp, |
| ... | ... | @@ -3215,7 +3177,6 @@ fn genSetStack(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) InnerErro |
| 3215 | 3177 | }; |
| 3216 | 3178 | _ = try self.addInst(.{ |
| 3217 | 3179 | .tag = .sub, |
| 3218 | | .cond = .al, |
| 3219 | 3180 | .data = .{ .rr_op = .{ |
| 3220 | 3181 | .rd = dst_reg, |
| 3221 | 3182 | .rn = .fp, |
| ... | ... | @@ -3230,7 +3191,6 @@ fn genSetStack(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) InnerErro |
| 3230 | 3191 | }; |
| 3231 | 3192 | _ = try self.addInst(.{ |
| 3232 | 3193 | .tag = .mov, |
| 3233 | | .cond = .al, |
| 3234 | 3194 | .data = .{ .rr_op = .{ |
| 3235 | 3195 | .rd = len_reg, |
| 3236 | 3196 | .rn = .r0, |
| ... | ... | @@ -3272,7 +3232,6 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void |
| 3272 | 3232 | // mov reg, 0 |
| 3273 | 3233 | _ = try self.addInst(.{ |
| 3274 | 3234 | .tag = .mov, |
| 3275 | | .cond = .al, |
| 3276 | 3235 | .data = .{ .rr_op = .{ |
| 3277 | 3236 | .rd = reg, |
| 3278 | 3237 | .rn = .r0, |
| ... | ... | @@ -3297,7 +3256,6 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void |
| 3297 | 3256 | if (Instruction.Operand.fromU32(@intCast(u32, x))) |op| { |
| 3298 | 3257 | _ = try self.addInst(.{ |
| 3299 | 3258 | .tag = .mov, |
| 3300 | | .cond = .al, |
| 3301 | 3259 | .data = .{ .rr_op = .{ |
| 3302 | 3260 | .rd = reg, |
| 3303 | 3261 | .rn = .r0, |
| ... | ... | @@ -3307,7 +3265,6 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void |
| 3307 | 3265 | } else if (Instruction.Operand.fromU32(~@intCast(u32, x))) |op| { |
| 3308 | 3266 | _ = try self.addInst(.{ |
| 3309 | 3267 | .tag = .mvn, |
| 3310 | | .cond = .al, |
| 3311 | 3268 | .data = .{ .rr_op = .{ |
| 3312 | 3269 | .rd = reg, |
| 3313 | 3270 | .rn = .r0, |
| ... | ... | @@ -3318,7 +3275,6 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void |
| 3318 | 3275 | if (Target.arm.featureSetHas(self.target.cpu.features, .has_v7)) { |
| 3319 | 3276 | _ = try self.addInst(.{ |
| 3320 | 3277 | .tag = .movw, |
| 3321 | | .cond = .al, |
| 3322 | 3278 | .data = .{ .r_imm16 = .{ |
| 3323 | 3279 | .rd = reg, |
| 3324 | 3280 | .imm16 = @intCast(u16, x), |
| ... | ... | @@ -3327,7 +3283,6 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void |
| 3327 | 3283 | } else { |
| 3328 | 3284 | _ = try self.addInst(.{ |
| 3329 | 3285 | .tag = .mov, |
| 3330 | | .cond = .al, |
| 3331 | 3286 | .data = .{ .rr_op = .{ |
| 3332 | 3287 | .rd = reg, |
| 3333 | 3288 | .rn = .r0, |
| ... | ... | @@ -3336,7 +3291,6 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void |
| 3336 | 3291 | }); |
| 3337 | 3292 | _ = try self.addInst(.{ |
| 3338 | 3293 | .tag = .orr, |
| 3339 | | .cond = .al, |
| 3340 | 3294 | .data = .{ .rr_op = .{ |
| 3341 | 3295 | .rd = reg, |
| 3342 | 3296 | .rn = reg, |
| ... | ... | @@ -3353,7 +3307,6 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void |
| 3353 | 3307 | // movt reg, #0xaaaa |
| 3354 | 3308 | _ = try self.addInst(.{ |
| 3355 | 3309 | .tag = .movw, |
| 3356 | | .cond = .al, |
| 3357 | 3310 | .data = .{ .r_imm16 = .{ |
| 3358 | 3311 | .rd = reg, |
| 3359 | 3312 | .imm16 = @truncate(u16, x), |
| ... | ... | @@ -3361,7 +3314,6 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void |
| 3361 | 3314 | }); |
| 3362 | 3315 | _ = try self.addInst(.{ |
| 3363 | 3316 | .tag = .movt, |
| 3364 | | .cond = .al, |
| 3365 | 3317 | .data = .{ .r_imm16 = .{ |
| 3366 | 3318 | .rd = reg, |
| 3367 | 3319 | .imm16 = @truncate(u16, x >> 16), |
| ... | ... | @@ -3375,7 +3327,6 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void |
| 3375 | 3327 | // orr reg, reg, #0xdd, 8 |
| 3376 | 3328 | _ = try self.addInst(.{ |
| 3377 | 3329 | .tag = .mov, |
| 3378 | | .cond = .al, |
| 3379 | 3330 | .data = .{ .rr_op = .{ |
| 3380 | 3331 | .rd = reg, |
| 3381 | 3332 | .rn = .r0, |
| ... | ... | @@ -3384,7 +3335,6 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void |
| 3384 | 3335 | }); |
| 3385 | 3336 | _ = try self.addInst(.{ |
| 3386 | 3337 | .tag = .orr, |
| 3387 | | .cond = .al, |
| 3388 | 3338 | .data = .{ .rr_op = .{ |
| 3389 | 3339 | .rd = reg, |
| 3390 | 3340 | .rn = reg, |
| ... | ... | @@ -3393,7 +3343,6 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void |
| 3393 | 3343 | }); |
| 3394 | 3344 | _ = try self.addInst(.{ |
| 3395 | 3345 | .tag = .orr, |
| 3396 | | .cond = .al, |
| 3397 | 3346 | .data = .{ .rr_op = .{ |
| 3398 | 3347 | .rd = reg, |
| 3399 | 3348 | .rn = reg, |
| ... | ... | @@ -3402,7 +3351,6 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void |
| 3402 | 3351 | }); |
| 3403 | 3352 | _ = try self.addInst(.{ |
| 3404 | 3353 | .tag = .orr, |
| 3405 | | .cond = .al, |
| 3406 | 3354 | .data = .{ .rr_op = .{ |
| 3407 | 3355 | .rd = reg, |
| 3408 | 3356 | .rn = reg, |
| ... | ... | @@ -3420,7 +3368,6 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void |
| 3420 | 3368 | // mov reg, src_reg |
| 3421 | 3369 | _ = try self.addInst(.{ |
| 3422 | 3370 | .tag = .mov, |
| 3423 | | .cond = .al, |
| 3424 | 3371 | .data = .{ .rr_op = .{ |
| 3425 | 3372 | .rd = reg, |
| 3426 | 3373 | .rn = .r0, |
| ... | ... | @@ -3434,7 +3381,6 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void |
| 3434 | 3381 | try self.genSetReg(ty, reg, .{ .immediate = @intCast(u32, addr) }); |
| 3435 | 3382 | _ = try self.addInst(.{ |
| 3436 | 3383 | .tag = .ldr, |
| 3437 | | .cond = .al, |
| 3438 | 3384 | .data = .{ .rr_offset = .{ |
| 3439 | 3385 | .rt = reg, |
| 3440 | 3386 | .rn = reg, |
| ... | ... | @@ -3461,7 +3407,6 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void |
| 3461 | 3407 | |
| 3462 | 3408 | _ = try self.addInst(.{ |
| 3463 | 3409 | .tag = tag, |
| 3464 | | .cond = .al, |
| 3465 | 3410 | .data = .{ .rr_offset = .{ |
| 3466 | 3411 | .rt = reg, |
| 3467 | 3412 | .rn = .fp, |
| ... | ... | @@ -3479,7 +3424,6 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void |
| 3479 | 3424 | |
| 3480 | 3425 | _ = try self.addInst(.{ |
| 3481 | 3426 | .tag = .ldrh, |
| 3482 | | .cond = .al, |
| 3483 | 3427 | .data = .{ .rr_extra_offset = .{ |
| 3484 | 3428 | .rt = reg, |
| 3485 | 3429 | .rn = .fp, |
| ... | ... | @@ -3507,7 +3451,6 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void |
| 3507 | 3451 | |
| 3508 | 3452 | _ = try self.addInst(.{ |
| 3509 | 3453 | .tag = tag, |
| 3510 | | .cond = .al, |
| 3511 | 3454 | .data = .{ .r_stack_offset = .{ |
| 3512 | 3455 | .rt = reg, |
| 3513 | 3456 | .stack_offset = @intCast(u32, adj_off), |
| ... | ... | @@ -3551,7 +3494,6 @@ fn genSetStackArgument(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) I |
| 3551 | 3494 | |
| 3552 | 3495 | _ = try self.addInst(.{ |
| 3553 | 3496 | .tag = tag, |
| 3554 | | .cond = .al, |
| 3555 | 3497 | .data = .{ .rr_offset = .{ |
| 3556 | 3498 | .rt = reg, |
| 3557 | 3499 | .rn = .sp, |
| ... | ... | @@ -3566,7 +3508,6 @@ fn genSetStackArgument(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) I |
| 3566 | 3508 | |
| 3567 | 3509 | _ = try self.addInst(.{ |
| 3568 | 3510 | .tag = .strh, |
| 3569 | | .cond = .al, |
| 3570 | 3511 | .data = .{ .rr_extra_offset = .{ |
| 3571 | 3512 | .rt = reg, |
| 3572 | 3513 | .rn = .sp, |