brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.1 KiB · 29c9c6a Raw
249 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 32; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve2p1,+bf16 < %s | FileCheck %s3 4declare void @llvm.aarch64.sve.st1q.scatter.scalar.offset.nxv2i64.nxv2i64(<vscale x 2 x i64>, <vscale x 1 x i1>, <vscale x 2 x i64>, i64)5declare void @llvm.aarch64.sve.st1q.scatter.scalar.offset.nxv4i32.nxv2i64(<vscale x 4 x i32>, <vscale x 1 x i1>, <vscale x 2 x i64>, i64)6declare void @llvm.aarch64.sve.st1q.scatter.scalar.offset.nxv8i16.nxv2i64(<vscale x 8 x i16>, <vscale x 1 x i1>, <vscale x 2 x i64>, i64)7declare void @llvm.aarch64.sve.st1q.scatter.scalar.offset.nxv16i8.nxv2i64(<vscale x 16 x i8>, <vscale x 1 x i1>, <vscale x 2 x i64>, i64)8declare void @llvm.aarch64.sve.st1q.scatter.scalar.offset.nxv2f64.nxv2i64(<vscale x 2 x double>, <vscale x 1 x i1>, <vscale x 2 x i64>, i64)9declare void @llvm.aarch64.sve.st1q.scatter.scalar.offset.nxv4f32.nxv2i64(<vscale x 4 x float>, <vscale x 1 x i1>, <vscale x 2 x i64>, i64)10declare void @llvm.aarch64.sve.st1q.scatter.scalar.offset.nxv8f16.nxv2i64(<vscale x 8 x half>, <vscale x 1 x i1>, <vscale x 2 x i64>, i64)11declare void @llvm.aarch64.sve.st1q.scatter.scalar.offset.nxv8bf16.nxv2i64(<vscale x 8 x bfloat>, <vscale x 1 x i1>, <vscale x 2 x i64>, i64)12declare void @llvm.aarch64.sve.st1q.scatter.index.nxv8i16(<vscale x 8 x i16>, <vscale x 1 x i1>, ptr, <vscale x 2 x i64>)13declare void @llvm.aarch64.sve.st1q.scatter.index.nxv4i32(<vscale x 4 x i32>, <vscale x 1 x i1>, ptr, <vscale x 2 x i64>)14declare void @llvm.aarch64.sve.st1q.scatter.index.nxv2i64(<vscale x 2 x i64>, <vscale x 1 x i1>, ptr, <vscale x 2 x i64>)15declare void @llvm.aarch64.sve.st1q.scatter.index.nxv8bf16(<vscale x 8 x bfloat>, <vscale x 1 x i1>, ptr, <vscale x 2 x i64>)16declare void @llvm.aarch64.sve.st1q.scatter.index.nxv8f16(<vscale x 8 x half>, <vscale x 1 x i1>, ptr, <vscale x 2 x i64>)17declare void @llvm.aarch64.sve.st1q.scatter.index.nxv4f32(<vscale x 4 x float>, <vscale x 1 x i1>, ptr, <vscale x 2 x i64>)18declare void @llvm.aarch64.sve.st1q.scatter.index.nxv2f64(<vscale x 2 x double>, <vscale x 1 x i1>, ptr, <vscale x 2 x i64>)19 20define void @test_svst1q_scatter_u64index_s16(<vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx, <vscale x 8 x i16> %data) {21; CHECK-LABEL: test_svst1q_scatter_u64index_s16:22; CHECK:       // %bb.0: // %entry23; CHECK-NEXT:    lsl z0.d, z0.d, #124; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x0]25; CHECK-NEXT:    ret26entry:27  tail call void @llvm.aarch64.sve.st1q.scatter.index.nxv8i16(<vscale x 8 x i16> %data, <vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx)28  ret void29}30 31define void @test_svst1q_scatter_u64index_u16(<vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx, <vscale x 8 x i16> %data) {32; CHECK-LABEL: test_svst1q_scatter_u64index_u16:33; CHECK:       // %bb.0: // %entry34; CHECK-NEXT:    lsl z0.d, z0.d, #135; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x0]36; CHECK-NEXT:    ret37entry:38  tail call void @llvm.aarch64.sve.st1q.scatter.index.nxv8i16(<vscale x 8 x i16> %data, <vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx)39  ret void40}41 42define void @test_svst1q_scatter_u64index_s32(<vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx, <vscale x 4 x i32> %data) {43; CHECK-LABEL: test_svst1q_scatter_u64index_s32:44; CHECK:       // %bb.0: // %entry45; CHECK-NEXT:    lsl z0.d, z0.d, #246; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x0]47; CHECK-NEXT:    ret48entry:49  tail call void @llvm.aarch64.sve.st1q.scatter.index.nxv4i32(<vscale x 4 x i32> %data, <vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx)50  ret void51}52 53define void @test_svst1q_scatter_u64index_u32(<vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx, <vscale x 4 x i32> %data) {54; CHECK-LABEL: test_svst1q_scatter_u64index_u32:55; CHECK:       // %bb.0: // %entry56; CHECK-NEXT:    lsl z0.d, z0.d, #257; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x0]58; CHECK-NEXT:    ret59entry:60  tail call void @llvm.aarch64.sve.st1q.scatter.index.nxv4i32(<vscale x 4 x i32> %data, <vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx)61  ret void62}63 64define void @test_svst1q_scatter_u64index_s64(<vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx, <vscale x 2 x i64> %data) {65; CHECK-LABEL: test_svst1q_scatter_u64index_s64:66; CHECK:       // %bb.0: // %entry67; CHECK-NEXT:    lsl z0.d, z0.d, #368; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x0]69; CHECK-NEXT:    ret70entry:71  tail call void @llvm.aarch64.sve.st1q.scatter.index.nxv2i64(<vscale x 2 x i64> %data, <vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx)72  ret void73}74 75define void @test_svst1q_scatter_u64index_u64(<vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx, <vscale x 2 x i64> %data) {76; CHECK-LABEL: test_svst1q_scatter_u64index_u64:77; CHECK:       // %bb.0: // %entry78; CHECK-NEXT:    lsl z0.d, z0.d, #379; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x0]80; CHECK-NEXT:    ret81entry:82  tail call void @llvm.aarch64.sve.st1q.scatter.index.nxv2i64(<vscale x 2 x i64> %data, <vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx)83  ret void84}85 86define void @test_svst1q_scatter_u64index_bf16(<vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx, <vscale x 8 x bfloat> %data) {87; CHECK-LABEL: test_svst1q_scatter_u64index_bf16:88; CHECK:       // %bb.0: // %entry89; CHECK-NEXT:    lsl z0.d, z0.d, #190; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x0]91; CHECK-NEXT:    ret92entry:93  tail call void @llvm.aarch64.sve.st1q.scatter.index.nxv8bf16(<vscale x 8 x bfloat> %data, <vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx)94  ret void95}96 97define void @test_svst1q_scatter_u64index_f16(<vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx, <vscale x 8 x half> %data) {98; CHECK-LABEL: test_svst1q_scatter_u64index_f16:99; CHECK:       // %bb.0: // %entry100; CHECK-NEXT:    lsl z0.d, z0.d, #1101; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x0]102; CHECK-NEXT:    ret103entry:104  tail call void @llvm.aarch64.sve.st1q.scatter.index.nxv8f16(<vscale x 8 x half> %data, <vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx)105  ret void106}107 108define void @test_svst1q_scatter_u64index_f32(<vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx, <vscale x 4 x float> %data) {109; CHECK-LABEL: test_svst1q_scatter_u64index_f32:110; CHECK:       // %bb.0: // %entry111; CHECK-NEXT:    lsl z0.d, z0.d, #2112; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x0]113; CHECK-NEXT:    ret114entry:115  tail call void @llvm.aarch64.sve.st1q.scatter.index.nxv4f32(<vscale x 4 x float> %data, <vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx)116  ret void117}118 119define void @test_svst1q_scatter_u64index_f64(<vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx, <vscale x 2 x double> %data) {120; CHECK-LABEL: test_svst1q_scatter_u64index_f64:121; CHECK:       // %bb.0: // %entry122; CHECK-NEXT:    lsl z0.d, z0.d, #3123; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x0]124; CHECK-NEXT:    ret125entry:126  tail call void @llvm.aarch64.sve.st1q.scatter.index.nxv2f64(<vscale x 2 x double> %data, <vscale x 1 x i1> %pg, ptr %base, <vscale x 2 x i64> %idx)127  ret void128}129 130define void @test_svst1q_scatter_u64base_index_s16(<vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %idx, <vscale x 8 x i16> %data) {131; CHECK-LABEL: test_svst1q_scatter_u64base_index_s16:132; CHECK:       // %bb.0: // %entry133; CHECK-NEXT:    lsl x8, x0, #1134; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x8]135; CHECK-NEXT:    ret136entry:137  %0 = shl i64 %idx, 1138  tail call void @llvm.aarch64.sve.st1q.scatter.scalar.offset.nxv8i16.nxv2i64(<vscale x 8 x i16> %data, <vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %0)139  ret void140}141 142define void @test_svst1q_scatter_u64base_index_u16(<vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %idx, <vscale x 8 x i16> %data) {143; CHECK-LABEL: test_svst1q_scatter_u64base_index_u16:144; CHECK:       // %bb.0: // %entry145; CHECK-NEXT:    lsl x8, x0, #1146; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x8]147; CHECK-NEXT:    ret148entry:149  %0 = shl i64 %idx, 1150  tail call void @llvm.aarch64.sve.st1q.scatter.scalar.offset.nxv8i16.nxv2i64(<vscale x 8 x i16> %data, <vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %0)151  ret void152}153 154define void @test_svst1q_scatter_u64base_index_s32(<vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %idx, <vscale x 4 x i32> %data) {155; CHECK-LABEL: test_svst1q_scatter_u64base_index_s32:156; CHECK:       // %bb.0: // %entry157; CHECK-NEXT:    lsl x8, x0, #2158; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x8]159; CHECK-NEXT:    ret160entry:161  %0 = shl i64 %idx, 2162  tail call void @llvm.aarch64.sve.st1q.scatter.scalar.offset.nxv4i32.nxv2i64(<vscale x 4 x i32> %data, <vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %0)163  ret void164}165 166define void @test_svst1q_scatter_u64base_index_u32(<vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %idx, <vscale x 4 x i32> %data) {167; CHECK-LABEL: test_svst1q_scatter_u64base_index_u32:168; CHECK:       // %bb.0: // %entry169; CHECK-NEXT:    lsl x8, x0, #2170; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x8]171; CHECK-NEXT:    ret172entry:173  %0 = shl i64 %idx, 2174  tail call void @llvm.aarch64.sve.st1q.scatter.scalar.offset.nxv4i32.nxv2i64(<vscale x 4 x i32> %data, <vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %0)175  ret void176}177 178define void @test_svst1q_scatter_u64base_index_s64(<vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %idx, <vscale x 2 x i64> %data) {179; CHECK-LABEL: test_svst1q_scatter_u64base_index_s64:180; CHECK:       // %bb.0: // %entry181; CHECK-NEXT:    lsl x8, x0, #3182; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x8]183; CHECK-NEXT:    ret184entry:185  %0 = shl i64 %idx, 3186  tail call void @llvm.aarch64.sve.st1q.scatter.scalar.offset.nxv2i64.nxv2i64(<vscale x 2 x i64> %data, <vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %0)187  ret void188}189 190define void @test_svst1q_scatter_u64base_index_u64(<vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %idx, <vscale x 2 x i64> %data) {191; CHECK-LABEL: test_svst1q_scatter_u64base_index_u64:192; CHECK:       // %bb.0: // %entry193; CHECK-NEXT:    lsl x8, x0, #3194; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x8]195; CHECK-NEXT:    ret196entry:197  %0 = shl i64 %idx, 3198  tail call void @llvm.aarch64.sve.st1q.scatter.scalar.offset.nxv2i64.nxv2i64(<vscale x 2 x i64> %data, <vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %0)199  ret void200}201 202define void @test_svst1q_scatter_u64base_index_bf16(<vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %idx, <vscale x 8 x bfloat> %data) {203; CHECK-LABEL: test_svst1q_scatter_u64base_index_bf16:204; CHECK:       // %bb.0: // %entry205; CHECK-NEXT:    lsl x8, x0, #1206; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x8]207; CHECK-NEXT:    ret208entry:209  %0 = shl i64 %idx, 1210  tail call void @llvm.aarch64.sve.st1q.scatter.scalar.offset.nxv8bf16.nxv2i64(<vscale x 8 x bfloat> %data, <vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %0)211  ret void212}213 214define void @test_svst1q_scatter_u64base_index_f16(<vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %idx, <vscale x 8 x half> %data) {215; CHECK-LABEL: test_svst1q_scatter_u64base_index_f16:216; CHECK:       // %bb.0: // %entry217; CHECK-NEXT:    lsl x8, x0, #1218; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x8]219; CHECK-NEXT:    ret220entry:221  %0 = shl i64 %idx, 1222  tail call void @llvm.aarch64.sve.st1q.scatter.scalar.offset.nxv8f16.nxv2i64(<vscale x 8 x half> %data, <vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %0)223  ret void224}225 226define void @test_svst1q_scatter_u64base_index_f32(<vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %idx, <vscale x 4 x float> %data) {227; CHECK-LABEL: test_svst1q_scatter_u64base_index_f32:228; CHECK:       // %bb.0: // %entry229; CHECK-NEXT:    lsl x8, x0, #2230; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x8]231; CHECK-NEXT:    ret232entry:233  %0 = shl i64 %idx, 2234  tail call void @llvm.aarch64.sve.st1q.scatter.scalar.offset.nxv4f32.nxv2i64(<vscale x 4 x float> %data, <vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %0)235  ret void236}237 238define void @test_svst1q_scatter_u64base_index_f64(<vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %idx, <vscale x 2 x double> %data) {239; CHECK-LABEL: test_svst1q_scatter_u64base_index_f64:240; CHECK:       // %bb.0: // %entry241; CHECK-NEXT:    lsl x8, x0, #3242; CHECK-NEXT:    st1q { z1.q }, p0, [z0.d, x8]243; CHECK-NEXT:    ret244entry:245  %0 = shl i64 %idx, 3246  tail call void @llvm.aarch64.sve.st1q.scatter.scalar.offset.nxv2f64.nxv2i64(<vscale x 2 x double> %data, <vscale x 1 x i1> %pg, <vscale x 2 x i64> %base, i64 %0)247  ret void248}249