brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.8 KiB · cd1c0c5 Raw
106 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s --mattr=+complxnum,+sve,+fullfp16 -o - | FileCheck %s3 4target triple = "aarch64"5 6define <vscale x 4 x double> @simple_symmetric_muladd2(<vscale x 4 x double> %a, <vscale x 4 x double> %b) {7; CHECK-LABEL: simple_symmetric_muladd2:8; CHECK:       // %bb.0: // %entry9; CHECK-NEXT:    ptrue p0.d10; CHECK-NEXT:    adrp x8, .LCPI0_011; CHECK-NEXT:    add x8, x8, :lo12:.LCPI0_012; CHECK-NEXT:    ld1rd { z4.d }, p0/z, [x8]13; CHECK-NEXT:    fmad z0.d, p0/m, z4.d, z2.d14; CHECK-NEXT:    fmad z1.d, p0/m, z4.d, z3.d15; CHECK-NEXT:    ret16entry:17  %strided.vec = tail call { <vscale x 2 x double>, <vscale x 2 x double> } @llvm.vector.deinterleave2.nxv4f64(<vscale x 4 x double> %a)18  %ext00 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec, 019  %ext01 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec, 120  %fmul0 = fmul fast <vscale x 2 x double> %ext00, splat (double 3.200000e+00)21  %strided.vec44 = tail call { <vscale x 2 x double>, <vscale x 2 x double> } @llvm.vector.deinterleave2.nxv4f64(<vscale x 4 x double> %b)22  %ext10 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec44, 023  %ext11 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec44, 124  %fadd0 = fadd fast <vscale x 2 x double> %ext10, %fmul025  %fmul1 = fmul fast <vscale x 2 x double> %ext01, splat (double 3.200000e+00)26  %fadd1 = fadd fast <vscale x 2 x double> %ext11, %fmul127  %interleaved.vec = tail call <vscale x 4 x double> @llvm.vector.interleave2.nxv4f64(<vscale x 2 x double> %fadd0, <vscale x 2 x double> %fadd1)28  ret <vscale x 4 x double> %interleaved.vec29}30 31define <vscale x 4 x double> @simple_symmetric_unary2(<vscale x 4 x double> %a) {32; CHECK-LABEL: simple_symmetric_unary2:33; CHECK:       // %bb.0: // %entry34; CHECK-NEXT:    ptrue p0.d35; CHECK-NEXT:    fneg z0.d, p0/m, z0.d36; CHECK-NEXT:    fneg z1.d, p0/m, z1.d37; CHECK-NEXT:    ret38entry:39  %strided.vec = tail call { <vscale x 2 x double>, <vscale x 2 x double> } @llvm.vector.deinterleave2.nxv4f64(<vscale x 4 x double> %a)40  %ext00 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec, 041  %ext01 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec, 142  %fneg0 = fneg fast <vscale x 2 x double> %ext0043  %fneg1 = fneg fast <vscale x 2 x double> %ext0144  %interleaved.vec = tail call <vscale x 4 x double> @llvm.vector.interleave2.nxv4f64(<vscale x 2 x double> %fneg0, <vscale x 2 x double> %fneg1)45  ret <vscale x 4 x double> %interleaved.vec46}47 48define <vscale x 8 x double> @simple_symmetric_muladd4(<vscale x 8 x double> %a, <vscale x 8 x double> %b) {49; CHECK-LABEL: simple_symmetric_muladd4:50; CHECK:       // %bb.0: // %entry51; CHECK-NEXT:    ptrue p0.d52; CHECK-NEXT:    adrp x8, .LCPI2_053; CHECK-NEXT:    add x8, x8, :lo12:.LCPI2_054; CHECK-NEXT:    ld1rd { z24.d }, p0/z, [x8]55; CHECK-NEXT:    fmad z0.d, p0/m, z24.d, z4.d56; CHECK-NEXT:    fmad z1.d, p0/m, z24.d, z5.d57; CHECK-NEXT:    fmad z2.d, p0/m, z24.d, z6.d58; CHECK-NEXT:    fmad z3.d, p0/m, z24.d, z7.d59; CHECK-NEXT:    ret60entry:61  %strided.vec = tail call { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } @llvm.vector.deinterleave4.nxv8f64(<vscale x 8 x double> %a)62  %ext00 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec, 063  %ext01 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec, 164  %ext02 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec, 265  %ext03 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec, 366  %fmul0 = fmul fast <vscale x 2 x double> %ext00, splat (double 3.200000e+00)67  %strided.vec44 = tail call { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } @llvm.vector.deinterleave4.nxv8f64(<vscale x 8 x double> %b)68  %ext10 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec44, 069  %ext11 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec44, 170  %ext12 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec44, 271  %ext13 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec44, 372  %fadd0 = fadd fast <vscale x 2 x double> %ext10, %fmul073  %fmul1 = fmul fast <vscale x 2 x double> %ext01, splat (double 3.200000e+00)74  %fadd1 = fadd fast <vscale x 2 x double> %ext11, %fmul175  %fmul2 = fmul fast <vscale x 2 x double> %ext02, splat (double 3.200000e+00)76  %fadd2 = fadd fast <vscale x 2 x double> %ext12, %fmul277  %fmul3 = fmul fast <vscale x 2 x double> %ext03, splat (double 3.200000e+00)78  %fadd3 = fadd fast <vscale x 2 x double> %ext13, %fmul379  %interleaved.vec = tail call <vscale x 8 x double> @llvm.vector.interleave4.nxv8f64(<vscale x 2 x double> %fadd0, <vscale x 2 x double> %fadd1, <vscale x 2 x double> %fadd2, <vscale x 2 x double> %fadd3)80  ret <vscale x 8 x double> %interleaved.vec81}82 83 84define <vscale x 8 x double> @simple_symmetric_unary4(<vscale x 8 x double> %a) {85; CHECK-LABEL: simple_symmetric_unary4:86; CHECK:       // %bb.0: // %entry87; CHECK-NEXT:    ptrue p0.d88; CHECK-NEXT:    fneg z0.d, p0/m, z0.d89; CHECK-NEXT:    fneg z1.d, p0/m, z1.d90; CHECK-NEXT:    fneg z2.d, p0/m, z2.d91; CHECK-NEXT:    fneg z3.d, p0/m, z3.d92; CHECK-NEXT:    ret93entry:94  %strided.vec = tail call { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } @llvm.vector.deinterleave4.nxv8f64(<vscale x 8 x double> %a)95  %ext00 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec, 096  %ext01 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec, 197  %ext02 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec, 298  %ext03 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec, 399  %fneg0 = fneg fast <vscale x 2 x double> %ext00100  %fneg1 = fneg fast <vscale x 2 x double> %ext01101  %fneg2 = fneg fast <vscale x 2 x double> %ext02102  %fneg3 = fneg fast <vscale x 2 x double> %ext03103  %interleaved.vec = tail call <vscale x 8 x double> @llvm.vector.interleave4.nxv8f64(<vscale x 2 x double> %fneg0, <vscale x 2 x double> %fneg1, <vscale x 2 x double> %fneg2, <vscale x 2 x double> %fneg3)104  ret <vscale x 8 x double> %interleaved.vec105}106