Skip to content

Commit 121ca44

Browse files
committed
[CodeGen] Use SPLAT_VECTOR for zeroinitialiser with scalable types
Adding tests that I forgot to add as part of a previous change: https://reviews.llvm.org/D78636
1 parent 9dc168b commit 121ca44

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s
2+
3+
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
4+
target triple = "aarch64-none-linux-gnu"
5+
6+
define <vscale x 2 x i64> @test_zeroinit_2xi64() {
7+
; CHECK-LABEL: test_zeroinit_2xi64
8+
; CHECK: mov z0.d, #0
9+
; CHECK-NEXT: ret
10+
ret <vscale x 2 x i64> zeroinitializer
11+
}
12+
13+
define <vscale x 4 x i32> @test_zeroinit_4xi32() {
14+
; CHECK-LABEL: test_zeroinit_4xi32
15+
; CHECK: mov z0.s, #0
16+
; CHECK-NEXT: ret
17+
ret <vscale x 4 x i32> zeroinitializer
18+
}
19+
20+
define <vscale x 8 x i16> @test_zeroinit_8xi16() {
21+
; CHECK-LABEL: test_zeroinit_8xi16
22+
; CHECK: mov z0.h, #0
23+
; CHECK-NEXT: ret
24+
ret <vscale x 8 x i16> zeroinitializer
25+
}
26+
27+
define <vscale x 16 x i8> @test_zeroinit_16xi8() {
28+
; CHECK-LABEL: test_zeroinit_16xi8
29+
; CHECK: mov z0.b, #0
30+
; CHECK-NEXT: ret
31+
ret <vscale x 16 x i8> zeroinitializer
32+
}
33+
34+
define <vscale x 2 x double> @test_zeroinit_2xf64() {
35+
; CHECK-LABEL: test_zeroinit_2xf64
36+
; CHECK: mov z0.d, #0
37+
; CHECK-NEXT: ret
38+
ret <vscale x 2 x double> zeroinitializer
39+
}
40+
41+
define <vscale x 4 x float> @test_zeroinit_4xf32() {
42+
; CHECK-LABEL: test_zeroinit_4xf32
43+
; CHECK: mov z0.s, #0
44+
; CHECK-NEXT: ret
45+
ret <vscale x 4 x float> zeroinitializer
46+
}
47+
48+
define <vscale x 8 x half> @test_zeroinit_8xf16() {
49+
; CHECK-LABEL: test_zeroinit_8xf16
50+
; CHECK: mov z0.h, #0
51+
; CHECK-NEXT: ret
52+
ret <vscale x 8 x half> zeroinitializer
53+
}
54+
55+
define <vscale x 2 x i1> @test_zeroinit_2xi1() {
56+
; CHECK-LABEL: test_zeroinit_2xi1
57+
; CHECK: whilelo p0.d, xzr, xzr
58+
; CHECK-NEXT: ret
59+
ret <vscale x 2 x i1> zeroinitializer
60+
}
61+
62+
define <vscale x 4 x i1> @test_zeroinit_4xi1() {
63+
; CHECK-LABEL: test_zeroinit_4xi1
64+
; CHECK: whilelo p0.s, xzr, xzr
65+
; CHECK-NEXT: ret
66+
ret <vscale x 4 x i1> zeroinitializer
67+
}
68+
69+
define <vscale x 8 x i1> @test_zeroinit_8xi1() {
70+
; CHECK-LABEL: test_zeroinit_8xi1
71+
; CHECK: whilelo p0.h, xzr, xzr
72+
; CHECK-NEXT: ret
73+
ret <vscale x 8 x i1> zeroinitializer
74+
}
75+
76+
define <vscale x 16 x i1> @test_zeroinit_16xi1() {
77+
; CHECK-LABEL: test_zeroinit_16xi1
78+
; CHECK: whilelo p0.b, xzr, xzr
79+
; CHECK-NEXT: ret
80+
ret <vscale x 16 x i1> zeroinitializer
81+
}

0 commit comments

Comments
 (0)