brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.4 KiB · fa6a40c Raw
151 lines · plain
1; RUN: llc < %s -mtriple=arm64-eabi -aarch64-neon-syntax=apple | FileCheck %s2 3define <8 x i8> @vsras8(ptr %A, ptr %B) nounwind {4;CHECK-LABEL: vsras8:5;CHECK: ssra.8b6	%tmp1 = load <8 x i8>, ptr %A7	%tmp2 = load <8 x i8>, ptr %B8	%tmp3 = ashr <8 x i8> %tmp2, < i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7 >9        %tmp4 = add <8 x i8> %tmp1, %tmp310	ret <8 x i8> %tmp411}12 13define <4 x i16> @vsras16(ptr %A, ptr %B) nounwind {14;CHECK-LABEL: vsras16:15;CHECK: ssra.4h16	%tmp1 = load <4 x i16>, ptr %A17	%tmp2 = load <4 x i16>, ptr %B18	%tmp3 = ashr <4 x i16> %tmp2, < i16 15, i16 15, i16 15, i16 15 >19        %tmp4 = add <4 x i16> %tmp1, %tmp320	ret <4 x i16> %tmp421}22 23define <2 x i32> @vsras32(ptr %A, ptr %B) nounwind {24;CHECK-LABEL: vsras32:25;CHECK: ssra.2s26	%tmp1 = load <2 x i32>, ptr %A27	%tmp2 = load <2 x i32>, ptr %B28	%tmp3 = ashr <2 x i32> %tmp2, < i32 31, i32 31 >29        %tmp4 = add <2 x i32> %tmp1, %tmp330	ret <2 x i32> %tmp431}32 33define <16 x i8> @vsraQs8(ptr %A, ptr %B) nounwind {34;CHECK-LABEL: vsraQs8:35;CHECK: ssra.16b36	%tmp1 = load <16 x i8>, ptr %A37	%tmp2 = load <16 x i8>, ptr %B38	%tmp3 = ashr <16 x i8> %tmp2, < i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7 >39        %tmp4 = add <16 x i8> %tmp1, %tmp340	ret <16 x i8> %tmp441}42 43define <8 x i16> @vsraQs16(ptr %A, ptr %B) nounwind {44;CHECK-LABEL: vsraQs16:45;CHECK: ssra.8h46	%tmp1 = load <8 x i16>, ptr %A47	%tmp2 = load <8 x i16>, ptr %B48	%tmp3 = ashr <8 x i16> %tmp2, < i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15 >49        %tmp4 = add <8 x i16> %tmp1, %tmp350	ret <8 x i16> %tmp451}52 53define <4 x i32> @vsraQs32(ptr %A, ptr %B) nounwind {54;CHECK-LABEL: vsraQs32:55;CHECK: ssra.4s56	%tmp1 = load <4 x i32>, ptr %A57	%tmp2 = load <4 x i32>, ptr %B58	%tmp3 = ashr <4 x i32> %tmp2, < i32 31, i32 31, i32 31, i32 31 >59        %tmp4 = add <4 x i32> %tmp1, %tmp360	ret <4 x i32> %tmp461}62 63define <2 x i64> @vsraQs64(ptr %A, ptr %B) nounwind {64;CHECK-LABEL: vsraQs64:65;CHECK: ssra.2d66	%tmp1 = load <2 x i64>, ptr %A67	%tmp2 = load <2 x i64>, ptr %B68	%tmp3 = ashr <2 x i64> %tmp2, < i64 63, i64 63 >69        %tmp4 = add <2 x i64> %tmp1, %tmp370	ret <2 x i64> %tmp471}72 73define <8 x i8> @vsrau8(ptr %A, ptr %B) nounwind {74;CHECK-LABEL: vsrau8:75;CHECK: usra.8b76	%tmp1 = load <8 x i8>, ptr %A77	%tmp2 = load <8 x i8>, ptr %B78	%tmp3 = lshr <8 x i8> %tmp2, < i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7 >79        %tmp4 = add <8 x i8> %tmp1, %tmp380	ret <8 x i8> %tmp481}82 83define <4 x i16> @vsrau16(ptr %A, ptr %B) nounwind {84;CHECK-LABEL: vsrau16:85;CHECK: usra.4h86	%tmp1 = load <4 x i16>, ptr %A87	%tmp2 = load <4 x i16>, ptr %B88	%tmp3 = lshr <4 x i16> %tmp2, < i16 15, i16 15, i16 15, i16 15 >89        %tmp4 = add <4 x i16> %tmp1, %tmp390	ret <4 x i16> %tmp491}92 93define <2 x i32> @vsrau32(ptr %A, ptr %B) nounwind {94;CHECK-LABEL: vsrau32:95;CHECK: usra.2s96	%tmp1 = load <2 x i32>, ptr %A97	%tmp2 = load <2 x i32>, ptr %B98	%tmp3 = lshr <2 x i32> %tmp2, < i32 31, i32 31 >99        %tmp4 = add <2 x i32> %tmp1, %tmp3100	ret <2 x i32> %tmp4101}102 103 104define <16 x i8> @vsraQu8(ptr %A, ptr %B) nounwind {105;CHECK-LABEL: vsraQu8:106;CHECK: usra.16b107	%tmp1 = load <16 x i8>, ptr %A108	%tmp2 = load <16 x i8>, ptr %B109	%tmp3 = lshr <16 x i8> %tmp2, < i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7 >110        %tmp4 = add <16 x i8> %tmp1, %tmp3111	ret <16 x i8> %tmp4112}113 114define <8 x i16> @vsraQu16(ptr %A, ptr %B) nounwind {115;CHECK-LABEL: vsraQu16:116;CHECK: usra.8h117	%tmp1 = load <8 x i16>, ptr %A118	%tmp2 = load <8 x i16>, ptr %B119	%tmp3 = lshr <8 x i16> %tmp2, < i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15 >120        %tmp4 = add <8 x i16> %tmp1, %tmp3121	ret <8 x i16> %tmp4122}123 124define <4 x i32> @vsraQu32(ptr %A, ptr %B) nounwind {125;CHECK-LABEL: vsraQu32:126;CHECK: usra.4s127	%tmp1 = load <4 x i32>, ptr %A128	%tmp2 = load <4 x i32>, ptr %B129	%tmp3 = lshr <4 x i32> %tmp2, < i32 31, i32 31, i32 31, i32 31 >130        %tmp4 = add <4 x i32> %tmp1, %tmp3131	ret <4 x i32> %tmp4132}133 134define <2 x i64> @vsraQu64(ptr %A, ptr %B) nounwind {135;CHECK-LABEL: vsraQu64:136;CHECK: usra.2d137	%tmp1 = load <2 x i64>, ptr %A138	%tmp2 = load <2 x i64>, ptr %B139	%tmp3 = lshr <2 x i64> %tmp2, < i64 63, i64 63 >140        %tmp4 = add <2 x i64> %tmp1, %tmp3141	ret <2 x i64> %tmp4142}143 144define <1 x i64> @vsra_v1i64(<1 x i64> %A, <1 x i64> %B) nounwind {145; CHECK-LABEL: vsra_v1i64:146; CHECK: ssra d0, d1, #63147  %tmp3 = ashr <1 x i64> %B, < i64 63 >148  %tmp4 = add <1 x i64> %A, %tmp3149  ret <1 x i64> %tmp4150}151