brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.2 KiB · ae0efa3 Raw
110 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=avx512f | FileCheck %s3 4define void @eggs(ptr %arg, ptr %arg1, ptr %arg2, ptr %arg3, ptr %arg4, ptr %arg5, i64 %arg6, i64 %arg7, i64 %arg8, i64 %arg9, i64 %arg10, i64 %arg11, i64 %arg12, ptr %arg13, ptr %arg14) nounwind {5; CHECK-LABEL: eggs:6; CHECK:       ## %bb.0: ## %bb7; CHECK-NEXT:    pushq %r158; CHECK-NEXT:    pushq %r149; CHECK-NEXT:    pushq %r1210; CHECK-NEXT:    pushq %rbx11; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %r1412; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %rax13; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %r1514; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %r1215; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %r1116; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %r1017; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %rbx18; CHECK-NEXT:    leaq (%rbx,%r10,8), %r1019; CHECK-NEXT:    leaq (%rbx,%r11,8), %r1120; CHECK-NEXT:    vxorpd %xmm0, %xmm0, %xmm021; CHECK-NEXT:    xorl %ebx, %ebx22; CHECK-NEXT:    vmovupd (%r14,%r15,8), %zmm123; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %r1524; CHECK-NEXT:    addq %r12, %r1525; CHECK-NEXT:    vmovupd (%r14,%r15,8), %zmm226; CHECK-NEXT:    addq {{[0-9]+}}(%rsp), %r1227; CHECK-NEXT:    vmovupd (%r14,%r12,8), %zmm828; CHECK-NEXT:    vxorpd %xmm3, %xmm3, %xmm329; CHECK-NEXT:    vxorpd %xmm4, %xmm4, %xmm430; CHECK-NEXT:    vxorpd %xmm5, %xmm5, %xmm531; CHECK-NEXT:    vxorpd %xmm6, %xmm6, %xmm632; CHECK-NEXT:    vxorpd %xmm7, %xmm7, %xmm733; CHECK-NEXT:    .p2align 434; CHECK-NEXT:  LBB0_1: ## %bb1535; CHECK-NEXT:    ## =>This Inner Loop Header: Depth=136; CHECK-NEXT:    vbroadcastsd (%r11,%rbx,8), %zmm937; CHECK-NEXT:    vfmadd231pd {{.*#+}} zmm0 = (zmm1 * zmm9) + zmm038; CHECK-NEXT:    vfmadd231pd {{.*#+}} zmm3 = (zmm2 * zmm9) + zmm339; CHECK-NEXT:    vfmadd231pd {{.*#+}} zmm4 = (zmm8 * zmm9) + zmm440; CHECK-NEXT:    vbroadcastsd (%r10,%rbx,8), %zmm941; CHECK-NEXT:    vfmadd231pd {{.*#+}} zmm5 = (zmm1 * zmm9) + zmm542; CHECK-NEXT:    vfmadd231pd {{.*#+}} zmm6 = (zmm2 * zmm9) + zmm643; CHECK-NEXT:    vfmadd231pd {{.*#+}} zmm7 = (zmm8 * zmm9) + zmm744; CHECK-NEXT:    incq %rbx45; CHECK-NEXT:    cmpq %rbx, %rax46; CHECK-NEXT:    jne LBB0_147; CHECK-NEXT:  ## %bb.2: ## %bb5148; CHECK-NEXT:    vmovapd %zmm0, (%rdi)49; CHECK-NEXT:    vmovapd %zmm3, (%rsi)50; CHECK-NEXT:    vmovapd %zmm4, (%rdx)51; CHECK-NEXT:    vmovapd %zmm5, (%rcx)52; CHECK-NEXT:    vmovapd %zmm6, (%r8)53; CHECK-NEXT:    vmovapd %zmm7, (%r9)54; CHECK-NEXT:    popq %rbx55; CHECK-NEXT:    popq %r1256; CHECK-NEXT:    popq %r1457; CHECK-NEXT:    popq %r1558; CHECK-NEXT:    vzeroupper59; CHECK-NEXT:    retq60bb:61  br label %bb1562 63bb15:                                             ; preds = %bb15, %bb64  %tmp = phi <8 x double> [ zeroinitializer, %bb ], [ %tmp38, %bb15 ]65  %tmp16 = phi <8 x double> [ zeroinitializer, %bb ], [ %tmp39, %bb15 ]66  %tmp17 = phi <8 x double> [ zeroinitializer, %bb ], [ %tmp40, %bb15 ]67  %tmp18 = phi <8 x double> [ zeroinitializer, %bb ], [ %tmp46, %bb15 ]68  %tmp19 = phi <8 x double> [ zeroinitializer, %bb ], [ %tmp47, %bb15 ]69  %tmp20 = phi <8 x double> [ zeroinitializer, %bb ], [ %tmp48, %bb15 ]70  %tmp21 = phi i64 [ 0, %bb ], [ %tmp49, %bb15 ]71  %tmp22 = getelementptr inbounds double, ptr %arg14, i64 %arg1172  %tmp24 = load <8 x double>, ptr %tmp22, align 873  %tmp25 = add i64 %arg10, %arg674  %tmp26 = getelementptr inbounds double, ptr %arg14, i64 %tmp2575  %tmp28 = load <8 x double>, ptr %tmp26, align 876  %tmp29 = add i64 %arg10, %arg777  %tmp30 = getelementptr inbounds double, ptr %arg14, i64 %tmp2978  %tmp32 = load <8 x double>, ptr %tmp30, align 879  %tmp33 = add i64 %tmp21, %arg880  %tmp34 = getelementptr inbounds double, ptr %arg13, i64 %tmp3381  %tmp35 = load double, ptr %tmp34, align 882  %tmp36 = insertelement <8 x double> undef, double %tmp35, i32 083  %tmp37 = shufflevector <8 x double> %tmp36, <8 x double> undef, <8 x i32> zeroinitializer84  %tmp38 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %tmp24, <8 x double> %tmp37, <8 x double> %tmp)85  %tmp39 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %tmp28, <8 x double> %tmp37, <8 x double> %tmp16)86  %tmp40 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %tmp32, <8 x double> %tmp37, <8 x double> %tmp17)87  %tmp41 = add i64 %tmp21, %arg988  %tmp42 = getelementptr inbounds double, ptr %arg13, i64 %tmp4189  %tmp43 = load double, ptr %tmp42, align 890  %tmp44 = insertelement <8 x double> undef, double %tmp43, i32 091  %tmp45 = shufflevector <8 x double> %tmp44, <8 x double> undef, <8 x i32> zeroinitializer92  %tmp46 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %tmp24, <8 x double> %tmp45, <8 x double> %tmp18)93  %tmp47 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %tmp28, <8 x double> %tmp45, <8 x double> %tmp19)94  %tmp48 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %tmp32, <8 x double> %tmp45, <8 x double> %tmp20)95  %tmp49 = add nuw nsw i64 %tmp21, 196  %tmp50 = icmp eq i64 %tmp49, %arg1297  br i1 %tmp50, label %bb51, label %bb1598 99bb51:                                             ; preds = %bb15100  store <8 x double> %tmp38, ptr %arg101  store <8 x double> %tmp39, ptr %arg1102  store <8 x double> %tmp40, ptr %arg2103  store <8 x double> %tmp46, ptr %arg3104  store <8 x double> %tmp47, ptr %arg4105  store <8 x double> %tmp48, ptr %arg5106  ret void107}108 109declare <8 x double> @llvm.fmuladd.v8f64(<8 x double>, <8 x double>, <8 x double>)110