• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=aarch64--linux-gnu -mattr=+sve < %s | FileCheck %s
3
4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5; scaled 64-bit offsets
6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
8define void @masked_scatter_nxv2i16(<vscale x 2 x i16> %data, i16* %base, <vscale x 2 x i64> %offsets, <vscale x 2 x i1> %mask) {
9; CHECK-LABEL: masked_scatter_nxv2i16:
10; CHECK:       // %bb.0:
11; CHECK-NEXT:    st1h { z0.d }, p0, [x0, z1.d, lsl #1]
12; CHECK-NEXT:    ret
13  %ptrs = getelementptr i16, i16* %base, <vscale x 2 x i64> %offsets
14  call void @llvm.masked.scatter.nxv2i16(<vscale x 2 x i16> %data, <vscale x 2 x i16*> %ptrs, i32 2, <vscale x 2 x i1> %mask)
15  ret void
16}
17
18define void @masked_scatter_nxv2i32(<vscale x 2 x i32> %data, i32* %base, <vscale x 2 x i64> %offsets, <vscale x 2 x i1> %mask) {
19; CHECK-LABEL: masked_scatter_nxv2i32:
20; CHECK:       // %bb.0:
21; CHECK-NEXT:    st1w { z0.d }, p0, [x0, z1.d, lsl #2]
22; CHECK-NEXT:    ret
23  %ptrs = getelementptr i32, i32* %base, <vscale x 2 x i64> %offsets
24  call void @llvm.masked.scatter.nxv2i32(<vscale x 2 x i32> %data, <vscale x 2 x i32*> %ptrs, i32 4, <vscale x 2 x i1> %mask)
25  ret void
26}
27
28define void @masked_scatter_nxv2i64(<vscale x 2 x i64> %data, i64* %base, <vscale x 2 x i64> %offsets, <vscale x 2 x i1> %mask) {
29; CHECK-LABEL: masked_scatter_nxv2i64:
30; CHECK:       // %bb.0:
31; CHECK-NEXT:    st1d { z0.d }, p0, [x0, z1.d, lsl #3]
32; CHECK-NEXT:    ret
33  %ptrs = getelementptr i64, i64* %base, <vscale x 2 x i64> %offsets
34  call void @llvm.masked.scatter.nxv2i64(<vscale x 2 x i64> %data, <vscale x 2 x i64*> %ptrs, i32 8, <vscale x 2 x i1> %mask)
35  ret void
36}
37
38define void @masked_scatter_nxv2f16(<vscale x 2 x half> %data, half* %base, <vscale x 2 x i64> %offsets, <vscale x 2 x i1> %mask) {
39; CHECK-LABEL: masked_scatter_nxv2f16:
40; CHECK:       // %bb.0:
41; CHECK-NEXT:    st1h { z0.d }, p0, [x0, z1.d, lsl #1]
42; CHECK-NEXT:    ret
43  %ptrs = getelementptr half, half* %base, <vscale x 2 x i64> %offsets
44  call void @llvm.masked.scatter.nxv2f16(<vscale x 2 x half> %data, <vscale x 2 x half*> %ptrs, i32 2, <vscale x 2 x i1> %mask)
45  ret void
46}
47
48define void @masked_scatter_nxv2f32(<vscale x 2 x float> %data, float* %base, <vscale x 2 x i64> %offsets, <vscale x 2 x i1> %mask) {
49; CHECK-LABEL: masked_scatter_nxv2f32:
50; CHECK:       // %bb.0:
51; CHECK-NEXT:    st1w { z0.d }, p0, [x0, z1.d, lsl #2]
52; CHECK-NEXT:    ret
53  %ptrs = getelementptr float, float* %base, <vscale x 2 x i64> %offsets
54  call void @llvm.masked.scatter.nxv2f32(<vscale x 2 x float> %data, <vscale x 2 x float*> %ptrs, i32 4, <vscale x 2 x i1> %mask)
55  ret void
56}
57
58define void @masked_scatter_nxv2f64(<vscale x 2 x double> %data, double* %base, <vscale x 2 x i64> %offsets, <vscale x 2 x i1> %mask) {
59; CHECK-LABEL: masked_scatter_nxv2f64:
60; CHECK:       // %bb.0:
61; CHECK-NEXT:    st1d { z0.d }, p0, [x0, z1.d, lsl #3]
62; CHECK-NEXT:    ret
63  %ptrs = getelementptr double, double* %base, <vscale x 2 x i64> %offsets
64  call void @llvm.masked.scatter.nxv2f64(<vscale x 2 x double> %data, <vscale x 2 x double*> %ptrs, i32 8, <vscale x 2 x i1> %mask)
65  ret void
66}
67
68declare void @llvm.masked.scatter.nxv2i16(<vscale x 2 x i16>, <vscale x 2 x i16*>, i32, <vscale x 2 x i1>)
69declare void @llvm.masked.scatter.nxv2i32(<vscale x 2 x i32>, <vscale x 2 x i32*>, i32, <vscale x 2 x i1>)
70declare void @llvm.masked.scatter.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i64*>, i32, <vscale x 2 x i1>)
71declare void @llvm.masked.scatter.nxv2f16(<vscale x 2 x half>, <vscale x 2 x half*>, i32, <vscale x 2 x i1>)
72declare void @llvm.masked.scatter.nxv2f32(<vscale x 2 x float>, <vscale x 2 x float*>, i32, <vscale x 2 x i1>)
73declare void @llvm.masked.scatter.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double*>, i32, <vscale x 2 x i1>)
74