<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in phi.ll</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>2ac5ebed - [SLP]Do not emit extract elements for insertelements users, replace with shuffles directly.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#2ac5ebed</link>
        <description>[SLP]Do not emit extract elements for insertelements users, replace with shuffles directly.SLP vectorizer emits extracts for externally used vectorized scalars andestimates the cost for each such extract. But in many cases thesescalars are input for insertelement instructions, forming buildvector,and instead of extractelement/insertelement pair we can emit/costestimate shuffle(s) cost and generate series of shuffles, which can befurther optimized.Tested using test-suite (+SPEC2017), the tests passed, SLP was able togenerate/vectorize more instructions in many cases and it allowed to reducenumber of re-vectorization attempts (where we could try to vectorizebuildector insertelements again and again).Differential Revision: https://reviews.llvm.org/D107966

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Wed, 04 Aug 2021 17:58:37 +0000</pubDate>
        <dc:creator>Alexey Bataev &lt;a.bataev@outlook.com&gt;</dc:creator>
    </item>
<item>
        <title>aeb19817 - Revert &quot;[SLP]Do not emit extract elements for insertelements users, replace with shuffles directly.&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#aeb19817</link>
        <description>Revert &quot;[SLP]Do not emit extract elements for insertelements users, replace with shuffles directly.&quot;This reverts commit fc9c59c355cb255446e571b4515b5e41a76503c4.The patch triggers an assertion when building SPEC on X86. Reducedreproducer shared at D107966.Also reverts follow-up commit 11a09af76d11ad5a9f1f95b561112af17ff81f80.

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Sat, 21 May 2022 19:57:49 +0000</pubDate>
        <dc:creator>Florian Hahn &lt;flo@fhahn.com&gt;</dc:creator>
    </item>
<item>
        <title>fc9c59c3 - [SLP]Do not emit extract elements for insertelements users, replace with shuffles directly.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#fc9c59c3</link>
        <description>[SLP]Do not emit extract elements for insertelements users, replace with shuffles directly.SLP vectorizer emits extracts for externally used vectorized scalars andestimates the cost for each such extract. But in many cases thesescalars are input for insertelement instructions, forming buildvector,and instead of extractelement/insertelement pair we can emit/costestimate shuffle(s) cost and generate series of shuffles, which can befurther optimized.Tested using test-suite (+SPEC2017), the tests passed, SLP was able togenerate/vectorize more instructions in many cases and it allowed to reducenumber of re-vectorization attempts (where we could try to vectorizebuildector insertelements again and again).Differential Revision: https://reviews.llvm.org/D107966

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Wed, 04 Aug 2021 17:58:37 +0000</pubDate>
        <dc:creator>Alexey Bataev &lt;a.bataev@outlook.com&gt;</dc:creator>
    </item>
<item>
        <title>150ea765 - Revert &quot;[SLP]Do not schedule instructions with constants/argument/phi operands and external users.&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#150ea765</link>
        <description>Revert &quot;[SLP]Do not schedule instructions with constants/argument/phi operands and external users.&quot;This reverts commit 1eeb2bfe727323332800e8d390f2f8c63c953779 to fixa bug reported in https://reviews.llvm.org/D121121

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Wed, 16 Mar 2022 20:53:36 +0000</pubDate>
        <dc:creator>Alexey Bataev &lt;a.bataev@outlook.com&gt;</dc:creator>
    </item>
<item>
        <title>1eeb2bfe - [SLP]Do not schedule instructions with constants/argument/phi operands and external users.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#1eeb2bfe</link>
        <description>[SLP]Do not schedule instructions with constants/argument/phi operands and external users.No need to schedule entry nodes where all instructions are not memoryread/write instructions and their operands are either constants, orarguments, or phis, or instructions from others blocks, or their usersare phis or from the other blocks.The resulting vector instructions can be placed atthe beginning of the basic block without scheduling (if operands doesnot need to be scheduled) or at the end of the block (if users areoutside of the block).It may save some compile time and scheduling resources.Differential Revision: https://reviews.llvm.org/D121121

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Tue, 01 Mar 2022 19:32:32 +0000</pubDate>
        <dc:creator>Alexey Bataev &lt;a.bataev@outlook.com&gt;</dc:creator>
    </item>
<item>
        <title>74af4bb1 - [SLP]Remove unnecessary UndefValue in CreateShuffle.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#74af4bb1</link>
        <description>[SLP]Remove unnecessary UndefValue in CreateShuffle.No need to use UndefValue in CreateShuffle call.Differential Revision: https://reviews.llvm.org/D104113

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Fri, 11 Jun 2021 12:13:31 +0000</pubDate>
        <dc:creator>Alexey Bataev &lt;a.bataev@outlook.com&gt;</dc:creator>
    </item>
<item>
        <title>89f3bc76 - [SLP]Allow to reorder nodes with &gt;2 scalar values.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#89f3bc76</link>
        <description>[SLP]Allow to reorder nodes with &gt;2 scalar values.tryToVectorizeList function allows to reorder only 2 scalars. Patchallows to reorder &gt;2 scalars. Also, to avoid possible regressions, itallows extra vectorization of the remaining parts of the scalarselements if possible.Part of D57059.Differential Revision: https://reviews.llvm.org/D103247

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Thu, 27 May 2021 13:19:32 +0000</pubDate>
        <dc:creator>Alexey Bataev &lt;a.bataev@outlook.com&gt;</dc:creator>
    </item>
<item>
        <title>ab2c499d - [SLP] Add insertelement instructions to vectorizable tree</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#ab2c499d</link>
        <description>[SLP] Add insertelement instructions to vectorizable treeAdd new type of tree node for `InsertElementInst` chain forming vector.These instructions could be either removed, or replaced by shuffles duringvectorization and we can add this node to cost model, so naturally estimatingtheir cost, getting rid of `CompensateCost` tricks and reducing further workfor InstCombine. This fixes PR40522 and PR35732 in a natural way. Also thispatch is the first step towards revectorization of partially vectorization(to fix PR42022 completely). After adding inserts to tree the next step isto add vector instructions there (for instance, to merge `store &lt;2 x float&gt;`and `store &lt;2 x float&gt;` to `store &lt;4 x float&gt;`).Fixes PR40522 and PR35732.Differential Revision: https://reviews.llvm.org/D98714

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Tue, 16 Mar 2021 07:23:13 +0000</pubDate>
        <dc:creator>Anton Afanasyev &lt;anton.a.afanasyev@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>4a8e6ed2 - [SLP,LV] Use poison constant vector for shufflevector/initial insertelement</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#4a8e6ed2</link>
        <description>[SLP,LV] Use poison constant vector for shufflevector/initial insertelementThis patch makes SLP and LV emit operations with initial vectors set to poison constant instead of undef.This is a part of efforts for using poison vector instead of undef to represent &quot;doesn&apos;t care&quot; vector.The goal is to make nice shufflevector optimizations valid that is currently incorrect due to the tricky interaction between undef and poison (see https://bugs.llvm.org/show_bug.cgi?id=44185 ).Reviewed By: fhahnDifferential Revision: https://reviews.llvm.org/D94061

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Tue, 05 Jan 2021 05:11:50 +0000</pubDate>
        <dc:creator>Juneyoung Lee &lt;aqjune@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>278aa65c - [IR] Let IRBuilder&apos;s CreateVectorSplat/CreateShuffleVector use poison as placeholder</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#278aa65c</link>
        <description>[IR] Let IRBuilder&apos;s CreateVectorSplat/CreateShuffleVector use poison as placeholderThis patch updates IRBuilder to create insertelement/shufflevector using poison as a placeholder.Reviewed By: nikicDifferential Revision: https://reviews.llvm.org/D93793

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Thu, 24 Dec 2020 00:33:58 +0000</pubDate>
        <dc:creator>Juneyoung Lee &lt;aqjune@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>691c086d - [NewPM][BasicAA] basicaa -&gt; basic-aa in Transforms/SLPVectorizer</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#691c086d</link>
        <description>[NewPM][BasicAA] basicaa -&gt; basic-aa in Transforms/SLPVectorizer Following https://reviews.llvm.org/D82607.Reviewed By: ychenDifferential Revision: https://reviews.llvm.org/D82681

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Fri, 26 Jun 2020 21:58:41 +0000</pubDate>
        <dc:creator>Arthur Eubanks &lt;aeubanks@google.com&gt;</dc:creator>
    </item>
<item>
        <title>cee313d2 - Revert &quot;Temporarily Revert &quot;Add basic loop fusion pass.&quot;&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#cee313d2</link>
        <description>Revert &quot;Temporarily Revert &quot;Add basic loop fusion pass.&quot;&quot;The reversion apparently deleted the test/Transforms directory.Will be re-reverting again.llvm-svn: 358552

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Wed, 17 Apr 2019 04:52:47 +0000</pubDate>
        <dc:creator>Eric Christopher &lt;echristo@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>ff3abef3 - [SLPVectorizer] reorderInputsAccordingToOpcode - remove non-Instruction canonicalization</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#ff3abef3</link>
        <description>[SLPVectorizer] reorderInputsAccordingToOpcode - remove non-Instruction canonicalizationRemove attempts to commute non-Instructions to the LHS - the codegen changes appear to rely on chance more than anything else and also have a tendency to fight existing instcombine canonicalization which moves constants to the RHS of commutable binary ops.This is prep work towards:(a) reusing reorderInputsAccordingToOpcode for alt-shuffles and removing the similar reorderAltShuffleOperands(b) improving reordering to optimized cases with commutable and non-commutable instructions to still find splat/consecutive ops.Differential Revision: https://reviews.llvm.org/D59738llvm-svn: 356913

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Mon, 25 Mar 2019 15:53:55 +0000</pubDate>
        <dc:creator>Simon Pilgrim &lt;llvm-dev@redking.me.uk&gt;</dc:creator>
    </item>
<item>
        <title>2534592b - Temporarily Revert &quot;[X86][SLP] Enable SLP vectorization for 128-bit horizontal X86 instructions (add, sub)&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#2534592b</link>
        <description>Temporarily Revert &quot;[X86][SLP] Enable SLP vectorization for 128-bit horizontal X86 instructions (add, sub)&quot;As this has broken the lto bootstrap build for 3 days and isshowing a significant regression on the Dither_benchmark results (fromthe LLVM benchmark suite) -- specifically, on theBENCHMARK_FLOYD_DITHER_128, BENCHMARK_FLOYD_DITHER_256, andBENCHMARK_FLOYD_DITHER_512; the others are unchanged.  These haveregressed by about 28% on Skylake, 34% on Haswell, and over 40% onSandybridge.This reverts commit r353923.llvm-svn: 354434

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Wed, 20 Feb 2019 04:42:07 +0000</pubDate>
        <dc:creator>Eric Christopher &lt;echristo@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>ca9aff93 - [X86][SLP] Enable SLP vectorization for 128-bit horizontal X86 instructions (add, sub)</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#ca9aff93</link>
        <description>[X86][SLP] Enable SLP vectorization for 128-bit horizontal X86 instructions (add, sub)Try to use 64-bit SLP vectorization. In addition to horizontal instrsthis change triggers optimizations for partial vector operations (for instance,using low halfs of 128-bit registers xmm0 and xmm1 to multiply &lt;2 x float&gt; by&lt;2 x float&gt;).Fixes llvm.org/PR32433llvm-svn: 353923

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Wed, 13 Feb 2019 08:26:43 +0000</pubDate>
        <dc:creator>Anton Afanasyev &lt;anton.a.afanasyev@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>ce2c8b33 - [SLP]Update test checks for the SPL vectorizer, NFC.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#ce2c8b33</link>
        <description>[SLP]Update test checks for the SPL vectorizer, NFC.llvm-svn: 350967

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Fri, 11 Jan 2019 20:21:14 +0000</pubDate>
        <dc:creator>Alexey Bataev &lt;a.bataev@hotmail.com&gt;</dc:creator>
    </item>
<item>
        <title>a79ac14f - [opaque pointer type] Add textual IR support for explicit type parameter to load instruction</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#a79ac14f</link>
        <description>[opaque pointer type] Add textual IR support for explicit type parameter to load instructionEssentially the same as the GEP change in r230786.A similar migration script can be used to update test cases, though a few moretest case improvements/changes were required this time around: (r229269-r229278)import fileinputimport sysimport repat = re.compile(r&quot;((?:=|:|^)\s*load (?:atomic )?(?:volatile )?(.*?))(| addrspace\(\d+\) *)\*($| *(?:%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|\[\[[a-zA-Z]|\{\{).*$)&quot;)for line in sys.stdin:  sys.stdout.write(re.sub(pat, r&quot;\1, \2\3*\4&quot;, line))Reviewers: rafael, dexonsmith, grosserDifferential Revision: http://reviews.llvm.org/D7649llvm-svn: 230794

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Fri, 27 Feb 2015 21:17:42 +0000</pubDate>
        <dc:creator>David Blaikie &lt;dblaikie@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>79e6c749 - [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#79e6c749</link>
        <description>[opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instructionOne of several parallel first steps to remove the target type of pointers,replacing them with a single opaque pointer type.This adds an explicit type parameter to the gep instruction so that when thefirst parameter becomes an opaque pointer type, the type to gep through isstill available to the instructions.* This doesn&apos;t modify gep operators, only instructions (operators will be  handled separately)* Textual IR changes only. Bitcode (including upgrade) and changing the  in-memory representation will be in separate changes.* geps of vectors are transformed as:    getelementptr &lt;4 x float*&gt; %x, ...  -&gt;getelementptr float, &lt;4 x float*&gt; %x, ...  Then, once the opaque pointer type is introduced, this will ultimately look  like:    getelementptr float, &lt;4 x ptr&gt; %x  with the unambiguous interpretation that it is a vector of pointers to float.* address spaces remain on the pointer, not the type:    getelementptr float addrspace(1)* %x  -&gt;getelementptr float, float addrspace(1)* %x  Then, eventually:    getelementptr float, ptr addrspace(1) %xImportantly, the massive amount of test case churn has been automated bysame crappy python code. I had to manually update a few test cases thatwouldn&apos;t fit the script&apos;s model (r228970,r229196,r229197,r229198). Thepython script just massages stdin and writes the result to stdout, Ithen wrapped that in a shell script to handle replacing files, thenusing the usual find+xargs to migrate all the files.update.py:import fileinputimport sysimport reibrep = re.compile(r&quot;(^.*?[^%\w]getelementptr inbounds )(((?:&lt;\d* x )?)(.*?)(| addrspace\(\d\)) *\*(|&gt;)(?:$| *(?:%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|\[\[[a-zA-Z]|\{\{).*$))&quot;)normrep = re.compile(       r&quot;(^.*?[^%\w]getelementptr )(((?:&lt;\d* x )?)(.*?)(| addrspace\(\d\)) *\*(|&gt;)(?:$| *(?:%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|\[\[[a-zA-Z]|\{\{).*$))&quot;)def conv(match, line):  if not match:    return line  line = match.groups()[0]  if len(match.groups()[5]) == 0:    line += match.groups()[2]  line += match.groups()[3]  line += &quot;, &quot;  line += match.groups()[1]  line += &quot;\n&quot;  return linefor line in sys.stdin:  if line.find(&quot;getelementptr &quot;) == line.find(&quot;getelementptr inbounds&quot;):    if line.find(&quot;getelementptr inbounds&quot;) != line.find(&quot;getelementptr inbounds (&quot;):      line = conv(re.match(ibrep, line), line)  elif line.find(&quot;getelementptr &quot;) != line.find(&quot;getelementptr (&quot;):    line = conv(re.match(normrep, line), line)  sys.stdout.write(line)apply.sh:for name in &quot;$@&quot;do  python3 `dirname &quot;$0&quot;`/update.py &lt; &quot;$name&quot; &gt; &quot;$name.tmp&quot; &amp;&amp; mv &quot;$name.tmp&quot; &quot;$name&quot;  rm -f &quot;$name.tmp&quot;doneThe actual commands:From llvm/src:find test/ -name *.ll | xargs ./apply.shFrom llvm/src/tools/clang:find test/ -name *.mm -o -name *.m -o -name *.cpp -o -name *.c | xargs -I &apos;{}&apos; ../../apply.sh &quot;{}&quot;From llvm/src/tools/polly:find test/ -name *.ll | xargs ./apply.shAfter that, check-all (with llvm, clang, clang-tools-extra, lld,compiler-rt, and polly all checked out).The extra &apos;rm&apos; in the apply.sh script is due to a few files in clang&apos;s testsuite using interesting unicode stuff that my python script was throwingexceptions on. None of those files needed to be migrated, so it seemedsufficient to ignore those cases.Reviewers: rafael, dexonsmith, grosserDifferential Revision: http://reviews.llvm.org/D7636llvm-svn: 230786

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Fri, 27 Feb 2015 19:29:02 +0000</pubDate>
        <dc:creator>David Blaikie &lt;dblaikie@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>c10563d1 - Fix broken CHECK lines.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#c10563d1</link>
        <description>Fix broken CHECK lines.llvm-svn: 199016

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Sat, 11 Jan 2014 21:06:00 +0000</pubDate>
        <dc:creator>Benjamin Kramer &lt;benny.kra@googlemail.com&gt;</dc:creator>
    </item>
<item>
        <title>58864d2d - SLPVectorizer: Sort PHINodes based on their opcode</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll#58864d2d</link>
        <description>SLPVectorizer: Sort PHINodes based on their opcodeBefore this patch we relied on the order of phi nodes when we looked for phinodes of the same type. This could prevent vectorization of cases where therewas a phi node of a second type in between phi nodes of some type.This is important for vectorization of an internal graphics kernel. On the testsuite + external on x86_64 (and on a run on armv7s) it showed no impact oneither performance or compile time.radar://15024459llvm-svn: 192537

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/SLPVectorizer/X86/phi.ll</description>
        <pubDate>Sat, 12 Oct 2013 18:56:27 +0000</pubDate>
        <dc:creator>Arnold Schwaighofer &lt;aschwaighofer@apple.com&gt;</dc:creator>
    </item>
</channel>
</rss>
