[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / AArch64 / sve-streaming-mode-fixed-length-loads.ll
blob688c39b89c0df0ebf09d9a1a985a5025d58a06a9
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mattr=+sve -force-streaming-compatible-sve < %s | FileCheck %s
3 ; RUN: llc -mattr=+sme -force-streaming-compatible-sve < %s | FileCheck %s
5 target triple = "aarch64-unknown-linux-gnu"
7 define <4 x i8> @load_v4i8(ptr %a) {
8 ; CHECK-LABEL: load_v4i8:
9 ; CHECK:       // %bb.0:
10 ; CHECK-NEXT:    ptrue p0.h, vl4
11 ; CHECK-NEXT:    ld1b { z0.h }, p0/z, [x0]
12 ; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z0
13 ; CHECK-NEXT:    ret
14   %load = load <4 x i8>, ptr %a
15   ret <4 x i8> %load
18 define <8 x i8> @load_v8i8(ptr %a) {
19 ; CHECK-LABEL: load_v8i8:
20 ; CHECK:       // %bb.0:
21 ; CHECK-NEXT:    ldr d0, [x0]
22 ; CHECK-NEXT:    ret
23   %load = load <8 x i8>, ptr %a
24   ret <8 x i8> %load
27 define <16 x i8> @load_v16i8(ptr %a) {
28 ; CHECK-LABEL: load_v16i8:
29 ; CHECK:       // %bb.0:
30 ; CHECK-NEXT:    ldr q0, [x0]
31 ; CHECK-NEXT:    ret
32   %load = load <16 x i8>, ptr %a
33   ret <16 x i8> %load
36 define <32 x i8> @load_v32i8(ptr %a) {
37 ; CHECK-LABEL: load_v32i8:
38 ; CHECK:       // %bb.0:
39 ; CHECK-NEXT:    ldp q0, q1, [x0]
40 ; CHECK-NEXT:    ret
41   %load = load <32 x i8>, ptr %a
42   ret <32 x i8> %load
45 define <2 x i16> @load_v2i16(ptr %a) {
46 ; CHECK-LABEL: load_v2i16:
47 ; CHECK:       // %bb.0:
48 ; CHECK-NEXT:    sub sp, sp, #16
49 ; CHECK-NEXT:    .cfi_def_cfa_offset 16
50 ; CHECK-NEXT:    ldrh w8, [x0, #2]
51 ; CHECK-NEXT:    str w8, [sp, #12]
52 ; CHECK-NEXT:    ldrh w8, [x0]
53 ; CHECK-NEXT:    str w8, [sp, #8]
54 ; CHECK-NEXT:    ldr d0, [sp, #8]
55 ; CHECK-NEXT:    add sp, sp, #16
56 ; CHECK-NEXT:    ret
57   %load = load <2 x i16>, ptr %a
58   ret <2 x i16> %load
61 define <2 x half> @load_v2f16(ptr %a) {
62 ; CHECK-LABEL: load_v2f16:
63 ; CHECK:       // %bb.0:
64 ; CHECK-NEXT:    ldr s0, [x0]
65 ; CHECK-NEXT:    ret
66   %load = load <2 x half>, ptr %a
67   ret <2 x half> %load
70 define <4 x i16> @load_v4i16(ptr %a) {
71 ; CHECK-LABEL: load_v4i16:
72 ; CHECK:       // %bb.0:
73 ; CHECK-NEXT:    ldr d0, [x0]
74 ; CHECK-NEXT:    ret
75   %load = load <4 x i16>, ptr %a
76   ret <4 x i16> %load
79 define <4 x half> @load_v4f16(ptr %a) {
80 ; CHECK-LABEL: load_v4f16:
81 ; CHECK:       // %bb.0:
82 ; CHECK-NEXT:    ldr d0, [x0]
83 ; CHECK-NEXT:    ret
84   %load = load <4 x half>, ptr %a
85   ret <4 x half> %load
88 define <8 x i16> @load_v8i16(ptr %a) {
89 ; CHECK-LABEL: load_v8i16:
90 ; CHECK:       // %bb.0:
91 ; CHECK-NEXT:    ldr q0, [x0]
92 ; CHECK-NEXT:    ret
93   %load = load <8 x i16>, ptr %a
94   ret <8 x i16> %load
97 define <8 x half> @load_v8f16(ptr %a) {
98 ; CHECK-LABEL: load_v8f16:
99 ; CHECK:       // %bb.0:
100 ; CHECK-NEXT:    ldr q0, [x0]
101 ; CHECK-NEXT:    ret
102   %load = load <8 x half>, ptr %a
103   ret <8 x half> %load
106 define <16 x i16> @load_v16i16(ptr %a) {
107 ; CHECK-LABEL: load_v16i16:
108 ; CHECK:       // %bb.0:
109 ; CHECK-NEXT:    ldp q0, q1, [x0]
110 ; CHECK-NEXT:    ret
111   %load = load <16 x i16>, ptr %a
112   ret <16 x i16> %load
115 define <16 x half> @load_v16f16(ptr %a) {
116 ; CHECK-LABEL: load_v16f16:
117 ; CHECK:       // %bb.0:
118 ; CHECK-NEXT:    ldp q0, q1, [x0]
119 ; CHECK-NEXT:    ret
120   %load = load <16 x half>, ptr %a
121   ret <16 x half> %load
124 define <2 x i32> @load_v2i32(ptr %a) {
125 ; CHECK-LABEL: load_v2i32:
126 ; CHECK:       // %bb.0:
127 ; CHECK-NEXT:    ldr d0, [x0]
128 ; CHECK-NEXT:    ret
129   %load = load <2 x i32>, ptr %a
130   ret <2 x i32> %load
133 define <2 x float> @load_v2f32(ptr %a) {
134 ; CHECK-LABEL: load_v2f32:
135 ; CHECK:       // %bb.0:
136 ; CHECK-NEXT:    ldr d0, [x0]
137 ; CHECK-NEXT:    ret
138   %load = load <2 x float>, ptr %a
139   ret <2 x float> %load
142 define <4 x i32> @load_v4i32(ptr %a) {
143 ; CHECK-LABEL: load_v4i32:
144 ; CHECK:       // %bb.0:
145 ; CHECK-NEXT:    ldr q0, [x0]
146 ; CHECK-NEXT:    ret
147   %load = load <4 x i32>, ptr %a
148   ret <4 x i32> %load
151 define <4 x float> @load_v4f32(ptr %a) {
152 ; CHECK-LABEL: load_v4f32:
153 ; CHECK:       // %bb.0:
154 ; CHECK-NEXT:    ldr q0, [x0]
155 ; CHECK-NEXT:    ret
156   %load = load <4 x float>, ptr %a
157   ret <4 x float> %load
160 define <8 x i32> @load_v8i32(ptr %a) {
161 ; CHECK-LABEL: load_v8i32:
162 ; CHECK:       // %bb.0:
163 ; CHECK-NEXT:    ldp q0, q1, [x0]
164 ; CHECK-NEXT:    ret
165   %load = load <8 x i32>, ptr %a
166   ret <8 x i32> %load
169 define <8 x float> @load_v8f32(ptr %a) {
170 ; CHECK-LABEL: load_v8f32:
171 ; CHECK:       // %bb.0:
172 ; CHECK-NEXT:    ldp q0, q1, [x0]
173 ; CHECK-NEXT:    ret
174   %load = load <8 x float>, ptr %a
175   ret <8 x float> %load
178 define <1 x i64> @load_v1i64(ptr %a) {
179 ; CHECK-LABEL: load_v1i64:
180 ; CHECK:       // %bb.0:
181 ; CHECK-NEXT:    ldr d0, [x0]
182 ; CHECK-NEXT:    ret
183   %load = load <1 x i64>, ptr %a
184   ret <1 x i64> %load
187 define <1 x double> @load_v1f64(ptr %a) {
188 ; CHECK-LABEL: load_v1f64:
189 ; CHECK:       // %bb.0:
190 ; CHECK-NEXT:    ldr d0, [x0]
191 ; CHECK-NEXT:    ret
192   %load = load <1 x double>, ptr %a
193   ret <1 x double> %load
196 define <2 x i64> @load_v2i64(ptr %a) {
197 ; CHECK-LABEL: load_v2i64:
198 ; CHECK:       // %bb.0:
199 ; CHECK-NEXT:    ldr q0, [x0]
200 ; CHECK-NEXT:    ret
201   %load = load <2 x i64>, ptr %a
202   ret <2 x i64> %load
205 define <2 x double> @load_v2f64(ptr %a) {
206 ; CHECK-LABEL: load_v2f64:
207 ; CHECK:       // %bb.0:
208 ; CHECK-NEXT:    ldr q0, [x0]
209 ; CHECK-NEXT:    ret
210   %load = load <2 x double>, ptr %a
211   ret <2 x double> %load
214 define <4 x i64> @load_v4i64(ptr %a) {
215 ; CHECK-LABEL: load_v4i64:
216 ; CHECK:       // %bb.0:
217 ; CHECK-NEXT:    ldp q0, q1, [x0]
218 ; CHECK-NEXT:    ret
219   %load = load <4 x i64>, ptr %a
220   ret <4 x i64> %load
223 define <4 x double> @load_v4f64(ptr %a) {
224 ; CHECK-LABEL: load_v4f64:
225 ; CHECK:       // %bb.0:
226 ; CHECK-NEXT:    ldp q0, q1, [x0]
227 ; CHECK-NEXT:    ret
228   %load = load <4 x double>, ptr %a
229   ret <4 x double> %load