brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.7 KiB · 7df5ab5 Raw
286 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=thumbv8.1m.main-none-none-eabi -mattr=+mve -verify-machineinstrs %s -o - | FileCheck %s3 4define arm_aapcs_vfpcc <4 x i32> @vidup_v4i32_1(i32 %index) {5; CHECK-LABEL: vidup_v4i32_1:6; CHECK:       @ %bb.0:7; CHECK-NEXT:    vidup.u32 q0, r0, #18; CHECK-NEXT:    bx lr9  %a1 = add i32 %index, 110  %a2 = add i32 %index, 211  %a3 = add i32 %index, 312  %a4 = add i32 %index, 413  %v1  = insertelement <4 x i32> poison, i32 %index, i32 014  %v2  = insertelement <4 x i32> %v1, i32 %a1, i32 115  %v3  = insertelement <4 x i32> %v2, i32 %a2, i32 216  %v4  = insertelement <4 x i32> %v3, i32 %a3, i32 317  ret <4 x i32> %v418}19 20define arm_aapcs_vfpcc <4 x i32> @vidup_v4i32_2(i32 %index) {21; CHECK-LABEL: vidup_v4i32_2:22; CHECK:       @ %bb.0:23; CHECK-NEXT:    vidup.u32 q0, r0, #224; CHECK-NEXT:    bx lr25  %a1 = add i32 %index, 226  %a2 = add i32 %index, 427  %a3 = add i32 %index, 628  %a4 = add i32 %index, 829  %v1  = insertelement <4 x i32> poison, i32 %index, i32 030  %v2  = insertelement <4 x i32> %v1, i32 %a1, i32 131  %v3  = insertelement <4 x i32> %v2, i32 %a2, i32 232  %v4  = insertelement <4 x i32> %v3, i32 %a3, i32 333  ret <4 x i32> %v434}35 36define arm_aapcs_vfpcc <4 x i32> @vidup_v4i32_3(i32 %index) {37; CHECK-LABEL: vidup_v4i32_3:38; CHECK:       @ %bb.0:39; CHECK-NEXT:    adds r1, r0, #640; CHECK-NEXT:    vmov q0[2], q0[0], r0, r141; CHECK-NEXT:    add.w r1, r0, #942; CHECK-NEXT:    adds r0, #343; CHECK-NEXT:    vmov q0[3], q0[1], r0, r144; CHECK-NEXT:    bx lr45  %a1 = add i32 %index, 346  %a2 = add i32 %index, 647  %a3 = add i32 %index, 948  %a4 = add i32 %index, 1249  %v1  = insertelement <4 x i32> poison, i32 %index, i32 050  %v2  = insertelement <4 x i32> %v1, i32 %a1, i32 151  %v3  = insertelement <4 x i32> %v2, i32 %a2, i32 252  %v4  = insertelement <4 x i32> %v3, i32 %a3, i32 353  ret <4 x i32> %v454}55 56define arm_aapcs_vfpcc <4 x i32> @vidup_v4i32_4(i32 %index) {57; CHECK-LABEL: vidup_v4i32_4:58; CHECK:       @ %bb.0:59; CHECK-NEXT:    vidup.u32 q0, r0, #460; CHECK-NEXT:    bx lr61  %a1 = add i32 %index, 462  %a2 = add i32 %index, 863  %a3 = add i32 %index, 1264  %a4 = add i32 %index, 1665  %v1  = insertelement <4 x i32> poison, i32 %index, i32 066  %v2  = insertelement <4 x i32> %v1, i32 %a1, i32 167  %v3  = insertelement <4 x i32> %v2, i32 %a2, i32 268  %v4  = insertelement <4 x i32> %v3, i32 %a3, i32 369  ret <4 x i32> %v470}71 72define arm_aapcs_vfpcc <4 x i32> @vidup_v4i32_8(i32 %index) {73; CHECK-LABEL: vidup_v4i32_8:74; CHECK:       @ %bb.0:75; CHECK-NEXT:    vidup.u32 q0, r0, #876; CHECK-NEXT:    bx lr77  %a1 = add i32 %index, 878  %a2 = add i32 %index, 1679  %a3 = add i32 %index, 2480  %a4 = add i32 %index, 3281  %v1  = insertelement <4 x i32> poison, i32 %index, i32 082  %v2  = insertelement <4 x i32> %v1, i32 %a1, i32 183  %v3  = insertelement <4 x i32> %v2, i32 %a2, i32 284  %v4  = insertelement <4 x i32> %v3, i32 %a3, i32 385  ret <4 x i32> %v486}87 88define arm_aapcs_vfpcc <4 x i32> @vidup_v4i32_1_i(i32 %index) {89; CHECK-LABEL: vidup_v4i32_1_i:90; CHECK:       @ %bb.0:91; CHECK-NEXT:    adds r1, r0, #392; CHECK-NEXT:    adds r2, r0, #193; CHECK-NEXT:    vmov q0[2], q0[0], r2, r194; CHECK-NEXT:    adds r1, r0, #495; CHECK-NEXT:    adds r0, #296; CHECK-NEXT:    vmov q0[3], q0[1], r0, r197; CHECK-NEXT:    bx lr98  %a1 = add i32 %index, 199  %a2 = add i32 %index, 2100  %a3 = add i32 %index, 3101  %a4 = add i32 %index, 4102  %v1  = insertelement <4 x i32> poison, i32 %a1, i32 0103  %v2  = insertelement <4 x i32> %v1, i32 %a2, i32 1104  %v3  = insertelement <4 x i32> %v2, i32 %a3, i32 2105  %v4  = insertelement <4 x i32> %v3, i32 %a4, i32 3106  ret <4 x i32> %v4107}108 109define arm_aapcs_vfpcc <8 x i16> @vidup_v8i16_1(i16 %index) {110; CHECK-LABEL: vidup_v8i16_1:111; CHECK:       @ %bb.0:112; CHECK-NEXT:    vidup.u16 q0, r0, #1113; CHECK-NEXT:    bx lr114  %a1 = add i16 %index, 1115  %a2 = add i16 %index, 2116  %a3 = add i16 %index, 3117  %a4 = add i16 %index, 4118  %a5 = add i16 %index, 5119  %a6 = add i16 %index, 6120  %a7 = add i16 %index, 7121  %a8 = add i16 %index, 8122  %v1  = insertelement <8 x i16> poison, i16 %index, i32 0123  %v2  = insertelement <8 x i16> %v1, i16 %a1, i32 1124  %v3  = insertelement <8 x i16> %v2, i16 %a2, i32 2125  %v4  = insertelement <8 x i16> %v3, i16 %a3, i32 3126  %v5  = insertelement <8 x i16> %v4, i16 %a4, i32 4127  %v6  = insertelement <8 x i16> %v5, i16 %a5, i32 5128  %v7  = insertelement <8 x i16> %v6, i16 %a6, i32 6129  %v8  = insertelement <8 x i16> %v7, i16 %a7, i32 7130  ret <8 x i16> %v8131}132 133define arm_aapcs_vfpcc <8 x i16> @vidup_v8i16_2(i16 %index) {134; CHECK-LABEL: vidup_v8i16_2:135; CHECK:       @ %bb.0:136; CHECK-NEXT:    vidup.u16 q0, r0, #2137; CHECK-NEXT:    bx lr138  %a1 = add i16 %index, 2139  %a2 = add i16 %index, 4140  %a3 = add i16 %index, 6141  %a4 = add i16 %index, 8142  %a5 = add i16 %index, 10143  %a6 = add i16 %index, 12144  %a7 = add i16 %index, 14145  %a8 = add i16 %index, 16146  %v1  = insertelement <8 x i16> poison, i16 %index, i32 0147  %v2  = insertelement <8 x i16> %v1, i16 %a1, i32 1148  %v3  = insertelement <8 x i16> %v2, i16 %a2, i32 2149  %v4  = insertelement <8 x i16> %v3, i16 %a3, i32 3150  %v5  = insertelement <8 x i16> %v4, i16 %a4, i32 4151  %v6  = insertelement <8 x i16> %v5, i16 %a5, i32 5152  %v7  = insertelement <8 x i16> %v6, i16 %a6, i32 6153  %v8  = insertelement <8 x i16> %v7, i16 %a7, i32 7154  ret <8 x i16> %v8155}156 157define arm_aapcs_vfpcc <8 x i16> @vidup_v8i16_4(i16 %index) {158; CHECK-LABEL: vidup_v8i16_4:159; CHECK:       @ %bb.0:160; CHECK-NEXT:    vidup.u16 q0, r0, #4161; CHECK-NEXT:    bx lr162  %a1 = add i16 %index, 4163  %a2 = add i16 %index, 8164  %a3 = add i16 %index, 12165  %a4 = add i16 %index, 16166  %a5 = add i16 %index, 20167  %a6 = add i16 %index, 24168  %a7 = add i16 %index, 28169  %a8 = add i16 %index, 32170  %v1  = insertelement <8 x i16> poison, i16 %index, i32 0171  %v2  = insertelement <8 x i16> %v1, i16 %a1, i32 1172  %v3  = insertelement <8 x i16> %v2, i16 %a2, i32 2173  %v4  = insertelement <8 x i16> %v3, i16 %a3, i32 3174  %v5  = insertelement <8 x i16> %v4, i16 %a4, i32 4175  %v6  = insertelement <8 x i16> %v5, i16 %a5, i32 5176  %v7  = insertelement <8 x i16> %v6, i16 %a6, i32 6177  %v8  = insertelement <8 x i16> %v7, i16 %a7, i32 7178  ret <8 x i16> %v8179}180 181define arm_aapcs_vfpcc <8 x i16> @vidup_v8i16_8(i16 %index) {182; CHECK-LABEL: vidup_v8i16_8:183; CHECK:       @ %bb.0:184; CHECK-NEXT:    vidup.u16 q0, r0, #8185; CHECK-NEXT:    bx lr186  %a1 = add i16 %index, 8187  %a2 = add i16 %index, 16188  %a3 = add i16 %index, 24189  %a4 = add i16 %index, 32190  %a5 = add i16 %index, 40191  %a6 = add i16 %index, 48192  %a7 = add i16 %index, 56193  %a8 = add i16 %index, 64194  %v1  = insertelement <8 x i16> poison, i16 %index, i32 0195  %v2  = insertelement <8 x i16> %v1, i16 %a1, i32 1196  %v3  = insertelement <8 x i16> %v2, i16 %a2, i32 2197  %v4  = insertelement <8 x i16> %v3, i16 %a3, i32 3198  %v5  = insertelement <8 x i16> %v4, i16 %a4, i32 4199  %v6  = insertelement <8 x i16> %v5, i16 %a5, i32 5200  %v7  = insertelement <8 x i16> %v6, i16 %a6, i32 6201  %v8  = insertelement <8 x i16> %v7, i16 %a7, i32 7202  ret <8 x i16> %v8203}204 205define arm_aapcs_vfpcc <16 x i8> @vidup_v16i8_1(i8 %index) {206; CHECK-LABEL: vidup_v16i8_1:207; CHECK:       @ %bb.0:208; CHECK-NEXT:    vidup.u8 q0, r0, #1209; CHECK-NEXT:    bx lr210  %a1 = add i8 %index, 1211  %a2 = add i8 %index, 2212  %a3 = add i8 %index, 3213  %a4 = add i8 %index, 4214  %a5 = add i8 %index, 5215  %a6 = add i8 %index, 6216  %a7 = add i8 %index, 7217  %a8 = add i8 %index, 8218  %a9 = add i8 %index, 9219  %a10 = add i8 %index, 10220  %a11 = add i8 %index, 11221  %a12 = add i8 %index, 12222  %a13 = add i8 %index, 13223  %a14 = add i8 %index, 14224  %a15 = add i8 %index, 15225  %a16 = add i8 %index, 16226  %v1  = insertelement <16 x i8> poison, i8 %index, i32 0227  %v2  = insertelement <16 x i8> %v1, i8 %a1, i32 1228  %v3  = insertelement <16 x i8> %v2, i8 %a2, i32 2229  %v4  = insertelement <16 x i8> %v3, i8 %a3, i32 3230  %v5  = insertelement <16 x i8> %v4, i8 %a4, i32 4231  %v6  = insertelement <16 x i8> %v5, i8 %a5, i32 5232  %v7  = insertelement <16 x i8> %v6, i8 %a6, i32 6233  %v8  = insertelement <16 x i8> %v7, i8 %a7, i32 7234  %v9  = insertelement <16 x i8> %v8, i8 %a8, i32 8235  %v10 = insertelement <16 x i8> %v9, i8 %a9, i32 9236  %v11 = insertelement <16 x i8> %v10, i8 %a10, i32 10237  %v12 = insertelement <16 x i8> %v11, i8 %a11, i32 11238  %v13 = insertelement <16 x i8> %v12, i8 %a12, i32 12239  %v14 = insertelement <16 x i8> %v13, i8 %a13, i32 13240  %v15 = insertelement <16 x i8> %v14, i8 %a14, i32 14241  %v16 = insertelement <16 x i8> %v15, i8 %a15, i32 15242  ret <16 x i8> %v16243}244 245define arm_aapcs_vfpcc <16 x i8> @vidup_v16i8_4(i8 %index) {246; CHECK-LABEL: vidup_v16i8_4:247; CHECK:       @ %bb.0:248; CHECK-NEXT:    vidup.u8 q0, r0, #4249; CHECK-NEXT:    bx lr250  %a1 = add i8 %index, 4251  %a2 = add i8 %index, 8252  %a3 = add i8 %index, 12253  %a4 = add i8 %index, 16254  %a5 = add i8 %index, 20255  %a6 = add i8 %index, 24256  %a7 = add i8 %index, 28257  %a8 = add i8 %index, 32258  %a9 = add i8 %index, 36259  %a10 = add i8 %index, 40260  %a11 = add i8 %index, 44261  %a12 = add i8 %index, 48262  %a13 = add i8 %index, 52263  %a14 = add i8 %index, 56264  %a15 = add i8 %index, 60265  %a16 = add i8 %index, 64266  %v1  = insertelement <16 x i8> poison, i8 %index, i32 0267  %v2  = insertelement <16 x i8> %v1, i8 %a1, i32 1268  %v3  = insertelement <16 x i8> %v2, i8 %a2, i32 2269  %v4  = insertelement <16 x i8> %v3, i8 %a3, i32 3270  %v5  = insertelement <16 x i8> %v4, i8 %a4, i32 4271  %v6  = insertelement <16 x i8> %v5, i8 %a5, i32 5272  %v7  = insertelement <16 x i8> %v6, i8 %a6, i32 6273  %v8  = insertelement <16 x i8> %v7, i8 %a7, i32 7274  %v9  = insertelement <16 x i8> %v8, i8 %a8, i32 8275  %v10 = insertelement <16 x i8> %v9, i8 %a9, i32 9276  %v11 = insertelement <16 x i8> %v10, i8 %a10, i32 10277  %v12 = insertelement <16 x i8> %v11, i8 %a11, i32 11278  %v13 = insertelement <16 x i8> %v12, i8 %a12, i32 12279  %v14 = insertelement <16 x i8> %v13, i8 %a13, i32 13280  %v15 = insertelement <16 x i8> %v14, i8 %a14, i32 14281  %v16 = insertelement <16 x i8> %v15, i8 %a15, i32 15282  ret <16 x i8> %v16283}284 285 286