Rework/simplify unwind infrastructure and implement Windows unwind.
Our previous implementation of unwind infrastructure was somewhat complex and brittle: it parsed generated instructions in order to reverse-engineer unwind info from prologues. It also relied on some fragile linkage to communicate instruction-layout information that VCode was not designed to provide. A much simpler, more reliable, and easier-to-reason-about approach is to embed unwind directives as pseudo-instructions in the prologue as we generate it. That way, we can say what we mean and just emit it directly. The usual reasoning that leads to the reverse-engineering approach is that metadata is hard to keep in sync across optimization passes; but here, (i) prologues are generated at the very end of the pipeline, and (ii) if we ever do a post-prologue-gen optimization, we can treat unwind directives as black boxes with unknown side-effects, just as we do for some other pseudo-instructions today. It turns out that it was easier to just build this for both x64 and aarch64 (since they share a factored-out ABI implementation), and wire up the platform-specific unwind-info generation for Windows and SystemV. Now we have simpler unwind on all platforms and we can delete the old unwind infra as soon as we remove the old backend. There were a few consequences to supporting Fastcall unwind in particular that led to a refactor of the common ABI. Windows only supports naming clobbered-register save locations within 240 bytes of the frame-pointer register, whatever one chooses that to be (RSP or RBP). We had previously saved clobbers below the fixed frame (and below nominal-SP). The 240-byte range has to include the old RBP too, so we're forced to place clobbers at the top of the frame, just below saved RBP/RIP. This is fine; we always keep a frame pointer anyway because we use it to refer to stack args. It does mean that offsets of fixed-frame slots (spillslots, stackslots) from RBP are no longer known before we do regalloc, so if we ever want to index these off of RBP rather than nominal-SP because we add support for `alloca` (dynamic frame growth), then we'll need a "nominal-BP" mode that is resolved after regalloc and clobber-save code is generated. I added a comment to this effect in `abi_impl.rs`. The above refactor touched both x64 and aarch64 because of shared code. This had a further effect in that the old aarch64 prologue generation subtracted from `sp` once to allocate space, then used stores to `[sp, offset]` to save clobbers. Unfortunately the offset only has 7-bit range, so if there are enough clobbered registers (and there can be -- aarch64 has 384 bytes of registers; at least one unit test hits this) the stores/loads will be out-of-range. I really don't want to synthesize large-offset sequences here; better to go back to the simpler pre-index/post-index `stp r1, r2, [sp, #-16]` form that works just like a "push". It's likely not much worse microarchitecturally (dependence chain on SP, but oh well) and it actually saves an instruction if there's no other frame to allocate. As a further advantage, it's much simpler to understand; simpler is usually better. This PR adds the new backend on Windows to CI as well.
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %f0(i64, i32) -> i32 {
|
||||
@@ -11,7 +12,6 @@ block0(v0: i64, v1: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ldr w0, [x0, w1, UXTW]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -25,7 +25,6 @@ block0(v0: i64, v1: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ldr w0, [x0, w1, UXTW]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -39,7 +38,6 @@ block0(v0: i64, v1: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ldr w0, [x0, w1, SXTW]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -53,7 +51,6 @@ block0(v0: i64, v1: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ldr w0, [x0, w1, SXTW]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -68,7 +65,6 @@ block0(v0: i64, v1: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ldr w0, [x0, w1, SXTW]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -83,7 +79,6 @@ block0(v0: i64, v1: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ldr w0, [x0, w1, SXTW]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -100,7 +95,6 @@ block0(v0: i32, v1: i32):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: mov w0, w0
|
||||
; nextln: ldr w0, [x0, w1, UXTW]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -124,7 +118,6 @@ block0(v0: i64, v1: i32):
|
||||
; nextln: add x0, x2, x0
|
||||
; nextln: add x0, x0, x1, SXTW
|
||||
; nextln: ldr w0, [x0, w1, SXTW]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -145,7 +138,6 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
; nextln: add x0, x0, x2
|
||||
; nextln: add x0, x0, x1
|
||||
; nextln: ldur w0, [x0, #48]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -167,7 +159,6 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
; nextln: add x1, x3, x1
|
||||
; nextln: add x1, x1, x2
|
||||
; nextln: ldr w0, [x1, x0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -184,7 +175,6 @@ block0:
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movz x0, #1234
|
||||
; nextln: ldr w0, [x0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -200,7 +190,6 @@ block0(v0: i64):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: add x0, x0, #8388608
|
||||
; nextln: ldr w0, [x0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -216,7 +205,6 @@ block0(v0: i64):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sub x0, x0, #4
|
||||
; nextln: ldr w0, [x0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -234,7 +222,6 @@ block0(v0: i64):
|
||||
; nextln: movk w1, #15258, LSL #16
|
||||
; nextln: add x0, x1, x0
|
||||
; nextln: ldr w0, [x0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -249,7 +236,6 @@ block0(v0: i32):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sxtw x0, w0
|
||||
; nextln: ldr w0, [x0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -266,7 +252,6 @@ block0(v0: i32, v1: i32):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sxtw x0, w0
|
||||
; nextln: ldr w0, [x0, w1, SXTW]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -281,7 +266,6 @@ block0(v0: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ldr w0, [x0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -296,7 +280,6 @@ block0(v0: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ldur w0, [x0, #4]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -311,7 +294,6 @@ block0(v0: i64, v1: i32):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ldr d0, [x0, w1, UXTW]
|
||||
; nextln: sxtl v0.8h, v0.8b
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -326,7 +308,6 @@ block0(v0: i64, v1: i64):
|
||||
; nextln: add x0, x0, x1
|
||||
; nextln: ldr d0, [x0, #8]
|
||||
; nextln: uxtl v0.4s, v0.4h
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -341,7 +322,6 @@ block0(v0: i64, v1: i32):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ldr d0, [x0, w1, SXTW]
|
||||
; nextln: uxtl v0.2d, v0.2s
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -357,7 +337,6 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movn w0, #4097
|
||||
; nextln: ldrsh x0, [x0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -373,7 +352,6 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movz x0, #4098
|
||||
; nextln: ldrsh x0, [x0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -390,7 +368,6 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
; nextln: movn w0, #4097
|
||||
; nextln: sxtw x0, w0
|
||||
; nextln: ldrsh x0, [x0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -407,6 +384,5 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
; nextln: movz x0, #4098
|
||||
; nextln: sxtw x0, w0
|
||||
; nextln: ldrsh x0, [x0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %f1(i64, i64) -> i64 {
|
||||
@@ -10,7 +11,6 @@ block0(v0: i64, v1: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: add x0, x0, x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -24,7 +24,6 @@ block0(v0: i64, v1: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sub x0, x0, x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -37,7 +36,6 @@ block0(v0: i64, v1: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: madd x0, x0, x1, xzr
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -50,7 +48,6 @@ block0(v0: i64, v1: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: umulh x0, x0, x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -63,7 +60,6 @@ block0(v0: i64, v1: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: smulh x0, x0, x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -81,7 +77,6 @@ block0(v0: i64, v1: i64):
|
||||
; nextln: ccmp x0, #1, #nzcv, eq
|
||||
; nextln: b.vc 8 ; udf
|
||||
; nextln: mov x0, x2
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -101,7 +96,6 @@ block0(v0: i64):
|
||||
; nextln: ccmp x0, #1, #nzcv, eq
|
||||
; nextln: b.vc 8 ; udf
|
||||
; nextln: mov x0, x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -115,7 +109,6 @@ block0(v0: i64, v1: i64):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: udiv x0, x0, x1
|
||||
; nextln: cbnz x1, 8 ; udf
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -131,7 +124,6 @@ block0(v0: i64):
|
||||
; nextln: movz x1, #2
|
||||
; nextln: udiv x0, x0, x1
|
||||
; nextln: cbnz x1, 8 ; udf
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -146,7 +138,6 @@ block0(v0: i64, v1: i64):
|
||||
; nextln: sdiv x2, x0, x1
|
||||
; nextln: cbnz x1, 8 ; udf
|
||||
; nextln: msub x0, x2, x1, x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -161,7 +152,6 @@ block0(v0: i64, v1: i64):
|
||||
; nextln: udiv x2, x0, x1
|
||||
; nextln: cbnz x1, 8 ; udf
|
||||
; nextln: msub x0, x2, x1, x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -181,7 +171,6 @@ block0(v0: i32, v1: i32):
|
||||
; nextln: adds wzr, w2, #1
|
||||
; nextln: ccmp w3, #1, #nzcv, eq
|
||||
; nextln: b.vc 8 ; udf
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -203,7 +192,6 @@ block0(v0: i32):
|
||||
; nextln: ccmp w0, #1, #nzcv, eq
|
||||
; nextln: b.vc 8 ; udf
|
||||
; nextln: mov x0, x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -219,7 +207,6 @@ block0(v0: i32, v1: i32):
|
||||
; nextln: mov w1, w1
|
||||
; nextln: udiv x0, x0, x1
|
||||
; nextln: cbnz x1, 8 ; udf
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -237,7 +224,6 @@ block0(v0: i32):
|
||||
; nextln: movz x1, #2
|
||||
; nextln: udiv x0, x0, x1
|
||||
; nextln: cbnz x1, 8 ; udf
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -254,7 +240,6 @@ block0(v0: i32, v1: i32):
|
||||
; nextln: sdiv x2, x0, x1
|
||||
; nextln: cbnz x1, 8 ; udf
|
||||
; nextln: msub x0, x2, x1, x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -271,7 +256,6 @@ block0(v0: i32, v1: i32):
|
||||
; nextln: udiv x2, x0, x1
|
||||
; nextln: cbnz x1, 8 ; udf
|
||||
; nextln: msub x0, x2, x1, x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -284,7 +268,6 @@ block0(v0: i64, v1: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: and x0, x0, x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -297,7 +280,6 @@ block0(v0: i64, v1: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: orr x0, x0, x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -310,7 +292,6 @@ block0(v0: i64, v1: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: eor x0, x0, x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -323,7 +304,6 @@ block0(v0: i64, v1: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: bic x0, x0, x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -336,7 +316,6 @@ block0(v0: i64, v1: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: orn x0, x0, x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -349,7 +328,6 @@ block0(v0: i64, v1: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: eon x0, x0, x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -362,7 +340,6 @@ block0(v0: i64, v1: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: orn x0, xzr, x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -377,7 +354,6 @@ block0(v0: i32, v1: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sub w0, w1, w0, LSL 21
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -391,7 +367,6 @@ block0(v0: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sub w0, w0, #1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -405,7 +380,6 @@ block0(v0: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: add w0, w0, #1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -419,7 +393,6 @@ block0(v0: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: add x0, x0, #1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -434,7 +407,6 @@ block0(v0: i64):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movz x0, #1
|
||||
; nextln: sub x0, xzr, x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -451,6 +423,5 @@ block0(v0: i8x16):
|
||||
; nextln: sub w0, wzr, w0
|
||||
; nextln: dup v1.16b, w0
|
||||
; nextln: ushl v0.16b, v0.16b, v1.16b
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %f(i32, i32) -> i32 {
|
||||
@@ -8,7 +9,6 @@ block0(v0: i32, v1: i32):
|
||||
v2 = iadd v0, v1
|
||||
; check: add w0, w0, w1
|
||||
return v2
|
||||
; check: mov sp, fp
|
||||
; check: ldp fp, lr, [sp], #16
|
||||
; check: ret
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %a(i8) -> i8 {
|
||||
@@ -11,7 +12,6 @@ block0(v0: i8):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: rbit w0, w0
|
||||
; nextln: lsr w0, w0, #24
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -25,7 +25,6 @@ block0(v0: i16):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: rbit w0, w0
|
||||
; nextln: lsr w0, w0, #16
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -38,7 +37,6 @@ block0(v0: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: rbit w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -51,7 +49,6 @@ block0(v0: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: rbit x0, x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -66,7 +63,6 @@ block0(v0: i8):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: uxtb w0, w0
|
||||
; nextln: clz w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -80,7 +76,6 @@ block0(v0: i16):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: uxth w0, w0
|
||||
; nextln: clz w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -93,7 +88,6 @@ block0(v0: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: clz w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -106,7 +100,6 @@ block0(v0: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: clz x0, x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -120,7 +113,6 @@ block0(v0: i8):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: uxtb w0, w0
|
||||
; nextln: cls w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -134,7 +126,6 @@ block0(v0: i16):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: uxth w0, w0
|
||||
; nextln: cls w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -147,7 +138,6 @@ block0(v0: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: cls w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -160,7 +150,6 @@ block0(v0: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: cls x0, x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -175,7 +164,6 @@ block0(v0: i8):
|
||||
; nextln: rbit w0, w0
|
||||
; nextln: lsr w0, w0, #24
|
||||
; nextln: clz w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -190,7 +178,6 @@ block0(v0: i16):
|
||||
; nextln: rbit w0, w0
|
||||
; nextln: lsr w0, w0, #16
|
||||
; nextln: clz w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -204,7 +191,6 @@ block0(v0: i32):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: rbit w0, w0
|
||||
; nextln: clz w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -218,7 +204,6 @@ block0(v0: i64):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: rbit x0, x0
|
||||
; nextln: clz x0, x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -234,7 +219,6 @@ block0(v0: i64):
|
||||
; nextln: cnt v0.8b, v0.8b
|
||||
; nextln: addv b0, v0.8b
|
||||
; nextln: umov w0, v0.b[0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -250,7 +234,6 @@ block0(v0: i32):
|
||||
; nextln: cnt v0.8b, v0.8b
|
||||
; nextln: addv b0, v0.8b
|
||||
; nextln: umov w0, v0.b[0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -266,7 +249,6 @@ block0(v0: i16):
|
||||
; nextln: cnt v0.8b, v0.8b
|
||||
; nextln: addp v0.8b, v0.8b, v0.8b
|
||||
; nextln: umov w0, v0.b[0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -281,7 +263,6 @@ block0(v0: i8):
|
||||
; nextln: fmov s0, w0
|
||||
; nextln: cnt v0.8b, v0.8b
|
||||
; nextln: umov w0, v0.b[0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -296,7 +277,6 @@ block0:
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movz x0, #255
|
||||
; nextln: sxtb w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -311,6 +291,5 @@ block0:
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movz x0, #1
|
||||
; nextln: sbfx w0, w0, #0, #1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %f(i64, i64) -> i64 {
|
||||
@@ -11,6 +12,5 @@ block0(v0: i64, v1: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: blr x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
set enable_probestack=false
|
||||
target aarch64
|
||||
|
||||
@@ -14,7 +15,6 @@ block0(v0: i64):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ldr x1, 8 ; b 12 ; data
|
||||
; nextln: blr x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -31,8 +31,7 @@ block0(v0: i32):
|
||||
; check: mov w0, w0
|
||||
; nextln: ldr x1, 8 ; b 12 ; data
|
||||
; nextln: blr x1
|
||||
; check: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; check: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
function %f3(i32) -> i32 uext baldrdash_system_v {
|
||||
@@ -55,8 +54,7 @@ block0(v0: i32):
|
||||
; check: sxtw x0, w0
|
||||
; nextln: ldr x1, 8 ; b 12 ; data
|
||||
; nextln: blr x1
|
||||
; check: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; check: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
function %f5(i32) -> i32 sext baldrdash_system_v {
|
||||
@@ -93,7 +91,6 @@ block0(v0: i8):
|
||||
; nextln: blr x8
|
||||
; nextln: add sp, sp, #16
|
||||
; nextln: virtual_sp_offset_adjust -16
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -116,7 +113,6 @@ block0(v0: i8):
|
||||
; nextln: movz x6, #42
|
||||
; nextln: movz x7, #42
|
||||
; nextln: sturb w9, [x8]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -161,7 +157,7 @@ block0:
|
||||
; nextln: ldr d0, [sp, #16]
|
||||
; nextln: ldr x0, 8 ; b 12 ; data
|
||||
; nextln: blr x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: add sp, sp, #32
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -204,7 +200,7 @@ block0:
|
||||
; nextln: ldr q0, [sp, #32]
|
||||
; nextln: ldr x0, 8 ; b 12 ; data
|
||||
; nextln: blr x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: add sp, sp, #48
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -251,6 +247,6 @@ block0:
|
||||
; nextln: ldr q0, [sp, #16]
|
||||
; nextln: ldr x0, 8 ; b 12 ; data
|
||||
; nextln: blr x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: add sp, sp, #32
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %f(i64, i64) -> b1 {
|
||||
@@ -11,7 +12,6 @@ block0(v0: i64, v1: i64):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: subs xzr, x0, x1
|
||||
; nextln: cset x0, eq
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -37,12 +37,10 @@ block2:
|
||||
; nextln: b.eq label1 ; b label2
|
||||
; check: Block 1:
|
||||
; check: movz x0, #1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
; check: Block 2:
|
||||
; check: movz x0, #2
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -62,6 +60,5 @@ block1:
|
||||
; nextln: subs xzr, x0, x1
|
||||
; check: Block 1:
|
||||
; check: movz x0, #1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %f(i8, i64, i64) -> i64 {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %f() -> b8 {
|
||||
@@ -10,7 +11,6 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movz x0, #255
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -23,7 +23,6 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movz x0, #0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -36,7 +35,6 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movz x0, #0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -49,7 +47,6 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movz x0, #65535
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -62,7 +59,6 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movz x0, #65535, LSL #16
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -75,7 +71,6 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movz x0, #65535, LSL #32
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -88,7 +83,6 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movz x0, #65535, LSL #48
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -101,7 +95,6 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movn x0, #0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -114,7 +107,6 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movn x0, #65535
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -127,7 +119,6 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movn x0, #65535, LSL #16
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -140,7 +131,6 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movn x0, #65535, LSL #32
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -153,7 +143,6 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movn x0, #65535, LSL #48
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -169,7 +158,6 @@ block0:
|
||||
; nextln: movk x0, #4626, LSL #16
|
||||
; nextln: movk x0, #61603, LSL #32
|
||||
; nextln: movk x0, #62283, LSL #48
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -183,7 +171,6 @@ block0:
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movz x0, #7924, LSL #16
|
||||
; nextln: movk x0, #4841, LSL #48
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -197,7 +184,6 @@ block0:
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movn x0, #57611, LSL #16
|
||||
; nextln: movk x0, #4841, LSL #48
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -210,7 +196,6 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: orr x0, xzr, #4294967295
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -223,7 +208,6 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movn w0, #8
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -236,7 +220,6 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movn w0, #8
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -249,6 +232,5 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movn x0, #8
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %f(i8) -> i64 {
|
||||
@@ -13,6 +14,5 @@ block0(v0: i8):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movz x1, #42
|
||||
; nextln: add x0, x1, x0, SXTB
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function u0:0(i8) -> f32 {
|
||||
@@ -9,7 +10,6 @@ block0(v0: i8):
|
||||
; check: uxtb w0, w0
|
||||
; check: ucvtf s0, w0
|
||||
return v1
|
||||
; check: mov sp, fp
|
||||
; check: ldp fp, lr, [sp], #16
|
||||
; check: ret
|
||||
}
|
||||
@@ -22,7 +22,6 @@ block0(v0: i8):
|
||||
; check: uxtb w0, w0
|
||||
; check: ucvtf d0, w0
|
||||
return v1
|
||||
; check: mov sp, fp
|
||||
; check: ldp fp, lr, [sp], #16
|
||||
; check: ret
|
||||
}
|
||||
@@ -35,7 +34,6 @@ block0(v0: i16):
|
||||
; check: uxth w0, w0
|
||||
; check: ucvtf s0, w0
|
||||
return v1
|
||||
; check: mov sp, fp
|
||||
; check: ldp fp, lr, [sp], #16
|
||||
; check: ret
|
||||
}
|
||||
@@ -48,7 +46,6 @@ block0(v0: i16):
|
||||
; check: uxth w0, w0
|
||||
; check: ucvtf d0, w0
|
||||
return v1
|
||||
; check: mov sp, fp
|
||||
; check: ldp fp, lr, [sp], #16
|
||||
; check: ret
|
||||
}
|
||||
@@ -70,7 +67,6 @@ block0(v0: f32):
|
||||
; check: b.mi 8 ; udf
|
||||
; check: fcvtzu w0, s0
|
||||
return v1
|
||||
; check: mov sp, fp
|
||||
; check: ldp fp, lr, [sp], #16
|
||||
; check: ret
|
||||
}
|
||||
@@ -92,7 +88,6 @@ block0(v0: f64):
|
||||
; check: b.mi 8 ; udf
|
||||
; check: fcvtzu w0, d0
|
||||
return v1
|
||||
; check: mov sp, fp
|
||||
; check: ldp fp, lr, [sp], #16
|
||||
; check: ret
|
||||
}
|
||||
@@ -114,7 +109,6 @@ block0(v0: f32):
|
||||
; check: b.mi 8 ; udf
|
||||
; check: fcvtzu w0, s0
|
||||
return v1
|
||||
; check: mov sp, fp
|
||||
; check: ldp fp, lr, [sp], #16
|
||||
; check: ret
|
||||
}
|
||||
@@ -136,7 +130,6 @@ block0(v0: f64):
|
||||
; check: b.mi 8 ; udf
|
||||
; check: fcvtzu w0, d0
|
||||
return v1
|
||||
; check: mov sp, fp
|
||||
; check: ldp fp, lr, [sp], #16
|
||||
; check: ret
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %f1(f32, f32) -> f32 {
|
||||
@@ -10,7 +11,6 @@ block0(v0: f32, v1: f32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fadd s0, s0, s1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -23,7 +23,6 @@ block0(v0: f64, v1: f64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fadd d0, d0, d1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -36,7 +35,6 @@ block0(v0: f32, v1: f32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fsub s0, s0, s1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -49,7 +47,6 @@ block0(v0: f64, v1: f64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fsub d0, d0, d1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -62,7 +59,6 @@ block0(v0: f32, v1: f32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fmul s0, s0, s1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -75,7 +71,6 @@ block0(v0: f64, v1: f64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fmul d0, d0, d1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -88,7 +83,6 @@ block0(v0: f32, v1: f32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fdiv s0, s0, s1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -101,7 +95,6 @@ block0(v0: f64, v1: f64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fdiv d0, d0, d1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -114,7 +107,6 @@ block0(v0: f32, v1: f32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fmin s0, s0, s1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -127,7 +119,6 @@ block0(v0: f64, v1: f64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fmin d0, d0, d1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -140,7 +131,6 @@ block0(v0: f32, v1: f32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fmax s0, s0, s1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -153,7 +143,6 @@ block0(v0: f64, v1: f64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fmax d0, d0, d1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -166,7 +155,6 @@ block0(v0: f32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fsqrt s0, s0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -179,7 +167,6 @@ block0(v0: f64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fsqrt d0, d0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -192,7 +179,6 @@ block0(v0: f32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fabs s0, s0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -205,7 +191,6 @@ block0(v0: f64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fabs d0, d0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -218,7 +203,6 @@ block0(v0: f32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fneg s0, s0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -231,7 +215,6 @@ block0(v0: f64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fneg d0, d0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -244,7 +227,6 @@ block0(v0: f32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fcvt d0, s0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -257,7 +239,6 @@ block0(v0: f64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fcvt s0, d0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -270,7 +251,6 @@ block0(v0: f32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: frintp s0, s0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -283,7 +263,6 @@ block0(v0: f64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: frintp d0, d0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -296,7 +275,6 @@ block0(v0: f32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: frintm s0, s0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -309,7 +287,6 @@ block0(v0: f64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: frintm d0, d0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -322,7 +299,6 @@ block0(v0: f32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: frintz s0, s0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -335,7 +311,6 @@ block0(v0: f64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: frintz d0, d0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -348,7 +323,6 @@ block0(v0: f32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: frintn s0, s0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -361,7 +335,6 @@ block0(v0: f64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: frintn d0, d0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -374,7 +347,6 @@ block0(v0: f32, v1: f32, v2: f32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fmadd s0, s0, s1, s2
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -387,7 +359,6 @@ block0(v0: f64, v1: f64, v2: f64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fmadd d0, d0, d1, d2
|
||||
; nextln: mov sp, fp
|
||||
|
||||
function %f31(f32, f32) -> f32 {
|
||||
block0(v0: f32, v1: f32):
|
||||
@@ -399,7 +370,6 @@ block0(v0: f32, v1: f32):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ushr v1.2s, v1.2s, #31
|
||||
; nextln: sli v0.2s, v1.2s, #31
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -413,7 +383,6 @@ block0(v0: f64, v1: f64):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ushr d1, d1, #63
|
||||
; nextln: sli d0, d1, #63
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -436,7 +405,6 @@ block0(v0: f32):
|
||||
; nextln: fcmp s0, s1
|
||||
; nextln: b.mi 8 ; udf
|
||||
; nextln: fcvtzu w0, s0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -459,7 +427,6 @@ block0(v0: f32):
|
||||
; nextln: fcmp s0, s1
|
||||
; nextln: b.mi 8 ; udf
|
||||
; nextln: fcvtzs w0, s0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -482,7 +449,6 @@ block0(v0: f32):
|
||||
; nextln: fcmp s0, s1
|
||||
; nextln: b.mi 8 ; udf
|
||||
; nextln: fcvtzu x0, s0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -505,7 +471,6 @@ block0(v0: f32):
|
||||
; nextln: fcmp s0, s1
|
||||
; nextln: b.mi 8 ; udf
|
||||
; nextln: fcvtzs x0, s0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -528,7 +493,6 @@ block0(v0: f64):
|
||||
; nextln: fcmp d0, d1
|
||||
; nextln: b.mi 8 ; udf
|
||||
; nextln: fcvtzu w0, d0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -550,7 +514,6 @@ block0(v0: f64):
|
||||
; nextln: fcmp d0, d1
|
||||
; nextln: b.mi 8 ; udf
|
||||
; nextln: fcvtzs w0, d0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -573,7 +536,6 @@ block0(v0: f64):
|
||||
; nextln: fcmp d0, d1
|
||||
; nextln: b.mi 8 ; udf
|
||||
; nextln: fcvtzu x0, d0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -596,7 +558,6 @@ block0(v0: f64):
|
||||
; nextln: fcmp d0, d1
|
||||
; nextln: b.mi 8 ; udf
|
||||
; nextln: fcvtzs x0, d0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -609,7 +570,6 @@ block0(v0: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ucvtf s0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -622,7 +582,6 @@ block0(v0: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: scvtf s0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -635,7 +594,6 @@ block0(v0: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ucvtf s0, x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -648,7 +606,6 @@ block0(v0: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: scvtf s0, x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -661,7 +618,6 @@ block0(v0: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ucvtf d0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -674,7 +630,6 @@ block0(v0: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: scvtf d0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -687,7 +642,6 @@ block0(v0: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ucvtf d0, x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -700,7 +654,6 @@ block0(v0: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: scvtf d0, x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -720,7 +673,6 @@ block0(v0: f32):
|
||||
; nextln: fcmp s0, s0
|
||||
; nextln: fcsel s0, s1, s2, ne
|
||||
; nextln: fcvtzu w0, s0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -742,7 +694,6 @@ block0(v0: f32):
|
||||
; nextln: fcmp s0, s0
|
||||
; nextln: fcsel s0, s2, s1, ne
|
||||
; nextln: fcvtzs w0, s0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -762,7 +713,6 @@ block0(v0: f32):
|
||||
; nextln: fcmp s0, s0
|
||||
; nextln: fcsel s0, s1, s2, ne
|
||||
; nextln: fcvtzu x0, s0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -784,7 +734,6 @@ block0(v0: f32):
|
||||
; nextln: fcmp s0, s0
|
||||
; nextln: fcsel s0, s2, s1, ne
|
||||
; nextln: fcvtzs x0, s0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -803,7 +752,6 @@ block0(v0: f64):
|
||||
; nextln: fcmp d0, d0
|
||||
; nextln: fcsel d0, d1, d2, ne
|
||||
; nextln: fcvtzu w0, d0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -824,7 +772,6 @@ block0(v0: f64):
|
||||
; nextln: fcmp d0, d0
|
||||
; nextln: fcsel d0, d2, d1, ne
|
||||
; nextln: fcvtzs w0, d0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -844,7 +791,6 @@ block0(v0: f64):
|
||||
; nextln: fcmp d0, d0
|
||||
; nextln: fcsel d0, d1, d2, ne
|
||||
; nextln: fcvtzu x0, d0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -866,6 +812,5 @@ block0(v0: f64):
|
||||
; nextln: fcmp d0, d0
|
||||
; nextln: fcsel d0, d2, d1, ne
|
||||
; nextln: fcvtzs x0, d0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
set enable_heap_access_spectre_mitigation=true
|
||||
target aarch64
|
||||
|
||||
@@ -24,7 +25,6 @@ block0(v0: i64, v1: i32):
|
||||
; nextln: subs wzr, w1, w2
|
||||
; nextln: movz x1, #0
|
||||
; nextln: csel x0, x1, x0, hi
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
; check: Block 2:
|
||||
@@ -49,7 +49,6 @@ block0(v0: i64, v1: i32):
|
||||
; nextln: subs wzr, w1, #65536
|
||||
; nextln: movz x1, #0
|
||||
; nextln: csel x0, x1, x0, hi
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
; check: Block 2:
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
; would result in an out-of-bounds panic. (#2147)
|
||||
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function u0:0() -> i8 system_v {
|
||||
@@ -17,7 +18,7 @@ block0:
|
||||
; nextln: Entry block: 0
|
||||
; nextln: Block 0:
|
||||
; nextln: (original IR block: block0)
|
||||
; nextln: (instruction range: 0 .. 11)
|
||||
; nextln: (instruction range: 0 .. 10)
|
||||
; nextln: Inst 0: stp fp, lr, [sp, #-16]!
|
||||
; nextln: Inst 1: mov fp, sp
|
||||
; nextln: Inst 2: movz x0, #56780
|
||||
@@ -26,7 +27,6 @@ block0:
|
||||
; nextln: Inst 5: subs wzr, w0, w1, UXTH
|
||||
; nextln: Inst 6: cset x0, ne
|
||||
; nextln: Inst 7: and w0, w0, #1
|
||||
; nextln: Inst 8: mov sp, fp
|
||||
; nextln: Inst 9: ldp fp, lr, [sp], #16
|
||||
; nextln: Inst 10: ret
|
||||
; nextln: Inst 8: ldp fp, lr, [sp], #16
|
||||
; nextln: Inst 9: ret
|
||||
; nextln: }}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %f(i64) -> i64 {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
;; Test default (non-SpiderMonkey) ABI.
|
||||
@@ -13,6 +14,5 @@ block1:
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movz x0, #1
|
||||
; nextln: movz x1, #2
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %add8(i8, i8) -> i8 {
|
||||
@@ -10,7 +11,6 @@ block0(v0: i8, v1: i8):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: add w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -23,7 +23,6 @@ block0(v0: i16, v1: i16):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: add w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -36,7 +35,6 @@ block0(v0: i32, v1: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: add w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -50,7 +48,6 @@ block0(v0: i32, v1: i8):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: add w0, w0, w1, SXTB
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -64,6 +61,5 @@ block0(v0: i64, v1: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: add x0, x0, x1, SXTW
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %f(f64) -> f64 {
|
||||
@@ -76,24 +77,22 @@ block0(v0: f64):
|
||||
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sub sp, sp, #128
|
||||
; nextln: str q8, [sp]
|
||||
; nextln: str q9, [sp, #16]
|
||||
; nextln: str q10, [sp, #32]
|
||||
; nextln: str q11, [sp, #48]
|
||||
; nextln: str q12, [sp, #64]
|
||||
; nextln: str q13, [sp, #80]
|
||||
; nextln: str q14, [sp, #96]
|
||||
; nextln: str q15, [sp, #112]
|
||||
; nextln: str q8, [sp, #-16]!
|
||||
; nextln: str q9, [sp, #-16]!
|
||||
; nextln: str q10, [sp, #-16]!
|
||||
; nextln: str q11, [sp, #-16]!
|
||||
; nextln: str q12, [sp, #-16]!
|
||||
; nextln: str q13, [sp, #-16]!
|
||||
; nextln: str q14, [sp, #-16]!
|
||||
; nextln: str q15, [sp, #-16]!
|
||||
|
||||
; check: ldr q8, [sp]
|
||||
; nextln: ldr q9, [sp, #16]
|
||||
; nextln: ldr q10, [sp, #32]
|
||||
; nextln: ldr q11, [sp, #48]
|
||||
; nextln: ldr q12, [sp, #64]
|
||||
; nextln: ldr q13, [sp, #80]
|
||||
; nextln: ldr q14, [sp, #96]
|
||||
; nextln: ldr q15, [sp, #112]
|
||||
; nextln: mov sp, fp
|
||||
; check: ldr q15, [sp], #16
|
||||
; nextln: ldr q14, [sp], #16
|
||||
; nextln: ldr q13, [sp], #16
|
||||
; nextln: ldr q12, [sp], #16
|
||||
; nextln: ldr q11, [sp], #16
|
||||
; nextln: ldr q10, [sp], #16
|
||||
; nextln: ldr q9, [sp], #16
|
||||
; nextln: ldr q8, [sp], #16
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %f0(r64) -> r64 {
|
||||
@@ -8,7 +9,6 @@ block0(v0: r64):
|
||||
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -22,7 +22,6 @@ block0(v0: r64):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: subs xzr, x0, #0
|
||||
; nextln: cset x0, eq
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -36,7 +35,6 @@ block0(v0: r64):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: adds xzr, x0, #1
|
||||
; nextln: cset x0, eq
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -49,7 +47,6 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movz x0, #0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -77,21 +74,20 @@ block3(v7: r64, v8: r64):
|
||||
; check: Block 0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sub sp, sp, #48
|
||||
; nextln: stp x19, x20, [sp]
|
||||
; nextln: virtual_sp_offset_adjust 16
|
||||
; nextln: stp x19, x20, [sp, #-16]!
|
||||
; nextln: sub sp, sp, #32
|
||||
; nextln: mov x19, x0
|
||||
; nextln: mov x20, x1
|
||||
; nextln: mov x0, x19
|
||||
; nextln: ldr x1, 8 ; b 12 ; data
|
||||
; nextln: stur x0, [sp, #24]
|
||||
; nextln: stur x19, [sp, #32]
|
||||
; nextln: stur x20, [sp, #40]
|
||||
; nextln: stur x0, [sp, #8]
|
||||
; nextln: stur x19, [sp, #16]
|
||||
; nextln: stur x20, [sp, #24]
|
||||
; nextln: (safepoint: slots [S0, S1, S2]
|
||||
; nextln: blr x1
|
||||
; nextln: ldur x19, [sp, #32]
|
||||
; nextln: ldur x20, [sp, #40]
|
||||
; nextln: add x1, sp, #16
|
||||
; nextln: ldur x19, [sp, #16]
|
||||
; nextln: ldur x20, [sp, #24]
|
||||
; nextln: mov x1, sp
|
||||
; nextln: str x19, [x1]
|
||||
; nextln: and w0, w0, #1
|
||||
; nextln: cbz x0, label1 ; b label3
|
||||
@@ -107,11 +103,11 @@ block3(v7: r64, v8: r64):
|
||||
; nextln: mov x19, x20
|
||||
; nextln: b label5
|
||||
; check: Block 5:
|
||||
; check: add x1, sp, #16
|
||||
; check: mov x1, sp
|
||||
; nextln: ldr x1, [x1]
|
||||
; nextln: mov x2, x1
|
||||
; nextln: mov x1, x19
|
||||
; nextln: ldp x19, x20, [sp]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: add sp, sp, #32
|
||||
; nextln: ldp x19, x20, [sp], #16
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %uaddsat64(i64, i64) -> i64 {
|
||||
@@ -13,7 +14,6 @@ block0(v0: i64, v1: i64):
|
||||
; nextln: fmov d1, x1
|
||||
; nextln: uqadd d0, d0, d1
|
||||
; nextln: mov x0, v0.d[0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -31,6 +31,5 @@ block0(v0: i8, v1: i8):
|
||||
; nextln: fmov d1, x1
|
||||
; nextln: uqadd d0, d0, d1
|
||||
; nextln: mov x0, v0.d[0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %f(i64) -> i64 {
|
||||
@@ -12,7 +13,6 @@ block0(v0: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: add x0, x0, x0, LSL 3
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -26,6 +26,5 @@ block0(v0: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: lsl w0, w0, #21
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@@ -14,7 +15,6 @@ block0(v0: i64, v1: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ror x0, x0, x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -27,7 +27,6 @@ block0(v0: i32, v1: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ror w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -46,7 +45,6 @@ block0(v0: i16, v1: i16):
|
||||
; nextln: lsr w1, w0, w1
|
||||
; nextln: lsl w0, w0, w2
|
||||
; nextln: orr w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -65,7 +63,6 @@ block0(v0: i8, v1: i8):
|
||||
; nextln: lsr w1, w0, w1
|
||||
; nextln: lsl w0, w0, w2
|
||||
; nextln: orr w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -83,7 +80,6 @@ block0(v0: i64, v1: i64):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sub x1, xzr, x1
|
||||
; nextln: ror x0, x0, x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -97,7 +93,6 @@ block0(v0: i32, v1: i32):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sub w1, wzr, w1
|
||||
; nextln: ror w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -117,7 +112,6 @@ block0(v0: i16, v1: i16):
|
||||
; nextln: lsr w1, w0, w1
|
||||
; nextln: lsl w0, w0, w2
|
||||
; nextln: orr w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -137,7 +131,6 @@ block0(v0: i8, v1: i8):
|
||||
; nextln: lsr w1, w0, w1
|
||||
; nextln: lsl w0, w0, w2
|
||||
; nextln: orr w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -154,7 +147,6 @@ block0(v0: i64, v1: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: lsr x0, x0, x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -167,7 +159,6 @@ block0(v0: i32, v1: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: lsr w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -181,7 +172,6 @@ block0(v0: i16, v1: i16):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: uxth w0, w0
|
||||
; nextln: lsr w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -195,7 +185,6 @@ block0(v0: i8, v1: i8):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: uxtb w0, w0
|
||||
; nextln: lsr w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -212,7 +201,6 @@ block0(v0: i64, v1: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: lsl x0, x0, x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -225,7 +213,6 @@ block0(v0: i32, v1: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: lsl w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -238,7 +225,6 @@ block0(v0: i16, v1: i16):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: lsl w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -251,7 +237,6 @@ block0(v0: i8, v1: i8):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: lsl w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -268,7 +253,6 @@ block0(v0: i64, v1: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: asr x0, x0, x1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -281,7 +265,6 @@ block0(v0: i32, v1: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: asr w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -295,7 +278,6 @@ block0(v0: i16, v1: i16):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sxth w0, w0
|
||||
; nextln: asr w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -309,7 +291,6 @@ block0(v0: i8, v1: i8):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sxtb w0, w0
|
||||
; nextln: asr w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -327,7 +308,6 @@ block0(v0: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ror x0, x0, #17
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -341,7 +321,6 @@ block0(v0: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ror x0, x0, #47
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -355,7 +334,6 @@ block0(v0: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ror w0, w0, #15
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -372,7 +350,6 @@ block0(v0: i16):
|
||||
; nextln: lsr w1, w0, #6
|
||||
; nextln: lsl w0, w0, #10
|
||||
; nextln: orr w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -389,7 +366,6 @@ block0(v0: i8):
|
||||
; nextln: lsr w1, w0, #5
|
||||
; nextln: lsl w0, w0, #3
|
||||
; nextln: orr w0, w0, w1
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -403,7 +379,6 @@ block0(v0: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: lsr x0, x0, #17
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -417,7 +392,6 @@ block0(v0: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: asr x0, x0, #17
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -431,6 +405,5 @@ block0(v0: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: lsl x0, x0, #17
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %f1() -> i64x2 {
|
||||
@@ -13,7 +14,6 @@ block0:
|
||||
; nextln: movz x0, #1
|
||||
; nextln: movk x0, #1, LSL #48
|
||||
; nextln: dup v0.2d, x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -29,7 +29,6 @@ block0:
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movz x0, #42679
|
||||
; nextln: dup v0.8h, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -44,7 +43,6 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movi v0.16b, #255
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -58,7 +56,6 @@ block0(v0: i32, v1: i8x16, v2: i8x16):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: subs wzr, w0, wzr
|
||||
; nextln: vcsel v0.16b, v0.16b, v1.16b, ne (if-then-else diamond)
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -72,7 +69,6 @@ block0(v0: i64):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ld1r { v0.16b }, [x0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -89,7 +85,6 @@ block0(v0: i64, v1: i64):
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ld1r { v0.16b }, [x0]
|
||||
; nextln: ld1r { v1.16b }, [x1]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -107,7 +102,6 @@ block0(v0: i64, v1: i64):
|
||||
; nextln: ldrb w0, [x0]
|
||||
; nextln: ld1r { v0.16b }, [x1]
|
||||
; nextln: dup v1.16b, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -124,7 +118,6 @@ block0(v0: i64, v1: i64):
|
||||
; nextln: ldrb w0, [x0]
|
||||
; nextln: dup v0.16b, w0
|
||||
; nextln: dup v1.16b, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -139,7 +132,6 @@ block0:
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movi v0.2d, #18374687579166474495
|
||||
; nextln: fmov d0, d0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -153,7 +145,6 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: mvni v0.4s, #15, MSL #16
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -167,6 +158,5 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: fmov v0.4s, #1.3125
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %f1() -> i64x2 {
|
||||
@@ -13,7 +14,6 @@ block0:
|
||||
; nextln: movz x0, #1
|
||||
; nextln: movk x0, #1, LSL #48
|
||||
; nextln: fmov d0, x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -28,6 +28,5 @@ block0:
|
||||
; nextln: mov fp, sp
|
||||
; nextln: movz x0, #42679
|
||||
; nextln: fmov s0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %foo() {
|
||||
@@ -13,7 +14,6 @@ block0(v0: i64):
|
||||
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -28,7 +28,6 @@ block0(v0: i64):
|
||||
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -46,7 +45,6 @@ block0(v0: i64):
|
||||
; nextln: b.hs 8 ; udf
|
||||
; nextln: ldr x0
|
||||
; nextln: blr x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -69,7 +67,6 @@ block0(v0: i64):
|
||||
; nextln: b.hs 8 ; udf
|
||||
; nextln: ldr x0
|
||||
; nextln: blr x0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -86,7 +83,7 @@ block0(v0: i64):
|
||||
; nextln: subs xzr, sp, x16
|
||||
; nextln: b.hs 8 ; udf
|
||||
; nextln: sub sp, sp, #176
|
||||
; nextln: mov sp, fp
|
||||
; nextln: add sp, sp, #176
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -108,7 +105,9 @@ block0(v0: i64):
|
||||
; nextln: movz w16, #6784
|
||||
; nextln: movk w16, #6, LSL #16
|
||||
; nextln: sub sp, sp, x16, UXTX
|
||||
; nextln: mov sp, fp
|
||||
; nextln: movz w16, #6784
|
||||
; nextln: movk w16, #6, LSL #16
|
||||
; nextln: add sp, sp, x16, UXTX
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -130,7 +129,7 @@ block0(v0: i64):
|
||||
; nextln: subs xzr, sp, x16
|
||||
; nextln: b.hs 8 ; udf
|
||||
; nextln: sub sp, sp, #32
|
||||
; nextln: mov sp, fp
|
||||
; nextln: add sp, sp, #32
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -158,7 +157,9 @@ block0(v0: i64):
|
||||
; nextln: movz w16, #6784
|
||||
; nextln: movk w16, #6, LSL #16
|
||||
; nextln: sub sp, sp, x16, UXTX
|
||||
; nextln: mov sp, fp
|
||||
; nextln: movz w16, #6784
|
||||
; nextln: movk w16, #6, LSL #16
|
||||
; nextln: add sp, sp, x16, UXTX
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -178,6 +179,6 @@ block0(v0: i64):
|
||||
; nextln: subs xzr, sp, x16
|
||||
; nextln: b.hs 8 ; udf
|
||||
; nextln: sub sp, sp, #32
|
||||
; nextln: mov sp, fp
|
||||
; nextln: add sp, sp, #32
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %stack_addr_small() -> i64 {
|
||||
@@ -13,7 +14,7 @@ block0:
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sub sp, sp, #16
|
||||
; nextln: mov x0, sp
|
||||
; nextln: mov sp, fp
|
||||
; nextln: add sp, sp, #16
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -33,7 +34,9 @@ block0:
|
||||
; nextln: movk w16, #1, LSL #16
|
||||
; nextln: sub sp, sp, x16, UXTX
|
||||
; nextln: mov x0, sp
|
||||
; nextln: mov sp, fp
|
||||
; nextln: movz w16, #34480
|
||||
; nextln: movk w16, #1, LSL #16
|
||||
; nextln: add sp, sp, x16, UXTX
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -53,7 +56,7 @@ block0:
|
||||
; nextln: sub sp, sp, #16
|
||||
; nextln: mov x0, sp
|
||||
; nextln: ldr x0, [x0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: add sp, sp, #16
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -74,7 +77,9 @@ block0:
|
||||
; nextln: sub sp, sp, x16, UXTX
|
||||
; nextln: mov x0, sp
|
||||
; nextln: ldr x0, [x0]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: movz w16, #34480
|
||||
; nextln: movk w16, #1, LSL #16
|
||||
; nextln: add sp, sp, x16, UXTX
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -92,7 +97,7 @@ block0(v0: i64):
|
||||
; nextln: sub sp, sp, #16
|
||||
; nextln: mov x1, sp
|
||||
; nextln: str x0, [x1]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: add sp, sp, #16
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -113,7 +118,9 @@ block0(v0: i64):
|
||||
; nextln: sub sp, sp, x16, UXTX
|
||||
; nextln: mov x1, sp
|
||||
; nextln: str x0, [x1]
|
||||
; nextln: mov sp, fp
|
||||
; nextln: movz w16, #34480
|
||||
; nextln: movk w16, #1, LSL #16
|
||||
; nextln: add sp, sp, x16, UXTX
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %f() -> i64 {
|
||||
@@ -12,6 +13,5 @@ block0:
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: ldr x0, 8 ; b 12 ; data
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %f() {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
test compile
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
function %f_u_8_64(i8) -> i64 {
|
||||
@@ -10,7 +11,6 @@ block0(v0: i8):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: uxtb w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -23,7 +23,6 @@ block0(v0: i8):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: uxtb w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -36,7 +35,6 @@ block0(v0: i8):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: uxtb w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -49,7 +47,6 @@ block0(v0: i8):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sxtb x0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -62,7 +59,6 @@ block0(v0: i8):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sxtb w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -75,7 +71,6 @@ block0(v0: i8):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sxtb w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -88,7 +83,6 @@ block0(v0: i16):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: uxth w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -101,7 +95,6 @@ block0(v0: i16):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: uxth w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -114,7 +107,6 @@ block0(v0: i16):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sxth x0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -127,7 +119,6 @@ block0(v0: i16):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sxth w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -140,7 +131,6 @@ block0(v0: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: mov w0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -153,6 +143,5 @@ block0(v0: i32):
|
||||
; check: stp fp, lr, [sp, #-16]!
|
||||
; nextln: mov fp, sp
|
||||
; nextln: sxtw x0, w0
|
||||
; nextln: mov sp, fp
|
||||
; nextln: ldp fp, lr, [sp], #16
|
||||
; nextln: ret
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
test compile
|
||||
set enable_llvm_abi_extensions=true
|
||||
set unwind_info=true
|
||||
target x86_64
|
||||
feature "experimental_x64"
|
||||
|
||||
@@ -9,7 +10,9 @@ block0(v0: i64, v1: i64, v2: i64, v3: i64):
|
||||
}
|
||||
|
||||
; check: pushq %rbp
|
||||
; nextln: unwind PushFrameRegs { offset_upward_to_caller_sp: 16 }
|
||||
; nextln: movq %rsp, %rbp
|
||||
; nextln: unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 }
|
||||
; nextln: movq %rcx, %rax
|
||||
; nextln: movq %rbp, %rsp
|
||||
; nextln: popq %rbp
|
||||
@@ -21,7 +24,9 @@ block0(v0: i64, v1: i64, v2: i64, v3: i64):
|
||||
}
|
||||
|
||||
; check: pushq %rbp
|
||||
; nextln: unwind PushFrameRegs { offset_upward_to_caller_sp: 16 }
|
||||
; nextln: movq %rsp, %rbp
|
||||
; nextln: unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 }
|
||||
; nextln: movq %rdx, %rax
|
||||
; nextln: movq %rbp, %rsp
|
||||
; nextln: popq %rbp
|
||||
@@ -33,7 +38,9 @@ block0(v0: i64, v1: i64, v2: i64, v3: i64):
|
||||
}
|
||||
|
||||
; check: pushq %rbp
|
||||
; nextln: unwind PushFrameRegs { offset_upward_to_caller_sp: 16 }
|
||||
; nextln: movq %rsp, %rbp
|
||||
; nextln: unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 }
|
||||
; nextln: movq %r8, %rax
|
||||
; nextln: movq %rbp, %rsp
|
||||
; nextln: popq %rbp
|
||||
@@ -45,7 +52,9 @@ block0(v0: i64, v1: i64, v2: i64, v3: i64):
|
||||
}
|
||||
|
||||
; check: pushq %rbp
|
||||
; nextln: unwind PushFrameRegs { offset_upward_to_caller_sp: 16 }
|
||||
; nextln: movq %rsp, %rbp
|
||||
; nextln: unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 }
|
||||
; nextln: movq %r9, %rax
|
||||
; nextln: movq %rbp, %rsp
|
||||
; nextln: popq %rbp
|
||||
@@ -57,7 +66,9 @@ block0(v0: i64, v1: i64, v2: f64, v3: i64):
|
||||
}
|
||||
|
||||
; check: pushq %rbp
|
||||
; nextln: unwind PushFrameRegs { offset_upward_to_caller_sp: 16 }
|
||||
; nextln: movq %rsp, %rbp
|
||||
; nextln: unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 }
|
||||
; nextln: movaps %xmm2, %xmm0
|
||||
; nextln: movq %rbp, %rsp
|
||||
; nextln: popq %rbp
|
||||
@@ -69,7 +80,9 @@ block0(v0: i64, v1: i64, v2: f64, v3: i64):
|
||||
}
|
||||
|
||||
; check: pushq %rbp
|
||||
; nextln: unwind PushFrameRegs { offset_upward_to_caller_sp: 16 }
|
||||
; nextln: movq %rsp, %rbp
|
||||
; nextln: unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 }
|
||||
; nextln: movq %r9, %rax
|
||||
; nextln: movq %rbp, %rsp
|
||||
; nextln: popq %rbp
|
||||
@@ -91,10 +104,12 @@ block0(v0: i64, v1: i64, v2: i64, v3: i64, v4: i64, v5: i64):
|
||||
;; TODO(#2704): fix regalloc's register priority ordering!
|
||||
|
||||
; check: pushq %rbp
|
||||
; nextln: unwind PushFrameRegs { offset_upward_to_caller_sp: 16 }
|
||||
; nextln: movq %rsp, %rbp
|
||||
; nextln: unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 16 }
|
||||
; nextln: subq $$16, %rsp
|
||||
; nextln: movq %rsi, 0(%rsp)
|
||||
; nextln: virtual_sp_offset_adjust 16
|
||||
; nextln: unwind SaveReg { clobber_offset: 0, reg: r16J }
|
||||
; nextln: movq 48(%rbp), %rsi
|
||||
; nextln: movq 56(%rbp), %rsi
|
||||
; nextln: movq %rsi, %rax
|
||||
@@ -114,11 +129,14 @@ block0(v0: i128, v1: i64, v2: i128, v3: i128):
|
||||
;; stack slot.
|
||||
|
||||
; check: pushq %rbp
|
||||
; nextln: unwind PushFrameRegs { offset_upward_to_caller_sp: 16 }
|
||||
; nextln: movq %rsp, %rbp
|
||||
; nextln: unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 16 }
|
||||
; nextln: subq $$16, %rsp
|
||||
; nextln: movq %rsi, 0(%rsp)
|
||||
; nextln: unwind SaveReg { clobber_offset: 0, reg: r16J }
|
||||
; nextln: movq %rdi, 8(%rsp)
|
||||
; nextln: virtual_sp_offset_adjust 16
|
||||
; nextln: unwind SaveReg { clobber_offset: 8, reg: r17J }
|
||||
; nextln: movq 48(%rbp), %rsi
|
||||
; nextln: movq 56(%rbp), %rsi
|
||||
; nextln: movq 64(%rbp), %rdi
|
||||
@@ -142,10 +160,12 @@ block0(v0: i64):
|
||||
}
|
||||
|
||||
; check: pushq %rbp
|
||||
; nextln: unwind PushFrameRegs { offset_upward_to_caller_sp: 16 }
|
||||
; nextln: movq %rsp, %rbp
|
||||
; nextln: unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 16 }
|
||||
; nextln: subq $$16, %rsp
|
||||
; nextln: movq %rsi, 0(%rsp)
|
||||
; nextln: virtual_sp_offset_adjust 16
|
||||
; nextln: unwind SaveReg { clobber_offset: 0, reg: r16J }
|
||||
; nextln: movq %rcx, %rsi
|
||||
; nextln: cvtsi2sd %rsi, %xmm3
|
||||
; nextln: subq $$48, %rsp
|
||||
@@ -216,19 +236,30 @@ block0(v0: i64):
|
||||
}
|
||||
|
||||
; check: pushq %rbp
|
||||
; nextln: unwind PushFrameRegs { offset_upward_to_caller_sp: 16 }
|
||||
; nextln: movq %rsp, %rbp
|
||||
; nextln: unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 160 }
|
||||
; nextln: subq $$208, %rsp
|
||||
; nextln: movdqu %xmm6, 0(%rsp)
|
||||
; nextln: movdqu %xmm7, 16(%rsp)
|
||||
; nextln: movdqu %xmm8, 32(%rsp)
|
||||
; nextln: movdqu %xmm9, 48(%rsp)
|
||||
; nextln: movdqu %xmm10, 64(%rsp)
|
||||
; nextln: movdqu %xmm11, 80(%rsp)
|
||||
; nextln: movdqu %xmm12, 96(%rsp)
|
||||
; nextln: movdqu %xmm13, 112(%rsp)
|
||||
; nextln: movdqu %xmm14, 128(%rsp)
|
||||
; nextln: movdqu %xmm15, 144(%rsp)
|
||||
; nextln: virtual_sp_offset_adjust 160
|
||||
; nextln: movdqu %xmm6, 48(%rsp)
|
||||
; nextln: unwind SaveReg { clobber_offset: 0, reg: r6V }
|
||||
; nextln: movdqu %xmm7, 64(%rsp)
|
||||
; nextln: unwind SaveReg { clobber_offset: 16, reg: r7V }
|
||||
; nextln: movdqu %xmm8, 80(%rsp)
|
||||
; nextln: unwind SaveReg { clobber_offset: 32, reg: r8V }
|
||||
; nextln: movdqu %xmm9, 96(%rsp)
|
||||
; nextln: unwind SaveReg { clobber_offset: 48, reg: r9V }
|
||||
; nextln: movdqu %xmm10, 112(%rsp)
|
||||
; nextln: unwind SaveReg { clobber_offset: 64, reg: r10V }
|
||||
; nextln: movdqu %xmm11, 128(%rsp)
|
||||
; nextln: unwind SaveReg { clobber_offset: 80, reg: r11V }
|
||||
; nextln: movdqu %xmm12, 144(%rsp)
|
||||
; nextln: unwind SaveReg { clobber_offset: 96, reg: r12V }
|
||||
; nextln: movdqu %xmm13, 160(%rsp)
|
||||
; nextln: unwind SaveReg { clobber_offset: 112, reg: r13V }
|
||||
; nextln: movdqu %xmm14, 176(%rsp)
|
||||
; nextln: unwind SaveReg { clobber_offset: 128, reg: r14V }
|
||||
; nextln: movdqu %xmm15, 192(%rsp)
|
||||
; nextln: unwind SaveReg { clobber_offset: 144, reg: r15V }
|
||||
; nextln: movsd 0(%rcx), %xmm0
|
||||
; nextln: movsd %xmm0, rsp(16 + virtual offset)
|
||||
; nextln: movsd 8(%rcx), %xmm1
|
||||
@@ -282,17 +313,17 @@ block0(v0: i64):
|
||||
; nextln: addsd %xmm8, %xmm2
|
||||
; nextln: addsd %xmm3, %xmm2
|
||||
; nextln: movaps %xmm2, %xmm0
|
||||
; nextln: movdqu 0(%rsp), %xmm6
|
||||
; nextln: movdqu 16(%rsp), %xmm7
|
||||
; nextln: movdqu 32(%rsp), %xmm8
|
||||
; nextln: movdqu 48(%rsp), %xmm9
|
||||
; nextln: movdqu 64(%rsp), %xmm10
|
||||
; nextln: movdqu 80(%rsp), %xmm11
|
||||
; nextln: movdqu 96(%rsp), %xmm12
|
||||
; nextln: movdqu 112(%rsp), %xmm13
|
||||
; nextln: movdqu 128(%rsp), %xmm14
|
||||
; nextln: movdqu 144(%rsp), %xmm15
|
||||
; nextln: addq $$160, %rsp
|
||||
; nextln: movdqu 48(%rsp), %xmm6
|
||||
; nextln: movdqu 64(%rsp), %xmm7
|
||||
; nextln: movdqu 80(%rsp), %xmm8
|
||||
; nextln: movdqu 96(%rsp), %xmm9
|
||||
; nextln: movdqu 112(%rsp), %xmm10
|
||||
; nextln: movdqu 128(%rsp), %xmm11
|
||||
; nextln: movdqu 144(%rsp), %xmm12
|
||||
; nextln: movdqu 160(%rsp), %xmm13
|
||||
; nextln: movdqu 176(%rsp), %xmm14
|
||||
; nextln: movdqu 192(%rsp), %xmm15
|
||||
; nextln: addq $$208, %rsp
|
||||
; nextln: movq %rbp, %rsp
|
||||
; nextln: popq %rbp
|
||||
; nextln: ret
|
||||
|
||||
@@ -744,7 +744,6 @@ block0(v0: i128, v1: i128, v2: i64, v3: i128, v4: i128, v5: i128):
|
||||
; nextln: subq $$16, %rsp
|
||||
; nextln: movq %r12, 0(%rsp)
|
||||
; nextln: movq %r13, 8(%rsp)
|
||||
; nextln: virtual_sp_offset_adjust 16
|
||||
; nextln: movq 16(%rbp), %r10
|
||||
; nextln: movq 24(%rbp), %r12
|
||||
; nextln: movq 32(%rbp), %r11
|
||||
@@ -804,7 +803,6 @@ block0(v0: i128, v1: i128):
|
||||
; nextln: movq %rsp, %rbp
|
||||
; nextln: subq $$16, %rsp
|
||||
; nextln: movq %r12, 0(%rsp)
|
||||
; nextln: virtual_sp_offset_adjust 16
|
||||
; nextln: movq %r8, %r12
|
||||
; nextln: subq $$16, %rsp
|
||||
; nextln: virtual_sp_offset_adjust 16
|
||||
|
||||
@@ -72,7 +72,6 @@ block0(v0: i64, v1: i64):
|
||||
; nextln: movq %rsp, %rbp
|
||||
; nextln: subq $$16, %rsp
|
||||
; nextln: movq %r12, 0(%rsp)
|
||||
; nextln: virtual_sp_offset_adjust 16
|
||||
; nextln: movq %rdi, %r12
|
||||
; nextln: subq $$64, %rsp
|
||||
; nextln: virtual_sp_offset_adjust 64
|
||||
@@ -121,7 +120,6 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
; nextln: subq $$16, %rsp
|
||||
; nextln: movq %r12, 0(%rsp)
|
||||
; nextln: movq %r13, 8(%rsp)
|
||||
; nextln: virtual_sp_offset_adjust 16
|
||||
; nextln: movq %rdi, %r12
|
||||
; nextln: movq %rdx, %r13
|
||||
; nextln: subq $$192, %rsp
|
||||
|
||||
Reference in New Issue
Block a user