Skip to content

Commit 701620d

Browse files
paulwalker-armtru
authored andcommitted
[SVE] Precommit test to show missing initialisation of call operand.
When calling func_f8_and_v0_passed_via_memory the memory used to hold the first vector operand is allocated but not initialised.
1 parent e19b7dc commit 701620d

File tree

1 file changed

+37
-7
lines changed

1 file changed

+37
-7
lines changed

llvm/test/CodeGen/AArch64/sve-calling-convention-mixed.ll

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,13 @@ define float @foo2(ptr %x0, ptr %x1) nounwind {
6464
; CHECK-NEXT: ld4d { z16.d - z19.d }, p0/z, [x1]
6565
; CHECK-NEXT: fmov s0, #1.00000000
6666
; CHECK-NEXT: mov w0, wzr
67-
; CHECK-NEXT: mov w1, #1
68-
; CHECK-NEXT: mov w2, #2
69-
; CHECK-NEXT: mov w3, #3
70-
; CHECK-NEXT: mov w4, #4
71-
; CHECK-NEXT: mov w5, #5
72-
; CHECK-NEXT: mov w6, #6
73-
; CHECK-NEXT: mov w7, #7
67+
; CHECK-NEXT: mov w1, #1 // =0x1
68+
; CHECK-NEXT: mov w2, #2 // =0x2
69+
; CHECK-NEXT: mov w3, #3 // =0x3
70+
; CHECK-NEXT: mov w4, #4 // =0x4
71+
; CHECK-NEXT: mov w5, #5 // =0x5
72+
; CHECK-NEXT: mov w6, #6 // =0x6
73+
; CHECK-NEXT: mov w7, #7 // =0x7
7474
; CHECK-NEXT: add x9, sp, #16
7575
; CHECK-NEXT: ptrue p0.d
7676
; CHECK-NEXT: st1d { z16.d }, p0, [x9]
@@ -694,6 +694,36 @@ define <vscale x 4 x float> @sve_ret_caller_non_sve_callee_high_range() {
694694
ret <vscale x 4 x float> undef
695695
}
696696

697+
declare void @func_f8_and_v0_passed_via_memory(float %f0, float %f1, float %f2, float %f3, float %f4, float %f5, float %f6, float %f7, float %f8, <vscale x 4 x float> %v0)
698+
define void @verify_all_operands_are_initialised() {
699+
; CHECK-LABEL: verify_all_operands_are_initialised:
700+
; CHECK: // %bb.0:
701+
; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill
702+
; CHECK-NEXT: addvl sp, sp, #-1
703+
; CHECK-NEXT: sub sp, sp, #16
704+
; CHECK-NEXT: .cfi_escape 0x0f, 0x0c, 0x8f, 0x00, 0x11, 0x20, 0x22, 0x11, 0x08, 0x92, 0x2e, 0x00, 0x1e, 0x22 // sp + 32 + 8 * VG
705+
; CHECK-NEXT: .cfi_offset w30, -8
706+
; CHECK-NEXT: .cfi_offset w29, -16
707+
; CHECK-NEXT: movi d0, #0000000000000000
708+
; CHECK-NEXT: mov w8, #1090519040 // =0x41000000
709+
; CHECK-NEXT: fmov s1, #1.00000000
710+
; CHECK-NEXT: fmov s2, #2.00000000
711+
; CHECK-NEXT: fmov s3, #3.00000000
712+
; CHECK-NEXT: fmov s4, #4.00000000
713+
; CHECK-NEXT: fmov s5, #5.00000000
714+
; CHECK-NEXT: fmov s6, #6.00000000
715+
; CHECK-NEXT: fmov s7, #7.00000000
716+
; CHECK-NEXT: add x0, sp, #16
717+
; CHECK-NEXT: str w8, [sp]
718+
; CHECK-NEXT: bl func_f8_and_v0_passed_via_memory
719+
; CHECK-NEXT: addvl sp, sp, #1
720+
; CHECK-NEXT: add sp, sp, #16
721+
; CHECK-NEXT: ldp x29, x30, [sp], #16 // 16-byte Folded Reload
722+
; CHECK-NEXT: ret
723+
call void @func_f8_and_v0_passed_via_memory(float 0.0, float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, float 6.0, float 7.0, float 8.0, <vscale x 4 x float> shufflevector (<vscale x 4 x float> insertelement (<vscale x 4 x float> poison, float 9.000000e+00, i64 0), <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer))
724+
ret void
725+
}
726+
697727
declare float @callee1(float, <vscale x 8 x double>, <vscale x 8 x double>, <vscale x 2 x double>)
698728
declare float @callee2(i32, i32, i32, i32, i32, i32, i32, i32, float, <vscale x 8 x double>, <vscale x 8 x double>)
699729
declare float @callee3(float, float, <vscale x 8 x double>, <vscale x 6 x double>, <vscale x 2 x double>)

0 commit comments

Comments
 (0)