brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.8 KiB · 979b834 Raw
74 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes=instcombine < %s | FileCheck %s3 4target triple = "aarch64-unknown-linux-gnu"5 6define <vscale x 16 x i8> @insr_val_into_splatted_val_int(i8 %a) #0 {7; CHECK-LABEL: @insr_val_into_splatted_val_int(8; CHECK-NEXT:    [[T0:%.*]] = insertelement <vscale x 16 x i8> poison, i8 [[A:%.*]], i64 09; CHECK-NEXT:    [[T1:%.*]] = shufflevector <vscale x 16 x i8> [[T0]], <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer10; CHECK-NEXT:    ret <vscale x 16 x i8> [[T1]]11;12  %t0 = insertelement <vscale x 16 x i8> poison, i8 %a, i64 013  %t1 = shufflevector <vscale x 16 x i8> %t0, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer14  %t2 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.insr.nxv16i8(<vscale x 16 x i8> %t1, i8 %a)15  ret <vscale x 16 x i8> %t216}17 18define <vscale x 8 x i16> @insr_five_into_fives() #0 {19; CHECK-LABEL: @insr_five_into_fives(20; CHECK-NEXT:    ret <vscale x 8 x i16> splat (i16 5)21;22  %t1 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.insr.nxv8i16(<vscale x 8 x i16> splat (i16 5), i16 5)23  ret <vscale x 8 x i16> %t124}25 26define <vscale x 4 x float> @insr_val_into_splatted_val_fp(float %a) #0 {27; CHECK-LABEL: @insr_val_into_splatted_val_fp(28; CHECK-NEXT:    [[T0:%.*]] = insertelement <vscale x 4 x float> poison, float [[A:%.*]], i64 029; CHECK-NEXT:    [[T1:%.*]] = shufflevector <vscale x 4 x float> [[T0]], <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer30; CHECK-NEXT:    ret <vscale x 4 x float> [[T1]]31;32  %t0 = insertelement <vscale x 4 x float> poison, float %a, i64 033  %t1 = shufflevector <vscale x 4 x float> %t0, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer34  %t2 = tail call <vscale x 4 x float> @llvm.aarch64.sve.insr.nxv4f32(<vscale x 4 x float> %t1, float %a)35  ret <vscale x 4 x float> %t236}37 38define <vscale x 2 x double> @insr_zero_into_zero() #0 {39; CHECK-LABEL: @insr_zero_into_zero(40; CHECK-NEXT:    ret <vscale x 2 x double> zeroinitializer41;42  %t1 = tail call <vscale x 2 x double> @llvm.aarch64.sve.insr.nxv2f64(<vscale x 2 x double> zeroinitializer, double zeroinitializer)43  ret <vscale x 2 x double> %t144}45 46define <vscale x 16 x i8> @insr_val_into_splatted_other(i8 %a, i8 %b) #0 {47; CHECK-LABEL: @insr_val_into_splatted_other(48; CHECK-NEXT:    [[T0:%.*]] = insertelement <vscale x 16 x i8> poison, i8 [[B:%.*]], i64 049; CHECK-NEXT:    [[T1:%.*]] = shufflevector <vscale x 16 x i8> [[T0]], <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer50; CHECK-NEXT:    [[T2:%.*]] = tail call <vscale x 16 x i8> @llvm.aarch64.sve.insr.nxv16i8(<vscale x 16 x i8> [[T1]], i8 [[A:%.*]])51; CHECK-NEXT:    ret <vscale x 16 x i8> [[T2]]52;53  %t0 = insertelement <vscale x 16 x i8> poison, i8 %b, i64 054  %t1 = shufflevector <vscale x 16 x i8> %t0, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer55  %t2 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.insr.nxv16i8(<vscale x 16 x i8> %t1, i8 %a)56  ret <vscale x 16 x i8> %t257}58 59define <vscale x 8 x i16> @insr_three_into_fives() #0 {60; CHECK-LABEL: @insr_three_into_fives(61; CHECK-NEXT:    [[T1:%.*]] = tail call <vscale x 8 x i16> @llvm.aarch64.sve.insr.nxv8i16(<vscale x 8 x i16> splat (i16 5), i16 3)62; CHECK-NEXT:    ret <vscale x 8 x i16> [[T1]]63;64  %t1 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.insr.nxv8i16(<vscale x 8 x i16> splat (i16 5), i16 3)65  ret <vscale x 8 x i16> %t166}67 68declare <vscale x 16 x i8> @llvm.aarch64.sve.insr.nxv16i8(<vscale x 16 x i8>, i8)69declare <vscale x 8 x i16> @llvm.aarch64.sve.insr.nxv8i16(<vscale x 8 x i16>, i16)70declare <vscale x 4 x float> @llvm.aarch64.sve.insr.nxv4f32(<vscale x 4 x float>, float)71declare <vscale x 2 x double> @llvm.aarch64.sve.insr.nxv2f64(<vscale x 2 x double>, double)72 73attributes #0 = { "target-features"="+sve" }74