diff --git a/.gitignore b/.gitignore
index 52fbb9e..2c77403 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/llvm-12.0.1.src.tar.xz
+SOURCES/llvm-13.0.1.src.tar.xz
diff --git a/.llvm.metadata b/.llvm.metadata
index 99ec298..5eb43c3 100644
--- a/.llvm.metadata
+++ b/.llvm.metadata
@@ -1 +1 @@
-619fe668e0972d11d0fa2db670a57a42d02fb8ca SOURCES/llvm-12.0.1.src.tar.xz
+8e50e3e47b6a14a0848862c574fb0007db212482 SOURCES/llvm-13.0.1.src.tar.xz
diff --git a/SOURCES/0001-PATCH-llvm-Make-source-interleave-prefix-test-case-c.patch b/SOURCES/0001-PATCH-llvm-Make-source-interleave-prefix-test-case-c.patch
deleted file mode 100644
index 526b25f..0000000
--- a/SOURCES/0001-PATCH-llvm-Make-source-interleave-prefix-test-case-c.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 60760d66030695105bcf4364f22b7f6053a25253 Mon Sep 17 00:00:00 2001
-From: serge-sans-paille <sguelton@redhat.com>
-Date: Thu, 8 Apr 2021 09:33:37 +0200
-Subject: [PATCH] [PATCH][llvm] Make source-interleave-prefix test case
- compatible with llvm-test
-
-llvm-test runs test from a directory that's not the upstream one, and that leads
-to some false positive. Workaround this by forcing the current working
-directory.
----
- llvm/test/tools/llvm-objdump/X86/source-interleave-prefix.test | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/llvm/test/tools/llvm-objdump/X86/source-interleave-prefix.test b/llvm/test/tools/llvm-objdump/X86/source-interleave-prefix.test
-index 23ce55a..d260ee2 100644
---- a/llvm/test/tools/llvm-objdump/X86/source-interleave-prefix.test
-+++ b/llvm/test/tools/llvm-objdump/X86/source-interleave-prefix.test
-@@ -5,7 +5,7 @@
- 
- ; RUN: sed -e "s,SRC_COMPDIR,./Inputs,g" %p/Inputs/source-interleave.ll > %t-relative-path.ll
- ; RUN: llc -o %t-relative-path.o -filetype=obj -mtriple=x86_64-pc-linux %t-relative-path.ll
--; RUN: llvm-objdump --prefix myprefix --source %t-relative-path.o 2>&1 | \
-+; RUN: mkdir -p %t0 && cd %t0 && llvm-objdump --prefix myprefix --source %t-relative-path.o 2>&1 | \
- ; RUN:   FileCheck %s --check-prefix=CHECK-BROKEN-PREFIX -DFILE=%t-relative-path.o -DPREFIX=.
- ; CHECK-BROKEN-PREFIX: warning: '[[FILE]]': failed to find source [[PREFIX]]/Inputs/source-interleave-x86_64.c
- 
--- 
-1.8.3.1
-
diff --git a/SOURCES/0001-XFAIL-missing-abstract-variable.ll-test-on-ppc64le.patch b/SOURCES/0001-XFAIL-missing-abstract-variable.ll-test-on-ppc64le.patch
new file mode 100644
index 0000000..1866a66
--- /dev/null
+++ b/SOURCES/0001-XFAIL-missing-abstract-variable.ll-test-on-ppc64le.patch
@@ -0,0 +1,33 @@
+From 9320ffeda3915c8f7be744c983a3470a89107bd7 Mon Sep 17 00:00:00 2001
+From: Tom Stellard <tstellar@redhat.com>
+Date: Tue, 14 Sep 2021 20:21:20 -0700
+Subject: [PATCH] XFAIL missing-abstract-variable.ll test on ppc64le
+
+It's seems the strategy with this test is to XFAIL it on all
+architectures that it fails on.  I wonder if we should be passing
+it a specific triple?  Also, from what I can tell, this tests only
+runs when llvm is configured with LLVM_DEFAULT_TARGET_TRIPLE set
+to a non-empty value, which is why it may not fail in every build
+configuration.
+
+Differential Revision: https://reviews.llvm.org/D109806
+---
+ llvm/test/DebugInfo/Generic/missing-abstract-variable.ll | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/llvm/test/DebugInfo/Generic/missing-abstract-variable.ll b/llvm/test/DebugInfo/Generic/missing-abstract-variable.ll
+index bd0de60268b6..cc5d56b0c512 100644
+--- a/llvm/test/DebugInfo/Generic/missing-abstract-variable.ll
++++ b/llvm/test/DebugInfo/Generic/missing-abstract-variable.ll
+@@ -4,7 +4,7 @@
+ ; powerpc64 (and on x86_64 at at least -O2). Presumably this is a SelectionDAG
+ ; issue.
+ ; FIXME: arm64 is an alias for aarch64 on macs, apparently?
+-; XFAIL: powerpc64, aarch64, arm64, hexagon
++; XFAIL: powerpc64, aarch64, arm64, hexagon, ppc64le
+ 
+ ; Build from the following source with clang -O2.
+ 
+-- 
+2.31.1
+
diff --git a/SOURCES/error-opening-permission.patch b/SOURCES/error-opening-permission.patch
deleted file mode 100644
index b83a128..0000000
--- a/SOURCES/error-opening-permission.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur a/llvm/test/tools/llvm-ar/error-opening-permission.test b/llvm/test/tools/llvm-ar/error-opening-permission.test
---- a/llvm/test/tools/llvm-ar/error-opening-permission.test	2020-09-15 09:11:33.056986167 +0000
-+++ b/llvm/test/tools/llvm-ar/error-opening-permission.test	2020-09-25 21:01:17.572130708 +0000
-@@ -8,7 +8,7 @@
- ## No Permission:
- # RUN: llvm-ar rc %t/permission.b %t/1.txt
- # RUN: chmod 100 %t/permission.b
--# RUN: not llvm-ar p %t/permission.b 2>&1 | \
-+# RUN: echo > %t/permission.b || not llvm-ar p %t/permission.b 2>&1 | \
- # RUN:   FileCheck %s --check-prefix=NO-PERMISSION -DARCHIVE=%t/permission.b
- 
- # NO-PERMISSION: error: unable to open '[[ARCHIVE]]': {{.*}}{{[pP]}}ermission denied
diff --git a/SOURCES/llvm-12.0.1.src.tar.xz.sig b/SOURCES/llvm-12.0.1.src.tar.xz.sig
deleted file mode 100644
index efeaeb8..0000000
Binary files a/SOURCES/llvm-12.0.1.src.tar.xz.sig and /dev/null differ
diff --git a/SOURCES/llvm-13.0.1.src.tar.xz.sig b/SOURCES/llvm-13.0.1.src.tar.xz.sig
new file mode 100644
index 0000000..2cba778
Binary files /dev/null and b/SOURCES/llvm-13.0.1.src.tar.xz.sig differ
diff --git a/SPECS/llvm.spec b/SPECS/llvm.spec
index 86ddfc7..e5e2870 100644
--- a/SPECS/llvm.spec
+++ b/SPECS/llvm.spec
@@ -1,5 +1,10 @@
 # Components enabled if supported by target architecture:
 %define gold_arches %{ix86} x86_64 %{arm} aarch64 %{power64}
+%if 0%{?rhel} > 8 || 0%{?fedora}
+# FIXME: Why is this disabled on RHEL <= 8
+%global gold_arches %{gold_arches} s390x
+%endif
+
 %ifarch %{gold_arches}
   %bcond_without gold
 %else
@@ -7,14 +12,18 @@
 %endif
 
 %bcond_with compat_build
+%bcond_without check
 
 %global llvm_libdir %{_libdir}/%{name}
 %global build_llvm_libdir %{buildroot}%{llvm_libdir}
-#%%global rc_ver 5
-%global llvm_srcdir llvm-%{version}%{?rc_ver:rc%{rc_ver}}.src
-%global maj_ver 12
+#global rc_ver 4
+%global maj_ver 13
 %global min_ver 0
 %global patch_ver 1
+%if !%{maj_ver} && 0%{?rc_ver}
+%global abi_revision 2
+%endif
+%global llvm_srcdir llvm-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:rc%{rc_ver}}.src
 
 %if %{with compat_build}
 %global pkg_name llvm%{maj_ver}
@@ -45,6 +54,19 @@
 %global experimental_targets_to_build "AVR"
 %endif
 
+%global build_install_prefix %{buildroot}%{install_prefix}
+
+# Lower memory usage of dwz on s390x
+%global _dwz_low_mem_die_limit_s390x 1
+%global _dwz_max_die_limit_s390x 1000000
+
+%ifarch %{arm}
+# koji overrides the _gnu variable to be gnu, which is not correct for clang, so
+# we need to hard-code the correct triple here.
+%global llvm_triple armv7l-redhat-linux-gnueabihf
+%else
+%global llvm_triple %{_host}
+%endif
 
 %if !0%{?rhel}
 # libedit-devel is a buildroot-only package in RHEL8, so we can't have a
@@ -52,28 +74,28 @@
 %global use_libedit 1
 %endif
 
-%global build_install_prefix %{buildroot}%{install_prefix}
-
 Name:		%{pkg_name}
 Version:	%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:~rc%{rc_ver}}
-Release:	2%{?dist}
+Release:	1%{?dist}
 Summary:	The Low Level Virtual Machine
 
 License:	NCSA
 URL:		http://llvm.org
-Source0:	https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}%{?rc_ver:-rc%{rc_ver}}/%{llvm_srcdir}.tar.xz
-Source1:	https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}%{?rc_ver:-rc%{rc_ver}}/%{llvm_srcdir}.tar.xz.sig
+Source0:	https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-rc%{rc_ver}}/%{llvm_srcdir}.tar.xz
+Source1:	https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-rc%{rc_ver}}/%{llvm_srcdir}.tar.xz.sig
 
 %if %{without compat_build}
 Source3:	run-lit-tests
 Source4:	lit.fedora.cfg.py
 %endif
 
-Patch0:     0001-PATCH-llvm-Make-source-interleave-prefix-test-case-c.patch
+%if 0%{?abi_revision}
+Patch0:		0001-cmake-Allow-shared-libraries-to-customize-the-soname.patch
+%endif
+Patch2:		0001-XFAIL-missing-abstract-variable.ll-test-on-ppc64le.patch
 
 # RHEL-specific patches.
 Patch101:      0001-Deactivate-markdown-doc.patch
-Patch102:      error-opening-permission.patch
 
 BuildRequires:	gcc
 BuildRequires:	gcc-c++
@@ -298,7 +320,6 @@ mkdir -p %{buildroot}/%{_bindir}
 
 # Fix some man pages
 ln -s llvm-config.1 %{buildroot}%{_mandir}/man1/llvm-config%{exec_suffix}-%{__isa_bits}.1
-mv %{buildroot}%{_mandir}/man1/*tblgen.1 %{buildroot}%{_mandir}/man1/llvm-tblgen.1
 
 # Install binaries needed for lit tests
 %global test_binaries llvm-isel-fuzzer llvm-opt-fuzzer
@@ -384,6 +405,13 @@ rm -Rf %{build_install_prefix}/share/opt-viewer
 %if %{without compat_build}
 
 mv %{buildroot}/%{pkg_bindir}/llvm-config %{buildroot}/%{pkg_bindir}/llvm-config%{exec_suffix}-%{__isa_bits}
+# We still maintain a versionned symlink for consistency across llvm versions.
+# This is specific to the non-compat build and matches the exec prefix for
+# compat builds. An isa-agnostic versionned symlink is also maintained in the (un)install
+# steps.
+(cd %{buildroot}/%{pkg_bindir} ; ln -s llvm-config%{exec_suffix}-%{__isa_bits} llvm-config-%{maj_ver}-%{__isa_bits} )
+# ghost presence
+touch %{buildroot}%{_bindir}/llvm-config-%{maj_ver}
 
 %else
 
@@ -406,17 +434,25 @@ rm test/tools/llvm-readobj/ELF/dependent-libraries.test
 # non reproducible errors
 rm test/tools/dsymutil/X86/swift-interface.test
 
+%if %{with check}
 # FIXME: use %%cmake_build instead of %%__ninja
 LD_LIBRARY_PATH=%{buildroot}/%{pkg_libdir}  %{__ninja} check-all -C %{_vpath_builddir}
+%endif
 
 %ldconfig_scriptlets libs
 
 %post devel
 %{_sbindir}/update-alternatives --install %{_bindir}/llvm-config%{exec_suffix} llvm-config%{exec_suffix} %{pkg_bindir}/llvm-config%{exec_suffix}-%{__isa_bits} %{__isa_bits}
+%if %{without compat_build}
+%{_sbindir}/update-alternatives --install %{_bindir}/llvm-config-%{maj_ver} llvm-config-%{maj_ver} %{pkg_bindir}/llvm-config%{exec_suffix}-%{__isa_bits} %{__isa_bits}
+%endif
 
 %postun devel
 if [ $1 -eq 0 ]; then
   %{_sbindir}/update-alternatives --remove llvm-config%{exec_suffix} %{pkg_bindir}/llvm-config%{exec_suffix}-%{__isa_bits}
+%if %{without compat_build}
+  %{_sbindir}/update-alternatives --remove llvm-config-%{maj_ver} %{pkg_bindir}/llvm-config%{exec_suffix}-%{__isa_bits}
+%endif
 fi
 
 %files
@@ -429,6 +465,8 @@ fi
 %exclude %{pkg_bindir}/llvm-config%{exec_suffix}-%{__isa_bits}
 
 %if %{without compat_build}
+%exclude %{_bindir}/llvm-config-%{maj_ver}
+%exclude %{pkg_bindir}/llvm-config-%{maj_ver}-%{__isa_bits}
 %exclude %{_bindir}/not
 %exclude %{_bindir}/count
 %exclude %{_bindir}/yaml-bench
@@ -449,6 +487,7 @@ fi
 %{_libdir}/bfd-plugins/LLVMgold.so
 %endif
 %{_libdir}/libLLVM-%{maj_ver}.%{min_ver}*.so
+%{_libdir}/libLLVM-%{maj_ver}.so%{?abi_revision:.%{abi_revision}}
 %{_libdir}/libLTO.so*
 %else
 %config(noreplace) %{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf
@@ -473,6 +512,8 @@ fi
 %{_includedir}/llvm-c
 %{_libdir}/libLLVM.so
 %{_libdir}/cmake/llvm
+%{pkg_bindir}/llvm-config-%{maj_ver}-%{__isa_bits}
+%ghost %{_bindir}/llvm-config-%{maj_ver}
 %else
 %{install_includedir}/llvm
 %{install_includedir}/llvm-c
@@ -515,9 +556,21 @@ fi
 %endif
 
 %changelog
-* Thu Sep 02 2021 sguelton@redhat.com - 12.0.1-2
+* Wed Feb 02 2022 Tom Stellard <tstellar@redhat.com> - 13.0.1-1
+- 13.0.1 Release
+
+* Sat Jan 29 2022 Tom Stellard <tstellar@redhat.com> - 13.0.0-4
+- Rebuild with gcc fix from rhbz#2028609
+
+* Thu Oct 21 2021 sguelton@redhat.com - 13.0.0-3
 - Correctly set ldflags
 
+* Wed Oct 20 2021 Tom Stellard <tstellar@redhat.com> - 13.0.0-2
+- Disable failing test on s390x
+
+* Thu Oct 14 2021 Tom Stellard <tstellar@redhat.com> - 13.0.0-1
+- 13.0.0 Release
+
 * Fri Jul 16 2021 sguelton@redhat.com - 12.0.1-1
 - 12.0.1 release