brintos

brintos / llvm-project-archived public Read only

0
0
Text · 34.4 KiB · c06755d Raw
1206 lines · plain
1; RUN: opt < %s -vector-library=Darwin_libsystem_m -passes=inject-tli-mappings,loop-vectorize -S | FileCheck %s2 3target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"4target triple = "arm64-apple-darwin"5 6declare float @expf(float) nounwind readnone7define void @expf_v4f32(i64 %n, ptr noalias %y, ptr noalias %x) {8; CHECK-LABEL: @expf_v4f32(9; CHECK: call <4 x float> @_simd_exp_f4(10; CHECK: ret void11 12entry:13  br label %for.body14 15for.body:16  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]17  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv18  %lv = load float, ptr %gep.y, align 419  %call = tail call float @expf(float %lv)20  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv21  store float %call, ptr %gep.x, align 422  %iv.next = add i64 %iv, 123  %exitcond = icmp eq i64 %iv.next, %n24  br i1 %exitcond, label %for.end, label %for.body25 26for.end:27  ret void28}29 30declare double @exp(double) nounwind readnone31define void @exp_v2f64(i64 %n, ptr noalias %y, ptr noalias %x) {32; CHECK-LABEL: @exp_v2f64(33; CHECK: call <2 x double> @_simd_exp_d2(34; CHECK: ret void35 36entry:37  br label %for.body38 39for.body:40  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]41  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv42  %lv = load double, ptr %gep.y, align 443  %call = tail call double @exp(double %lv)44  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv45  store double %call, ptr %gep.x, align 446  %iv.next = add i64 %iv, 147  %exitcond = icmp eq i64 %iv.next, %n48  br i1 %exitcond, label %for.end, label %for.body49 50for.end:51  ret void52}53 54declare float @acosf(float) nounwind readnone55define void @acos_v4f32(i64 %n, ptr noalias %y, ptr noalias %x) {56; CHECK-LABEL: @acos_v4f32(57; CHECK: call <4 x float> @_simd_acos_f4(58; CHECK: ret void59 60entry:61  br label %for.body62 63for.body:64  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]65  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv66  %lv = load float, ptr %gep.y, align 467  %call = tail call float @acosf(float %lv)68  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv69  store float %call, ptr %gep.x, align 470  %iv.next = add i64 %iv, 171  %exitcond = icmp eq i64 %iv.next, %n72  br i1 %exitcond, label %for.end, label %for.body73 74for.end:75  ret void76}77 78declare double @acos(double) nounwind readnone79define void @acos_v2f64(i64 %n, ptr noalias %y, ptr noalias %x) {80; CHECK-LABEL: @acos_v2f64(81; CHECK: call <2 x double> @_simd_acos_d2(82; CHECK: ret void83 84entry:85  br label %for.body86 87for.body:88  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]89  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv90  %lv = load double, ptr %gep.y, align 491  %call = tail call double @acos(double %lv)92  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv93  store double %call, ptr %gep.x, align 494  %iv.next = add i64 %iv, 195  %exitcond = icmp eq i64 %iv.next, %n96  br i1 %exitcond, label %for.end, label %for.body97 98for.end:99  ret void100}101 102declare float @asinf(float) nounwind readnone103define void @asinf_v4f32(i64 %n, ptr noalias %y, ptr noalias %x) {104; CHECK-LABEL: @asinf_v4f32(105; CHECK: call <4 x float> @_simd_asin_f4(106; CHECK: ret void107 108entry:109  br label %for.body110 111for.body:112  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]113  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv114  %lv = load float, ptr %gep.y, align 4115  %call = tail call float @asinf(float %lv)116  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv117  store float %call, ptr %gep.x, align 4118  %iv.next = add i64 %iv, 1119  %exitcond = icmp eq i64 %iv.next, %n120  br i1 %exitcond, label %for.end, label %for.body121 122for.end:123  ret void124}125 126declare double @asin(double) nounwind readnone127define void @asin_v2f64(i64 %n, ptr noalias %y, ptr noalias %x) {128; CHECK-LABEL: @asin_v2f64(129; CHECK: call <2 x double> @_simd_asin_d2(130; CHECK: ret void131 132entry:133  br label %for.body134 135for.body:136  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]137  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv138  %lv = load double, ptr %gep.y, align 4139  %call = tail call double @asin(double %lv)140  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv141  store double %call, ptr %gep.x, align 4142  %iv.next = add i64 %iv, 1143  %exitcond = icmp eq i64 %iv.next, %n144  br i1 %exitcond, label %for.end, label %for.body145 146for.end:147  ret void148}149 150 declare float @atanf(float) nounwind readnone151define void @atanf_v4f32(i64 %n, ptr noalias %y, ptr noalias %x) {152; CHECK-LABEL: @atanf_v4f32(153; CHECK: call <4 x float> @_simd_atan_f4(154; CHECK: ret void155 156entry:157  br label %for.body158 159for.body:160  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]161  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv162  %lv = load float, ptr %gep.y, align 4163  %call = tail call float @atanf(float %lv)164  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv165  store float %call, ptr %gep.x, align 4166  %iv.next = add i64 %iv, 1167  %exitcond = icmp eq i64 %iv.next, %n168  br i1 %exitcond, label %for.end, label %for.body169 170for.end:171  ret void172}173 174declare double @atan(double) nounwind readnone175define void @atan_v2f64(i64 %n, ptr noalias %y, ptr noalias %x) {176; CHECK-LABEL: @atan_v2f64(177; CHECK: call <2 x double> @_simd_atan_d2(178; CHECK: ret void179 180entry:181  br label %for.body182 183for.body:184  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]185  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv186  %lv = load double, ptr %gep.y, align 4187  %call = tail call double @atan(double %lv)188  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv189  store double %call, ptr %gep.x, align 4190  %iv.next = add i64 %iv, 1191  %exitcond = icmp eq i64 %iv.next, %n192  br i1 %exitcond, label %for.end, label %for.body193 194for.end:195  ret void196}197 198declare float @atan2f(float, float) nounwind readnone199define void @atan2f_v4f32(i64 %n, ptr noalias %y, ptr noalias %x) {200; CHECK-LABEL: @atan2f_v4f32(201; CHECK: call <4 x float> @_simd_atan2_f4(202; CHECK: ret void203 204entry:205  br label %for.body206 207for.body:208  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]209  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv210  %lv = load float, ptr %gep.y, align 4211  %call = tail call float @atan2f(float %lv, float %lv)212  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv213  store float %call, ptr %gep.x, align 4214  %iv.next = add i64 %iv, 1215  %exitcond = icmp eq i64 %iv.next, %n216  br i1 %exitcond, label %for.end, label %for.body217 218for.end:219  ret void220}221 222declare double @atan2(double, double) nounwind readnone223define void @atan2_v2f64(i64 %n, ptr noalias %y, ptr noalias %x) {224; CHECK-LABEL: @atan2_v2f64(225; CHECK: call <2 x double> @_simd_atan2_d2(226; CHECK: ret void227 228entry:229  br label %for.body230 231for.body:232  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]233  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv234  %lv = load double, ptr %gep.y, align 4235  %call = tail call double @atan2(double %lv, double %lv)236  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv237  store double %call, ptr %gep.x, align 4238  %iv.next = add i64 %iv, 1239  %exitcond = icmp eq i64 %iv.next, %n240  br i1 %exitcond, label %for.end, label %for.body241 242for.end:243  ret void244}245 246declare float @cosf(float) nounwind readnone247define void @cosf_v4f32(i64 %n, ptr noalias %y, ptr noalias %x) {248; CHECK-LABEL: @cosf_v4f32(249; CHECK: call <4 x float> @_simd_cos_f4(250; CHECK: ret void251 252entry:253  br label %for.body254 255for.body:256  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]257  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv258  %lv = load float, ptr %gep.y, align 4259  %call = tail call float @cosf(float %lv)260  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv261  store float %call, ptr %gep.x, align 4262  %iv.next = add i64 %iv, 1263  %exitcond = icmp eq i64 %iv.next, %n264  br i1 %exitcond, label %for.end, label %for.body265 266for.end:267  ret void268}269 270declare double @cos(double) nounwind readnone271define void @cos_v2f64(i64 %n, ptr noalias %y, ptr noalias %x) {272; CHECK-LABEL: @cos_v2f64(273; CHECK: call <2 x double> @_simd_cos_d2(274; CHECK: ret void275 276entry:277  br label %for.body278 279for.body:280  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]281  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv282  %lv = load double, ptr %gep.y, align 4283  %call = tail call double @cos(double %lv)284  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv285  store double %call, ptr %gep.x, align 4286  %iv.next = add i64 %iv, 1287  %exitcond = icmp eq i64 %iv.next, %n288  br i1 %exitcond, label %for.end, label %for.body289 290for.end:291  ret void292}293 294declare float @sinf(float) nounwind readnone295define void @sinf_v4f32(i64 %n, ptr noalias %y, ptr noalias %x) {296; CHECK-LABEL: @sinf_v4f32(297; CHECK: call <4 x float> @_simd_sin_f4(298; CHECK: ret void299 300entry:301  br label %for.body302 303for.body:304  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]305  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv306  %lv = load float, ptr %gep.y, align 4307  %call = tail call float @sinf(float %lv)308  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv309  store float %call, ptr %gep.x, align 4310  %iv.next = add i64 %iv, 1311  %exitcond = icmp eq i64 %iv.next, %n312  br i1 %exitcond, label %for.end, label %for.body313 314for.end:315  ret void316}317 318declare double @sin(double) nounwind readnone319define void @sin_v2f64(i64 %n, ptr noalias %y, ptr noalias %x) {320; CHECK-LABEL: @sin_v2f64(321; CHECK: call <2 x double> @_simd_sin_d2(322; CHECK: ret void323 324entry:325  br label %for.body326 327for.body:328  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]329  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv330  %lv = load double, ptr %gep.y, align 4331  %call = tail call double @sin(double %lv)332  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv333  store double %call, ptr %gep.x, align 4334  %iv.next = add i64 %iv, 1335  %exitcond = icmp eq i64 %iv.next, %n336  br i1 %exitcond, label %for.end, label %for.body337 338for.end:339  ret void340}341 342declare float @tanf(float) nounwind readnone343define void @tanf_v4f32(i64 %n, ptr noalias %y, ptr noalias %x) {344; CHECK-LABEL: @tanf_v4f32(345; CHECK: call <4 x float> @_simd_tan_f4(346; CHECK: ret void347 348entry:349  br label %for.body350 351for.body:352  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]353  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv354  %lv = load float, ptr %gep.y, align 4355  %call = tail call float @tanf(float %lv)356  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv357  store float %call, ptr %gep.x, align 4358  %iv.next = add i64 %iv, 1359  %exitcond = icmp eq i64 %iv.next, %n360  br i1 %exitcond, label %for.end, label %for.body361 362for.end:363  ret void364}365 366declare double @tan(double) nounwind readnone367define void @tan_v2f64(i64 %n, ptr noalias %y, ptr noalias %x) {368; CHECK-LABEL: @tan_v2f64(369; CHECK: call <2 x double> @_simd_tan_d2(370; CHECK: ret void371 372entry:373  br label %for.body374 375for.body:376  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]377  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv378  %lv = load double, ptr %gep.y, align 4379  %call = tail call double @tan(double %lv)380  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv381  store double %call, ptr %gep.x, align 4382  %iv.next = add i64 %iv, 1383  %exitcond = icmp eq i64 %iv.next, %n384  br i1 %exitcond, label %for.end, label %for.body385 386for.end:387  ret void388}389 390declare float @llvm.tan.f32(float) nounwind readnone391define void @tan_v4f32_intrinsic(i64 %n, ptr noalias %y, ptr noalias %x) {392; CHECK-LABEL: @tan_v4f32_intrinsic(393; CHECK: call <4 x float> @_simd_tan_f4(<4 x float>394; CHECK: ret void395 396entry:397  br label %for.body398 399for.body:400  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]401  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv402  %lv = load float, ptr %gep.y, align 4403  %call = tail call float @llvm.tan.f32(float %lv)404  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv405  store float %call, ptr %gep.x, align 4406  %iv.next = add i64 %iv, 1407  %exitcond = icmp eq i64 %iv.next, %n408  br i1 %exitcond, label %for.end, label %for.body409 410for.end:411  ret void412}413 414declare double @llvm.tan.f64(double) nounwind readnone415define void @tan_v2f64_intrinsic(i64 %n, ptr noalias %y, ptr noalias %x) {416; CHECK-LABEL: @tan_v2f64_intrinsic(417; CHECK: call <2 x double> @_simd_tan_d2(<2 x double>418; CHECK: ret void419 420entry:421  br label %for.body422 423for.body:424  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]425  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv426  %lv = load double, ptr %gep.y, align 4427  %call = tail call double @llvm.tan.f64(double %lv)428  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv429  store double %call, ptr %gep.x, align 4430  %iv.next = add i64 %iv, 1431  %exitcond = icmp eq i64 %iv.next, %n432  br i1 %exitcond, label %for.end, label %for.body433 434for.end:435  ret void436}437 438declare float @llvm.acos.f32(float) nounwind readnone439define void @acos_v4f32_intrinsic(i64 %n, ptr noalias %y, ptr noalias %x) {440; CHECK-LABEL: @acos_v4f32_intrinsic(441; CHECK: call <4 x float> @_simd_acos_f4(<4 x float>442; CHECK: ret void443 444entry:445  br label %for.body446 447for.body:448  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]449  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv450  %lv = load float, ptr %gep.y, align 4451  %call = tail call float @llvm.acos.f32(float %lv)452  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv453  store float %call, ptr %gep.x, align 4454  %iv.next = add i64 %iv, 1455  %exitcond = icmp eq i64 %iv.next, %n456  br i1 %exitcond, label %for.end, label %for.body457 458for.end:459  ret void460}461 462declare double @llvm.acos.f64(double) nounwind readnone463define void @acos_v2f64_intrinsic(i64 %n, ptr noalias %y, ptr noalias %x) {464; CHECK-LABEL: @acos_v2f64_intrinsic(465; CHECK: call <2 x double> @_simd_acos_d2(<2 x double>466; CHECK: ret void467 468entry:469  br label %for.body470 471for.body:472  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]473  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv474  %lv = load double, ptr %gep.y, align 4475  %call = tail call double @llvm.acos.f64(double %lv)476  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv477  store double %call, ptr %gep.x, align 4478  %iv.next = add i64 %iv, 1479  %exitcond = icmp eq i64 %iv.next, %n480  br i1 %exitcond, label %for.end, label %for.body481 482for.end:483  ret void484}485 486declare float @llvm.asin.f32(float) nounwind readnone487define void @asin_v4f32_intrinsic(i64 %n, ptr noalias %y, ptr noalias %x) {488; CHECK-LABEL: @asin_v4f32_intrinsic(489; CHECK: call <4 x float> @_simd_asin_f4(<4 x float>490; CHECK: ret void491 492entry:493  br label %for.body494 495for.body:496  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]497  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv498  %lv = load float, ptr %gep.y, align 4499  %call = tail call float @llvm.asin.f32(float %lv)500  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv501  store float %call, ptr %gep.x, align 4502  %iv.next = add i64 %iv, 1503  %exitcond = icmp eq i64 %iv.next, %n504  br i1 %exitcond, label %for.end, label %for.body505 506for.end:507  ret void508}509 510declare double @llvm.asin.f64(double) nounwind readnone511define void @asin_v2f64_intrinsic(i64 %n, ptr noalias %y, ptr noalias %x) {512; CHECK-LABEL: @asin_v2f64_intrinsic(513; CHECK: call <2 x double> @_simd_asin_d2(<2 x double>514; CHECK: ret void515 516entry:517  br label %for.body518 519for.body:520  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]521  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv522  %lv = load double, ptr %gep.y, align 4523  %call = tail call double @llvm.asin.f64(double %lv)524  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv525  store double %call, ptr %gep.x, align 4526  %iv.next = add i64 %iv, 1527  %exitcond = icmp eq i64 %iv.next, %n528  br i1 %exitcond, label %for.end, label %for.body529 530for.end:531  ret void532}533 534declare float @llvm.atan.f32(float) nounwind readnone535define void @atan_v4f32_intrinsic(i64 %n, ptr noalias %y, ptr noalias %x) {536; CHECK-LABEL: @atan_v4f32_intrinsic(537; CHECK: call <4 x float> @_simd_atan_f4(<4 x float>538; CHECK: ret void539 540entry:541  br label %for.body542 543for.body:544  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]545  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv546  %lv = load float, ptr %gep.y, align 4547  %call = tail call float @llvm.atan.f32(float %lv)548  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv549  store float %call, ptr %gep.x, align 4550  %iv.next = add i64 %iv, 1551  %exitcond = icmp eq i64 %iv.next, %n552  br i1 %exitcond, label %for.end, label %for.body553 554for.end:555  ret void556}557 558declare double @llvm.atan.f64(double) nounwind readnone559define void @atan_v2f64_intrinsic(i64 %n, ptr noalias %y, ptr noalias %x) {560; CHECK-LABEL: @atan_v2f64_intrinsic(561; CHECK: call <2 x double> @_simd_atan_d2(<2 x double>562; CHECK: ret void563 564entry:565  br label %for.body566 567for.body:568  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]569  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv570  %lv = load double, ptr %gep.y, align 4571  %call = tail call double @llvm.atan.f64(double %lv)572  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv573  store double %call, ptr %gep.x, align 4574  %iv.next = add i64 %iv, 1575  %exitcond = icmp eq i64 %iv.next, %n576  br i1 %exitcond, label %for.end, label %for.body577 578for.end:579  ret void580}581 582declare float @llvm.atan2.f32(float, float) nounwind readnone583define void @atan2_v4f32_intrinsic(i64 %n, ptr noalias %y, ptr noalias %x) {584; CHECK-LABEL: @atan2_v4f32_intrinsic(585; CHECK: call <4 x float> @_simd_atan2_f4(<4 x float>586; CHECK: ret void587 588entry:589  br label %for.body590 591for.body:592  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]593  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv594  %lv = load float, ptr %gep.y, align 4595  %call = tail call float @llvm.atan2.f32(float %lv, float %lv)596  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv597  store float %call, ptr %gep.x, align 4598  %iv.next = add i64 %iv, 1599  %exitcond = icmp eq i64 %iv.next, %n600  br i1 %exitcond, label %for.end, label %for.body601 602for.end:603  ret void604}605 606declare double @llvm.atan2.f64(double, double) nounwind readnone607define void @atan2_v2f64_intrinsic(i64 %n, ptr noalias %y, ptr noalias %x) {608; CHECK-LABEL: @atan2_v2f64_intrinsic(609; CHECK: call <2 x double> @_simd_atan2_d2(<2 x double>610; CHECK: ret void611 612entry:613  br label %for.body614 615for.body:616  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]617  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv618  %lv = load double, ptr %gep.y, align 4619  %call = tail call double @llvm.atan2.f64(double %lv, double %lv)620  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv621  store double %call, ptr %gep.x, align 4622  %iv.next = add i64 %iv, 1623  %exitcond = icmp eq i64 %iv.next, %n624  br i1 %exitcond, label %for.end, label %for.body625 626for.end:627  ret void628}629 630declare float @llvm.cosh.f32(float) nounwind readnone631define void @cosh_v4f32_intrinsic(i64 %n, ptr noalias %y, ptr noalias %x) {632; CHECK-LABEL: @cosh_v4f32_intrinsic(633; CHECK: call <4 x float> @_simd_cosh_f4(<4 x float>634; CHECK: ret void635 636entry:637  br label %for.body638 639for.body:640  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]641  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv642  %lv = load float, ptr %gep.y, align 4643  %call = tail call float @llvm.cosh.f32(float %lv)644  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv645  store float %call, ptr %gep.x, align 4646  %iv.next = add i64 %iv, 1647  %exitcond = icmp eq i64 %iv.next, %n648  br i1 %exitcond, label %for.end, label %for.body649 650for.end:651  ret void652}653 654declare double @llvm.cosh.f64(double) nounwind readnone655define void @cosh_v2f64_intrinsic(i64 %n, ptr noalias %y, ptr noalias %x) {656; CHECK-LABEL: @cosh_v2f64_intrinsic(657; CHECK: call <2 x double> @_simd_cosh_d2(<2 x double>658; CHECK: ret void659 660entry:661  br label %for.body662 663for.body:664  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]665  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv666  %lv = load double, ptr %gep.y, align 4667  %call = tail call double @llvm.cosh.f64(double %lv)668  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv669  store double %call, ptr %gep.x, align 4670  %iv.next = add i64 %iv, 1671  %exitcond = icmp eq i64 %iv.next, %n672  br i1 %exitcond, label %for.end, label %for.body673 674for.end:675  ret void676}677 678declare float @llvm.sinh.f32(float) nounwind readnone679define void @sinh_v4f32_intrinsic(i64 %n, ptr noalias %y, ptr noalias %x) {680; CHECK-LABEL: @sinh_v4f32_intrinsic(681; CHECK: call <4 x float> @_simd_sinh_f4(<4 x float>682; CHECK: ret void683 684entry:685  br label %for.body686 687for.body:688  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]689  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv690  %lv = load float, ptr %gep.y, align 4691  %call = tail call float @llvm.sinh.f32(float %lv)692  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv693  store float %call, ptr %gep.x, align 4694  %iv.next = add i64 %iv, 1695  %exitcond = icmp eq i64 %iv.next, %n696  br i1 %exitcond, label %for.end, label %for.body697 698for.end:699  ret void700}701 702declare double @llvm.sinh.f64(double) nounwind readnone703define void @sinh_v2f64_intrinsic(i64 %n, ptr noalias %y, ptr noalias %x) {704; CHECK-LABEL: @sinh_v2f64_intrinsic(705; CHECK: call <2 x double> @_simd_sinh_d2(<2 x double>706; CHECK: ret void707 708entry:709  br label %for.body710 711for.body:712  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]713  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv714  %lv = load double, ptr %gep.y, align 4715  %call = tail call double @llvm.sinh.f64(double %lv)716  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv717  store double %call, ptr %gep.x, align 4718  %iv.next = add i64 %iv, 1719  %exitcond = icmp eq i64 %iv.next, %n720  br i1 %exitcond, label %for.end, label %for.body721 722for.end:723  ret void724}725 726declare float @llvm.tanh.f32(float) nounwind readnone727define void @tanh_v4f32_intrinsic(i64 %n, ptr noalias %y, ptr noalias %x) {728; CHECK-LABEL: @tanh_v4f32_intrinsic(729; CHECK: call <4 x float> @_simd_tanh_f4(<4 x float>730; CHECK: ret void731 732entry:733  br label %for.body734 735for.body:736  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]737  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv738  %lv = load float, ptr %gep.y, align 4739  %call = tail call float @llvm.tanh.f32(float %lv)740  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv741  store float %call, ptr %gep.x, align 4742  %iv.next = add i64 %iv, 1743  %exitcond = icmp eq i64 %iv.next, %n744  br i1 %exitcond, label %for.end, label %for.body745 746for.end:747  ret void748}749 750declare double @llvm.tanh.f64(double) nounwind readnone751define void @tanh_v2f64_intrinsic(i64 %n, ptr noalias %y, ptr noalias %x) {752; CHECK-LABEL: @tanh_v2f64_intrinsic(753; CHECK: call <2 x double> @_simd_tanh_d2(<2 x double>754; CHECK: ret void755 756entry:757  br label %for.body758 759for.body:760  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]761  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv762  %lv = load double, ptr %gep.y, align 4763  %call = tail call double @llvm.tanh.f64(double %lv)764  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv765  store double %call, ptr %gep.x, align 4766  %iv.next = add i64 %iv, 1767  %exitcond = icmp eq i64 %iv.next, %n768  br i1 %exitcond, label %for.end, label %for.body769 770for.end:771  ret void772}773 774 775declare float @cbrtf(float) nounwind readnone776define void @cbrtf_v4f32(i64 %n, ptr noalias %y, ptr noalias %x) {777; CHECK-LABEL: @cbrtf_v4f32(778; CHECK: call <4 x float> @_simd_cbrt_f4(779; CHECK: ret void780 781entry:782  br label %for.body783 784for.body:785  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]786  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv787  %lv = load float, ptr %gep.y, align 4788  %call = tail call float @cbrtf(float %lv)789  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv790  store float %call, ptr %gep.x, align 4791  %iv.next = add i64 %iv, 1792  %exitcond = icmp eq i64 %iv.next, %n793  br i1 %exitcond, label %for.end, label %for.body794 795for.end:796  ret void797}798 799declare double @cbrt(double) nounwind readnone800define void @cbrt_v2f64(i64 %n, ptr noalias %y, ptr noalias %x) {801; CHECK-LABEL: @cbrt_v2f64(802; CHECK: call <2 x double> @_simd_cbrt_d2(803; CHECK: ret void804 805entry:806  br label %for.body807 808for.body:809  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]810  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv811  %lv = load double, ptr %gep.y, align 4812  %call = tail call double @cbrt(double %lv)813  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv814  store double %call, ptr %gep.x, align 4815  %iv.next = add i64 %iv, 1816  %exitcond = icmp eq i64 %iv.next, %n817  br i1 %exitcond, label %for.end, label %for.body818 819for.end:820  ret void821}822 823declare float @erff(float) nounwind readnone824define void @erff_v4f32(i64 %n, ptr noalias %y, ptr noalias %x) {825; CHECK-LABEL: @erff_v4f32(826; CHECK: call <4 x float> @_simd_erf_f4(827; CHECK: ret void828 829entry:830  br label %for.body831 832for.body:833  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]834  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv835  %lv = load float, ptr %gep.y, align 4836  %call = tail call float @erff(float %lv)837  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv838  store float %call, ptr %gep.x, align 4839  %iv.next = add i64 %iv, 1840  %exitcond = icmp eq i64 %iv.next, %n841  br i1 %exitcond, label %for.end, label %for.body842 843for.end:844  ret void845}846 847declare double @erf(double) nounwind readnone848define void @erf_v2f64(i64 %n, ptr noalias %y, ptr noalias %x) {849; CHECK-LABEL: @erf_v2f64(850; CHECK: call <2 x double> @_simd_erf_d2(851; CHECK: ret void852 853entry:854  br label %for.body855 856for.body:857  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]858  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv859  %lv = load double, ptr %gep.y, align 4860  %call = tail call double @erf(double %lv)861  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv862  store double %call, ptr %gep.x, align 4863  %iv.next = add i64 %iv, 1864  %exitcond = icmp eq i64 %iv.next, %n865  br i1 %exitcond, label %for.end, label %for.body866 867for.end:868  ret void869}870 871declare float @powf(float, float) nounwind readnone872define void @powf_v4f32(i64 %n, ptr noalias %y, ptr noalias %x) {873; CHECK-LABEL: @powf_v4f32(874; CHECK: call <4 x float> @_simd_pow_f4(875; CHECK: ret void876 877entry:878  br label %for.body879 880for.body:881  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]882  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv883  %lv = load float, ptr %gep.y, align 4884  %call = tail call float @powf(float %lv, float %lv)885  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv886  store float %call, ptr %gep.x, align 4887  %iv.next = add i64 %iv, 1888  %exitcond = icmp eq i64 %iv.next, %n889  br i1 %exitcond, label %for.end, label %for.body890 891for.end:892  ret void893}894 895declare double @pow(double, double) nounwind readnone896define void @pow_v2f64(i64 %n, ptr noalias %y, ptr noalias %x) {897; CHECK-LABEL: @pow_v2f64(898; CHECK: call <2 x double> @_simd_pow_d2(899; CHECK: ret void900 901entry:902  br label %for.body903 904for.body:905  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]906  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv907  %lv = load double, ptr %gep.y, align 4908  %call = tail call double @pow(double %lv, double %lv)909  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv910  store double %call, ptr %gep.x, align 4911  %iv.next = add i64 %iv, 1912  %exitcond = icmp eq i64 %iv.next, %n913  br i1 %exitcond, label %for.end, label %for.body914 915for.end:916  ret void917}918 919declare float @sinhf(float) nounwind readnone920define void @sinhf_v4f32(i64 %n, ptr noalias %y, ptr noalias %x) {921; CHECK-LABEL: @sinhf_v4f32(922; CHECK: call <4 x float> @_simd_sinh_f4(923; CHECK: ret void924 925entry:926  br label %for.body927 928for.body:929  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]930  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv931  %lv = load float, ptr %gep.y, align 4932  %call = tail call float @sinhf(float %lv)933  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv934  store float %call, ptr %gep.x, align 4935  %iv.next = add i64 %iv, 1936  %exitcond = icmp eq i64 %iv.next, %n937  br i1 %exitcond, label %for.end, label %for.body938 939for.end:940  ret void941}942 943declare double @sinh(double) nounwind readnone944define void @sinh_v2f64(i64 %n, ptr noalias %y, ptr noalias %x) {945; CHECK-LABEL: @sinh_v2f64(946; CHECK: call <2 x double> @_simd_sinh_d2(947; CHECK: ret void948 949entry:950  br label %for.body951 952for.body:953  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]954  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv955  %lv = load double, ptr %gep.y, align 4956  %call = tail call double @sinh(double %lv)957  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv958  store double %call, ptr %gep.x, align 4959  %iv.next = add i64 %iv, 1960  %exitcond = icmp eq i64 %iv.next, %n961  br i1 %exitcond, label %for.end, label %for.body962 963for.end:964  ret void965}966 967declare float @coshf(float) nounwind readnone968define void @coshf_v4f32(i64 %n, ptr noalias %y, ptr noalias %x) {969; CHECK-LABEL: @coshf_v4f32(970; CHECK: call <4 x float> @_simd_cosh_f4(971; CHECK: ret void972 973entry:974  br label %for.body975 976for.body:977  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]978  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv979  %lv = load float, ptr %gep.y, align 4980  %call = tail call float @coshf(float %lv)981  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv982  store float %call, ptr %gep.x, align 4983  %iv.next = add i64 %iv, 1984  %exitcond = icmp eq i64 %iv.next, %n985  br i1 %exitcond, label %for.end, label %for.body986 987for.end:988  ret void989}990 991declare double @cosh(double) nounwind readnone992define void @cosh_v2f64(i64 %n, ptr noalias %y, ptr noalias %x) {993; CHECK-LABEL: @cosh_v2f64(994; CHECK: call <2 x double> @_simd_cosh_d2(995; CHECK: ret void996 997entry:998  br label %for.body999 1000for.body:1001  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]1002  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv1003  %lv = load double, ptr %gep.y, align 41004  %call = tail call double @cosh(double %lv)1005  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv1006  store double %call, ptr %gep.x, align 41007  %iv.next = add i64 %iv, 11008  %exitcond = icmp eq i64 %iv.next, %n1009  br i1 %exitcond, label %for.end, label %for.body1010 1011for.end:1012  ret void1013}1014 1015declare float @tanhf(float) nounwind readnone1016define void @tanhf_v4f32(i64 %n, ptr noalias %y, ptr noalias %x) {1017; CHECK-LABEL: @tanhf_v4f32(1018; CHECK: call <4 x float> @_simd_tanh_f4(1019; CHECK: ret void1020 1021entry:1022  br label %for.body1023 1024for.body:1025  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]1026  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv1027  %lv = load float, ptr %gep.y, align 41028  %call = tail call float @tanhf(float %lv)1029  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv1030  store float %call, ptr %gep.x, align 41031  %iv.next = add i64 %iv, 11032  %exitcond = icmp eq i64 %iv.next, %n1033  br i1 %exitcond, label %for.end, label %for.body1034 1035for.end:1036  ret void1037}1038 1039declare double @tanh(double) nounwind readnone1040define void @tanh_v2f64(i64 %n, ptr noalias %y, ptr noalias %x) {1041; CHECK-LABEL: @tanh_v2f64(1042; CHECK: call <2 x double> @_simd_tanh_d2(1043; CHECK: ret void1044 1045entry:1046  br label %for.body1047 1048for.body:1049  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]1050  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv1051  %lv = load double, ptr %gep.y, align 41052  %call = tail call double @tanh(double %lv)1053  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv1054  store double %call, ptr %gep.x, align 41055  %iv.next = add i64 %iv, 11056  %exitcond = icmp eq i64 %iv.next, %n1057  br i1 %exitcond, label %for.end, label %for.body1058 1059for.end:1060  ret void1061}1062 1063declare float @asinhf(float) nounwind readnone1064define void @asinhf_v4f32(i64 %n, ptr noalias %y, ptr noalias %x) {1065; CHECK-LABEL: @asinhf_v4f32(1066; CHECK: call <4 x float> @_simd_asinh_f4(1067; CHECK: ret void1068 1069entry:1070  br label %for.body1071 1072for.body:1073  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]1074  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv1075  %lv = load float, ptr %gep.y, align 41076  %call = tail call float @asinhf(float %lv)1077  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv1078  store float %call, ptr %gep.x, align 41079  %iv.next = add i64 %iv, 11080  %exitcond = icmp eq i64 %iv.next, %n1081  br i1 %exitcond, label %for.end, label %for.body1082 1083for.end:1084  ret void1085}1086 1087declare double @asinh(double) nounwind readnone1088define void @asinh_v2f64(i64 %n, ptr noalias %y, ptr noalias %x) {1089; CHECK-LABEL: @asinh_v2f64(1090; CHECK: call <2 x double> @_simd_asinh_d2(1091; CHECK: ret void1092 1093entry:1094  br label %for.body1095 1096for.body:1097  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]1098  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv1099  %lv = load double, ptr %gep.y, align 41100  %call = tail call double @asinh(double %lv)1101  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv1102  store double %call, ptr %gep.x, align 41103  %iv.next = add i64 %iv, 11104  %exitcond = icmp eq i64 %iv.next, %n1105  br i1 %exitcond, label %for.end, label %for.body1106 1107for.end:1108  ret void1109}1110 1111declare float @acoshf(float) nounwind readnone1112define void @acoshf_v4f32(i64 %n, ptr noalias %y, ptr noalias %x) {1113; CHECK-LABEL: @acoshf_v4f32(1114; CHECK: call <4 x float> @_simd_acosh_f4(1115; CHECK: ret void1116 1117entry:1118  br label %for.body1119 1120for.body:1121  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]1122  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv1123  %lv = load float, ptr %gep.y, align 41124  %call = tail call float @acoshf(float %lv)1125  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv1126  store float %call, ptr %gep.x, align 41127  %iv.next = add i64 %iv, 11128  %exitcond = icmp eq i64 %iv.next, %n1129  br i1 %exitcond, label %for.end, label %for.body1130 1131for.end:1132  ret void1133}1134 1135declare double @acosh(double) nounwind readnone1136define void @acosh_v2f64(i64 %n, ptr noalias %y, ptr noalias %x) {1137; CHECK-LABEL: @acosh_v2f64(1138; CHECK: call <2 x double> @_simd_acosh_d2(1139; CHECK: ret void1140 1141entry:1142  br label %for.body1143 1144for.body:1145  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]1146  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv1147  %lv = load double, ptr %gep.y, align 41148  %call = tail call double @acosh(double %lv)1149  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv1150  store double %call, ptr %gep.x, align 41151  %iv.next = add i64 %iv, 11152  %exitcond = icmp eq i64 %iv.next, %n1153  br i1 %exitcond, label %for.end, label %for.body1154 1155for.end:1156  ret void1157}1158 1159declare float @atanhf(float) nounwind readnone1160define void @atanhf_v4f32(i64 %n, ptr noalias %y, ptr noalias %x) {1161; CHECK-LABEL: @atanhf_v4f32(1162; CHECK: call <4 x float> @_simd_atanh_f4(1163; CHECK: ret void1164 1165entry:1166  br label %for.body1167 1168for.body:1169  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]1170  %gep.y = getelementptr inbounds float, ptr %y, i64 %iv1171  %lv = load float, ptr %gep.y, align 41172  %call = tail call float @atanhf(float %lv)1173  %gep.x = getelementptr inbounds float, ptr %x, i64 %iv1174  store float %call, ptr %gep.x, align 41175  %iv.next = add i64 %iv, 11176  %exitcond = icmp eq i64 %iv.next, %n1177  br i1 %exitcond, label %for.end, label %for.body1178 1179for.end:1180  ret void1181}1182 1183declare double @atanh(double) nounwind readnone1184define void @atanh_v2f64(i64 %n, ptr noalias %y, ptr noalias %x) {1185; CHECK-LABEL: @atanh_v2f64(1186; CHECK: call <2 x double> @_simd_atanh_d2(1187; CHECK: ret void1188 1189entry:1190  br label %for.body1191 1192for.body:1193  %iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]1194  %gep.y = getelementptr inbounds double, ptr %y, i64 %iv1195  %lv = load double, ptr %gep.y, align 41196  %call = tail call double @atanh(double %lv)1197  %gep.x = getelementptr inbounds double, ptr %x, i64 %iv1198  store double %call, ptr %gep.x, align 41199  %iv.next = add i64 %iv, 11200  %exitcond = icmp eq i64 %iv.next, %n1201  br i1 %exitcond, label %for.end, label %for.body1202 1203for.end:1204  ret void1205}1206