Skip to content

Commit c2ec748

Browse files
authored
Backport #4891 to the 1.0.0 release branch (#4901)
Back-port #4891 into the 1.0.0 release branch.
1 parent b81e874 commit c2ec748

File tree

3 files changed

+57
-48
lines changed

3 files changed

+57
-48
lines changed

cranelift/codegen/src/isa/x64/lower/isle.rs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -165,14 +165,6 @@ impl Context for IsleContext<'_, '_, MInst, Flags, IsaFlags, 6> {
165165
.unwrap();
166166
}
167167

168-
if let InputSourceInst::UniqueUse(src_insn, 0) = inputs.inst {
169-
if let Some((addr_input, offset)) = is_mergeable_load(self.lower_ctx, src_insn) {
170-
self.lower_ctx.sink_inst(src_insn);
171-
let amode = lower_to_amode(self.lower_ctx, addr_input, offset);
172-
return XmmMem::new(RegMem::mem(amode)).unwrap();
173-
}
174-
}
175-
176168
XmmMem::new(RegMem::reg(self.put_in_reg(val))).unwrap()
177169
}
178170

cranelift/filetests/filetests/isa/x64/fastcall.clif

Lines changed: 45 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -221,42 +221,44 @@ block0(v0: i64):
221221
; unwind PushFrameRegs { offset_upward_to_caller_sp: 16 }
222222
; movq %rsp, %rbp
223223
; unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 160 }
224-
; subq %rsp, $224, %rsp
225-
; movdqu %xmm6, 64(%rsp)
224+
; subq %rsp, $256, %rsp
225+
; movdqu %xmm6, 96(%rsp)
226226
; unwind SaveReg { clobber_offset: 0, reg: p6f }
227-
; movdqu %xmm7, 80(%rsp)
227+
; movdqu %xmm7, 112(%rsp)
228228
; unwind SaveReg { clobber_offset: 16, reg: p7f }
229-
; movdqu %xmm8, 96(%rsp)
229+
; movdqu %xmm8, 128(%rsp)
230230
; unwind SaveReg { clobber_offset: 32, reg: p8f }
231-
; movdqu %xmm9, 112(%rsp)
231+
; movdqu %xmm9, 144(%rsp)
232232
; unwind SaveReg { clobber_offset: 48, reg: p9f }
233-
; movdqu %xmm10, 128(%rsp)
233+
; movdqu %xmm10, 160(%rsp)
234234
; unwind SaveReg { clobber_offset: 64, reg: p10f }
235-
; movdqu %xmm11, 144(%rsp)
235+
; movdqu %xmm11, 176(%rsp)
236236
; unwind SaveReg { clobber_offset: 80, reg: p11f }
237-
; movdqu %xmm12, 160(%rsp)
237+
; movdqu %xmm12, 192(%rsp)
238238
; unwind SaveReg { clobber_offset: 96, reg: p12f }
239-
; movdqu %xmm13, 176(%rsp)
239+
; movdqu %xmm13, 208(%rsp)
240240
; unwind SaveReg { clobber_offset: 112, reg: p13f }
241-
; movdqu %xmm14, 192(%rsp)
241+
; movdqu %xmm14, 224(%rsp)
242242
; unwind SaveReg { clobber_offset: 128, reg: p14f }
243-
; movdqu %xmm15, 208(%rsp)
243+
; movdqu %xmm15, 240(%rsp)
244244
; unwind SaveReg { clobber_offset: 144, reg: p15f }
245245
; block0:
246246
; movsd 0(%rcx), %xmm0
247247
; movsd 8(%rcx), %xmm11
248-
; movdqu %xmm11, rsp(48 + virtual offset)
249-
; movsd 16(%rcx), %xmm6
248+
; movdqu %xmm11, rsp(80 + virtual offset)
249+
; movsd 16(%rcx), %xmm3
250+
; movdqu %xmm3, rsp(0 + virtual offset)
250251
; movsd 24(%rcx), %xmm15
251-
; movdqu %xmm15, rsp(32 + virtual offset)
252+
; movdqu %xmm15, rsp(64 + virtual offset)
252253
; movsd 32(%rcx), %xmm14
253254
; movsd 40(%rcx), %xmm1
254-
; movdqu %xmm1, rsp(16 + virtual offset)
255+
; movdqu %xmm1, rsp(48 + virtual offset)
255256
; movsd 48(%rcx), %xmm8
256-
; movsd 56(%rcx), %xmm9
257-
; movdqu %xmm9, rsp(0 + virtual offset)
257+
; movsd 56(%rcx), %xmm6
258+
; movdqu %xmm6, rsp(32 + virtual offset)
258259
; movsd 64(%rcx), %xmm13
259-
; movsd 72(%rcx), %xmm3
260+
; movsd 72(%rcx), %xmm5
261+
; movdqu %xmm5, rsp(16 + virtual offset)
260262
; movsd 80(%rcx), %xmm10
261263
; movsd 88(%rcx), %xmm5
262264
; movsd 96(%rcx), %xmm4
@@ -266,21 +268,24 @@ block0(v0: i64):
266268
; movsd 128(%rcx), %xmm7
267269
; movsd 136(%rcx), %xmm15
268270
; movsd 144(%rcx), %xmm2
269-
; movdqu rsp(48 + virtual offset), %xmm1
270-
; addsd %xmm0, %xmm1, %xmm0
271-
; movdqu rsp(32 + virtual offset), %xmm1
272-
; addsd %xmm6, %xmm1, %xmm6
273-
; movdqu rsp(16 + virtual offset), %xmm1
274-
; addsd %xmm14, %xmm1, %xmm14
275-
; movdqu rsp(0 + virtual offset), %xmm1
276-
; addsd %xmm8, %xmm1, %xmm8
277-
; addsd %xmm13, %xmm3, %xmm13
271+
; movsd 152(%rcx), %xmm1
272+
; movdqu rsp(80 + virtual offset), %xmm3
273+
; addsd %xmm0, %xmm3, %xmm0
274+
; movdqu rsp(0 + virtual offset), %xmm3
275+
; movdqu rsp(64 + virtual offset), %xmm6
276+
; addsd %xmm3, %xmm6, %xmm3
277+
; movdqu rsp(48 + virtual offset), %xmm6
278+
; addsd %xmm14, %xmm6, %xmm14
279+
; movdqu rsp(32 + virtual offset), %xmm6
280+
; addsd %xmm8, %xmm6, %xmm8
281+
; movdqu rsp(16 + virtual offset), %xmm6
282+
; addsd %xmm13, %xmm6, %xmm13
278283
; addsd %xmm10, %xmm5, %xmm10
279284
; addsd %xmm4, %xmm9, %xmm4
280285
; addsd %xmm12, %xmm11, %xmm12
281286
; addsd %xmm7, %xmm15, %xmm7
282-
; addsd %xmm2, 152(%rcx), %xmm2
283-
; addsd %xmm0, %xmm6, %xmm0
287+
; addsd %xmm2, %xmm1, %xmm2
288+
; addsd %xmm0, %xmm3, %xmm0
284289
; addsd %xmm14, %xmm8, %xmm14
285290
; addsd %xmm13, %xmm10, %xmm13
286291
; addsd %xmm4, %xmm12, %xmm4
@@ -289,17 +294,17 @@ block0(v0: i64):
289294
; addsd %xmm13, %xmm4, %xmm13
290295
; addsd %xmm0, %xmm13, %xmm0
291296
; addsd %xmm0, %xmm7, %xmm0
292-
; movdqu 64(%rsp), %xmm6
293-
; movdqu 80(%rsp), %xmm7
294-
; movdqu 96(%rsp), %xmm8
295-
; movdqu 112(%rsp), %xmm9
296-
; movdqu 128(%rsp), %xmm10
297-
; movdqu 144(%rsp), %xmm11
298-
; movdqu 160(%rsp), %xmm12
299-
; movdqu 176(%rsp), %xmm13
300-
; movdqu 192(%rsp), %xmm14
301-
; movdqu 208(%rsp), %xmm15
302-
; addq %rsp, $224, %rsp
297+
; movdqu 96(%rsp), %xmm6
298+
; movdqu 112(%rsp), %xmm7
299+
; movdqu 128(%rsp), %xmm8
300+
; movdqu 144(%rsp), %xmm9
301+
; movdqu 160(%rsp), %xmm10
302+
; movdqu 176(%rsp), %xmm11
303+
; movdqu 192(%rsp), %xmm12
304+
; movdqu 208(%rsp), %xmm13
305+
; movdqu 224(%rsp), %xmm14
306+
; movdqu 240(%rsp), %xmm15
307+
; addq %rsp, $256, %rsp
303308
; movq %rbp, %rsp
304309
; popq %rbp
305310
; ret
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
(module
2+
(func (param i32) (result f32)
3+
f32.const 0
4+
local.get 0
5+
f32.load offset=1
6+
f32.copysign
7+
)
8+
(memory 1)
9+
(export "f" (func 0))
10+
)
11+
12+
(assert_return (invoke "f" (i32.const 0)) (f32.const 0))

0 commit comments

Comments
 (0)