Use more inclusive terms

third_party/subzero is a fork which we are responsible for. Many of the
non-PC words were in files we actually have no use for, so they've been
removed altogether.

Bug: b/162338339
Bug: chromium:1097202
Change-Id: Iaa531dd8788efaf25a640786b78d15d4648b2dd9
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/47208
Reviewed-by: Alexis Hétu <sugoi@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Device/BC_Decoder.cpp b/src/Device/BC_Decoder.cpp
index 7a7b969..3a0c220 100644
--- a/src/Device/BC_Decoder.cpp
+++ b/src/Device/BC_Decoder.cpp
@@ -944,7 +944,7 @@
 
 		int partition = 0;
 		ModeDesc modeDesc;
-		// For sanity checks
+		// For assertion checks
 		modeDesc.number = -1;
 		for(auto desc : blockDescs[mode])
 		{
@@ -952,7 +952,6 @@
 			{
 				case Mode:
 					modeDesc = desc.modeDesc;
-					// Sanity check
 					ASSERT(modeDesc.number == mode);
 
 					e[0].size[0] = e[0].size[1] = e[0].size[2] = modeDesc.endpointBits;
@@ -1146,18 +1145,18 @@
 	/**/ { -1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00, 0x0 },
 };
 
-static_assert(Modes[0].NumColors() == 6, "BC7 sanity checks failed");
-static_assert(Modes[0].Partition() == Bitfield{ 1, 4 }, "BC7 sanity checks failed");
-static_assert(Modes[0].Red(0) == Bitfield{ 5, 4 }, "BC7 sanity checks failed");
-static_assert(Modes[0].Red(5) == Bitfield{ 25, 4 }, "BC7 sanity checks failed");
-static_assert(Modes[0].Green(0) == Bitfield{ 29, 4 }, "BC7 sanity checks failed");
-static_assert(Modes[0].Green(5) == Bitfield{ 49, 4 }, "BC7 sanity checks failed");
-static_assert(Modes[0].Blue(0) == Bitfield{ 53, 4 }, "BC7 sanity checks failed");
-static_assert(Modes[0].Blue(5) == Bitfield{ 73, 4 }, "BC7 sanity checks failed");
-static_assert(Modes[0].EndpointPBit(0) == Bitfield{ 77, 1 }, "BC7 sanity checks failed");
-static_assert(Modes[0].EndpointPBit(5) == Bitfield{ 82, 1 }, "BC7 sanity checks failed");
-static_assert(Modes[0].PrimaryIndex(0, 2) == Bitfield{ 83, 2 }, "BC7 sanity checks failed");
-static_assert(Modes[0].PrimaryIndex(43, 1) == Bitfield{ 126, 1 }, "BC7 sanity checks failed");
+static_assert(Modes[0].NumColors() == 6, "BC7 static assertion failed");
+static_assert(Modes[0].Partition() == Bitfield{ 1, 4 }, "BC7 static assertion failed");
+static_assert(Modes[0].Red(0) == Bitfield{ 5, 4 }, "BC7 static assertion failed");
+static_assert(Modes[0].Red(5) == Bitfield{ 25, 4 }, "BC7 static assertion failed");
+static_assert(Modes[0].Green(0) == Bitfield{ 29, 4 }, "BC7 static assertion failed");
+static_assert(Modes[0].Green(5) == Bitfield{ 49, 4 }, "BC7 static assertion failed");
+static_assert(Modes[0].Blue(0) == Bitfield{ 53, 4 }, "BC7 static assertion failed");
+static_assert(Modes[0].Blue(5) == Bitfield{ 73, 4 }, "BC7 static assertion failed");
+static_assert(Modes[0].EndpointPBit(0) == Bitfield{ 77, 1 }, "BC7 static assertion failed");
+static_assert(Modes[0].EndpointPBit(5) == Bitfield{ 82, 1 }, "BC7 static assertion failed");
+static_assert(Modes[0].PrimaryIndex(0, 2) == Bitfield{ 83, 2 }, "BC7 static asassertionsert failed");
+static_assert(Modes[0].PrimaryIndex(43, 1) == Bitfield{ 126, 1 }, "BC7 static assertion failed");
 
 static constexpr int MaxPartitions = 64;
 static constexpr int MaxSubsets = 3;
diff --git a/src/Device/ETC_Decoder.cpp b/src/Device/ETC_Decoder.cpp
index 0f8ecaa..a5c8549 100644
--- a/src/Device/ETC_Decoder.cpp
+++ b/src/Device/ETC_Decoder.cpp
@@ -221,9 +221,9 @@
 					{
 						// Byte 1
 						unsigned char TR1b : 2;
-						unsigned char TdummyB : 1;
+						unsigned char TunusedB : 1;
 						unsigned char TR1a : 2;
-						unsigned char TdummyA : 3;
+						unsigned char TunusedA : 3;
 
 						// Byte 2
 						unsigned char TB1 : 4;
@@ -246,14 +246,14 @@
 						// Byte 1
 						unsigned char HG1a : 3;
 						unsigned char HR1 : 4;
-						unsigned char HdummyA : 1;
+						unsigned char HunusedA : 1;
 
 						// Byte 2
 						unsigned char HB1b : 2;
-						unsigned char HdummyC : 1;
+						unsigned char HunusedC : 1;
 						unsigned char HB1a : 1;
 						unsigned char HG1b : 1;
-						unsigned char HdummyB : 3;
+						unsigned char HunusedB : 3;
 
 						// Byte 3
 						unsigned char HG2a : 3;
@@ -279,18 +279,18 @@
 				// Byte 1
 				unsigned char GO1 : 1;
 				unsigned char RO : 6;
-				unsigned char PdummyA : 1;
+				unsigned char PunusedA : 1;
 
 				// Byte 2
 				unsigned char BO1 : 1;
 				unsigned char GO2 : 6;
-				unsigned char PdummyB : 1;
+				unsigned char PunusedB : 1;
 
 				// Byte 3
 				unsigned char BO3a : 2;
-				unsigned char PdummyD : 1;
+				unsigned char PunusedD : 1;
 				unsigned char BO2 : 2;
-				unsigned char PdummyC : 3;
+				unsigned char PunusedC : 3;
 
 				// Byte 4
 				unsigned char RH2 : 1;
diff --git a/src/Pipeline/SpirvShader.hpp b/src/Pipeline/SpirvShader.hpp
index 8a88646..07127aa 100644
--- a/src/Pipeline/SpirvShader.hpp
+++ b/src/Pipeline/SpirvShader.hpp
@@ -439,7 +439,7 @@
 	};
 
 	struct TypeOrObject
-	{};  // Dummy struct to represent a Type or Object.
+	{};
 
 	// TypeOrObjectID is an identifier that represents a Type or an Object,
 	// and supports implicit casting to and from Type::ID or Object::ID.
diff --git a/src/System/Build.cpp b/src/System/Build.cpp
index 5552ae5..002bbeb 100644
--- a/src/System/Build.cpp
+++ b/src/System/Build.cpp
@@ -24,7 +24,7 @@
 #	error "Unable to identify C++ language version"
 #endif
 
-// The template and dummy function below verifies the compiler is using at least
+// The template and unused function below verifies the compiler is using at least
 // C++14. It will print an error message containing the actual C++ version if
 // the version is < 14.
 
@@ -39,7 +39,7 @@
 void check_cpp_version()
 {
 	cpp<CPP_VERSION / 100>();
-	(void)&check_cpp_version;  // dummy reference to avoid unreferenced function warning.
+	(void)&check_cpp_version;  // Unused reference to avoid unreferenced function warning.
 }
 
 }  // namespace
diff --git a/src/System/SharedLibrary.hpp b/src/System/SharedLibrary.hpp
index e3b1e16..fc12842 100644
--- a/src/System/SharedLibrary.hpp
+++ b/src/System/SharedLibrary.hpp
@@ -88,25 +88,6 @@
 {
 	return (void *)GetProcAddress((HMODULE)library, name);
 }
-
-inline std::string getModuleDirectory()
-{
-	static int dummy_symbol = 0;
-
-	HMODULE module = NULL;
-	GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCTSTR)&dummy_symbol, &module);
-
-	char filename[1024];
-	if(module && (GetModuleFileName(module, filename, sizeof(filename)) != 0))
-	{
-		std::string directory(filename);
-		return directory.substr(0, directory.find_last_of("\\/") + 1).c_str();
-	}
-	else
-	{
-		return "";
-	}
-}
 #else
 inline void *loadLibrary(const char *path)
 {
@@ -150,22 +131,6 @@
 
 	return symbol;
 }
-
-inline std::string getModuleDirectory()
-{
-	static int dummy_symbol = 0;
-
-	Dl_info dl_info;
-	if(dladdr(&dummy_symbol, &dl_info) != 0)
-	{
-		std::string directory(dl_info.dli_fname);
-		return directory.substr(0, directory.find_last_of("\\/") + 1).c_str();
-	}
-	else
-	{
-		return "";
-	}
-}
 #endif
 
 #endif  // SharedLibrary_hpp
diff --git a/src/Vulkan/VkStringify.cpp b/src/Vulkan/VkStringify.cpp
index 0d71f25..898583b 100644
--- a/src/Vulkan/VkStringify.cpp
+++ b/src/Vulkan/VkStringify.cpp
@@ -28,14 +28,6 @@
 std::string Stringify(VkStructureType value)
 {
 #ifndef NDEBUG
-	// Since C++ hasn't given us introspection on enums, we can't just "get" an
-	// enum name from an enum value (at least not without some crazy header
-	// file hacks). So I copied the entire list of VK_STRUCTURE_TYPE defined in
-	// vulkan/vulkan_core.h.
-	//
-	// If vulkan_core.h is updated to include new structure types, and this list
-	// becomes out of date, then this function will throw a warning if someone
-	// tries to stringify that enum value.
 	static const std::map<VkStructureType, const char *> strings = {
 #	define INSERT_ELEMENT(p) std::make_pair(p, #    p)
 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_APPLICATION_INFO),
diff --git a/third_party/llvm-subzero/include/llvm/ADT/SmallVector.h b/third_party/llvm-subzero/include/llvm/ADT/SmallVector.h
index c1c5c81..ee9cd8b 100644
--- a/third_party/llvm-subzero/include/llvm/ADT/SmallVector.h
+++ b/third_party/llvm-subzero/include/llvm/ADT/SmallVector.h
@@ -61,8 +61,8 @@
 };
 
 /// This is the part of SmallVectorTemplateBase which does not depend on whether
-/// the type T is a POD. The extra dummy template argument is used by ArrayRef
-/// to avoid unnecessarily requiring T to be complete.
+/// the type T is a POD. The extra template argument is used by ArrayRef to
+/// avoid unnecessarily requiring T to be complete.
 template <typename T, typename = void>
 class SmallVectorTemplateCommon : public SmallVectorBase {
 private:
diff --git a/third_party/subzero/Makefile.standalone b/third_party/subzero/Makefile.standalone
deleted file mode 100644
index 602616d..0000000
--- a/third_party/subzero/Makefile.standalone
+++ /dev/null
@@ -1,861 +0,0 @@
-# The following variables will likely need to be modified, depending on where
-# and how you built LLVM & Clang. They can be overridden in a command-line
-# invocation of make, like:
-#
-#   make LLVM_SRC_PATH=<path> LIBCXX_INSTALL_PATH=<path> CLANG_PATH=<path> \
-#        PNACL_BIN_PATH=<path> ...
-#
-
-# LLVM_SRC_PATH is the path to the root of the checked out source code. This
-# directory should contain the configure script, the include/ and lib/
-# directories of LLVM, Clang in tools/clang/, etc.
-# Alternatively, if you're building vs. a binary download of LLVM, then
-# LLVM_SRC_PATH can point to the main untarred directory.
-LLVM_SRC_PATH ?= ../llvm
-
-# The x86-32-specific sandboxed translator directory.
-# It holds sandboxed versions of libraries and binaries.
-SB_LLVM_PATH ?= $(shell readlink -e \
-  ../../out/sandboxed_translators_work/translator-i686/llvm-sb/Release)
-
-# NACL_ROOT is the root of the native client repository.
-NACL_ROOT ?= $(shell python -c "import sys; sys.path.insert(0, 'pydir'); \
-  import utils; print utils.FindBaseNaCl()")
-
-# TOOLCHAIN_ROOT is the location of NaCl/PNaCl toolchains and other
-# tools like qemu.
-TOOLCHAIN_ROOT ?= $(shell readlink -e $(NACL_ROOT)/toolchain/linux_x86)
-
-# PNACL_TOOLCHAIN_ROOT is the location of the PNaCl toolchain.
-# This is used as the default root for finding binutils, libcxx, etc.
-PNACL_TOOLCHAIN_ROOT ?= $(shell readlink -e $(TOOLCHAIN_ROOT)/pnacl_newlib_raw)
-
-# The location of PNaCl tools (e.g., binutils objdump, pnacl-clang++, etc.).
-PNACL_BIN_PATH ?= $(shell readlink -e $(PNACL_TOOLCHAIN_ROOT)/bin)
-
-# Allow tests to be overridden, e.g.:
-#   make -f Makefile.standalone check-lit \
-#     CHECK_LIT_TESTS="tests_lit/llvm2ice_tests/{alloc,arith}.ll"
-#   make -f Makefile.standalone check-xtest \
-#     CHECK_XTEST_TESTS=crosstest/Output/simple_loop_x8632_native_O2_sse2.xtest
-CHECK_LIT_TESTS ?= tests_lit
-CHECK_XTEST_TESTS ?= crosstest/Output
-
-# Hack to auto-detect autoconf versus cmake build of LLVM.  If the LLVM tools
-# were dynamically linked with something like libLLVM-3.7svn.so, it is an
-# autoconf build, otherwise it is a cmake build.  AUTOCONF is set to 0 for
-# cmake, nonzero for autoconf.
-AUTOCONF ?= $(shell ldd $(PNACL_BIN_PATH)/opt | grep -c libLLVM-)
-
-# CLANG_PATH is the location of the clang compiler to use for building
-# the host binaries.
-CLANG_PATH ?= $(shell readlink -e \
-  $(NACL_ROOT)/../third_party/llvm-build/Release+Asserts/bin)
-
-# LIBCXX_INSTALL_PATH is the directory where libc++ is located. It should
-# contain header files and corresponding libraries. This is used for
-# building the host binaries in conjuction with clang.
-LIBCXX_INSTALL_PATH ?= $(PNACL_TOOLCHAIN_ROOT)
-STDLIB_FLAGS := -stdlib=libc++ -I$(LIBCXX_INSTALL_PATH)/include/c++/v1
-
-HOST_ARCH ?= x86_64
-ifeq ($(HOST_ARCH),x86_64)
-  HOST_FLAGS = -m64
-else
-  ifeq ($(HOST_ARCH),x86)
-    HOST_FLAGS = -m32
-  endif
-endif
-
-ifdef DEBUG
-  OBJDIR = build/Debug
-  OPTLEVEL = -O0
-  LINKOPTLEVEL = -O0
-else
-  OBJDIR = build/Release
-  OPTLEVEL = -O2 -ffunction-sections -fdata-sections
-  LINKOPTLEVEL = -O2
-endif
-
-# The list of CXX defines that are dependent on build parameters.
-BASE_CXX_DEFINES =
-CXX_EXTRA =
-LD_EXTRA =
-
-ifdef MINIMAL
-  NOASSERT = 1
-  NODUMP = 1
-  OBJDIR := $(OBJDIR)+Min
-  BASE_CXX_DEFINES += -DALLOW_LLVM_CL=0 -DALLOW_LLVM_IR=0 \
-    -DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_TIMERS=0 -DALLOW_MINIMAL_BUILD=1
-else
-  BASE_CXX_DEFINES += -DALLOW_LLVM_CL=1 -DALLOW_LLVM_IR=1 \
-    -DALLOW_LLVM_IR_AS_INPUT=1 -DALLOW_TIMERS=1 -DALLOW_MINIMAL_BUILD=0
-endif
-
-ifdef NODUMP
-  OBJDIR := $(OBJDIR)+NoDump
-  BASE_CXX_DEFINES += -DALLOW_DUMP=0
-else
-  BASE_CXX_DEFINES += -DALLOW_DUMP=1
-endif
-
-# Restrict to a single supported target.  Current options:
-#   SZTARGET=ARM32
-#   SZTARGET=MIPS32
-#   SZTARGET=X8632
-#   SZTARGET=X8664
-ifdef SZTARGET
-  OBJDIR := $(OBJDIR)+T_$(SZTARGET)
-  BASE_CXX_DEFINES += -DSZTARGET=$(SZTARGET)
-endif
-
-BASE_CXX_DEFINES += -DPNACL_LLVM
-SZ_COMMIT_COUNT := $(shell git rev-list --count HEAD)
-SZ_GIT_HASH := $(shell git rev-parse HEAD)
-BASE_CXX_DEFINES += -DSUBZERO_REVISION=$(SZ_COMMIT_COUNT)_$(SZ_GIT_HASH)
-
-CXX_DEFINES := $(BASE_CXX_DEFINES) -DPNACL_BROWSER_TRANSLATOR=0
-
-ifdef NOASSERT
-  ASSERTIONS = -DNDEBUG
-else
-  ASSERTIONS =
-  OBJDIR := $(OBJDIR)+Asserts
-endif
-
-ifdef UBSAN
-  OBJDIR := $(OBJDIR)+UBSan
-  CXX_EXTRA += -fsanitize=undefined -fno-sanitize=vptr \
-               -fno-sanitize=nonnull-attribute
-  LD_EXTRA += -fsanitize=undefined
-endif
-
-ifdef UBSAN_TRAP
-  OBJDIR := $(OBJDIR)+UBSan_Trap
-  CXX_EXTRA += -fsanitize=undefined-trap -fsanitize-undefined-trap-on-error \
-               -fno-sanitize=vptr -fno-sanitize=nonnull-attribute
-  LD_EXTRA += -fsanitize=undefined-trap
-endif
-
-ifdef TSAN
-  OBJDIR := $(OBJDIR)+TSan
-  CXX_EXTRA += -fsanitize=thread
-  LD_EXTRA += -fsanitize=thread
-endif
-
-ifdef ASAN
-  OBJDIR := $(OBJDIR)+ASan
-  CXX_EXTRA += -fsanitize=address
-  LD_EXTRA += -fsanitize=address
-endif
-
-ifdef MSAN
-  # TODO(ascull): this has an as yet undiagnosed uninitialized memory access
-  OBJDIR := $(OBJDIR)+MSan
-  CXX_EXTRA += -fsanitize=memory
-  LD_EXTRA += -fsanitize=memory
-endif
-
-ifdef FORCEASM
-  FORCEASM_FLAG = --filetype=asm
-  # With --filetype=asm and --sandbox, the llvm-mc assembler emits the lock and
-  # 16-bit prefixes in the "wrong" order, causing the validator to reject the
-  # resulting nexe.  So we just disable those tests for now.
-  FORCEASM_XTEST_EXCLUDES = -e x8632,sandbox,test_sync_atomic
-  FORCEASM_LIT_PARAM = --param=FORCEASM
-  # x86 sandboxing lit tests are disabled because filetype=asm does not
-  # handle bundle_lock pad-to-end correctly.
-  # TODO(jpp): fix this.
-  FORCEASM_LIT_TEST_EXCLUDES = --filter='^(?!.*/x86/sandboxing.ll).*'
-else
-  FORCEASM_FLAG =
-  FORCEASM_XTEST_EXCLUDES =
-  FORCEASM_LIT_PARAM =
-  FORCEASM_LIT_TEST_EXCLUDES =
-endif
-
-ifdef LINUX_MALLOC_PROFILE
-  OBJDIR := $(OBJDIR)+MalProf
-  CXX_EXTRA += -DALLOW_LINUX_MALLOC_PROFILE=1
-  LD_EXTRA += -Wl,--export-dynamic
-endif
-
-SB_OBJDIR := $(OBJDIR)+Sandboxed
-SBB_OBJDIR := $(OBJDIR)+SandboxedBrowser
-
-V8_DIR = $(NACL_ROOT)/../v8
-V8_CXXFLAGS := -I$(V8_DIR)
-
-$(info -----------------------------------------------)
-$(info Using LLVM_SRC_PATH = $(LLVM_SRC_PATH))
-$(info Using SB_LLVM_PATH = $(SB_LLVM_PATH))
-$(info Using NACL_ROOT = $(NACL_ROOT))
-$(info Using TOOLCHAIN_ROOT = $(TOOLCHAIN_ROOT))
-$(info Using PNACL_TOOLCHAIN_ROOT = $(PNACL_TOOLCHAIN_ROOT))
-$(info Using PNACL_BIN_PATH = $(PNACL_BIN_PATH))
-$(info Using CLANG_PATH = $(CLANG_PATH))
-$(info Using LIBCXX_INSTALL_PATH = $(LIBCXX_INSTALL_PATH))
-$(info Using HOST_ARCH     = $(HOST_ARCH))
-$(info -----------------------------------------------)
-
-LLVM_CXXFLAGS := `$(PNACL_BIN_PATH)/llvm-config --cxxflags`
-SB_LLVM_CXXFLAGS := $(LLVM_CXXFLAGS)
-
-# Listing specific libraries that are needed for pnacl-sz
-# and the unittests, since we build "tools-only" for the
-# sandboxed_translators (which doesn't include every library
-# listed by llvm-config).
-
-LLVM_LIBS_LIST := -lLLVMIRReader -lLLVMBitReader -lLLVMNaClBitTestUtils \
-    -lLLVMNaClBitReader -lLLVMNaClBitAnalysis -lLLVMNaClBitWriter \
-    -lLLVMAsmParser -lLLVMNaClAnalysis -lLLVMCore -lLLVMSupport
-
-ifeq ($(AUTOCONF), 0)
-  # LLVM cmake build
-  LLVM_LIBS := $(LLVM_LIBS_LIST)
-  # For the cmake build, the gtest libs end up in the same place as the LLVM
-  # libs, so no "-L..." arg is needed.
-  GTEST_LIB_PATH ?=
-  CLANG_FORMAT_PATH ?= $(PNACL_BIN_PATH)
-else
-  # LLVM autoconf build
-  LLVM_LIBS := -lLLVM-3.7svn
-  GTEST_LIB_PATH ?= -L../../out/llvm_x86_64_linux_work/Release+Asserts/lib
-  ifneq ($(wildcard \
-           ../../out/llvm_x86_64_linux_work/Release+Asserts/bin/clang-format),)
-    CLANG_FORMAT_PATH ?= ../../out/llvm_x86_64_linux_work/Release+Asserts/bin
-  else
-    CLANG_FORMAT_PATH ?= \
-                     ../../out/llvm_x86_64_linux_debug_work/Debug+Asserts/bin
-  endif
-endif
-
-LLVM_LDFLAGS := $(LLVM_LIBS) \
-                `$(PNACL_BIN_PATH)/llvm-config --ldflags` \
-                `$(PNACL_BIN_PATH)/llvm-config --system-libs`
-SB_LLVM_LDFLAGS := -Wl,--start-group $(LLVM_LIBS_LIST) -Wl,--end-group \
-                   -L$(SB_LLVM_PATH)/lib
-
-CCACHE := `command -v ccache`
-CXX := CCACHE_CPP2=yes $(CCACHE) $(CLANG_PATH)/clang++
-SB_CXX := CCACHE_CPP2=yes $(CCACHE) $(PNACL_BIN_PATH)/pnacl-clang++
-SB_TRANSLATE := $(PNACL_BIN_PATH)/pnacl-translate
-SB_FINALIZE := $(PNACL_BIN_PATH)/pnacl-finalize --no-strip-syms
-
-# Extra warnings that LLVM's build system adds in addition to -Wall.
-LLVM_EXTRA_WARNINGS := -Wcovered-switch-default
-
-# Use g++ to compile, to check for errors/warnings that clang++ might have
-# missed.  It's unlikely to link, unless LLVM was also built with g++, so the
-# compile_only target should be used.  Note: This ifdef section is deliberately
-# placed here instead of with the other ifdef sections, so that its redefinition
-# of CXX/STDLIB_FLAGS/LLVM_EXTRA_WARNINGS follows their normal definitions.
-ifdef GPLUSPLUS
-  CXX := CCACHE_CPP2=yes $(CCACHE) g++
-  STDLIB_FLAGS :=
-  LLVM_EXTRA_WARNINGS := \
-    -Wcast-qual \
-    -Wno-comment \
-    -Wno-long-long \
-    -Wno-maybe-uninitialized \
-    -Wno-missing-field-initializers \
-    -Wno-unused-parameter \
-    -Wwrite-strings
-  OBJDIR := $(OBJDIR)+Gplusplus
-endif
-
-BASE_CXXFLAGS := -std=gnu++11 -Wall -Wextra -fno-rtti \
-  -fno-exceptions $(OPTLEVEL) $(ASSERTIONS) -g -pedantic \
-  $(LLVM_EXTRA_WARNINGS) $(CXX_EXTRA) -MP -MD -Werror
-
-ifdef WASM
-  BASE_CXXFLAGS := $(BASE_CXXFLAGS) $(V8_CXXFLAGS) -DALLOW_WASM=1
-  OBJDIR := $(OBJDIR)+Wasm
-else
-  BASE_CXXFLAGS := $(BASE_CXXFLAGS) -DALLOW_WASM=0
-endif
-
-# TODO(stichnot,jpp): Restructure static fields in template classes to avoid
-# needing -Wno-undefined-var-template .
-CXXFLAGS := $(LLVM_CXXFLAGS) $(BASE_CXXFLAGS) $(CXX_DEFINES) $(HOST_FLAGS) \
-  $(STDLIB_FLAGS) -Wno-undefined-var-template
-SB_CXXFLAGS := $(SB_LLVM_CXXFLAGS) $(BASE_CXXFLAGS) $(BASE_CXX_DEFINES) \
-               -Wno-unknown-pragmas -I$(NACL_ROOT) -I$(NACL_ROOT)/..
-
-LDFLAGS := $(HOST_FLAGS) -L$(LIBCXX_INSTALL_PATH)/lib -Wl,--gc-sections \
-  $(LD_EXTRA) $(STDLIB_FLAGS)
-# Not specifying -Wl,--gc-sections but instead doing bitcode linking GC w/ LTO.
-SB_LDFLAGS := $(LINKOPTLEVEL) $(LD_EXTRA)
-
-# List the target-specific source files first, which generally take longer to
-# compile, in the hope of improving parallel build time.
-SRCS = \
-  IceAssemblerARM32.cpp \
-  IceAssemblerMIPS32.cpp \
-  IceInstARM32.cpp \
-  IceInstMIPS32.cpp \
-  IceInstX8632.cpp \
-  IceInstX8664.cpp \
-  IceTargetLowering.cpp \
-  IceTargetLoweringARM32.cpp \
-  IceTargetLoweringMIPS32.cpp \
-  IceTargetLoweringX86.cpp \
-  IceTargetLoweringX8632.cpp \
-  IceTargetLoweringX8664.cpp \
-  IceAssembler.cpp \
-  IceBrowserCompileServer.cpp \
-  IceCfg.cpp \
-  IceCfgNode.cpp \
-  IceClFlags.cpp \
-  IceCompiler.cpp \
-  IceCompileServer.cpp \
-  IceELFObjectWriter.cpp \
-  IceELFSection.cpp \
-  IceFixups.cpp \
-  IceGlobalContext.cpp \
-  IceGlobalInits.cpp \
-  IceInst.cpp \
-  IceIntrinsics.cpp \
-  IceLiveness.cpp \
-  IceLoopAnalyzer.cpp \
-  IceMangling.cpp \
-  IceMemory.cpp \
-  IceOperand.cpp \
-  IceRangeSpec.cpp \
-  IceRegAlloc.cpp \
-  IceRevision.cpp \
-  IceRNG.cpp \
-  IceSwitchLowering.cpp \
-  IceThreading.cpp \
-  IceTimerTree.cpp \
-  IceTranslator.cpp \
-  IceTypes.cpp \
-  IceVariableSplitting.cpp \
-  LinuxMallocProfiling.cpp \
-  main.cpp \
-  PNaClTranslator.cpp
-
-ifndef MINIMAL
-  SRCS += \
-    IceASanInstrumentation.cpp \
-    IceConverter.cpp \
-    IceInstrumentation.cpp \
-    IceTypeConverter.cpp
-endif
-
-ifdef WASM
-  SRCS += \
-    WasmTranslator.cpp
-endif
-
-OBJS=$(patsubst %.cpp, $(OBJDIR)/%.o, $(SRCS))
-SB_OBJS=$(patsubst %.cpp, $(SB_OBJDIR)/%.o, $(SRCS))
-SBB_OBJS=$(patsubst %.cpp, $(SBB_OBJDIR)/%.o, $(SRCS))
-
-UNITTEST_SRCS = \
-  BitcodeMunge.cpp \
-  IceELFSectionTest.cpp \
-  IceParseInstsTest.cpp
-
-# The X86 assembler tests take too long to compile. Given how infrequently the
-# assembler will change, we disable them.
-ifdef CHECK_X86_ASM
-  ifndef DEBUG
-  $(error Run check-unit with DEBUG=1 lest your machine perish)
-  endif
-  UNITTEST_SRCS += AssemblerX8632/LowLevel.cpp \
-    AssemblerX8632/DataMov.cpp \
-    AssemblerX8632/Locked.cpp \
-    AssemblerX8632/GPRArith.cpp \
-    AssemblerX8632/XmmArith.cpp \
-    AssemblerX8632/ControlFlow.cpp \
-    AssemblerX8632/Other.cpp \
-    AssemblerX8632/X87.cpp \
-    AssemblerX8664/LowLevel.cpp \
-    AssemblerX8664/DataMov.cpp \
-    AssemblerX8664/Locked.cpp \
-    AssemblerX8664/GPRArith.cpp \
-    AssemblerX8664/XmmArith.cpp \
-    AssemblerX8664/ControlFlow.cpp \
-    AssemblerX8664/Other.cpp
-endif
-
-UNITTEST_OBJS = $(patsubst %.cpp, $(OBJDIR)/unittest/%.o, $(UNITTEST_SRCS))
-UNITTEST_LIB_OBJS = $(filter-out $(OBJDIR)/main.o,$(OBJS))
-
-NEXES = $(SB_OBJDIR)/pnacl-sz.x8632.nexe \
-        $(SB_OBJDIR)/pnacl-sz.x8664.nexe \
-        $(SBB_OBJDIR)/pnacl_public_x86_32_pnacl_sz_nexe \
-        $(SBB_OBJDIR)/pnacl_public_x86_64_pnacl_sz_nexe
-NEXES_LITE = $(SB_OBJDIR)/pnacl-sz.x8664.nexe
-
-# Keep all the first target so it's the default.
-all: $(OBJDIR)/pnacl-sz make_symlink runtime
-
-ifdef TSAN
-sb sb-lite:
-	@echo "Skipping pnacl-sz.*.nexe: TSAN isn't supported under NaCl."
-else
-sb: $(NEXES) sb_make_symlink exists-sbtc
-sb-lite: $(NEXES_LITE) exists-sbtc
-endif
-
-# SHOW_BUILD_ATTS is an executable that is run to show what build
-# attributes were used to build pnacl-sz.
-SHOW_BUILD_ATTS = $(OBJDIR)/pnacl-sz --build-atts
-
-# Creates symbolic link so that testing is easier. Also runs
-# pnacl-sz to verify that the defines flags have valid values,
-# as well as describe the corresponding build attributes.
-make_symlink: $(OBJDIR)/pnacl-sz
-	rm -rf pnacl-sz
-	ln -s $(OBJDIR)/pnacl-sz
-	@echo "Build Attributes:"
-	@$(SHOW_BUILD_ATTS)
-
-sb_make_symlink: $(NEXES)
-	$(foreach nexe,$(NEXES),rm -rf $(notdir $(nexe)); ln -s $(nexe);)
-
-%.pexe : %.nonfinal.pexe
-	$(SB_FINALIZE) -o $@ $<
-
-.PHONY: all compile_only make_symlink runtime bloat sb docs help \
-  help-check-lit help-check-xtest exists-nonsfi-x8632 \
-  exists-nonsfi-arm32 exists-sbtc exists-spec
-
-compile_only: $(OBJS)
-
-V8_LIBDIR=$(V8_DIR)/out/native/lib.target
-
-ifdef WASM
-  V8_LIBS := \
-    $(V8_LIBDIR)/libv8.so \
-    $(V8_LIBDIR)/libicuuc.so \
-    $(V8_LIBDIR)/libicui18n.so
-endif
-
-$(OBJDIR)/pnacl-sz: $(OBJS)
-	$(CXX) $(LDFLAGS) -o $@ $^ $(LLVM_LDFLAGS) \
-          -Wl,-rpath=$(abspath $(LIBCXX_INSTALL_PATH)/lib) $(V8_LIBS)
-
-$(SB_OBJDIR)/pnacl-sz.nonfinal.pexe: $(SB_OBJS)
-	$(SB_CXX) $(SB_LDFLAGS) -o $@ $^ $(SB_LLVM_LDFLAGS)
-
-$(SBB_OBJDIR)/pnacl-sz.nonfinal.pexe: $(SBB_OBJS)
-	$(SB_CXX) $(SB_LDFLAGS) -o $@ $^ $(SB_LLVM_LDFLAGS) \
-          --pnacl-disable-abi-check
-
-$(SB_OBJDIR)/pnacl-sz.x8632.nexe: $(SB_OBJDIR)/pnacl-sz.pexe
-	$(SB_TRANSLATE) -arch x86-32 $^ -o $@
-
-$(SB_OBJDIR)/pnacl-sz.x8664.nexe: $(SB_OBJDIR)/pnacl-sz.pexe
-	$(SB_TRANSLATE) -arch x86-64 $^ -o $@
-
-$(SBB_OBJDIR)/pnacl_public_x86_32_pnacl_sz_nexe: $(SBB_OBJDIR)/pnacl-sz.pexe
-	$(SB_TRANSLATE) -arch x86-32 $^ -o $@
-
-$(SBB_OBJDIR)/pnacl_public_x86_64_pnacl_sz_nexe: $(SBB_OBJDIR)/pnacl-sz.pexe
-	$(SB_TRANSLATE) -arch x86-64 $^ -o $@
-
-src/IceRegistersARM32.def: pydir/gen_arm32_reg_tables.py
-	python $< > $@
-
--include $(foreach dep,$(SRCS:.cpp=.d),$(OBJDIR)/$(dep))
-$(OBJS): $(OBJDIR)/%.o: src/%.cpp
-	$(CXX) -c $(CXXFLAGS) $< -o $@
-
--include $(foreach dep,$(SRCS:.cpp=.d),$(SB_OBJDIR)/$(dep))
-$(SB_OBJS): $(SB_OBJDIR)/%.o: src/%.cpp
-	$(SB_CXX) -c $(SB_CXXFLAGS) -DPNACL_BROWSER_TRANSLATOR=0 $< -o $@
-
--include $(foreach dep,$(SRCS:.cpp=.d),$(SBB_OBJDIR)/$(dep))
-$(SBB_OBJS): $(SBB_OBJDIR)/%.o: src/%.cpp
-	$(SB_CXX) -c $(SB_CXXFLAGS) -DPNACL_BROWSER_TRANSLATOR=1 $< -o $@
-
-$(OBJDIR)/run_unittests: $(UNITTEST_OBJS) $(UNITTEST_LIB_OBJS)
-	$(CXX) $(GTEST_LIB_PATH) $(LDFLAGS) -o $@ $^ $(LLVM_LDFLAGS) \
-          -lgtest -lgtest_main -ldl \
-          -Wl,-rpath=$(abspath $(LIBCXX_INSTALL_PATH)/lib)
-
--include $(foreach dep,$(UNITTEST_SRCS:.cpp=.d),$(OBJDIR)/unittest/$(dep))
-$(UNITTEST_OBJS): $(OBJDIR)/unittest/%.o: unittest/%.cpp
-	$(CXX) -c $(CXXFLAGS) \
-          -Isrc/ \
-          -Iunittest/ \
-          -I$(LLVM_SRC_PATH)/utils/unittest/googletest/include \
-          -I$(LLVM_SRC_PATH) \
-          -DGTEST_HAS_RTTI=0 -DGTEST_USE_OWN_TR1_TUPLE \
-          -Wno-expansion-to-defined \
-          $< -o $@
-
-$(OBJS): | $(OBJDIR)
-$(SB_OBJS): | $(SB_OBJDIR)
-$(SBB_OBJS): | $(SBB_OBJDIR)
-
-$(UNITTEST_OBJS): | $(OBJDIR)/unittest $(OBJDIR)/unittest/AssemblerX8632 \
-                    $(OBJDIR)/unittest/AssemblerX8664
-
-$(OBJDIR):
-	@mkdir -p $@
-$(SB_OBJDIR):
-	@mkdir -p $@
-$(SBB_OBJDIR):
-	@mkdir -p $@
-
-$(OBJDIR)/unittest: $(OBJDIR)
-	@mkdir -p $@
-
-$(OBJDIR)/unittest/AssemblerX8632: $(OBJDIR)/unittest
-	@mkdir -p $@
-$(OBJDIR)/unittest/AssemblerX8664: $(OBJDIR)/unittest
-	@mkdir -p $@
-
-RT_SRC := runtime/szrt.c runtime/szrt_ll.ll runtime/szrt_profiler.c \
-          runtime/szrt_asm_x8632.s runtime/szrt_asm_x8664.s \
-          runtime/szrt_asm_arm32.s runtime/szrt_asan.c
-RT_OBJ := build/runtime/szrt_native_x8632.o build/runtime/szrt_sb_x8632.o \
-          build/runtime/szrt_nonsfi_x8632.o \
-          build/runtime/szrt_native_x8664.o build/runtime/szrt_sb_x8664.o \
-          build/runtime/szrt_nonsfi_x8664.o \
-          build/runtime/szrt_native_arm32.o build/runtime/szrt_sb_arm32.o \
-          build/runtime/szrt_nonsfi_arm32.o \
-          build/runtime/szrt_asan_x8632.o build/runtime/szrt_asan_x8664.o \
-          build/runtime/szrt_asan_arm32.o
-
-EXCLUDED_RT :=
-ifdef MIPS
-RT_SRC += runtime/szrt_asm_mips32.s
-RT_OBJ += build/runtime/szrt_native_mips32.o build/runtime/szrt_sb_mips32.o
-else
-EXCLUDED_RT += --exclude-target=mips32
-endif
-
-runtime: $(RT_OBJ)
-
-# Use runtime.is.built so that build-runtime.py is invoked only once
-# even in a parallel build.
-.INTERMEDIATE: runtime.is.built
-$(RT_OBJ): runtime.is.built
-runtime.is.built: $(RT_SRC) pydir/build-runtime.py
-	@echo ================ Building Subzero runtime ================
-	./pydir/build-runtime.py -v --pnacl-root $(PNACL_TOOLCHAIN_ROOT) \
-            $(EXCLUDED_RT)
-
-check-lit: $(OBJDIR)/pnacl-sz make_symlink runtime
-	PNACL_BIN_PATH=$(PNACL_BIN_PATH) \
-	$(LLVM_SRC_PATH)/utils/lit/lit.py -sv $(CHECK_LIT_TESTS) \
-            $(FORCEASM_LIT_TEST_EXCLUDES) $(FORCEASM_LIT_PARAM)
-
-ifdef MINIMAL
-check-xtest check-xtest-lite: $(OBJDIR)/pnacl-sz make_symlink runtime
-	@echo "Crosstests disabled, minimal build"
-else
-ifdef MIPS
-check-xtest check-xtest-lite: $(OBJDIR)/pnacl-sz make_symlink runtime \
-  crosstest/test_arith_ll.ll
-       # Do all x8664/native/sse2 tests as a smoke test.
-       # Add in mips32 tests as they come online.
-	./pydir/crosstest_generator.py -v --lit \
-          --toolchain-root $(TOOLCHAIN_ROOT) \
-          $(FORCEASM_FLAG) \
-          $(FORCEASM_XTEST_EXCLUDES) \
-          -i x8664,native,sse2 \
-          -i mips32,native,Om1,simple_loop \
-          -i mips32,native,Om1,test_strengthreduce
-	PNACL_BIN_PATH=$(PNACL_BIN_PATH) \
-	$(LLVM_SRC_PATH)/utils/lit/lit.py -sv $(CHECK_XTEST_TESTS)
-else
-check-xtest: $(OBJDIR)/pnacl-sz make_symlink runtime \
-  exists-nonsfi-x8632 exists-nonsfi-arm32 crosstest/test_arith_ll.ll
-       # Do all native/sse2 tests, but only test_vector_ops for native/sse4.1.
-       # For (slow) sandboxed tests, limit to Om1/sse4.1.
-       # run.py (used to run the sandboxed xtests) does not support
-       # specifying -cpu cortex-a15 to qemu, hence we disable the
-       # hwdiv-arm tests.
-	./pydir/crosstest_generator.py -v --lit \
-          --toolchain-root $(TOOLCHAIN_ROOT) \
-          $(FORCEASM_FLAG) \
-          $(FORCEASM_XTEST_EXCLUDES) \
-          -i x8632,native,sse2 \
-          -i x8632,native,sse4.1,test_vector_ops \
-          -i x8632,sandbox,sse4.1,Om1 \
-          -i x8632,nonsfi,sse2,O2 \
-          -i x8664,native,sse2 \
-          -i x8664,native,sse4.1,test_vector_ops \
-          -i x8664,sandbox,sse4.1,Om1 \
-          -i arm32 \
-          -e arm32,sandbox,hwdiv-arm
-	PNACL_BIN_PATH=$(PNACL_BIN_PATH) \
-	$(LLVM_SRC_PATH)/utils/lit/lit.py -sv $(CHECK_XTEST_TESTS)
-check-xtest-lite: $(OBJDIR)/pnacl-sz make_symlink runtime \
-  exists-nonsfi-x8632 exists-nonsfi-arm32 crosstest/test_arith_ll.ll
-       # Do all native/sse2/neon tests, which are relatively fast.
-       # Limit to test_global+mem_intrin for sandbox+nonsfi because sandbox and
-       # nonsfi builds are slow, and test_global and mem_intrin are the most
-       # common sources of problems.
-	./pydir/crosstest_generator.py -v --lit \
-          --toolchain-root $(TOOLCHAIN_ROOT) \
-          $(FORCEASM_FLAG) \
-          $(FORCEASM_XTEST_EXCLUDES) \
-          -i x8632,native,sse2,O2 \
-          -i x8664,native,sse2,O2 \
-          -i arm32,native,neon,O2 \
-	  -i x8632,sse2,O2,test_global \
-	  -i x8632,sse2,O2,mem_intrin \
-	  -i x8664,sse2,O2,test_global \
-	  -i x8664,sse2,O2,mem_intrin \
-	  -i arm32,neon,O2,test_global \
-	  -i arm32,neon,O2,mem_intrin \
-          -e x8664,nonsfi
-	PNACL_BIN_PATH=$(PNACL_BIN_PATH) \
-	$(LLVM_SRC_PATH)/utils/lit/lit.py -sv $(CHECK_XTEST_TESTS)
-crosstest/test_arith_ll.ll: pydir/gen_test_arith_ll.py
-	python $< > $@
-endif
-endif
-
-check-unit: $(OBJDIR)/run_unittests
-	$(OBJDIR)/run_unittests
-
-# List the spec2k components in roughly reverse order of runtime, to help with
-# parallel execution speed.
-ALLSPEC := 253.perlbmk 177.mesa 188.ammp 256.bzip2 164.gzip 179.art 183.equake \
-           175.vpr 176.gcc 181.mcf 186.crafty 197.parser 254.gap 255.vortex \
-           300.twolf 252.eon
-.PHONY: $(ALLSPEC)
-
-TARGET := x8632
-ifeq ($(TARGET),x8632)
-  TARGETFLAG=x8632
-  SETUP=SetupGccX8632Opt
-  SPEC := --filetype=obj
-endif
-ifeq ($(TARGET),x8664)
-  TARGETFLAG=x8664
-  SETUP=SetupGccX8664Opt
-  SPEC := --filetype=obj
-endif
-ifeq ($(TARGET),arm32)
-  TARGETFLAG=arm32
-  SETUP=SetupGccArmOpt
-  SPEC := --filetype=obj
-endif
-ifeq ($(TARGET),mips32)
-  # native_client/tests/spec2k/{Makefile.common,run_all.sh} do not currently
-  # have MIPS configs, so those would need to be added for proper Subzero
-  # testing.
-  TARGETFLAG=mips32
-  SETUP=SetupGccMipsOpt
-  SPEC := --filetype=asm
-endif
-SPECFLAGS := -O2
-SPECRUN := --run
-%.spec2k: % $(OBJDIR)/pnacl-sz make_symlink runtime
-	./pydir/szbuild_spec2k.py -v \
-          $(SPECFLAGS) --target=$(TARGETFLAG) $(SPEC) $< $(SPECRUN)
-
-ifdef MIPS
-# Don't test spec2k on mips32, at least not yet.
-check-spec:
-else
-check-spec: exists-spec $(ALLSPEC:=.spec2k)
-endif
-
-check: check-lit check-unit check-xtest
-
-NONSFI_LOADER_X8632 = \
-  $(NACL_ROOT)/scons-out/opt-linux-x86-32/obj/src/nonsfi/loader/nonsfi_loader
-NONSFI_LOADER_ARM32 = \
-  $(NACL_ROOT)/scons-out/opt-linux-arm/obj/src/nonsfi/loader/nonsfi_loader
-SBTC_LIBFILE = $(SB_LLVM_PATH)/lib/libLLVMSupport.a
-SPEC_SAMPLE_PEXE = $(NACL_ROOT)/tests/spec2k/176.gcc/gcc.opt.stripped.pexe
-
-exists-nonsfi-x8632:
-	@if [ ! -f $(NONSFI_LOADER_X8632) ] ; then \
-          echo "Missing file $(NONSFI_LOADER_X8632)"; \
-          echo "Consider running './scons nonsfi_loader'" \
-               "in the native_client directory."; \
-          exit 1 ; \
-        fi
-
-exists-nonsfi-arm32:
-	@if [ ! -f $(NONSFI_LOADER_ARM32) ] ; then \
-          echo "Missing file $(NONSFI_LOADER_ARM32)"; \
-          echo "Consider running './scons platform=arm nonsfi_loader'" \
-               "in the native_client directory."; \
-          exit 1 ; \
-        fi
-
-exists-sbtc:
-	@if [ ! -f $(SBTC_LIBFILE) ] ; then \
-          echo "Missing file $(SBTC_LIBFILE)"; \
-          echo "Consider running 'toolchain_build_pnacl.py --build-sbtc'."; \
-          exit 1 ; \
-        fi
-
-exists-spec:
-	@if [ ! -f $(SPEC_SAMPLE_PEXE) ] ; then \
-          echo "Missing file $(SPEC_SAMPLE_PEXE)"; \
-          echo "Consider running" \
-               "'./run_all.sh BuildBenchmarks 0 SetupPnaclX8632Opt'" \
-               "in the native_client/tests/spec2k directory."; \
-          exit 1 ; \
-        fi
-
-ifdef MIPS
-check-presubmit presubmit: exists-sbtc
-# Make sure clang-format gets run.
-	+make -f Makefile.standalone format
-# Verify MINIMAL build, plus proper usage of REQUIRES in lit tests.
-	+make -f Makefile.standalone \
-          MINIMAL=1 check
-# Check that there are no g++ build errors or warnings.
-	+make -f Makefile.standalone \
-	  GPLUSPLUS=1 compile_only
-# Run lit tests, cross tests, and unit tests.
-	+make -f Makefile.standalone \
-          check
-# Check a sandboxed translator build.
-	+make -f Makefile.standalone \
-          DEBUG=1 sb
-# Provide validation of user awesomeness!
-	echo Success
-else
-check-presubmit presubmit: exists-nonsfi-x8632 exists-nonsfi-arm32 \
-  exists-sbtc exists-spec
-# Make sure clang-format gets run.
-	+make -f Makefile.standalone format
-# Verify MINIMAL build, plus proper usage of REQUIRES in lit tests.
-	+make -f Makefile.standalone \
-          MINIMAL=1 check
-# Check that there are no g++ build errors or warnings.
-	+make -f Makefile.standalone \
-	  GPLUSPLUS=1 compile_only
-# Check the x86 assembler unit tests.
-	+make -f Makefile.standalone \
-          DEBUG=1 CHECK_X86_ASM=1 check-unit sb
-# Run lit tests, cross tests, unit tests, and spec2k/x86-32.
-	+make -f Makefile.standalone \
-          check check-spec
-# Run spec2k/x86-64.
-	+make -f Makefile.standalone \
-          TARGET=x8664 check-spec
-# Run spec2k/x86-64 with sandboxing.
-	+make -f Makefile.standalone \
-          SPECFLAGS='-O2 --sandbox' TARGET=x8664 check-spec
-# Build spec2k under -Om1/x86-32, to check for liveness errors.
-	+make -f Makefile.standalone \
-          SPECFLAGS='-Om1' SPECRUN= check-spec
-# Build spec2k under -Om1/x86-64, to check for liveness errors.
-	+make -f Makefile.standalone \
-          SPECFLAGS='-Om1' TARGET=x8664 SPECRUN= check-spec
-# Run spec2k for x86-32 without advanced phi lowering.
-	+make -f Makefile.standalone \
-          SPECFLAGS='-O2 --sz=--phi-edge-split=0' check-spec
-# Run spec2k for x86-64 without advanced phi lowering.
-	+make -f Makefile.standalone \
-          SPECFLAGS='-O2 --sz=--phi-edge-split=0' TARGET=x8664 check-spec
-# Run cross tests and lit tests to validate filetype=asm output.
-	+make -f Makefile.standalone \
-          FORCEASM=1 check-xtest check-lit
-# Build spec2k for arm32.
-	+make -f Makefile.standalone \
-          TARGET=arm32 SPECRUN= check-spec
-# Build spec2k under -Om1/arm32.
-	+make -f Makefile.standalone \
-          TARGET=arm32 SPECFLAGS='-Om1' SPECRUN= check-spec
-# Run a few spec2k tests for arm32 using qemu. Keep the list sorted in
-# roughly reverse order of runtime.
-	+make -f Makefile.standalone \
-          TARGET=arm32 ALLSPEC='252.eon 254.gap 176.gcc 181.mcf' check-spec
-# Provide validation of user awesomeness!
-	echo Success
-endif
-
-presubmit-lite: exists-nonsfi-x8632 exists-nonsfi-arm32 \
-  exists-sbtc exists-spec
-# Make sure clang-format gets run.
-	+make -f Makefile.standalone format
-# Verify MINIMAL build, plus proper usage of REQUIRES in lit tests.
-	+make -f Makefile.standalone \
-          MINIMAL=1 check sb-lite
-# Check that there are no g++ build errors or warnings.
-	+make -f Makefile.standalone \
-	  GPLUSPLUS=1 compile_only
-# Run lit tests, cross tests, unit tests, and spec2k/x86-32.
-	+make -f Makefile.standalone \
-          check-lit check-unit check-spec
-	+make -f Makefile.standalone \
-          check-xtest-lite
-# Run spec2k/x86-64.
-	+make -f Makefile.standalone \
-          TARGET=x8664 check-spec
-# Build spec2k under -Om1/x86-32, to check for liveness errors.
-	+make -f Makefile.standalone \
-          SPECFLAGS='-Om1' SPECRUN= check-spec
-# Build spec2k under -Om1/x86-64, to check for liveness errors.
-	+make -f Makefile.standalone \
-          SPECFLAGS='-Om1' TARGET=x8664 SPECRUN= check-spec
-# Run cross tests and lit tests to validate filetype=asm output.
-	+make -f Makefile.standalone \
-          FORCEASM=1 check-lit
-	+make -f Makefile.standalone \
-          FORCEASM=1 check-xtest-lite
-# Build spec2k under -Om1/arm32.
-	+make -f Makefile.standalone \
-          TARGET=arm32 SPECFLAGS='-Om1' SPECRUN= check-spec
-# Run a few spec2k tests for arm32 using qemu. Keep the list sorted in
-# roughly reverse order of runtime.
-	+make -f Makefile.standalone \
-          TARGET=arm32 ALLSPEC='254.gap 176.gcc 181.mcf' check-spec
-# Provide validation of user awesomeness!
-	echo Success
-
-FORMAT_BLACKLIST =
-# Add one of the following lines for each source file to ignore.
-FORMAT_BLACKLIST += ! -name IceParseInstsTest.cpp
-FORMAT_BLACKLIST += ! -name IceParseTypesTest.cpp
-FORMAT_BLACKLIST += ! -name assembler_arm.h
-FORMAT_BLACKLIST += ! -name assembler_arm.cc
-FORMAT_BLACKLIST += ! -path "./wasm-install/*"
-FORMAT_BLACKLIST += ! -path "./pnacl-llvm/*"
-format:
-	$(CLANG_FORMAT_PATH)/clang-format -style=LLVM -i \
-          `find . -regex '.*\.\(c\|h\|cpp\)' $(FORMAT_BLACKLIST)`
-
-format-diff:
-	git diff -U0 `git merge-base HEAD master` | \
-          PATH=$(PNACL_BIN_PATH):$(PATH) \
-          $(LLVM_SRC_PATH)/../clang/tools/clang-format/clang-format-diff.py \
-          -p1 -style=LLVM -i
-
-bloat: make_symlink
-	nm -C -S -l pnacl-sz | \
-          bloat/bloat.py --nm-output=/dev/stdin syms > build/pnacl-sz.bloat.json
-	@echo See Subzero size breakdown in bloat/pnacl-sz.bloat.html
-
-bloat-sb: sb_make_symlink
-	$(foreach nexe,$(NEXES),nm -C -S -l $(nexe) | bloat/bloat.py \
-          --nm-output=/dev/stdin syms > build/$(notdir $(nexe)).bloat.json;)
-	@echo "See Subzero size breakdown in:"
-	@$(foreach nexe,$(NEXES),echo "  bloat/$(notdir $(nexe)).bloat.html";)
-
-docs:
-	make -C docs -f Makefile.standalone
-
-help:
-	@cat Makefile.standalone-help/help.txt
-
-help-check-lit:
-	@cat Makefile.standalone-help/check-lit.txt
-
-help-check-xtest:
-	@cat Makefile.standalone-help/check-xtest.txt
-
-clean:
-	rm -rf pnacl-sz *.o $(foreach nexe,$(NEXES),$(notdir $(nexe))) \
-          $(OBJDIR) $(SB_OBJDIR) $(SBB_OBJDIR) build/*.bloat.json
-
-clean-all: clean
-	rm -rf build/ crosstest/Output/
diff --git a/third_party/subzero/Makefile.standalone-help/check-lit.txt b/third_party/subzero/Makefile.standalone-help/check-lit.txt
deleted file mode 100644
index 472a8fc..0000000
--- a/third_party/subzero/Makefile.standalone-help/check-lit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-check-lit - run the lit tests
-To check a specific test, override CHECK_LIT_TESTS, e.g.:
-  make -f Makefile.standalone check-lit \
-    CHECK_LIT_TESTS=tests_lit/llvm2ice_tests/arith.ll
diff --git a/third_party/subzero/Makefile.standalone-help/check-xtest.txt b/third_party/subzero/Makefile.standalone-help/check-xtest.txt
deleted file mode 100644
index d193393..0000000
--- a/third_party/subzero/Makefile.standalone-help/check-xtest.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-check-xtest - run the cross tests
-
-To check a specific test, override CHECK_XTEST_TESTS, e.g.:
-  make -f Makefile.standalone check-xtest \
-    CHECK_XTEST_TESTS=crosstest/Output/mem_intrin_x8632_nonsfi_O2_sse2.xtest
diff --git a/third_party/subzero/Makefile.standalone-help/help.txt b/third_party/subzero/Makefile.standalone-help/help.txt
deleted file mode 100644
index d005fc7..0000000
--- a/third_party/subzero/Makefile.standalone-help/help.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-Targets:
-
-check-lit - run the lit tests
-check-xtest - run the cross tests
-
-Additional 'make' command options:
-  MINIMAL=1
-    Create a minimal build, as small and fast as possible
-  DEBUG=1
-    Compile with -O0 instead of -O2
-  NODUMP=1
-    Disable textual dump/emission support and other verbose options
-  NOASSERT=1
-    Disable assert() calls, via -DNDEBUG
-  UBSAN=1
-    Enable UBSan support, i.e. -fsanitize=undefined
-  UBSAN_TRAP=1
-    Enable UBSan support, trapping on errors
-  TSAN=1
-    Enable TSan support, i.e. -fsanitize=thread
-  ASAN=1
-    Enable ASan support, i.e. -fsanitize=address
-  MSAN=1
-    Enable MSan support, i.e. -fsanitize=memory
-  SZTARGET=<target>
-    Restrict support to a single processor target,
-    where <target> is one of {ARM32,MIPS32,X8632,X8664}
-Most of these options can be combined, e.g.
-  make -f Makefile.standalone NOASSERT=1 NODUMP=1
-
-For more detailed help on a 'make' target:
-
-  make -f Makefile.standalone help-<target> , e.g:
-  make -f Makefile.standalone help-check-lit
diff --git a/third_party/subzero/docs/DESIGN.rst b/third_party/subzero/docs/DESIGN.rst
index 363c19c..115d645 100644
--- a/third_party/subzero/docs/DESIGN.rst
+++ b/third_party/subzero/docs/DESIGN.rst
@@ -1430,11 +1430,10 @@
 functions) that yield incorrect behavior.  For this, we have a bisection
 debugging framework.  Here, we initially translate the entire application once
 with Subzero and once with ``pnacl-llc``.  We then use ``objdump`` to
-selectively weaken symbols based on a whitelist or blacklist provided on the
-command line.  The two object files can then be linked together without link
-errors, with the desired version of each method "winning".  Then the binary is
-tested, and bisection proceeds based on whether the binary produces correct
-output.
+selectively weaken symbols based on a list provided on the command line. The
+two object files can then be linked together without link errors, with the
+desired version of each method "winning".  Then the binary is tested, and
+bisection proceeds based on whether the binary produces correct output.
 
 When the bisection completes, we are left with a minimal set of
 Subzero-translated functions that cause the failure.  Usually it is a single
@@ -1442,7 +1441,7 @@
 to cause a failure; this may be due to an incorrect call ABI, for example.
 However, Murphy's Law implies that the single failing function is enormous and
 impractical to debug.  In that case, we can restart the bisection, explicitly
-blacklisting the enormous function, and try to find another candidate to debug.
+ignoring the enormous function, and try to find another candidate to debug.
 (Future work is to automate this to find all minimal sets of functions, so that
 debugging can focus on the simplest example.)
 
diff --git a/third_party/subzero/pydir/bisection-test.py b/third_party/subzero/pydir/bisection-test.py
deleted file mode 100755
index 81ae639..0000000
--- a/third_party/subzero/pydir/bisection-test.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/env python2
-import argparse
-import sys
-
-def main():
-  desc = 'Crash simulator script, useful for testing the bisection tool.\
-          bisection-tool.py --cmd "./pydir/bisection-test.py -c 2x3" \
-          --end 1000 --timeout 60'
-  argparser = argparse.ArgumentParser(description=desc)
-  argparser.add_argument('--include', '-i', default=[], dest='include',
-    action='append',
-    help='Include list, single values or ranges')
-  argparser.add_argument('--exclude', '-e', default=[], dest='exclude',
-    action='append',
-    help='Exclude list, single values or ranges')
-  argparser.add_argument('--crash', '-c', default=[], dest='crash',
-    action='append',
-    help='Crash list, single values or x-separated combinations like 2x4')
-
-  args = argparser.parse_args()
-
-  included = {-1}
-  for string in args.include:
-    include_range = string.split(':')
-    if len(include_range) == 1:
-      included.add(int(include_range[0]))
-    else:
-      for num in range(int(include_range[0]), int(include_range[1])):
-        included.add(num)
-
-  for string in args.exclude:
-    exclude_range = string.split(':')
-    if len(exclude_range) == 1:
-      try:
-        included.remove(int(exclude_range[0]))
-      except KeyError:
-        pass # Exclude works without a matching include
-    else:
-      for num in range(int(exclude_range[0]), int(exclude_range[1])):
-        included.remove(num)
-
-  for string in args.crash:
-    crash_combination = string.split('x')
-    fail = True
-    for crash in crash_combination:
-      if not int(crash) in included:
-        fail = False
-    if fail:
-      print 'Fail'
-      exit(1)
-  print 'Success'
-  exit(0)
-
-if __name__ == '__main__':
-  main()
diff --git a/third_party/subzero/pydir/bisection-tool.py b/third_party/subzero/pydir/bisection-tool.py
deleted file mode 100755
index 6e6c666..0000000
--- a/third_party/subzero/pydir/bisection-tool.py
+++ /dev/null
@@ -1,201 +0,0 @@
-#!/usr/bin/env python2
-
-import argparse
-import math
-import os
-import re
-import signal
-import subprocess
-
-class Runner(object):
-  def __init__(self, input_cmd, timeout, comma_join, template, find_all):
-    self._input_cmd = input_cmd
-    self._timeout = timeout
-    self._num_tries = 0
-    self._comma_join = comma_join
-    self._template = template
-    self._find_all = find_all
-
-  def estimate(self, included_ranges):
-    result = 0
-    for i in included_ranges:
-      if isinstance(i, int):
-        result += 1
-      else:
-        if i[1] - i[0] > 2:
-          result += int(math.log(i[1] - i[0], 2))
-        else:
-          result += (i[1] - i[0])
-    if self._find_all:
-      return 2 * result
-    else:
-      return result
-
-  def Run(self, included_ranges):
-    def timeout_handler(signum, frame):
-      raise RuntimeError('Timeout')
-
-    self._num_tries += 1
-    cmd_addition = ''
-    for i in included_ranges:
-      if isinstance(i, int):
-        range_str = str(i)
-      else:
-        range_str = '{start}:{end}'.format(start=i[0], end=i[1])
-      if self._comma_join:
-        cmd_addition += ',' + range_str
-      else:
-        cmd_addition += ' -i ' + range_str
-
-    if self._template:
-      cmd = cmd_addition.join(re.split(r'%i' ,self._input_cmd))
-    else:
-      cmd = self._input_cmd + cmd_addition
-
-    print cmd
-    p = subprocess.Popen(cmd, shell = True, cwd = None,
-      stdout = subprocess.PIPE, stderr = subprocess.PIPE, env = None)
-    if self._timeout != -1:
-      signal.signal(signal.SIGALRM, timeout_handler)
-      signal.alarm(self._timeout)
-
-    try:
-      _, _ = p.communicate()
-      if self._timeout != -1:
-        signal.alarm(0)
-    except:
-      try:
-        os.kill(p.pid, signal.SIGKILL)
-      except OSError:
-        pass
-      print 'Timeout'
-      return -9
-    print '===Return Code===: ' + str(p.returncode)
-    print '===Remaining Steps (approx)===: ' \
-      + str(self.estimate(included_ranges))
-    return p.returncode
-
-def flatten(tree):
-  if isinstance(tree, list):
-    result = []
-    for node in tree:
-      result.extend(flatten(node))
-    return result
-  else:
-    return [tree] # leaf
-
-def find_failures(runner, current_interval, include_ranges, find_all):
-  if current_interval[0] == current_interval[1]:
-    return []
-  mid = (current_interval[0] + current_interval[1]) / 2
-
-  first_half = (current_interval[0], mid)
-  second_half = (mid, current_interval[1])
-
-  exit_code_2 = 0
-
-  exit_code_1 = runner.Run([first_half] + include_ranges)
-  if find_all or exit_code_1 == 0:
-    exit_code_2 = runner.Run([second_half] + include_ranges)
-
-  if exit_code_1 == 0 and exit_code_2 == 0:
-    # Whole range fails but both halves pass
-    # So, some conjunction of functions cause a failure, but none individually.
-    partial_result = flatten(find_failures(runner, first_half, [second_half]
-                             + include_ranges, find_all))
-    # Heavy list concatenation, but this is insignificant compared to the
-    # process run times
-    partial_result.extend(flatten(find_failures(runner, second_half,
-                          partial_result + include_ranges, find_all)))
-    return [partial_result]
-  else:
-    result = []
-    if exit_code_1 != 0:
-      if first_half[1] == first_half[0] + 1:
-        result.append(first_half[0])
-      else:
-        result.extend(find_failures(runner, first_half,
-                                     include_ranges, find_all))
-    if exit_code_2 != 0:
-      if second_half[1] == second_half[0] + 1:
-        result.append(second_half[0])
-      else:
-        result.extend(find_failures(runner, second_half,
-                                     include_ranges, find_all))
-    return result
-
-
-def main():
-  '''
-  Helper Script for Automating Bisection Debugging
-
-  Example Invocation:
-  bisection-tool.py --cmd 'bisection-test.py -c 2x3' --end 1000 --timeout 60
-
-  This will invoke 'bisection-test.py -c 2x3' starting with the range -i 0:1000
-  If that fails, it will subdivide the range (initially 0:500 and 500:1000)
-  recursively to pinpoint a combination of singletons that are needed to cause
-  the input to return a non zero exit code or timeout.
-
-  For investigating an error in the generated code:
-  bisection-tool.py --cmd './pydir/szbuild_spec2k.py --run 188.ammp'
-
-  For Subzero itself crashing,
-  bisection-tool.py --cmd 'pnacl-sz -translate-only=' --comma-join=1
-  The --comma-join flag ensures the ranges are formatted in the manner pnacl-sz
-  expects.
-
-  If the range specification is not to be appended on the input:
-  bisection-tool.py --cmd 'echo %i; cmd-main %i; cmd-post' --template=1
-
-  '''
-  argparser = argparse.ArgumentParser(main.__doc__)
-  argparser.add_argument('--cmd', required=True,  dest='cmd',
-                           help='Runnable command')
-
-  argparser.add_argument('--start', dest='start', default=0,
-                           help='Start of initial range')
-
-  argparser.add_argument('--end', dest='end', default=50000,
-                           help='End of initial range')
-
-  argparser.add_argument('--timeout', dest='timeout', default=60,
-                           help='Timeout for each invocation of the input')
-
-  argparser.add_argument('--all', type=int, choices=[0,1], default=1,
-                           dest='all', help='Find all failures')
-
-  argparser.add_argument('--comma-join', type=int, choices=[0,1], default=0,
-                           dest='comma_join', help='Use comma to join ranges')
-
-  argparser.add_argument('--template', type=int, choices=[0,1], default=0,
-                           dest='template',
-                           help='Replace %%i in the cmd string with the ranges')
-
-
-  args = argparser.parse_args()
-
-  fail_list = []
-
-  initial_range = (int(args.start), int(args.end))
-  timeout = int(args.timeout)
-  runner = Runner(args.cmd, timeout, args.comma_join, args.template, args.all)
-  if runner.Run([initial_range]) != 0:
-    fail_list = find_failures(runner, initial_range, [], args.all)
-  else:
-    print 'Pass'
-    # The whole input range works, maybe check subzero build flags?
-    # Also consider widening the initial range (control with --start and --end)
-
-  if fail_list:
-    print 'Failing Items:'
-    for fail in fail_list:
-      if isinstance(fail, list):
-        fail.sort()
-        print '[' + ','.join(str(x) for x in fail) + ']'
-      else:
-        print fail
-  print 'Number of tries: ' + str(runner._num_tries)
-
-if __name__ == '__main__':
-  main()
diff --git a/third_party/subzero/pydir/build-pnacl-ir.py b/third_party/subzero/pydir/build-pnacl-ir.py
deleted file mode 100755
index 2ced17a..0000000
--- a/third_party/subzero/pydir/build-pnacl-ir.py
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env python2
-
-import argparse
-import errno
-import os
-import shutil
-import tempfile
-from utils import shellcmd
-from utils import FindBaseNaCl
-
-if __name__ == '__main__':
-    argparser = argparse.ArgumentParser()
-    argparser.add_argument('cfile', nargs='+', type=str,
-        help='C file(s) to convert')
-    argparser.add_argument('--dir', nargs='?', type=str, default='.',
-                           help='Output directory. Default "%(default)s".')
-    argparser.add_argument('--disable-verify', action='store_true')
-    args = argparser.parse_args()
-
-    nacl_root = FindBaseNaCl()
-    # Prepend bin to $PATH.
-    os.environ['PATH'] = (
-        nacl_root + '/toolchain/linux_x86/pnacl_newlib_raw/bin' + os.pathsep +
-        os.pathsep + os.environ['PATH'])
-
-    try:
-        tempdir = tempfile.mkdtemp()
-
-        for cname in args.cfile:
-            basename = os.path.splitext(cname)[0]
-            llname = os.path.join(tempdir, basename + '.ll')
-            pnaclname = basename + '.pnacl.ll'
-            pnaclname = os.path.join(args.dir, pnaclname)
-
-            shellcmd('pnacl-clang -O2 -c {0} -o {1}'.format(cname, llname))
-            shellcmd('pnacl-opt ' +
-                     '-pnacl-abi-simplify-preopt -pnacl-abi-simplify-postopt' +
-                     ('' if args.disable_verify else
-                      ' -verify-pnaclabi-module -verify-pnaclabi-functions') +
-                     ' -pnaclabi-allow-debug-metadata'
-                     ' {0} -S -o {1}'.format(llname, pnaclname))
-    finally:
-        try:
-            shutil.rmtree(tempdir)
-        except OSError as exc:
-            if exc.errno != errno.ENOENT: # ENOENT - no such file or directory
-                raise # re-raise exception
diff --git a/third_party/subzero/pydir/build-runtime.py b/third_party/subzero/pydir/build-runtime.py
deleted file mode 100755
index a351fd6..0000000
--- a/third_party/subzero/pydir/build-runtime.py
+++ /dev/null
@@ -1,232 +0,0 @@
-#!/usr/bin/env python2
-
-import argparse
-import os
-import shutil
-import tempfile
-
-import targets
-from utils import FindBaseNaCl, GetObjcopyCmd, shellcmd
-
-
-def Translate(ll_files, extra_args, obj, verbose, target):
-  """Translate a set of input bitcode files into a single object file.
-
-  Use pnacl-llc to translate textual bitcode input ll_files into object file
-  obj, using extra_args as the architectural flags.
-  """
-  externalize = ['-externalize']
-  shellcmd(['cat'] + ll_files + ['|',
-            'pnacl-llc',
-            '-function-sections',
-            '-O2',
-            '-filetype=obj',
-            '-bitcode-format=llvm',
-            '-o', obj
-    ] + extra_args + externalize, echo=verbose)
-  localize_syms = ['nacl_tp_tdb_offset', 'nacl_tp_tls_offset']
-
-  shellcmd([GetObjcopyCmd(target), obj] +
-    [('--localize-symbol=' + sym) for sym in localize_syms])
-
-
-def PartialLink(obj_files, extra_args, lib, verbose):
-  """Partially links a set of obj files into a final obj library."""
-  shellcmd(['le32-nacl-ld',
-            '-o', lib,
-            '-r',
-    ] + extra_args + obj_files, echo=verbose)
-
-
-def MakeRuntimesForTarget(target_info, ll_files,
-                          srcdir, tempdir, rtdir, verbose, excluded_targets):
-  """Builds native, sandboxed, and nonsfi runtimes for the given target."""
-  if target_info.target in excluded_targets:
-    return
-  # File-mangling helper functions.
-  def TmpFile(template):
-    return template.format(dir=tempdir, target=target_info.target)
-  def OutFile(template):
-    return template.format(rtdir=rtdir, target=target_info.target)
-  # Helper function for building the native unsandboxed runtime.
-  def MakeNativeRuntime():
-    """Builds just the native runtime."""
-    # Translate tempdir/szrt.ll and tempdir/szrt_ll.ll to
-    # szrt_native_{target}.tmp.o.
-    Translate(ll_files,
-              ['-mtriple=' + target_info.triple] + target_info.llc_flags,
-              TmpFile('{dir}/szrt_native_{target}.tmp.o'),
-              verbose, target_info.target)
-    # Compile srcdir/szrt_profiler.c to
-    # tempdir/szrt_profiler_native_{target}.o.
-    shellcmd(['clang',
-              '-O2',
-              '-target=' + target_info.triple,
-              '-c',
-              '{srcdir}/szrt_profiler.c'.format(srcdir=srcdir),
-              '-o', TmpFile('{dir}/szrt_native_profiler_{target}.o')
-      ], echo=verbose)
-    # Assemble srcdir/szrt_asm_{target}.s to tempdir/szrt_asm_{target}.o.
-    shellcmd(['llvm-mc',
-              '-triple=' + target_info.triple, '--defsym NATIVE=1',
-              '-filetype=obj',
-              '-o', TmpFile('{dir}/szrt_native_asm_{target}.o'),
-              '{srcdir}/szrt_asm_{target}.s'.format(
-                srcdir=srcdir, target=target_info.target)
-      ], echo=verbose)
-    # Write full szrt_native_{target}.o.
-    PartialLink([TmpFile('{dir}/szrt_native_{target}.tmp.o'),
-                 TmpFile('{dir}/szrt_native_asm_{target}.o'),
-                 TmpFile('{dir}/szrt_native_profiler_{target}.o')],
-                ['-m {ld_emu}'.format(ld_emu=target_info.ld_emu)],
-                OutFile('{rtdir}/szrt_native_{target}.o'),
-                verbose)
-    shellcmd([GetObjcopyCmd(target_info.target),
-              '--strip-symbol=NATIVE',
-              OutFile('{rtdir}/szrt_native_{target}.o')])
-    # Compile srcdir/szrt_asan.c to szrt_asan_{target}.o
-    shellcmd(['clang',
-              '-O2',
-              '-target=' + target_info.triple,
-              '-c',
-              '{srcdir}/szrt_asan.c'.format(srcdir=srcdir),
-              '-o', OutFile('{rtdir}/szrt_asan_{target}.o')
-      ], echo=verbose)
-
-  # Helper function for building the sandboxed runtime.
-  def MakeSandboxedRuntime():
-    """Builds just the sandboxed runtime."""
-    # Translate tempdir/szrt.ll and tempdir/szrt_ll.ll to szrt_sb_{target}.o.
-    # The sandboxed library does not get the profiler helper function as the
-    # binaries are linked with -nostdlib.
-    Translate(ll_files,
-              ['-mtriple=' + targets.ConvertTripleToNaCl(target_info.triple)] +
-              target_info.llc_flags,
-              TmpFile('{dir}/szrt_sb_{target}.tmp.o'),
-              verbose,target_info.target)
-    # Assemble srcdir/szrt_asm_{target}.s to tempdir/szrt_asm_{target}.o.
-    shellcmd(['llvm-mc',
-              '-triple=' + targets.ConvertTripleToNaCl(target_info.triple),
-              '--defsym NACL=1',
-              '-filetype=obj',
-              '-o', TmpFile('{dir}/szrt_sb_asm_{target}.o'),
-              '{srcdir}/szrt_asm_{target}.s'.format(
-                srcdir=srcdir, target=target_info.target)
-      ], echo=verbose)
-    PartialLink([TmpFile('{dir}/szrt_sb_{target}.tmp.o'),
-                 TmpFile('{dir}/szrt_sb_asm_{target}.o')],
-                ['-m {ld_emu}'.format(ld_emu=target_info.sb_emu)],
-                OutFile('{rtdir}/szrt_sb_{target}.o'),
-                verbose)
-    shellcmd([GetObjcopyCmd(target_info.target),
-              '--strip-symbol=NACL',
-              OutFile('{rtdir}/szrt_sb_{target}.o')])
-
-  # Helper function for building the Non-SFI runtime.
-  def MakeNonsfiRuntime():
-    """Builds just the nonsfi runtime."""
-    # Translate tempdir/szrt.ll and tempdir/szrt_ll.ll to
-    # szrt_nonsfi_{target}.tmp.o.
-    Translate(ll_files,
-              ['-mtriple=' + target_info.triple] + target_info.llc_flags +
-              ['-relocation-model=pic', '-force-tls-non-pic', '-malign-double'],
-              TmpFile('{dir}/szrt_nonsfi_{target}.tmp.o'),
-              verbose, target_info.target)
-    # Assemble srcdir/szrt_asm_{target}.s to tempdir/szrt_asm_{target}.o.
-    shellcmd(['llvm-mc',
-              '-triple=' + target_info.triple, '--defsym NONSFI=1',
-              '-filetype=obj',
-              '-o', TmpFile('{dir}/szrt_nonsfi_asm_{target}.o'),
-              '{srcdir}/szrt_asm_{target}.s'.format(
-                srcdir=srcdir, target=target_info.target)
-      ], echo=verbose)
-    # Write full szrt_nonsfi_{target}.o.
-    PartialLink([TmpFile('{dir}/szrt_nonsfi_{target}.tmp.o'),
-                 TmpFile('{dir}/szrt_nonsfi_asm_{target}.o')],
-                ['-m {ld_emu}'.format(ld_emu=target_info.ld_emu)],
-                OutFile('{rtdir}/szrt_nonsfi_{target}.o'),
-                verbose)
-    shellcmd([GetObjcopyCmd(target_info.target),
-              '--strip-symbol=NONSFI',
-              OutFile('{rtdir}/szrt_nonsfi_{target}.o')])
-
-
-  # Run the helper functions.
-  MakeNativeRuntime()
-  MakeSandboxedRuntime()
-  MakeNonsfiRuntime()
-
-
-def main():
-    """Build the Subzero runtime support library for all architectures.
-    """
-    nacl_root = FindBaseNaCl()
-    argparser = argparse.ArgumentParser(
-        description='    ' + main.__doc__,
-        formatter_class=argparse.RawTextHelpFormatter)
-    argparser.add_argument('--verbose', '-v', dest='verbose',
-                           action='store_true',
-                           help='Display some extra debugging output')
-    argparser.add_argument('--pnacl-root', dest='pnacl_root',
-                           default=(
-                             '{root}/toolchain/linux_x86/pnacl_newlib_raw'
-                           ).format(root=nacl_root),
-                           help='Path to PNaCl toolchain binaries.')
-    argparser.add_argument('--exclude-target', dest='excluded_targets',
-                           default=[], action='append',
-                           help='Target whose runtime should not be built')
-    args = argparser.parse_args()
-    os.environ['PATH'] = ('{root}/bin{sep}{path}'
-        ).format(root=args.pnacl_root, sep=os.pathsep, path=os.environ['PATH'])
-    srcdir = (
-        '{root}/toolchain_build/src/subzero/runtime'
-        ).format(root=nacl_root)
-    rtdir = (
-        '{root}/toolchain_build/src/subzero/build/runtime'
-        ).format(root=nacl_root)
-    try:
-        tempdir = tempfile.mkdtemp()
-        if os.path.exists(rtdir) and not os.path.isdir(rtdir):
-            os.remove(rtdir)
-        if not os.path.exists(rtdir):
-            os.makedirs(rtdir)
-        # Compile srcdir/szrt.c to tempdir/szrt.ll
-        shellcmd(['pnacl-clang',
-                  '-O2',
-                  '-c',
-                  '{srcdir}/szrt.c'.format(srcdir=srcdir),
-                  '-o', '{dir}/szrt.tmp.bc'.format(dir=tempdir)
-            ], echo=args.verbose)
-        shellcmd(['pnacl-opt',
-                  '-pnacl-abi-simplify-preopt',
-                  '-pnacl-abi-simplify-postopt',
-                  '-pnaclabi-allow-debug-metadata',
-                  '{dir}/szrt.tmp.bc'.format(dir=tempdir),
-                  '-S',
-                  '-o', '{dir}/szrt.ll'.format(dir=tempdir)
-            ], echo=args.verbose)
-        ll_files = ['{dir}/szrt.ll'.format(dir=tempdir),
-                    '{srcdir}/szrt_ll.ll'.format(srcdir=srcdir)]
-
-        MakeRuntimesForTarget(targets.X8632Target, ll_files,
-                              srcdir, tempdir, rtdir, args.verbose,
-                              args.excluded_targets)
-        MakeRuntimesForTarget(targets.X8664Target, ll_files,
-                              srcdir, tempdir, rtdir, args.verbose,
-                              args.excluded_targets)
-        MakeRuntimesForTarget(targets.ARM32Target, ll_files,
-                              srcdir, tempdir, rtdir, args.verbose,
-                              args.excluded_targets)
-        MakeRuntimesForTarget(targets.MIPS32Target, ll_files,
-                              srcdir, tempdir, rtdir, args.verbose,
-                              args.excluded_targets)
-
-    finally:
-        try:
-            shutil.rmtree(tempdir)
-        except OSError as exc:
-            if exc.errno != errno.ENOENT: # ENOENT - no such file or directory
-                raise # re-raise exception
-
-if __name__ == '__main__':
-    main()
diff --git a/third_party/subzero/pydir/crosstest.py b/third_party/subzero/pydir/crosstest.py
deleted file mode 100755
index 6f8ed57..0000000
--- a/third_party/subzero/pydir/crosstest.py
+++ /dev/null
@@ -1,281 +0,0 @@
-#!/usr/bin/env python2
-
-import argparse
-import os
-import subprocess
-import sys
-import tempfile
-
-import targets
-from szbuild import LinkNonsfi
-from utils import FindBaseNaCl, GetObjcopyCmd, get_sfi_string, shellcmd
-
-def main():
-    """Builds a cross-test binary for comparing Subzero and llc translation.
-
-    Each --test argument is compiled once by llc and once by Subzero.  C/C++
-    tests are first compiled down to PNaCl bitcode using pnacl-clang and
-    pnacl-opt.  The --prefix argument ensures that symbol names are different
-    between the two object files, to avoid linking errors.
-
-    There is also a --driver argument that specifies the C/C++ file that calls
-    the test functions with a variety of interesting inputs and compares their
-    results.
-
-    """
-    # arch_map maps a Subzero target string to TargetInfo (e.g., triple).
-    arch_map = { 'x8632': targets.X8632Target,
-                 'x8664': targets.X8664Target,
-                 'arm32': targets.ARM32Target,
-                 'mips32': targets.MIPS32Target}
-    arch_sz_flags = { 'x8632': [],
-                      'x8664': [],
-                      # For ARM, test a large stack offset as well. +/- 4095 is
-                      # the limit, so test somewhere near that boundary.
-                      'arm32': ['--test-stack-extra', '4084'],
-                      'mips32': ['--test-stack-extra', '4084']
-    }
-    arch_llc_flags_extra = {
-        # Use sse2 instructions regardless of input -mattr
-        # argument to avoid differences in (undefined) behavior of
-        # converting NaN to int.
-        'x8632': ['-mattr=sse2'],
-        'x8664': ['-mattr=sse2'],
-        'arm32': [],
-        'mips32':[],
-    }
-    desc = 'Build a cross-test that compares Subzero and llc translation.'
-    argparser = argparse.ArgumentParser(description=desc)
-    argparser.add_argument('--test', required=True, action='append',
-                           metavar='TESTFILE_LIST',
-                           help='List of C/C++/.ll files with test functions')
-    argparser.add_argument('--driver', required=True,
-                           metavar='DRIVER',
-                           help='Driver program')
-    argparser.add_argument('--target', required=False, default='x8632',
-                           choices=arch_map.keys(),
-                           metavar='TARGET',
-                           help='Translation target architecture.' +
-                                ' Default %(default)s.')
-    argparser.add_argument('-O', required=False, default='2', dest='optlevel',
-                           choices=['m1', '-1', '0', '1', '2'],
-                           metavar='OPTLEVEL',
-                           help='Optimization level for llc and Subzero ' +
-                                '(m1 and -1 are equivalent).' +
-                                ' Default %(default)s.')
-    argparser.add_argument('--clang-opt', required=False, default=True,
-                           dest='clang_opt')
-    argparser.add_argument('--mattr',  required=False, default='sse2',
-                           dest='attr', choices=['sse2', 'sse4.1',
-                                                 'neon', 'hwdiv-arm',
-                                                 'base'],
-                           metavar='ATTRIBUTE',
-                           help='Target attribute. Default %(default)s.')
-    argparser.add_argument('--sandbox', required=False, default=0, type=int,
-                           dest='sandbox',
-                           help='Use sandboxing. Default "%(default)s".')
-    argparser.add_argument('--nonsfi', required=False, default=0, type=int,
-                           dest='nonsfi',
-                           help='Use Non-SFI mode. Default "%(default)s".')
-    argparser.add_argument('--prefix', required=True,
-                           metavar='SZ_PREFIX',
-                           help='String prepended to Subzero symbol names')
-    argparser.add_argument('--output', '-o', required=True,
-                           metavar='EXECUTABLE',
-                           help='Executable to produce')
-    argparser.add_argument('--dir', required=False, default='.',
-                           metavar='OUTPUT_DIR',
-                           help='Output directory for all files.' +
-                                ' Default "%(default)s".')
-    argparser.add_argument('--filetype', default='obj', dest='filetype',
-                           choices=['obj', 'asm', 'iasm'],
-                           help='Output file type.  Default %(default)s.')
-    argparser.add_argument('--sz', dest='sz_args', action='append', default=[],
-                           help='Extra arguments to pass to pnacl-sz.')
-    args = argparser.parse_args()
-
-    nacl_root = FindBaseNaCl()
-    bindir = ('{root}/toolchain/linux_x86/pnacl_newlib_raw/bin'
-              .format(root=nacl_root))
-    target_info = arch_map[args.target]
-    triple = target_info.triple
-    if args.sandbox:
-        triple = targets.ConvertTripleToNaCl(triple)
-    llc_flags = target_info.llc_flags + arch_llc_flags_extra[args.target]
-    if args.nonsfi:
-        llc_flags.extend(['-relocation-model=pic',
-                          '-malign-double',
-                          '-force-tls-non-pic',
-                          '-mtls-use-call'])
-    mypath = os.path.abspath(os.path.dirname(sys.argv[0]))
-
-    # Construct a "unique key" for each test so that tests can be run in
-    # parallel without race conditions on temporary file creation.
-    key = '{sb}.O{opt}.{attr}.{target}'.format(
-        target=args.target,
-        sb=get_sfi_string(args, 'sb', 'nonsfi', 'nat'),
-        opt=args.optlevel, attr=args.attr)
-    objs = []
-    for arg in args.test:
-        base, ext = os.path.splitext(arg)
-        if ext == '.ll':
-            bitcode = arg
-        else:
-            # Use pnacl-clang and pnacl-opt to produce PNaCl bitcode.
-            bitcode_nonfinal = os.path.join(args.dir, base + '.' + key + '.bc')
-            bitcode = os.path.join(args.dir, base + '.' + key + '.pnacl.ll')
-            shellcmd(['{bin}/pnacl-clang'.format(bin=bindir),
-                      ('-O2' if args.clang_opt else '-O0'),
-                      ('-DARM32' if args.target == 'arm32' else ''), '-c', arg,
-                      ('-DMIPS32' if args.target == 'mips32' else ''),
-                      '-o', bitcode_nonfinal])
-            shellcmd(['{bin}/pnacl-opt'.format(bin=bindir),
-                      '-pnacl-abi-simplify-preopt',
-                      '-pnacl-abi-simplify-postopt',
-                      '-pnaclabi-allow-debug-metadata',
-                      '-strip-metadata',
-                      '-strip-module-flags',
-                      '-strip-debug',
-                      bitcode_nonfinal, '-S', '-o', bitcode])
-
-        base_sz = '{base}.{key}'.format(base=base, key=key)
-        asm_sz = os.path.join(args.dir, base_sz + '.sz.s')
-        obj_sz = os.path.join(args.dir, base_sz + '.sz.o')
-        obj_llc = os.path.join(args.dir, base_sz + '.llc.o')
-
-        shellcmd(['{path}/pnacl-sz'.format(path=os.path.dirname(mypath)),
-                  ] + args.sz_args + [
-                  '-O' + args.optlevel,
-                  '-mattr=' + args.attr,
-                  '--target=' + args.target,
-                  '--sandbox=' + str(args.sandbox),
-                  '--nonsfi=' + str(args.nonsfi),
-                  '--prefix=' + args.prefix,
-                  '-allow-uninitialized-globals',
-                  '-externalize',
-                  '-filetype=' + args.filetype,
-                  '-o=' + (obj_sz if args.filetype == 'obj' else asm_sz),
-                  bitcode] + arch_sz_flags[args.target])
-        if args.filetype != 'obj':
-            shellcmd(['{bin}/llvm-mc'.format(bin=bindir),
-                      '-triple=' + ('mipsel-linux-gnu'
-                                    if args.target == 'mips32' and args.sandbox
-                                    else triple),
-                      '-filetype=obj',
-                      '-o=' + obj_sz,
-                      asm_sz])
-
-        # Each separately translated Subzero object file contains its own
-        # definition of the __Sz_block_profile_info profiling symbol.  Avoid
-        # linker errors (multiply defined symbol) by making all copies weak.
-        # (This could also be done by Subzero if it supported weak symbol
-        # definitions.)  This approach should be OK because cross tests are
-        # currently the only situation where multiple translated files are
-        # linked into the executable, but when PNaCl supports shared nexe
-        # libraries, this would need to change.  (Note: the same issue applies
-        # to the __Sz_revision symbol.)
-        shellcmd(['{bin}/{objcopy}'.format(bin=bindir,
-                  objcopy=GetObjcopyCmd(args.target)),
-                  '--weaken-symbol=__Sz_block_profile_info',
-                  '--weaken-symbol=__Sz_revision',
-                  '--strip-symbol=nacl_tp_tdb_offset',
-                  '--strip-symbol=nacl_tp_tls_offset',
-                  obj_sz])
-        objs.append(obj_sz)
-        shellcmd(['{bin}/pnacl-llc'.format(bin=bindir),
-                  '-mtriple=' + triple,
-                  '-externalize',
-                  '-filetype=obj',
-                  '-bitcode-format=llvm',
-                  '-o=' + obj_llc,
-                  bitcode] + llc_flags)
-        strip_syms = [] if args.target == 'mips32' else ['nacl_tp_tdb_offset',
-                                                         'nacl_tp_tls_offset']
-        shellcmd(['{bin}/{objcopy}'.format(bin=bindir,
-                  objcopy=GetObjcopyCmd(args.target)),
-                  obj_llc] +
-                 [('--strip-symbol=' + sym) for sym in strip_syms])
-        objs.append(obj_llc)
-
-    # Add szrt_sb_${target}.o or szrt_native_${target}.o.
-    if not args.nonsfi:
-        objs.append((
-                '{root}/toolchain_build/src/subzero/build/runtime/' +
-                'szrt_{sb}_' + args.target + '.o'
-                ).format(root=nacl_root,
-                         sb=get_sfi_string(args, 'sb', 'nonsfi', 'native')))
-
-    target_params = []
-
-    if args.target == 'arm32':
-      target_params.append('-DARM32')
-      target_params.append('-static')
-
-    if args.target == 'mips32':
-      target_params.append('-DMIPS32')
-
-    pure_c = os.path.splitext(args.driver)[1] == '.c'
-    if not args.nonsfi:
-        # Set compiler to clang, clang++, pnacl-clang, or pnacl-clang++.
-        compiler = '{bin}/{prefix}{cc}'.format(
-            bin=bindir, prefix=get_sfi_string(args, 'pnacl-', '', ''),
-            cc='clang' if pure_c else 'clang++')
-        sb_native_args = (['-O0', '--pnacl-allow-native',
-                           '-arch', target_info.compiler_arch,
-                           '-Wn,-defsym=__Sz_AbsoluteZero=0']
-                          if args.sandbox else
-                          ['-g', '-target=' + triple,
-                           '-lm', '-lpthread',
-                           '-Wl,--defsym=__Sz_AbsoluteZero=0'] +
-                          target_info.cross_headers)
-        shellcmd([compiler] + target_params + [args.driver] + objs +
-                 ['-o', os.path.join(args.dir, args.output)] + sb_native_args)
-        return 0
-
-    base, ext = os.path.splitext(args.driver)
-    bitcode_nonfinal = os.path.join(args.dir, base + '.' + key + '.bc')
-    bitcode = os.path.join(args.dir, base + '.' + key + '.pnacl.ll')
-    asm_sz = os.path.join(args.dir, base + '.' + key + '.s')
-    obj_llc = os.path.join(args.dir, base + '.' + key + '.o')
-    compiler = '{bin}/{prefix}{cc}'.format(
-        bin=bindir, prefix='pnacl-',
-        cc='clang' if pure_c else 'clang++')
-    shellcmd([compiler] + target_params + [
-              args.driver,
-              '-O2',
-              '-o', bitcode_nonfinal,
-              '-Wl,-r'
-             ])
-    shellcmd(['{bin}/pnacl-opt'.format(bin=bindir),
-              '-pnacl-abi-simplify-preopt',
-              '-pnacl-abi-simplify-postopt',
-              '-pnaclabi-allow-debug-metadata',
-              '-strip-metadata',
-              '-strip-module-flags',
-              '-strip-debug',
-              '-disable-opt',
-              bitcode_nonfinal, '-S', '-o', bitcode])
-    shellcmd(['{bin}/pnacl-llc'.format(bin=bindir),
-              '-mtriple=' + triple,
-              '-externalize',
-              '-filetype=obj',
-              '-O2',
-              '-bitcode-format=llvm',
-              '-o', obj_llc,
-              bitcode] + llc_flags)
-    if not args.sandbox and not args.nonsfi:
-        shellcmd(['{bin}/{objcopy}'.format(bin=bindir,
-                  objcopy=GetObjcopyCmd(args.target)),
-                  '--redefine-sym', '_start=_user_start',
-                  obj_llc
-                 ])
-    objs.append(obj_llc)
-    if args.nonsfi:
-        LinkNonsfi(objs, os.path.join(args.dir, args.output), args.target)
-    elif args.sandbox:
-        LinkSandbox(objs, os.path.join(args.dir, args.output), args.target)
-    else:
-        LinkNative(objs, os.path.join(args.dir, args.output), args.target)
-
-if __name__ == '__main__':
-    main()
diff --git a/third_party/subzero/pydir/crosstest_generator.py b/third_party/subzero/pydir/crosstest_generator.py
deleted file mode 100755
index d2e5652..0000000
--- a/third_party/subzero/pydir/crosstest_generator.py
+++ /dev/null
@@ -1,234 +0,0 @@
-#!/usr/bin/env python2
-
-import argparse
-import collections
-import ConfigParser
-import os
-import shutil
-import sys
-
-from utils import shellcmd
-from utils import FindBaseNaCl
-
-def Match(desc, includes, excludes, default_match):
-  """Determines whether desc is a match against includes and excludes.
-
-  'desc' is a set of attributes, and 'includes' and 'excludes' are lists of sets
-  of attributes.
-
-  If 'desc' matches any element from 'excludes', the result is False.
-  Otherwise, if 'desc' matches any element from 'includes', the result is True.
-  Otherwise, the 'default_match' value is returned.
-  """
-  for exclude in excludes:
-    if exclude <= desc:
-      return False
-  for include in includes:
-    if include <= desc:
-      return True
-  return default_match
-
-
-def RunNativePrefix(toolchain_root, target, attr, run_cmd):
-  """Returns a prefix for running an executable for the target.
-
-  For example, we may be running an ARM or MIPS target executable on an
-  x86 machine and need to use an emulator.
-  """
-  arch_map = { 'x8632' : '',
-               'x8664' : '',
-               'arm32' : os.path.join(toolchain_root, 'arm_trusted',
-                                      'run_under_qemu_arm'),
-               'mips32': os.path.join(toolchain_root, 'mips_trusted',
-                                      'run_under_qemu_mips32'),
-             }
-  attr_map = collections.defaultdict(str, {
-      'arm32-neon': ' -cpu cortex-a9',
-      'arm32-hwdiv-arm': ' -cpu cortex-a15',
-      'mips32-base': ' -cpu mips32r5-generic'})
-  prefix = arch_map[target] + attr_map[target + '-' + attr]
-  if target == 'mips32':
-    prefix = 'QEMU_SET_ENV=LD_LIBRARY_PATH=/usr/mipsel-linux-gnu/lib/ ' + prefix
-  return (prefix + ' ' + run_cmd) if prefix else run_cmd
-
-def NonsfiLoaderArch(target):
-  """Returns the arch for the nonsfi_loader"""
-  arch_map = { 'arm32' : 'arm',
-               'x8632' : 'x86-32',
-               'mips32' : 'mips32',
-             }
-  return arch_map[target]
-
-
-def main():
-  """Framework for cross test generation and execution.
-
-  Builds and executes cross tests from the space of all possible attribute
-  combinations.  The space can be restricted by providing subsets of attributes
-  to specifically include or exclude.
-  """
-  # pypath is where to find other Subzero python scripts.
-  pypath = os.path.abspath(os.path.dirname(sys.argv[0]))
-  root = FindBaseNaCl()
-
-  # The rest of the attribute sets.
-  targets = [ 'x8632', 'x8664', 'arm32', 'mips32' ]
-  sandboxing = [ 'native', 'sandbox', 'nonsfi' ]
-  opt_levels = [ 'Om1', 'O2' ]
-  arch_attrs = { 'x8632': [ 'sse2', 'sse4.1' ],
-                 'x8664': [ 'sse2', 'sse4.1' ],
-                 'arm32': [ 'neon', 'hwdiv-arm' ],
-                 'mips32': [ 'base' ]
-               }
-  flat_attrs = []
-  for v in arch_attrs.values():
-    flat_attrs += v
-  arch_flags = { 'x8632': [],
-                 'x8664': [],
-                 'arm32': [],
-                 'mips32': []
-               }
-  # all_keys is only used in the help text.
-  all_keys = '; '.join([' '.join(targets), ' '.join(sandboxing),
-                        ' '.join(opt_levels), ' '.join(flat_attrs)])
-
-  argparser = argparse.ArgumentParser(
-    description='  ' + main.__doc__ +
-    'The set of attributes is the set of tests plus the following:\n' +
-    all_keys, formatter_class=argparse.RawTextHelpFormatter)
-  argparser.add_argument('--config', default='crosstest.cfg', dest='config',
-                         metavar='FILE', help='Test configuration file')
-  argparser.add_argument('--print-tests', default=False, action='store_true',
-                         help='Print the set of test names and exit')
-  argparser.add_argument('--include', '-i', default=[], dest='include',
-                         action='append', metavar='ATTR_LIST',
-                         help='Attributes to include (comma-separated). ' +
-                              'Can be used multiple times.')
-  argparser.add_argument('--exclude', '-e', default=[], dest='exclude',
-                         action='append', metavar='ATTR_LIST',
-                         help='Attributes to include (comma-separated). ' +
-                              'Can be used multiple times.')
-  argparser.add_argument('--verbose', '-v', default=False, action='store_true',
-                         help='Use verbose output')
-  argparser.add_argument('--defer', default=False, action='store_true',
-                         help='Defer execution until all executables are built')
-  argparser.add_argument('--no-compile', '-n', default=False,
-                         action='store_true',
-                         help="Don't build; reuse binaries from the last run")
-  argparser.add_argument('--dir', dest='dir', metavar='DIRECTORY',
-                         default=('{root}/toolchain_build/src/subzero/' +
-                                  'crosstest/Output').format(root=root),
-                         help='Output directory')
-  argparser.add_argument('--lit', default=False, action='store_true',
-                         help='Generate files for lit testing')
-  argparser.add_argument('--toolchain-root', dest='toolchain_root',
-                         default=(
-                           '{root}/toolchain/linux_x86/pnacl_newlib_raw/bin'
-                         ).format(root=root),
-                         help='Path to toolchain binaries.')
-  argparser.add_argument('--filetype', default=None, dest='filetype',
-                         help='File type override, one of {asm, iasm, obj}.')
-  args = argparser.parse_args()
-
-  # Run from the crosstest directory to make it easy to grab inputs.
-  crosstest_dir = '{root}/toolchain_build/src/subzero/crosstest'.format(
-    root=root)
-  os.chdir(crosstest_dir)
-
-  tests = ConfigParser.RawConfigParser()
-  tests.read('crosstest.cfg')
-
-  if args.print_tests:
-    print 'Test name attributes: ' + ' '.join(sorted(tests.sections()))
-    sys.exit(0)
-
-  # includes and excludes are both lists of sets.
-  includes = [ set(item.split(',')) for item in args.include ]
-  excludes = [ set(item.split(',')) for item in args.exclude ]
-  # If any --include args are provided, the default is to not match.
-  default_match = not args.include
-
-  # Delete and recreate the output directory, unless --no-compile was specified.
-  if not args.no_compile:
-    if os.path.exists(args.dir):
-      if os.path.isdir(args.dir):
-        shutil.rmtree(args.dir)
-      else:
-        os.remove(args.dir)
-    if not os.path.exists(args.dir):
-      os.makedirs(args.dir)
-
-  # If --defer is specified, collect the run commands into deferred_cmds for
-  # later execution.
-  deferred_cmds = []
-  for test in sorted(tests.sections()):
-    for target in targets:
-      for sb in sandboxing:
-        for opt in opt_levels:
-          for attr in arch_attrs[target]:
-            desc = [ test, target, sb, opt, attr ]
-            if Match(set(desc), includes, excludes, default_match):
-              exe = '{test}_{target}_{sb}_{opt}_{attr}'.format(
-                test=test, target=target, sb=sb, opt=opt,
-                attr=attr)
-              extra = (tests.get(test, 'flags').split(' ')
-                       if tests.has_option(test, 'flags') else [])
-              if args.filetype:
-                extra += ['--filetype={ftype}'.format(ftype=args.filetype)]
-              # Generate the compile command.
-              cmp_cmd = (
-                ['{path}/crosstest.py'.format(path=pypath),
-                 '-{opt}'.format(opt=opt),
-                 '--mattr={attr}'.format(attr=attr),
-                 '--prefix=Subzero_',
-                 '--target={target}'.format(target=target),
-                 '--nonsfi={nsfi}'.format(nsfi='1' if sb=='nonsfi' else '0'),
-                 '--sandbox={sb}'.format(sb='1' if sb=='sandbox' else '0'),
-                 '--dir={dir}'.format(dir=args.dir),
-                 '--output={exe}'.format(exe=exe),
-                 '--driver={drv}'.format(drv=tests.get(test, 'driver'))] +
-                extra +
-                ['--test=' + t
-                 for t in tests.get(test, 'test').split(' ')] +
-                arch_flags[target])
-              run_cmd_base = os.path.join(args.dir, exe)
-              # Generate the run command.
-              run_cmd = run_cmd_base
-              if sb == 'sandbox':
-                run_cmd = '{root}/run.py -q '.format(root=root) + run_cmd
-              elif sb == 'nonsfi':
-                run_cmd = (
-                    '{root}/scons-out/opt-linux-{arch}/obj/src/nonsfi/' +
-                    'loader/nonsfi_loader ').format(
-                        root=root, arch=NonsfiLoaderArch(target)) + run_cmd
-                run_cmd = RunNativePrefix(args.toolchain_root, target, attr,
-                                          run_cmd)
-              else:
-                run_cmd = RunNativePrefix(args.toolchain_root, target, attr,
-                                          run_cmd)
-              if args.lit:
-                # Create a file to drive the lit test.
-                with open(run_cmd_base + '.xtest', 'w') as f:
-                  f.write('# RUN: sh %s | FileCheck %s\n')
-                  f.write('cd ' + crosstest_dir + ' && \\\n')
-                  f.write(' '.join(cmp_cmd) + ' && \\\n')
-                  f.write(run_cmd + '\n')
-                  f.write('echo Recreate a failure using ' + __file__ +
-                          ' --toolchain-root=' + args.toolchain_root +
-                          (' --filetype=' + args.filetype
-                            if args.filetype else '') +
-                          ' --include=' + ','.join(desc) + '\n')
-                  f.write('# CHECK: Failures=0\n')
-              else:
-                if not args.no_compile:
-                  shellcmd(cmp_cmd,
-                           echo=args.verbose)
-                if (args.defer):
-                  deferred_cmds.append(run_cmd)
-                else:
-                  shellcmd(run_cmd, echo=True)
-  for run_cmd in deferred_cmds:
-    shellcmd(run_cmd, echo=True)
-
-if __name__ == '__main__':
-  main()
diff --git a/third_party/subzero/pydir/gen_arm32_reg_tables.py b/third_party/subzero/pydir/gen_arm32_reg_tables.py
deleted file mode 100644
index 40b61e5..0000000
--- a/third_party/subzero/pydir/gen_arm32_reg_tables.py
+++ /dev/null
@@ -1,229 +0,0 @@
-import os
-import sys
-
-class RegAliases(object):
-  def __init__(self, AliasesStr):
-    self.Aliases = list(Alias.strip() for Alias in AliasesStr.split(','))
-
-  def __str__(self):
-    return 'REGLIST{AliasCount}(RegARM32, {Aliases})'.format(
-      AliasCount=len(self.Aliases), Aliases=', '.join(self.Aliases))
-
-def _ArgumentNames(Method):
-  import inspect
-  return (ArgName for ArgName in inspect.getargspec(Method).args
-      if ArgName != 'self')
-
-class RegFeatures(object):
-  def __init__(self, AsmStr=None, CCArg=0, IsScratch=0, IsPreserved=0,
-               IsStackPtr=0, IsFramePtr=0, IsGPR=0, IsInt=0, IsI64Pair=0,
-               IsFP32=0, IsFP64=0, IsVec128=0, Aliases=None):
-    assert (not IsInt) or IsGPR
-    assert (not IsI64Pair) or (not IsGPR)
-    assert not (IsInt and IsI64Pair)
-    assert not (IsFP32 and IsFP64)
-    assert not (IsFP32 and IsVec128)
-    assert not (IsFP64 and IsVec128)
-    assert not ((IsGPR) and (IsFP32 or IsFP64 or IsVec128))
-    assert (not IsFramePtr) or IsGPR
-    assert (not IsStackPtr) or IsGPR
-    assert not (IsScratch and IsPreserved)
-    self.Features = [x for x in _ArgumentNames(self.__init__)]
-    self.FeaturesDict = {}
-    # The argument Aliases is a string with the register aliasing information.
-    # The next line convert it to a RegAlias object, for pretty printing.
-    Aliases = RegAliases(Aliases)
-    AsmStr = '"%s"' % AsmStr
-    for Feature in self.Features:
-      self.FeaturesDict[Feature] = locals()[Feature]
-
-  def __str__(self):
-    return '%s' % (', '.join(str(self.FeaturesDict[Feature]) for
-                                 Feature in self.Features))
-
-  def Aliases(self):
-    return self.FeaturesDict['Aliases']
-
-  def LivesInGPR(self):
-    return (any(self.FeaturesDict[IntFeature] for IntFeature in (
-                   'IsInt', 'IsI64Pair', 'IsStackPtr', 'IsFramePtr')) or
-            not self.LivesInVFP())
-
-  def LivesInVFP(self):
-    return any(self.FeaturesDict[FpFeature] for FpFeature in (
-                   'IsFP32', 'IsFP64', 'IsVec128'))
-
-  def DefiningXMacro(self, OtherFeatures):
-    return 'define X({parameters})'.format(
-        parameters=', '.join(OtherFeatures + self.Features))
-
-class Reg(object):
-  def __init__(self, Name, Encode, AsmStr=None, **Features):
-    self.Name = Name
-    self.Encode = Encode
-    if not AsmStr:
-      AsmStr = '%s' % Name
-    self.Features = RegFeatures(AsmStr=AsmStr, **Features)
-
-  def __str__(self):
-    return 'Reg_{Name}, {Encode}, {Features}'.format(Name=self.Name,
-      Encode=self.Encode, Features=self.Features)
-
-  def IsAnAliasOf(self, Other):
-    return Other.Name in self.Features.Aliases().Aliases
-
-  def DefiningXMacro(self):
-    return self.Features.DefiningXMacro(['Tag', 'Encoding'])
-
-# Note: The following tables break the usual 80-col on purpose -- it is easier
-# to read the register tables if each register entry is contained on a single
-# line.
-GPRs = [
-  Reg( 'r0',  0,   IsScratch=1, CCArg=1, IsGPR = 1, IsInt=1,               Aliases= 'r0,  r0r1'),
-  Reg( 'r1',  1,   IsScratch=1, CCArg=2, IsGPR = 1, IsInt=1,               Aliases= 'r1,  r0r1'),
-  Reg( 'r2',  2,   IsScratch=1, CCArg=3, IsGPR = 1, IsInt=1,               Aliases= 'r2,  r2r3'),
-  Reg( 'r3',  3,   IsScratch=1, CCArg=4, IsGPR = 1, IsInt=1,               Aliases= 'r3,  r2r3'),
-  Reg( 'r4',  4, IsPreserved=1,          IsGPR = 1, IsInt=1,               Aliases= 'r4,  r4r5'),
-  Reg( 'r5',  5, IsPreserved=1,          IsGPR = 1, IsInt=1,               Aliases= 'r5,  r4r5'),
-  Reg( 'r6',  6, IsPreserved=1,          IsGPR = 1, IsInt=1,               Aliases= 'r6,  r6r7'),
-  Reg( 'r7',  7, IsPreserved=1,          IsGPR = 1, IsInt=1,               Aliases= 'r7,  r6r7'),
-  Reg( 'r8',  8, IsPreserved=1,          IsGPR = 1, IsInt=1,               Aliases= 'r8,  r8r9'),
-  Reg( 'r9',  9, IsPreserved=1,          IsGPR = 1, IsInt=0,               Aliases= 'r9,  r8r9'),
-  Reg('r10', 10, IsPreserved=1,          IsGPR = 1, IsInt=1,               Aliases='r10, r10fp'),
-  Reg( 'fp', 11, IsPreserved=1,          IsGPR = 1, IsInt=1, IsFramePtr=1, Aliases= 'fp, r10fp'),
-  Reg( 'ip', 12,   IsScratch=1,          IsGPR = 1, IsInt=0,               Aliases= 'ip'),
-  Reg( 'sp', 13,   IsScratch=0,          IsGPR = 1, IsInt=0, IsStackPtr=1, Aliases= 'sp'),
-  Reg( 'lr', 14,   IsScratch=0,          IsGPR = 1, IsInt=0,               Aliases= 'lr'),
-  Reg( 'pc', 15,   IsScratch=0,          IsGPR = 1, IsInt=0,               Aliases= 'pc'),
-]
-
-I64Pairs = [
-  Reg( 'r0r1',  0, AsmStr= 'r0, r1',   IsScratch=1, CCArg=1, IsI64Pair=1, Aliases= 'r0r1,  r0, r1'),
-  Reg( 'r2r3',  2, AsmStr= 'r2, r3',   IsScratch=1, CCArg=2, IsI64Pair=1, Aliases= 'r2r3,  r2, r3'),
-  Reg( 'r4r5',  4, AsmStr= 'r4, r5', IsPreserved=1,          IsI64Pair=1, Aliases= 'r4r5,  r4, r5'),
-  Reg( 'r6r7',  6, AsmStr= 'r6, r7', IsPreserved=1,          IsI64Pair=1, Aliases= 'r6r7,  r6, r7'),
-  Reg( 'r8r9',  8, AsmStr= 'r8, r9', IsPreserved=1,          IsI64Pair=0, Aliases= 'r8r9,  r8, r9'),
-  Reg('r10fp', 10, AsmStr='r10, fp', IsPreserved=1,          IsI64Pair=0, Aliases='r10fp, r10, fp'),
-]
-
-FP32 = [
-  Reg( 's0',  0,   IsScratch=1, CCArg=1,  IsFP32=1, Aliases= 's0, d0 , q0'),
-  Reg( 's1',  1,   IsScratch=1, CCArg=2,  IsFP32=1, Aliases= 's1, d0 , q0'),
-  Reg( 's2',  2,   IsScratch=1, CCArg=3,  IsFP32=1, Aliases= 's2, d1 , q0'),
-  Reg( 's3',  3,   IsScratch=1, CCArg=4,  IsFP32=1, Aliases= 's3, d1 , q0'),
-  Reg( 's4',  4,   IsScratch=1, CCArg=5,  IsFP32=1, Aliases= 's4, d2 , q1'),
-  Reg( 's5',  5,   IsScratch=1, CCArg=6,  IsFP32=1, Aliases= 's5, d2 , q1'),
-  Reg( 's6',  6,   IsScratch=1, CCArg=7,  IsFP32=1, Aliases= 's6, d3 , q1'),
-  Reg( 's7',  7,   IsScratch=1, CCArg=8,  IsFP32=1, Aliases= 's7, d3 , q1'),
-  Reg( 's8',  8,   IsScratch=1, CCArg=9,  IsFP32=1, Aliases= 's8, d4 , q2'),
-  Reg( 's9',  9,   IsScratch=1, CCArg=10, IsFP32=1, Aliases= 's9, d4 , q2'),
-  Reg('s10', 10,   IsScratch=1, CCArg=11, IsFP32=1, Aliases='s10, d5 , q2'),
-  Reg('s11', 11,   IsScratch=1, CCArg=12, IsFP32=1, Aliases='s11, d5 , q2'),
-  Reg('s12', 12,   IsScratch=1, CCArg=13, IsFP32=1, Aliases='s12, d6 , q3'),
-  Reg('s13', 13,   IsScratch=1, CCArg=14, IsFP32=1, Aliases='s13, d6 , q3'),
-  Reg('s14', 14,   IsScratch=1, CCArg=15, IsFP32=1, Aliases='s14, d7 , q3'),
-  Reg('s15', 15,   IsScratch=1, CCArg=16, IsFP32=1, Aliases='s15, d7 , q3'),
-  Reg('s16', 16, IsPreserved=1,           IsFP32=1, Aliases='s16, d8 , q4'),
-  Reg('s17', 17, IsPreserved=1,           IsFP32=1, Aliases='s17, d8 , q4'),
-  Reg('s18', 18, IsPreserved=1,           IsFP32=1, Aliases='s18, d9 , q4'),
-  Reg('s19', 19, IsPreserved=1,           IsFP32=1, Aliases='s19, d9 , q4'),
-  Reg('s20', 20, IsPreserved=1,           IsFP32=1, Aliases='s20, d10, q5'),
-  Reg('s21', 21, IsPreserved=1,           IsFP32=1, Aliases='s21, d10, q5'),
-  Reg('s22', 22, IsPreserved=1,           IsFP32=1, Aliases='s22, d11, q5'),
-  Reg('s23', 23, IsPreserved=1,           IsFP32=1, Aliases='s23, d11, q5'),
-  Reg('s24', 24, IsPreserved=1,           IsFP32=1, Aliases='s24, d12, q6'),
-  Reg('s25', 25, IsPreserved=1,           IsFP32=1, Aliases='s25, d12, q6'),
-  Reg('s26', 26, IsPreserved=1,           IsFP32=1, Aliases='s26, d13, q6'),
-  Reg('s27', 27, IsPreserved=1,           IsFP32=1, Aliases='s27, d13, q6'),
-  Reg('s28', 28, IsPreserved=1,           IsFP32=1, Aliases='s28, d14, q7'),
-  Reg('s29', 29, IsPreserved=1,           IsFP32=1, Aliases='s29, d14, q7'),
-  Reg('s30', 30, IsPreserved=1,           IsFP32=1, Aliases='s30, d15, q7'),
-  Reg('s31', 31, IsPreserved=1,           IsFP32=1, Aliases='s31, d15, q7'),
-]
-
-FP64 = [
-  Reg( 'd0',  0,   IsScratch=1, CCArg=1, IsFP64=1, Aliases= 'd0,  q0,  s0,  s1'),
-  Reg( 'd1',  1,   IsScratch=1, CCArg=2, IsFP64=1, Aliases= 'd1,  q0,  s2,  s3'),
-  Reg( 'd2',  2,   IsScratch=1, CCArg=3, IsFP64=1, Aliases= 'd2,  q1,  s4,  s5'),
-  Reg( 'd3',  3,   IsScratch=1, CCArg=4, IsFP64=1, Aliases= 'd3,  q1,  s6,  s7'),
-  Reg( 'd4',  4,   IsScratch=1, CCArg=5, IsFP64=1, Aliases= 'd4,  q2,  s8,  s9'),
-  Reg( 'd5',  5,   IsScratch=1, CCArg=6, IsFP64=1, Aliases= 'd5,  q2, s10, s11'),
-  Reg( 'd6',  6,   IsScratch=1, CCArg=7, IsFP64=1, Aliases= 'd6,  q3, s12, s13'),
-  Reg( 'd7',  7,   IsScratch=1, CCArg=8, IsFP64=1, Aliases= 'd7,  q3, s14, s15'),
-  Reg( 'd8',  8, IsPreserved=1,          IsFP64=1, Aliases= 'd8,  q4, s16, s17'),
-  Reg( 'd9',  9, IsPreserved=1,          IsFP64=1, Aliases= 'd9,  q4, s18, s19'),
-  Reg('d10', 10, IsPreserved=1,          IsFP64=1, Aliases='d10,  q5, s20, s21'),
-  Reg('d11', 11, IsPreserved=1,          IsFP64=1, Aliases='d11,  q5, s22, s23'),
-  Reg('d12', 12, IsPreserved=1,          IsFP64=1, Aliases='d12,  q6, s24, s25'),
-  Reg('d13', 13, IsPreserved=1,          IsFP64=1, Aliases='d13,  q6, s26, s27'),
-  Reg('d14', 14, IsPreserved=1,          IsFP64=1, Aliases='d14,  q7, s28, s29'),
-  Reg('d15', 15, IsPreserved=1,          IsFP64=1, Aliases='d15,  q7, s30, s31'),
-  Reg('d16', 16,   IsScratch=1,          IsFP64=1, Aliases='d16,  q8'),
-  Reg('d17', 17,   IsScratch=1,          IsFP64=1, Aliases='d17,  q8'),
-  Reg('d18', 18,   IsScratch=1,          IsFP64=1, Aliases='d18,  q9'),
-  Reg('d19', 19,   IsScratch=1,          IsFP64=1, Aliases='d19,  q9'),
-  Reg('d20', 20,   IsScratch=1,          IsFP64=1, Aliases='d20, q10'),
-  Reg('d21', 21,   IsScratch=1,          IsFP64=1, Aliases='d21, q10'),
-  Reg('d22', 22,   IsScratch=1,          IsFP64=1, Aliases='d22, q11'),
-  Reg('d23', 23,   IsScratch=1,          IsFP64=1, Aliases='d23, q11'),
-  Reg('d24', 24,   IsScratch=1,          IsFP64=1, Aliases='d24, q12'),
-  Reg('d25', 25,   IsScratch=1,          IsFP64=1, Aliases='d25, q12'),
-  Reg('d26', 26,   IsScratch=1,          IsFP64=1, Aliases='d26, q13'),
-  Reg('d27', 27,   IsScratch=1,          IsFP64=1, Aliases='d27, q13'),
-  Reg('d28', 28,   IsScratch=1,          IsFP64=1, Aliases='d28, q14'),
-  Reg('d29', 29,   IsScratch=1,          IsFP64=1, Aliases='d29, q14'),
-  Reg('d30', 30,   IsScratch=1,          IsFP64=1, Aliases='d30, q15'),
-  Reg('d31', 31,   IsScratch=1,          IsFP64=1, Aliases='d31, q15'),
-]
-
-Vec128 = [
-  Reg( 'q0',  0,   IsScratch=1, CCArg=1, IsVec128=1, Aliases= 'q0,  d0,  d1,  s0,  s1,  s2,  s3'),
-  Reg( 'q1',  1,   IsScratch=1, CCArg=2, IsVec128=1, Aliases= 'q1,  d2,  d3,  s4,  s5,  s6,  s7'),
-  Reg( 'q2',  2,   IsScratch=1, CCArg=3, IsVec128=1, Aliases= 'q2,  d4,  d5,  s8,  s9, s10, s11'),
-  Reg( 'q3',  3,   IsScratch=1, CCArg=4, IsVec128=1, Aliases= 'q3,  d6,  d7, s12, s13, s14, s15'),
-  Reg( 'q4',  4, IsPreserved=1,          IsVec128=1, Aliases= 'q4,  d8,  d9, s16, s17, s18, s19'),
-  Reg( 'q5',  5, IsPreserved=1,          IsVec128=1, Aliases= 'q5, d10, d11, s20, s21, s22, s23'),
-  Reg( 'q6',  6, IsPreserved=1,          IsVec128=1, Aliases= 'q6, d12, d13, s24, s25, s26, s27'),
-  Reg( 'q7',  7, IsPreserved=1,          IsVec128=1, Aliases= 'q7, d14, d15, s28, s29, s30, s31'),
-  Reg( 'q8',  8,   IsScratch=1,          IsVec128=1, Aliases= 'q8, d16, d17'),
-  Reg( 'q9',  9,   IsScratch=1,          IsVec128=1, Aliases= 'q9, d18, d19'),
-  Reg('q10', 10,   IsScratch=1,          IsVec128=1, Aliases='q10, d20, d21'),
-  Reg('q11', 11,   IsScratch=1,          IsVec128=1, Aliases='q11, d22, d23'),
-  Reg('q12', 12,   IsScratch=1,          IsVec128=1, Aliases='q12, d24, d25'),
-  Reg('q13', 13,   IsScratch=1,          IsVec128=1, Aliases='q13, d26, d27'),
-  Reg('q14', 14,   IsScratch=1,          IsVec128=1, Aliases='q14, d28, d29'),
-  Reg('q15', 15,   IsScratch=1,          IsVec128=1, Aliases='q15, d30, d31'),
-]
-
-# TODO(jpp): Fix the pop emission, then emit FP64/Vec128 reverted.
-RegClasses = [('GPR', GPRs),  ('I64PAIR', I64Pairs), ('FP32', FP32),
-              ('FP64', FP64), ('VEC128', Vec128)]
-
-AllRegs = {}
-for _, RegClass in RegClasses:
-  for Reg in RegClass:
-    assert Reg.Name not in AllRegs
-    AllRegs[Reg.Name] = Reg
-
-for _, RegClass in RegClasses:
-  for Reg in RegClass:
-    for Alias in AllRegs[Reg.Name].Features.Aliases().Aliases:
-      assert AllRegs[Alias].IsAnAliasOf(Reg), '%s VS %s' % (Reg, AllRegs[Alias])
-      assert (AllRegs[Alias].Features.LivesInGPR() ==
-                 Reg.Features.LivesInGPR()), '%s VS %s' % (Reg, AllRegs[Alias])
-      assert (AllRegs[Alias].Features.LivesInVFP() ==
-                 Reg.Features.LivesInVFP()), '%s VS %s' % (Reg, AllRegs[Alias])
-
-print ("// This file was auto generated by the {script} script.\n"
-       "// Do not modify it: modify the script instead.\n"
-       "\n"
-       "#ifndef SUBZERO_SRC_ICEREGISTERSARM32_DEF\n"
-       "#define SUBZERO_SRC_ICEREGISTERSARM32_DEF\n".format(script=os.path.basename(sys.argv[0])))
-
-for Name, RegClass in RegClasses:
-  print '//{xmacro}'.format(xmacro=Reg.DefiningXMacro())
-  print "#define REGARM32_%s_TABLE" % Name,
-  for Reg in RegClass:
-    sys.stdout.write(' \\\n  X({Reg})'.format(Reg=Reg))
-  print '\n'
-print "#endif // SUBZERO_SRC_ICEREGISTERSARM32_DEF",
diff --git a/third_party/subzero/pydir/gen_test_arith_ll.py b/third_party/subzero/pydir/gen_test_arith_ll.py
deleted file mode 100644
index 05ed9a5..0000000
--- a/third_party/subzero/pydir/gen_test_arith_ll.py
+++ /dev/null
@@ -1,56 +0,0 @@
-def mangle(op, op_type, signed):
-  # suffixMap gives the C++ name-mangling suffixes for a function that takes two
-  # arguments of the given type.  The first entry is for the unsigned version of
-  # the type, and the second entry is for the signed version.
-  suffixMap = { 'i1': ['bb', 'bb'],
-                'i8': ['hh', 'aa'],
-                'i16': ['tt', 'ss'],
-                'i32': ['jj', 'ii'],
-                'i64': ['yy', 'xx'],
-                'float': ['ff', 'ff'],
-                'double': ['dd', 'dd'],
-                '<4 x i32>': ['Dv4_jS_', 'Dv4_iS_'],
-                '<8 x i16>': ['Dv8_tS_', 'Dv8_sS_'],
-                '<16 x i8>': ['Dv16_hS_', 'Dv16_aS_'],
-                '<4 x float>': ['Dv4_fS_', 'Dv4_fS_'],
-              }
-  base = 'test' + op.capitalize()
-  return '_Z' + str(len(base)) + base + suffixMap[op_type][signed]
-
-def arith(Native, Type, Op):
-  _TEMPLATE_ = """
-define internal {{native}} @{{name}}({{native}} %a, {{native}} %b) {{{{
-  {trunc_a}
-  {trunc_b}
-  %result{{trunc}} = {{op}} {{type}} %a{{trunc}}, %b{{trunc}}
-  {zext}
-  ret {{native}} %result
-}}}}"""
-
-  Signed = Op in {'sdiv', 'srem', 'ashr'}
-  Name = mangle(Op, Type, Signed)
-  # Most i1 operations are invalid for PNaCl, so map them to i32.
-  if Type == 'i1' and (Op not in {'and', 'or', 'xor'}):
-    Type = 'i32'
-  x = _TEMPLATE_.format(
-      trunc_a = '%a.trunc = trunc {native} %a to {type}' if
-          Native != Type else '',
-      trunc_b = '%b.trunc = trunc {native} %b to {type}' if
-          Native != Type else '',
-      zext = '%result = ' + ('sext' if Signed else 'zext') +
-          ' {type} %result.trunc to {native}' if Native != Type else '')
-  lines = x.format(native=Native, type=Type, op=Op, name=Name,
-                   trunc='.trunc' if Native != Type else '')
-  # Strip trailing whitespace from each line to keep git happy.
-  print '\n'.join([line.rstrip() for line in lines.splitlines()])
-
-for op in ['add', 'sub', 'mul', 'sdiv', 'udiv', 'srem', 'urem', 'shl', 'lshr',
-           'ashr', 'and', 'or', 'xor']:
-  for op_type in ['i1', 'i8', 'i16', 'i32']:
-    arith('i32', op_type, op)
-  for op_type in ['i64', '<4 x i32>', '<8 x i16>', '<16 x i8>']:
-    arith(op_type, op_type, op)
-
-for op in ['fadd', 'fsub', 'fmul', 'fdiv', 'frem']:
-  for op_type in ['float', 'double', '<4 x float>']:
-    arith(op_type, op_type, op)
diff --git a/third_party/subzero/pydir/if.py b/third_party/subzero/pydir/if.py
deleted file mode 100755
index 86923c6..0000000
--- a/third_party/subzero/pydir/if.py
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env python2
-
-import argparse
-import os
-import sys
-
-from utils import shellcmd
-
-def main():
-  """Run the specified command only if conditions are met.
-
-     Two conditions are checked. First, the CONDITION must be true.
-     Secondly, all NEED names must be in the set of HAVE names.
-     If both conditions are met, the command defined by the remaining
-     arguments is run in a shell.
-  """
-  argparser = argparse.ArgumentParser(
-    description='    ' + main.__doc__,
-    formatter_class=argparse.ArgumentDefaultsHelpFormatter)
-  argparser.add_argument('--cond', choices={'true', 'false'} , required=False,
-                         default='true', metavar='CONDITION',
-                         help='Condition to test.')
-  argparser.add_argument('--need', required=False, default=[],
-                         action='append', metavar='NEED',
-                         help='Needed name. May be repeated.')
-  argparser.add_argument('--have', required=False, default=[],
-                         action='append', metavar='HAVE',
-                         help='Name you have. May be repeated.')
-  argparser.add_argument('--echo-cmd', required=False,
-                         action='store_true',
-                         help='Trace the command before running.')
-  argparser.add_argument('--command', nargs=argparse.REMAINDER,
-                         help='Command to run if attributes found.')
-
-  args = argparser.parse_args()
-
-  # Quit early if no command to run.
-  if not args.command:
-    raise RuntimeError("No command argument(s) specified for ifatts")
-
-  if args.cond == 'true' and set(args.need) <= set(args.have):
-    stdout_result = shellcmd(args.command, echo=args.echo_cmd)
-    if not args.echo_cmd:
-      sys.stdout.write(stdout_result)
-
-if __name__ == '__main__':
-  main()
-  sys.exit(0)
diff --git a/third_party/subzero/pydir/run-pnacl-sz.py b/third_party/subzero/pydir/run-pnacl-sz.py
deleted file mode 100755
index eee5b49..0000000
--- a/third_party/subzero/pydir/run-pnacl-sz.py
+++ /dev/null
@@ -1,221 +0,0 @@
-#!/usr/bin/env python2
-
-import argparse
-import itertools
-import os
-import re
-import subprocess
-import sys
-import tempfile
-
-from utils import FindBaseNaCl, GetObjdumpCmd, shellcmd
-
-
-def TargetAssemblerFlags(target, sandboxed):
-  # TODO(reed kotler). Need to find out exactly we need to
-  # add here for Mips32.
-  flags = { 'x8632': ['-triple=%s' % ('i686-nacl' if sandboxed else 'i686')],
-            'x8664': ['-triple=%s' % (
-                          'x86_64-nacl' if sandboxed else 'x86_64')],
-            'arm32': ['-triple=%s' % (
-                          'armv7a-nacl' if sandboxed else 'armv7a'),
-                      '-mcpu=cortex-a9', '-mattr=+neon'],
-            'mips32': ['-triple=%s' % (
-                          'mipsel-nacl' if sandboxed else 'mipsel'),
-                       '-mcpu=mips32'] }
-  return flags[target]
-
-
-def TargetDisassemblerFlags(target):
-  flags = { 'x8632': ['-Mintel'],
-            'x8664': ['-Mintel'],
-            'arm32': [],
-            'mips32':[] }
-  return flags[target]
-
-def main():
-    """Run the pnacl-sz compiler on an llvm file.
-
-    Takes an llvm input file, freezes it into a pexe file, converts
-    it to a Subzero program, and finally compiles it.
-    """
-    argparser = argparse.ArgumentParser(
-        description='    ' + main.__doc__,
-        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
-    argparser.add_argument('--input', '-i', required=True,
-                           help='LLVM source file to compile')
-    argparser.add_argument('--output', '-o', required=False,
-                           help='Output file to write')
-    argparser.add_argument('--insts', required=False,
-                           action='store_true',
-                           help='Stop after translating to ' +
-                           'Subzero instructions')
-    argparser.add_argument('--no-local-syms', required=False,
-                           action='store_true',
-                           help="Don't keep local symbols in the pexe file")
-    argparser.add_argument('--llvm', required=False,
-                           action='store_true',
-                           help='Parse pexe into llvm IR first, then ' +
-                           'convert to Subzero')
-    argparser.add_argument('--llvm-source', required=False,
-                           action='store_true',
-                           help='Parse source directly into llvm IR ' +
-                           '(without generating a pexe), then ' +
-                           'convert to Subzero')
-    argparser.add_argument(
-        '--pnacl-sz', required=False, default='./pnacl-sz', metavar='PNACL-SZ',
-        help="Subzero translator 'pnacl-sz'")
-    argparser.add_argument('--pnacl-bin-path', required=False,
-                           default=(
-                             '{root}/toolchain/linux_x86/pnacl_newlib_raw/bin'
-                           ).format(root=FindBaseNaCl()),
-                           metavar='PNACL_BIN_PATH',
-                           help='Path to LLVM & Binutils executables ' +
-                                '(e.g. for building PEXE files)')
-    argparser.add_argument('--assemble', required=False,
-                           action='store_true',
-                           help='Assemble the output')
-    argparser.add_argument('--disassemble', required=False,
-                           action='store_true',
-                           help='Disassemble the assembled output')
-    argparser.add_argument('--dis-flags', required=False,
-                           action='append', default=[],
-                           help='Add a disassembler flag')
-    argparser.add_argument('--filetype', default='iasm', dest='filetype',
-                           choices=['obj', 'asm', 'iasm'],
-                           help='Output file type.  Default %(default)s')
-    argparser.add_argument('--forceasm', required=False, action='store_true',
-                           help='Force --filetype=asm')
-    argparser.add_argument('--target', default='x8632', dest='target',
-                           choices=['x8632','x8664','arm32','mips32'],
-                           help='Target architecture.  Default %(default)s')
-    argparser.add_argument('--echo-cmd', required=False,
-                           action='store_true',
-                           help='Trace command that generates ICE instructions')
-    argparser.add_argument('--tbc', required=False, action='store_true',
-                           help='Input is textual bitcode (not .ll)')
-    argparser.add_argument('--expect-fail', required=False, action='store_true',
-                           help='Negate success of run by using LLVM not')
-    argparser.add_argument('--allow-pnacl-reader-error-recovery',
-                           action='store_true',
-                           help='Continue parsing after first error')
-    argparser.add_argument('--args', '-a', nargs=argparse.REMAINDER,
-                           default=[],
-                           help='Remaining arguments are passed to pnacl-sz')
-    argparser.add_argument('--sandbox', required=False, action='store_true',
-                           help='Sandboxes the generated code')
-
-    args = argparser.parse_args()
-    pnacl_bin_path = args.pnacl_bin_path
-    llfile = args.input
-
-    if args.llvm and args.llvm_source:
-      raise RuntimeError("Can't specify both '--llvm' and '--llvm-source'")
-
-    if args.llvm_source and args.no_local_syms:
-      raise RuntimeError("Can't specify both '--llvm-source' and " +
-                         "'--no-local-syms'")
-
-    if args.llvm_source and args.tbc:
-      raise RuntimeError("Can't specify both '--tbc' and '--llvm-source'")
-
-    if args.llvm and args.tbc:
-      raise RuntimeError("Can't specify both '--tbc' and '--llvm'")
-
-    if args.forceasm:
-      if args.expect_fail:
-        args.forceasm = False
-      elif args.filetype == 'asm':
-        pass
-      elif args.filetype == 'iasm':
-        # TODO(sehr) implement forceasm for iasm.
-        pass
-      elif args.filetype == 'obj':
-        args.filetype = 'asm'
-        args.assemble = True
-
-    cmd = []
-    if args.tbc:
-      cmd = [os.path.join(pnacl_bin_path, 'pnacl-bcfuzz'), llfile,
-             '-bitcode-as-text', '-output', '-', '|']
-    elif not args.llvm_source:
-      cmd = [os.path.join(pnacl_bin_path, 'llvm-as'), llfile, '-o', '-', '|',
-             os.path.join(pnacl_bin_path, 'pnacl-freeze')]
-      if not args.no_local_syms:
-        cmd += ['--allow-local-symbol-tables']
-      cmd += ['|']
-    if args.expect_fail:
-      cmd += [os.path.join(pnacl_bin_path, 'not')]
-    cmd += [args.pnacl_sz]
-    cmd += ['--target', args.target]
-    if args.sandbox:
-      cmd += ['-sandbox']
-    if args.insts:
-      # If the tests are based on '-verbose inst' output, force
-      # single-threaded translation because dump output does not get
-      # reassembled into order.
-      cmd += ['-verbose', 'inst,global_init', '-notranslate', '-threads=0']
-    elif args.allow_pnacl_reader_error_recovery:
-      cmd += ['-allow-pnacl-reader-error-recovery', '-threads=0']
-    if not args.llvm_source:
-      cmd += ['--bitcode-format=pnacl']
-      if not args.no_local_syms:
-        cmd += ['--allow-local-symbol-tables']
-    if args.llvm or args.llvm_source:
-      cmd += ['--build-on-read=0']
-    else:
-      cmd += ['--build-on-read=1']
-    cmd += ['--filetype=' + args.filetype]
-    cmd += ['--emit-revision=0']
-    script_name = os.path.basename(sys.argv[0])
-    for _, arg in enumerate(args.args):
-      # Redirecting the output file needs to be done through the script
-      # because forceasm may introduce a new temporary file between pnacl-sz
-      # and llvm-mc.  Similar issues could occur when setting filetype, target,
-      # or sandbox through --args.  Filter and report an error.
-      if re.search('^-?-(o|output|filetype|target|sandbox)(=.+)?$', arg):
-        preferred_option = '--output' if re.search('^-?-o(=.+)?$', arg) else arg
-        print 'Option should be set using:'
-        print '    %s ... %s ... --args' % (script_name, preferred_option)
-        print 'rather than:'
-        print '    %s ... --args %s ...' % (script_name, arg)
-        exit(1)
-    asm_temp = None
-    output_file_name = None
-    keep_output_file = False
-    if args.output:
-      output_file_name = args.output
-      keep_output_file = True
-    cmd += args.args
-    if args.llvm_source:
-      cmd += [llfile]
-    if args.assemble or args.disassemble:
-      if not output_file_name:
-        # On windows we may need to close the file first before it can be
-        # re-opened by the other tools, so don't do delete-on-close,
-        # and instead manually delete.
-        asm_temp = tempfile.NamedTemporaryFile(delete=False)
-        asm_temp.close()
-        output_file_name = asm_temp.name
-    if args.assemble and args.filetype != 'obj':
-      cmd += (['|', os.path.join(pnacl_bin_path, 'llvm-mc')] +
-              TargetAssemblerFlags(args.target, args.sandbox) +
-              ['-filetype=obj', '-o', output_file_name])
-    elif output_file_name:
-      cmd += ['-o', output_file_name]
-    if args.disassemble:
-      # Show wide instruction encodings, diassemble, show relocs and
-      # dissasemble zeros.
-      cmd += (['&&', os.path.join(pnacl_bin_path, GetObjdumpCmd(args.target))] +
-              args.dis_flags +
-              ['-w', '-d', '-r', '-z'] + TargetDisassemblerFlags(args.target) +
-              [output_file_name])
-
-    stdout_result = shellcmd(cmd, echo=args.echo_cmd)
-    if not args.echo_cmd:
-      sys.stdout.write(stdout_result)
-    if asm_temp and not keep_output_file:
-      os.remove(output_file_name)
-
-if __name__ == '__main__':
-    main()
diff --git a/third_party/subzero/pydir/sz-clang++.py b/third_party/subzero/pydir/sz-clang++.py
deleted file mode 100755
index 121dd5a..0000000
--- a/third_party/subzero/pydir/sz-clang++.py
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/env python2
-
-import sz_driver
-
-if __name__ == '__main__':
-  sz_driver.run(is_cpp=True)
diff --git a/third_party/subzero/pydir/sz-clang.py b/third_party/subzero/pydir/sz-clang.py
deleted file mode 100755
index 7b93ea0..0000000
--- a/third_party/subzero/pydir/sz-clang.py
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/env python2
-
-import sz_driver
-
-if __name__ == '__main__':
-  sz_driver.run(is_cpp=False)
diff --git a/third_party/subzero/pydir/sz_clang_dummies.c b/third_party/subzero/pydir/sz_clang_dummies.c
deleted file mode 100644
index d0abc94..0000000
--- a/third_party/subzero/pydir/sz_clang_dummies.c
+++ /dev/null
@@ -1,13 +0,0 @@
-#include <stdlib.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void *__asan_dummy_calloc(size_t nmemb, size_t size) {
-  return calloc(nmemb, size);
-}
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
diff --git a/third_party/subzero/pydir/sz_driver.py b/third_party/subzero/pydir/sz_driver.py
deleted file mode 100644
index f27d678..0000000
--- a/third_party/subzero/pydir/sz_driver.py
+++ /dev/null
@@ -1,88 +0,0 @@
-import os
-import shutil
-import subprocess
-import sys
-import tempfile
-
-from utils import FindBaseNaCl, shellcmd
-
-def subsToMacros(subs, src):
-    macros = ['#include <stddef.h>',
-              '#ifdef __cplusplus',
-              'extern "C" {',
-              '#endif']
-    for func in subs:
-        args = [('{atype} a{num}').format(atype=atype, num=i) for
-                i, atype in enumerate(subs[func]['sig'][1:])]
-        macros.append((
-            '{ftype} {name}({args});'
-            ).format(ftype=subs[func]['sig'][0],
-                     name=subs[func]['sub'],
-                     args=', '.join(args)))
-        macros.append((
-            '#define {func}(args...) ({sub}(args))'
-            ).format(func=func, sub=subs[func]['sub']))
-    macros += ['#ifdef __cplusplus',
-               '} // extern "C"',
-               '#endif',
-               '#line 1 "{src}"'.format(src=src)]
-    return '\n'.join(macros) + '\n'
-
-def run(is_cpp):
-    """Passes its arguments directly to pnacl-clang.
-
-    If -fsanitize-address is specified, extra information is passed to
-    pnacl-clang to ensure that later instrumentation in pnacl-sz can be
-    performed. For example, clang automatically inlines many memory allocation
-    functions, so this script will redefine them at compile time to make sure
-    they can be correctly instrumented by pnacl-sz.
-    """
-    pnacl_root = FindBaseNaCl()
-    dummy_subs = {'calloc': {'sig': ['void *', 'size_t', 'size_t'],
-                             'sub': '__asan_dummy_calloc'},
-                  '_calloc': {'sig': ['void *', 'size_t', 'size_t'],
-                              'sub': '__asan_dummy_calloc'}}
-    subs_src = (
-        '{root}/toolchain_build/src/subzero/pydir/sz_clang_dummies.c'
-        ).format(root=pnacl_root)
-    clang = (
-        '{root}/toolchain/linux_x86/pnacl_newlib_raw/bin/pnacl-clang{pp}'
-        ).format(root=pnacl_root, pp='++' if is_cpp else '')
-    args = sys.argv
-    args[0] = clang
-    tmp_dir = ''
-    if '-fsanitize-address' in args:
-        args.remove('-fsanitize-address')
-        include_dirs = set()
-        tmp_dir = tempfile.mkdtemp()
-        for i, arg in enumerate(args[1:], 1):
-            if not os.path.isfile(arg):
-                continue
-            src = os.path.basename(arg)
-            ext = os.path.splitext(arg)[1]
-            if ext in ['.c', '.cc', '.cpp']:
-                include_dirs |= {os.path.dirname(arg)}
-                dest_name = os.path.join(tmp_dir, src)
-                with open(dest_name, 'w') as dest:
-                    dest.write(subsToMacros(dummy_subs, arg))
-                    with open(arg) as src:
-                        for line in src:
-                            dest.write(line)
-                args[i] = dest_name
-        # If linking (not single file compilation) then add dummy definitions
-        if not ('-o' in args and
-                ('-c' in args or '-S' in args or '-E' in args)):
-            args.append(subs_src)
-        for d in include_dirs:
-            args.append('-iquote {d}'.format(d=d))
-        if '-fno-inline' not in args:
-            args.append('-fno-inline')
-    err_code = 0
-    try:
-        shellcmd(args, echo=True)
-    except subprocess.CalledProcessError as e:
-        print e.output
-        err_code = e.returncode
-    if tmp_dir != '':
-        shutil.rmtree(tmp_dir)
-    exit(err_code)
diff --git a/third_party/subzero/pydir/szbuild.py b/third_party/subzero/pydir/szbuild.py
deleted file mode 100755
index 3b8a1f5..0000000
--- a/third_party/subzero/pydir/szbuild.py
+++ /dev/null
@@ -1,475 +0,0 @@
-#!/usr/bin/env python2
-
-import argparse
-import os
-import pipes
-import re
-import sys
-
-from utils import FindBaseNaCl, GetObjcopyCmd, get_sfi_string, shellcmd
-
-def NewerThanOrNotThere(old_path, new_path):
-    """Returns whether old_path is newer than new_path.
-
-    Also returns true if either path doesn't exist.
-    """
-    if not (os.path.exists(old_path) and os.path.exists(new_path)):
-        return True
-    return os.path.getmtime(old_path) > os.path.getmtime(new_path)
-
-def BuildRegex(patterns, syms):
-    """Build a regular expression string for inclusion or exclusion.
-
-    Creates a regex string from an array of patterns and an array
-    of symbol names.  Each element in the patterns array is either a
-    regex, or a range of entries in the symbol name array, e.g. '2:9'.
-    """
-    pattern_list = []
-    for pattern in patterns:
-        if pattern[0].isdigit() or pattern[0] == ':':
-            # Legitimate symbols or regexes shouldn't start with a
-            # digit or a ':', so interpret the pattern as a range.
-            interval = pattern.split(':')
-            if len(interval) == 1:
-                # Treat singleton 'n' as 'n:n+1'.
-                lower = int(interval[0])
-                upper = lower + 1
-            elif len(interval) == 2:
-                # Handle 'a:b', 'a:', and ':b' with suitable defaults.
-                lower = int(interval[0]) if len(interval[0]) else 0
-                upper = int(interval[1]) if len(interval[1]) else len(syms)
-            else:
-                print 'Invalid range syntax: {p}'.format(p=pattern)
-                exit(1)
-            pattern = '$|^'.join([re.escape(p) for p in syms[lower:upper]])
-        pattern_list.append('^' + pattern + '$')
-    return '|'.join(pattern_list) if len(pattern_list) else '^$'
-
-def MatchSymbol(sym, re_include, re_exclude, default_match):
-    """Match a symbol name against inclusion/exclusion rules.
-
-    Returns True or False depending on whether the given symbol
-    matches the compiled include or exclude regexes.  The default is
-    returned if neither the include nor the exclude regex matches.
-    """
-    if re_exclude.match(sym):
-        # Always honor an explicit exclude before considering
-        # includes.
-        return False
-    if re_include.match(sym):
-        return True
-    return default_match
-
-def AddOptionalArgs(argparser):
-    argparser.add_argument('--force', dest='force', type=int, choices=[0, 1],
-                           default=1,
-                           help='Force all re-translations of the pexe.' +
-                                ' Default %(default)s.')
-    argparser.add_argument('--include', '-i', default=[], dest='include',
-                           action='append',
-                           help='Subzero symbols to include ' +
-                                '(regex or line range)')
-    argparser.add_argument('--exclude', '-e', default=[], dest='exclude',
-                           action='append',
-                           help='Subzero symbols to exclude ' +
-                                '(regex or line range)')
-    argparser.add_argument('--output', '-o', default='a.out', dest='output',
-                           action='store',
-                           help='Output executable. Default %(default)s.')
-    argparser.add_argument('-O', default='2', dest='optlevel',
-                           choices=['m1', '-1', '0', '1', '2'],
-                           help='Optimization level ' +
-                                '(m1 and -1 are equivalent).' +
-                                ' Default %(default)s.')
-    argparser.add_argument('--filetype', default='iasm', dest='filetype',
-                           choices=['obj', 'asm', 'iasm'],
-                           help='Output file type.  Default %(default)s.')
-    argparser.add_argument('--sandbox', dest='sandbox', action='store_true',
-                           help='Enable sandboxing in the translator')
-    argparser.add_argument('--nonsfi', dest='nonsfi', action='store_true',
-                           help='Enable Non-SFI in the translator')
-    argparser.add_argument('--enable-block-profile',
-                           dest='enable_block_profile', action='store_true',
-                           help='Enable basic block profiling.')
-    argparser.add_argument('--target', default='x8632', dest='target',
-                           choices=['arm32', 'x8632', 'x8664'],
-                           help='Generate code for specified target.')
-    argparser.add_argument('--verbose', '-v', dest='verbose',
-                           action='store_true',
-                           help='Display some extra debugging output')
-    argparser.add_argument('--sz', dest='sz_args', action='append', default=[],
-                           help='Extra arguments for Subzero')
-    argparser.add_argument('--llc', dest='llc_args', action='append',
-                           default=[], help='Extra arguments for llc')
-    argparser.add_argument('--no-sz', dest='nosz', action='store_true',
-                           help='Run only post-Subzero build steps')
-    argparser.add_argument('--fsanitize-address', dest='asan',
-                           action='store_true',
-                           help='Instrument with AddressSanitizer')
-
-def LinkSandbox(objs, exe, target, verbose=True):
-    assert target in ('x8632', 'x8664', 'arm32'), \
-        '-sandbox is not available for %s' % target
-    nacl_root = FindBaseNaCl()
-    gold = ('{root}/toolchain/linux_x86/pnacl_newlib_raw/bin/' +
-            'le32-nacl-ld.gold').format(root=nacl_root)
-    target_lib_dir = {
-      'arm32': 'arm',
-      'x8632': 'x86-32',
-      'x8664': 'x86-64',
-    }[target]
-    linklib = ('{root}/toolchain/linux_x86/pnacl_newlib_raw/translator/' +
-               '{target_dir}/lib').format(root=nacl_root,
-                                          target_dir=target_lib_dir)
-    shellcmd([gold,
-              '-nostdlib',
-              '--no-fix-cortex-a8',
-              '--eh-frame-hdr',
-              '-z', 'text',
-              #'-z', 'noexecstack',
-              '--build-id',
-              '--entry=__pnacl_start',
-              '-static', #'-pie',
-              '{linklib}/crtbegin.o'.format(linklib=linklib)] +
-             objs +
-             [('{root}/toolchain_build/src/subzero/build/runtime/' +
-               'szrt_sb_{target}.o').format(root=nacl_root, target=target),
-              '{linklib}/libpnacl_irt_shim_dummy.a'.format(linklib=linklib),
-              '--start-group',
-              '{linklib}/libgcc.a'.format(linklib=linklib),
-              '{linklib}/libcrt_platform.a'.format(linklib=linklib),
-              '--end-group',
-              '{linklib}/crtend.o'.format(linklib=linklib),
-              '--undefined=_start',
-              '--defsym=__Sz_AbsoluteZero=0',
-              #'--defsym=_begin=0',
-              '-o', exe
-             ], echo=verbose)
-
-def LinkNonsfi(objs, exe, target, verbose=True):
-    nacl_root = FindBaseNaCl()
-    gold = ('{root}/toolchain/linux_x86/pnacl_newlib_raw/bin/' +
-            'le32-nacl-ld.gold').format(root=nacl_root)
-    target_lib_dir = {
-      'arm32': 'arm-nonsfi',
-      'x8632': 'x86-32-nonsfi',
-    }[target]
-    linklib = ('{root}/toolchain/linux_x86/pnacl_newlib_raw/translator/' +
-               '{target_dir}/lib').format(root=nacl_root,
-                                          target_dir=target_lib_dir)
-    shellcmd([gold,
-              '-nostdlib',
-              '--no-fix-cortex-a8',
-              '--eh-frame-hdr',
-              '-z', 'text',
-              '-z', 'noexecstack',
-              '--build-id',
-              '--entry=__pnacl_start',
-              '-pie',
-              '{linklib}/crtbegin.o'.format(linklib=linklib)] +
-             objs +
-             [('{root}/toolchain_build/src/subzero/build/runtime/' +
-               'szrt_nonsfi_{target}.o').format(root=nacl_root, target=target),
-              '{linklib}/libpnacl_irt_shim_dummy.a'.format(linklib=linklib),
-              '--start-group',
-              '{linklib}/libgcc.a'.format(linklib=linklib),
-              '{linklib}/libcrt_platform.a'.format(linklib=linklib),
-              '--end-group',
-              '{linklib}/crtend.o'.format(linklib=linklib),
-              '--undefined=_start',
-              '--defsym=__Sz_AbsoluteZero=0',
-              '--defsym=_begin=0',
-              '-o', exe
-             ], echo=verbose)
-
-def LinkNative(objs, exe, target, verbose=True):
-    nacl_root = FindBaseNaCl()
-    linker = {
-      'arm32': '/usr/bin/arm-linux-gnueabihf-g++',
-      'mips32': '/usr/bin/mipsel-linux-gnu-g++',
-      'x8632': ('{root}/../third_party/llvm-build/Release+Asserts/bin/clang'
-               ).format(root=nacl_root),
-      'x8664': ('{root}/../third_party/llvm-build/Release+Asserts/bin/clang'
-               ).format(root=nacl_root)
-    }[target]
-
-    extra_linker_args = {
-      'arm32': ['-mcpu=cortex-a9'],
-      'x8632': ['-m32'],
-      'x8664': ['-mx32']
-    }[target]
-
-    lib_dir = {
-      'arm32': 'arm-linux',
-      'x8632': 'x86-32-linux',
-      'x8664': 'x86-64-linux',
-    }[target]
-
-    shellcmd([linker] +
-             extra_linker_args +
-             objs +
-             ['-o', exe,
-              ('{root}/toolchain/linux_x86/pnacl_newlib_raw/translator/' +
-               '{lib_dir}/lib/' +
-               '{{unsandboxed_irt,irt_random,irt_query_list}}.o').format(
-                   root=nacl_root, lib_dir=lib_dir),
-              ('{root}/toolchain_build/src/subzero/build/runtime/' +
-               'szrt_native_{target}.o').format(root=nacl_root, target=target),
-              '-lm', '-lpthread', '-lrt',
-              '-Wl,--defsym=__Sz_AbsoluteZero=0'
-             ], echo=verbose)
-
-def main():
-    """Create a hybrid translation from Subzero and llc.
-
-    Takes a finalized pexe and builds a native executable as a hybrid of Subzero
-    and llc translated bitcode.  Linker tricks are used to determine whether
-    Subzero or llc generated symbols are used, on a per-symbol basis.
-
-    By default, for every symbol, its Subzero version is used.  Subzero and llc
-    symbols can be selectively enabled/disabled via regular expressions on the
-    symbol name, or by ranges of lines in this program's auto-generated symbol
-    file.
-
-    For each symbol, the --exclude arguments are first checked (the symbol is
-    'rejected' on a match), followed by the --include arguments (the symbol is
-    'accepted' on a match), followed by unconditional 'rejection'.  The Subzero
-    version is used for an 'accepted' symbol, and the llc version is used for a
-    'rejected' symbol.
-
-    Each --include and --exclude argument can be a regular expression or a range
-    of lines in the symbol file.  Each regular expression is wrapped inside
-    '^$', so if you want a substring match on 'foo', use '.*foo.*' instead.
-    Ranges use python-style 'first:last' notation, so e.g. use '0:10' or ':10'
-    for the first 10 lines of the file, or '1' for the second line of the file.
-
-    If no --include or --exclude arguments are given, the executable is produced
-    entirely using Subzero, without using llc or linker tricks.
-
-    When using the --force=0 option, this script uses file modification
-    timestamps to determine whether llc and Subzero re-translation are needed.
-    It checks timestamps of llc, pnacl-sz, and the pexe against the translated
-    object files to determine the minimal work necessary.  The --force=1 option
-    (default) suppresses those checks and re-translates everything.
-
-    This script expects various PNaCl and LLVM tools to be found within the
-    native_client tree.  When changes are made to these tools, copy them this
-    way:
-      cd native_client
-      toolchain_build/toolchain_build_pnacl.py llvm_x86_64_linux \\
-      --install=toolchain/linux_x86/pnacl_newlib_raw
-    """
-    argparser = argparse.ArgumentParser(
-        description='    ' + main.__doc__,
-        formatter_class=argparse.RawTextHelpFormatter)
-    AddOptionalArgs(argparser)
-    argparser.add_argument('pexe', help='Finalized pexe to translate')
-    args = argparser.parse_args()
-    pexe = args.pexe
-    exe = args.output
-    ProcessPexe(args, pexe, exe)
-
-def ProcessPexe(args, pexe, exe):
-    [pexe_base, ext] = os.path.splitext(pexe)
-    if ext != '.pexe':
-        pexe_base = pexe
-    pexe_base_unescaped = pexe_base
-    pexe_base = pipes.quote(pexe_base)
-    pexe = pipes.quote(pexe)
-
-    nacl_root = FindBaseNaCl()
-    path_addition = (
-        '{root}/toolchain/linux_x86/pnacl_newlib_raw/bin'
-        ).format(root=nacl_root)
-    obj_llc = pexe_base + '.llc.o'
-    obj_sz = pexe_base + '.sz.o'
-    asm_sz = pexe_base + '.sz.s'
-    obj_llc_weak = pexe_base + '.weak.llc.o'
-    obj_sz_weak = pexe_base + '.weak.sz.o'
-    obj_partial = obj_sz  # overridden for hybrid mode
-    sym_llc = pexe_base + '.sym.llc.txt'
-    sym_sz = pexe_base + '.sym.sz.txt'
-    sym_sz_unescaped = pexe_base_unescaped + '.sym.sz.txt'
-    whitelist_sz = pexe_base + '.wl.sz.txt'
-    whitelist_sz_unescaped = pexe_base_unescaped + '.wl.sz.txt'
-    pnacl_sz = (
-        '{root}/toolchain_build/src/subzero/pnacl-sz'
-        ).format(root=nacl_root)
-    llcbin = '{base}/pnacl-llc'.format(base=path_addition)
-    gold = '{base}/le32-nacl-ld.gold'.format(base=path_addition)
-    objcopy = '{base}/{objcopy}'.format(base=path_addition,
-                                        objcopy=GetObjcopyCmd(args.target))
-    opt_level = args.optlevel
-    opt_level_map = { 'm1':'0', '-1':'0', '0':'0', '1':'1', '2':'2' }
-    hybrid = args.include or args.exclude
-    native = not args.sandbox and not args.nonsfi
-    if args.asan:
-        if args.sandbox or args.nonsfi:
-            print 'Can only use AddressSanitizer with a native build'
-            exit(1)
-        if '-fsanitize-address' not in args.sz_args:
-          args.sz_args.append('-fsanitize-address')
-
-    if hybrid and (args.force or
-                   NewerThanOrNotThere(pexe, obj_llc) or
-                   NewerThanOrNotThere(llcbin, obj_llc)):
-        arch = {
-          'arm32': 'arm' + get_sfi_string(args, 'v7', '-nonsfi', '-nonsfi'),
-          'x8632': 'x86-32' + get_sfi_string(args, '', '-nonsfi', '-linux'),
-          'x8664': 'x86-64' + get_sfi_string(args, '', '', '-linux')
-        }[args.target]
-
-        # Only run pnacl-translate in hybrid mode.
-        shellcmd(['{base}/pnacl-translate'.format(base=path_addition),
-                  '-split-module=1',
-                  '-ffunction-sections',
-                  '-fdata-sections',
-                  '-c',
-                  '-arch',  arch,
-                  '-O' + opt_level_map[opt_level],
-                  '--pnacl-driver-append-LLC_FLAGS_EXTRA=-externalize',
-                  '-o', obj_llc] +
-                 (['--pnacl-driver-verbose'] if args.verbose else []) +
-                 args.llc_args +
-                 [pexe],
-                 echo=args.verbose)
-        if native:
-            shellcmd((
-                '{objcopy} --redefine-sym _start=_user_start {obj}'
-                ).format(objcopy=objcopy, obj=obj_llc), echo=args.verbose)
-        # Generate llc syms file for consistency, even though it's not used.
-        shellcmd((
-            'nm {obj} | sed -n "s/.* [a-zA-Z] //p" > {sym}'
-            ).format(obj=obj_llc, sym=sym_llc), echo=args.verbose)
-
-    if (args.force or
-        NewerThanOrNotThere(pexe, obj_sz) or
-        NewerThanOrNotThere(pnacl_sz, obj_sz)):
-        if not args.nosz:
-            # Run pnacl-sz regardless of hybrid mode.
-            shellcmd([pnacl_sz,
-                      '-O' + opt_level,
-                      '-bitcode-format=pnacl',
-                      '-filetype=' + args.filetype,
-                      '-o', obj_sz if args.filetype == 'obj' else asm_sz,
-                      '-target=' + args.target] +
-                     (['-externalize',
-                       '-ffunction-sections',
-                       '-fdata-sections'] if hybrid else []) +
-                     (['-sandbox'] if args.sandbox else []) +
-                     (['-nonsfi'] if args.nonsfi else []) +
-                     (['-enable-block-profile'] if
-                          args.enable_block_profile and not args.sandbox
-                          else []) +
-                     args.sz_args +
-                     [pexe],
-                     echo=args.verbose)
-        if args.filetype != 'obj':
-            triple = {
-              'arm32': 'arm' + get_sfi_string(args, '-nacl', '', ''),
-              'x8632': 'i686' + get_sfi_string(args, '-nacl', '', ''),
-              'x8664': 'x86_64' +
-                        get_sfi_string(args, '-nacl', '-linux-gnux32',
-                                       '-linux-gnux32'),
-            }[args.target]
-
-            shellcmd((
-                '{base}/llvm-mc -triple={triple} -filetype=obj -o {obj} {asm}'
-                ).format(base=path_addition, asm=asm_sz, obj=obj_sz,
-                         triple=triple),
-                     echo=args.verbose)
-        if native:
-            shellcmd((
-                '{objcopy} --redefine-sym _start=_user_start {obj}'
-                ).format(objcopy=objcopy, obj=obj_sz), echo=args.verbose)
-        if hybrid:
-            shellcmd((
-                'nm {obj} | sed -n "s/.* [a-zA-Z] //p" > {sym}'
-                ).format(obj=obj_sz, sym=sym_sz), echo=args.verbose)
-
-    if hybrid:
-        with open(sym_sz_unescaped) as f:
-            sz_syms = f.read().splitlines()
-        re_include_str = BuildRegex(args.include, sz_syms)
-        re_exclude_str = BuildRegex(args.exclude, sz_syms)
-        re_include = re.compile(re_include_str)
-        re_exclude = re.compile(re_exclude_str)
-        # If a symbol doesn't explicitly match re_include or re_exclude,
-        # the default MatchSymbol() result is True, unless some --include
-        # args are provided.
-        default_match = not args.include
-
-        whitelist_has_items = False
-        with open(whitelist_sz_unescaped, 'w') as f:
-            for sym in sz_syms:
-                if MatchSymbol(sym, re_include, re_exclude, default_match):
-                    f.write(sym + '\n')
-                    whitelist_has_items = True
-        shellcmd((
-            '{objcopy} --weaken {obj} {weak}'
-            ).format(objcopy=objcopy, obj=obj_sz, weak=obj_sz_weak),
-            echo=args.verbose)
-        if whitelist_has_items:
-            # objcopy returns an error if the --weaken-symbols file is empty.
-            shellcmd((
-                '{objcopy} --weaken-symbols={whitelist} {obj} {weak}'
-                ).format(objcopy=objcopy,
-                         whitelist=whitelist_sz, obj=obj_llc,
-                         weak=obj_llc_weak),
-                     echo=args.verbose)
-        else:
-            shellcmd((
-                '{objcopy} {obj} {weak}'
-                ).format(objcopy=objcopy, obj=obj_llc, weak=obj_llc_weak),
-                echo=args.verbose)
-        obj_partial = pexe_base + '.o'
-        ld = {
-          'arm32': 'arm-linux-gnueabihf-ld',
-          'x8632': 'ld',
-          'x8664': 'ld',
-        }[args.target]
-        emulation = {
-          'arm32': 'armelf_linux_eabi',
-          'x8632': 'elf_i386',
-          'x8664': 'elf32_x86_64' if not args.sandbox else 'elf_x86_64',
-        }[args.target]
-        shellcmd((
-            '{ld} -r -m {emulation} -o {partial} {sz} {llc}'
-            ).format(ld=ld, emulation=emulation, partial=obj_partial,
-                     sz=obj_sz_weak, llc=obj_llc_weak),
-                 echo=args.verbose)
-        shellcmd((
-            '{objcopy} -w --localize-symbol="*" {partial}'
-            ).format(objcopy=objcopy, partial=obj_partial),
-            echo=args.verbose)
-        shellcmd((
-            '{objcopy} --globalize-symbol={start} ' +
-            '--globalize-symbol=__Sz_block_profile_info {partial}'
-            ).format(objcopy=objcopy, partial=obj_partial,
-                     start=get_sfi_string(args, '_start', '_start',
-                                          '_user_start')),
-                 echo=args.verbose)
-
-    # Run the linker regardless of hybrid mode.
-    if args.sandbox:
-        LinkSandbox([obj_partial], exe, args.target, args.verbose)
-    elif args.nonsfi:
-        LinkNonsfi([obj_partial], exe, args.target, args.verbose)
-    else:
-        objs = [obj_partial]
-        if args.asan:
-            objs.append(
-                ('{root}/toolchain_build/src/subzero/build/runtime/' +
-                 'szrt_asan_{target}.o').format(root=nacl_root,
-                                                target=args.target))
-        LinkNative(objs, exe, args.target, args.verbose)
-
-    # Put the extra verbose printing at the end.
-    if args.verbose and hybrid:
-        print 'include={regex}'.format(regex=re_include_str)
-        print 'exclude={regex}'.format(regex=re_exclude_str)
-        print 'default_match={dm}'.format(dm=default_match)
-        print 'Number of Subzero syms = {num}'.format(num=len(sz_syms))
-
-if __name__ == '__main__':
-    main()
diff --git a/third_party/subzero/pydir/szbuild_spec2k.py b/third_party/subzero/pydir/szbuild_spec2k.py
deleted file mode 100755
index b9cf15d..0000000
--- a/third_party/subzero/pydir/szbuild_spec2k.py
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/env python2
-
-import argparse
-import os
-import sys
-
-import szbuild
-
-from utils import FindBaseNaCl, shellcmd
-
-def main():
-    """Build native gcc-style executables for one or all Spec2K components.
-
-    Afterwards, the executables can be run from the
-    native_client/tests/spec2k/ directory as:
-    './run_all.sh RunBenchmarks SetupGccX8632Opt {train|ref} ...'
-    -- or --
-    './run_all.sh RunBenchmarks SetupPnaclX8632Opt {train|ref} ...'
-    -- or --
-    './run_all.sh RunBenchmarks SetupNonsfiX8632Opt {train|ref} ...'
-    """
-    nacl_root = FindBaseNaCl()
-    # Use the same default ordering as spec2k/run_all.sh.
-    components = [ '177.mesa', '179.art', '183.equake', '188.ammp', '164.gzip',
-                   '175.vpr', '176.gcc', '181.mcf', '186.crafty', '197.parser',
-                   '253.perlbmk', '254.gap', '255.vortex', '256.bzip2',
-                   '300.twolf', '252.eon' ]
-
-    argparser = argparse.ArgumentParser(description=main.__doc__)
-    szbuild.AddOptionalArgs(argparser)
-    argparser.add_argument('--run', dest='run', action='store_true',
-                           help='Run after building')
-    argparser.add_argument('comps', nargs='*', default=components)
-    args = argparser.parse_args()
-    bad = set(args.comps) - set(components)
-    if bad:
-        print 'Unknown component{s}: '.format(s='s' if len(bad) > 1 else '') + \
-            ' '.join(x for x in bad)
-        sys.exit(1)
-
-    # Fix up Subzero target strings for the run_all.sh script.
-    target_map = {
-         'arm32':'arm',
-         'x8632':'x8632',
-         'x8664':'x8664'
-         }
-    run_all_target = target_map[args.target] # fail if target not listed above
-
-    suffix = (
-        'pnacl.opt.{target}' if args.sandbox else
-        'nonsfi.opt.{target}' if args.nonsfi else
-        'gcc.opt.{target}').format(
-             target=run_all_target);
-    for comp in args.comps:
-        name = os.path.splitext(comp)[1] or comp
-        if name[0] == '.':
-            name = name[1:]
-        szbuild.ProcessPexe(args,
-                            ('{root}/tests/spec2k/{comp}/' +
-                             '{name}.opt.stripped.pexe'
-                             ).format(root=nacl_root, comp=comp, name=name),
-                            ('{root}/tests/spec2k/{comp}/' +
-                             '{name}.{suffix}'
-                             ).format(root=nacl_root, comp=comp, name=name,
-                                      suffix=suffix))
-    if args.run:
-        os.chdir('{root}/tests/spec2k'.format(root=FindBaseNaCl()))
-        setup = 'Setup' + ('Pnacl' if args.sandbox else
-                           'Nonsfi' if args.nonsfi else
-                           'Gcc') + {
-            'arm32': 'Arm',
-            'x8632': 'X8632',
-            'x8664': 'X8664'}[args.target] + 'Opt'
-        shellcmd(['./run_all.sh',
-                  'RunTimedBenchmarks',
-                  setup,
-                  'train'] + args.comps)
-
-if __name__ == '__main__':
-    main()
diff --git a/third_party/subzero/pydir/targets.py b/third_party/subzero/pydir/targets.py
deleted file mode 100644
index 1f73db1..0000000
--- a/third_party/subzero/pydir/targets.py
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env python2
-
-from collections import namedtuple
-import glob
-
-
-# Why have 'cross_headers':
-# For some reason, clang doesn't know how to find some of the libstdc++
-# headers (c++config.h). Manually add in one of the paths:
-# https://llvm.org/bugs/show_bug.cgi?id=22937
-# Otherwise, we could assume the system has arm-linux-gnueabihf-g++ and
-# use that instead of clang, but so far we've just been using clang for
-# the unsandboxed build.
-def FindARMCrossInclude():
-  return glob.glob(
-      '/usr/arm-linux-gnueabihf/include/c++/*/arm-linux-gnueabihf')[-1]
-
-def FindMIPSCrossInclude():
-  globs = glob.glob('/usr/mipsel-linux-gnu/include/c++/*/mipsel-linux-gnu')
-  return globs[-1] if globs else '/invalid/mips/include/path'
-
-TargetInfo = namedtuple('TargetInfo',
-                        ['target', 'compiler_arch', 'triple', 'llc_flags',
-                         'ld_emu', 'sb_emu', 'cross_headers'])
-
-X8632Target = TargetInfo(target='x8632',
-                         compiler_arch='x8632',
-                         triple='i686-none-linux',
-                         llc_flags=['-mcpu=pentium4m'],
-                         ld_emu='elf_i386_nacl',
-                         sb_emu='elf_i386_nacl',
-                         cross_headers=[])
-
-X8664Target = TargetInfo(target='x8664',
-                         compiler_arch='x8664',
-                         triple='x86_64-none-linux-gnux32',
-                         llc_flags=['-mcpu=x86-64'],
-                         ld_emu='elf32_x86_64_nacl',
-                         sb_emu='elf_x86_64_nacl',
-                         cross_headers=[])
-
-ARM32Target = TargetInfo(target='arm32',
-                         compiler_arch='armv7',
-                         triple='armv7a-none-linux-gnueabihf',
-                         llc_flags=['-mcpu=cortex-a9',
-                                    '-float-abi=hard',
-                                    '-mattr=+neon',
-                                    '-arm-enable-dwarf-eh=1'],
-                         ld_emu='armelf_nacl',
-                         sb_emu='armelf_nacl',
-                         cross_headers=['-isystem', FindARMCrossInclude()])
-
-# Investigate:
-# ld_emu script mips_nacl is not present in binutils. How to get it?
-MIPS32Target = TargetInfo(target='mips32',
-                         compiler_arch='mips32',
-                         triple='mipsel-linux-gnu',
-                         llc_flags=[],
-                         ld_emu='mips_nacl',
-                         sb_emu='mips_nacl',
-                         cross_headers=['-isystem', FindMIPSCrossInclude()])
-
-def ConvertTripleToNaCl(nonsfi_triple):
-  return nonsfi_triple[:nonsfi_triple.find('-linux')] + '-nacl'
diff --git a/third_party/subzero/pydir/utils.py b/third_party/subzero/pydir/utils.py
deleted file mode 100644
index 121e2e2..0000000
--- a/third_party/subzero/pydir/utils.py
+++ /dev/null
@@ -1,49 +0,0 @@
-import os
-import subprocess
-import sys
-
-def GetObjcopyCmd(target):
-    """Return a suitable objcopy command."""
-    if target == 'mips32':
-      return 'mipsel-nacl-objcopy'
-    return 'arm-nacl-objcopy'
-
-def GetObjdumpCmd(target):
-    """Return a suitable objdump command."""
-    if target == 'mips32':
-      return 'mipsel-nacl-objdump'
-    return 'arm-nacl-objdump'
-
-def shellcmd(command, echo=True):
-    if not isinstance(command, str):
-        command = ' '.join(command)
-
-    if echo:
-      print >> sys.stderr, '[cmd]'
-      print >> sys.stderr,  command
-      print >> sys.stderr
-
-    stdout_result = subprocess.check_output(command, shell=True)
-    if echo: sys.stdout.write(stdout_result)
-    return stdout_result
-
-def FindBaseNaCl():
-    """Find the base native_client/ directory."""
-    nacl = 'native_client'
-    path_list = os.getcwd().split(os.sep)
-    """Use the executable path if cwd does not contain 'native_client' """
-    path_list = path_list if nacl in path_list else sys.argv[0].split(os.sep)
-    if nacl not in path_list:
-        print "Script must be executed from within 'native_client' directory"
-        exit(1)
-    last_index = len(path_list) - path_list[::-1].index(nacl)
-    return os.sep.join(path_list[:last_index])
-
-def get_sfi_string(args, sb_ret, nonsfi_ret, native_ret):
-    """Return a value depending on args.sandbox and args.nonsfi."""
-    if args.sandbox:
-        assert(not args.nonsfi)
-        return sb_ret
-    if args.nonsfi:
-        return nonsfi_ret
-    return native_ret
diff --git a/third_party/subzero/pydir/wasm-run-torture-tests.py b/third_party/subzero/pydir/wasm-run-torture-tests.py
deleted file mode 100755
index fb8c8cf..0000000
--- a/third_party/subzero/pydir/wasm-run-torture-tests.py
+++ /dev/null
@@ -1,229 +0,0 @@
-#!/usr/bin/env python2
-
-#===- subzero/wasm-run-torture-tests.py - Subzero WASM Torture Test Driver ===//
-#
-#                        The Subzero Code Generator
-#
-# This file is distributed under the University of Illinois Open Source
-# License. See LICENSE.TXT for details.
-#
-#===-----------------------------------------------------------------------===//
-
-from __future__ import print_function
-import argparse
-import glob
-import multiprocessing
-import os
-import Queue
-import shutil
-import StringIO
-import sys
-import threading
-
-IGNORED_TESTS = set([
-  # The remaining tests are known waterfall failures
-
-  '20010122-1.c.wasm',
-  '20031003-1.c.wasm',
-  '20071018-1.c.wasm',
-  '20071120-1.c.wasm',
-  '20071220-1.c.wasm',
-  '20071220-2.c.wasm',
-  '20101011-1.c.wasm',
-  'alloca-1.c.wasm',
-  'bitfld-3.c.wasm',
-  'bitfld-5.c.wasm',
-  'builtin-bitops-1.c.wasm',
-  'conversion.c.wasm',
-  'eeprof-1.c.wasm',
-  'frame-address.c.wasm',
-  'pr17377.c.wasm',
-  'pr32244-1.c.wasm',
-  'pr34971.c.wasm',
-  'pr36765.c.wasm',
-  'pr39228.c.wasm',
-  'pr43008.c.wasm',
-  'pr47237.c.wasm',
-  'pr60960.c.wasm',
-  'va-arg-pack-1.c.wasm',
-
-  '20000717-5.c.wasm', # abort() (also works without emcc)
-  '20001203-2.c.wasm', # assert fail (works without emcc)
-  '20040811-1.c.wasm', # OOB trap
-  '20070824-1.c.wasm', # abort() (also works without emcc)
-  'arith-rand-ll.c.wasm', # abort() (works without emcc)
-  'arith-rand.c.wasm', # abort() (works without emcc)
-  'pr23135.c.wasm', # OOB trap (works without emcc)
-  'pr34415.c.wasm', # (empty output?)
-  'pr36339.c.wasm', # abort() (works without emcc)
-  'pr38048-2.c.wasm', # abort() (works without emcc)
-  'pr42691.c.wasm', # abort() (works without emcc)
-  'pr43220.c.wasm', # OOB trap (works without emcc)
-  'pr43269.c.wasm', # abort() (works without emcc)
-  'vla-dealloc-1.c.wasm', # OOB trap (works without emcc)
-  '20051012-1.c.wasm', # error reading binary
-  '921208-2.c.wasm', # error reading binary
-  '920501-1.c.wasm', # error reading binary
-  'call-trap-1.c.wasm', # error reading binary
-  'pr44942.c.wasm', # error reading binary
-
-  '920625-1.c.wasm', # abort() (also fails without emcc)
-  '931004-10.c.wasm', # abort() (also fails without emcc)
-  '931004-12.c.wasm', # abort() (also fails without emcc)
-  '931004-14.c.wasm', # abort() (also fails without emcc)
-  '931004-6.c.wasm', # abort() (also fails without emcc)
-  'pr38051.c.wasm', # (empty output?) (fails without emcc)
-  'pr38151.c.wasm', # abort() (fails without emcc)
-  'pr44575.c.wasm', # abort() (fails without emcc)
-  'strct-stdarg-1.c.wasm', # abort() (fails without emcc)
-  'strct-varg-1.c.wasm', # abort() (fails without emcc)
-  'va-arg-22.c.wasm', # abort() (fails without emcc)
-  'stdarg-3.c.wasm', # abort() (fails without emcc)
-  'pr56982.c.wasm', # missing setjmp (wasm.js check did not catch)
-
-  '20010605-2.c.wasm', # missing __netf2
-  '20020413-1.c.wasm', # missing __lttf2
-  '20030914-1.c.wasm', # missing __floatsitf
-  '20040709-1.c.wasm', # missing __netf2
-  '20040709-2.c.wasm', # missing __netf2
-  '20050121-1.c.wasm', # missing __floatsitf
-  '20080502-1.c.wasm', # missing __eqtf2
-  '920501-8.c.wasm', # missing __extenddftf2
-  '930513-1.c.wasm', # missing __extenddftf2
-  '930622-2.c.wasm', # missing __floatditf
-  '960215-1.c.wasm', # missing __addtf3
-  '960405-1.c.wasm', # missing __eqtf2
-  '960513-1.c.wasm', # missing __subtf3
-  'align-2.c.wasm', # missing __eqtf2
-  'complex-6.c.wasm', # missing __subtf3
-  'complex-7.c.wasm', # missing __netf2
-  'pr49218.c.wasm', # missing __fixsfti
-  'pr54471.c.wasm', # missing __multi3
-  'regstack-1.c.wasm', # missing __addtf3
-  'stdarg-1.c.wasm', # missing __netf2
-  'stdarg-2.c.wasm', # missing __floatsitf
-  'va-arg-5.c.wasm', # missing __eqtf2
-  'va-arg-6.c.wasm', # missing __eqtf2
-  'struct-ret-1.c.wasm', # missing __extenddftf2
-])
-
-parser = argparse.ArgumentParser()
-parser.add_argument('-v', '--verbose', action='store_true')
-parser.add_argument('--translate-only', action='store_true')
-parser.add_argument('tests', nargs='*')
-args = parser.parse_args()
-
-OUT_DIR = "./build/wasm-torture"
-
-results_lock = threading.Lock()
-
-compile_count = 0
-compile_failures = []
-
-run_count = 0
-run_failures = []
-
-def run_test(test_file, verbose=False):
-  global args
-  global compile_count
-  global compile_failures
-  global results_lock
-  global run_count
-  global run_failures
-  global OUT_DIR
-  global IGNORED_TESTS
-
-  run_test = not args.translate_only
-
-  test_name = os.path.basename(test_file)
-  obj_file = os.path.join(OUT_DIR, test_name + ".o")
-  exe_file = os.path.join(OUT_DIR, test_name + ".exe")
-
-  if not verbose and test_name in IGNORED_TESTS:
-    print("\033[1;34mSkipping {}\033[1;m".format(test_file))
-    return
-
-  cmd = """LD_LIBRARY_PATH=../../../../v8/out/native/lib.target ./pnacl-sz \
-               -filetype=obj -target=x8632 {} -threads=0 -O2 \
-               -verbose=wasm -o {}""".format(test_file, obj_file)
-
-  if not verbose:
-    cmd += " &> /dev/null"
-
-  out = StringIO.StringIO()
-
-  out.write(test_file + " ...");
-  status = os.system(cmd);
-  if status != 0:
-    print('\033[1;31m[compile fail]\033[1;m', file=out)
-    with results_lock:
-      compile_failures.append(test_file)
-  else:
-    compile_count += 1
-
-    # Try to link and run the program.
-    cmd = "clang -g -m32 {} -o {} " + \
-          "./runtime/szrt.c ./runtime/wasm-runtime.cpp -lm -lstdc++"
-    cmd = cmd.format(obj_file, exe_file)
-
-    if not run_test or os.system(cmd) == 0:
-      if not run_test or os.system(exe_file) == 0:
-        with results_lock:
-          run_count += 1
-        print('\033[1;32m[ok]\033[1;m', file=out)
-      else:
-        with results_lock:
-          run_failures.append(test_file)
-        print('\033[1;33m[run fail]\033[1;m', file=out)
-    else:
-      with results_lock:
-        run_failures.append(test_file)
-      print('\033[1;33m[run fail]\033[1;m', file=out)
-
-  sys.stdout.write(out.getvalue())
-
-verbose = args.verbose
-
-if len(args.tests) > 0:
-  test_files = args.tests
-else:
-  test_files = glob.glob("./emwasm-torture-out/*.wasm")
-
-if os.path.exists(OUT_DIR):
-  shutil.rmtree(OUT_DIR)
-os.mkdir(OUT_DIR)
-
-tasks = Queue.Queue()
-
-def worker():
-  while True:
-    run_test(tasks.get(), verbose)
-    tasks.task_done()
-
-for i in range(multiprocessing.cpu_count()):
-  t = threading.Thread(target=worker)
-  t.daemon = True
-  t.start()
-
-for test_file in test_files:
-  tasks.put(test_file)
-
-tasks.join()
-
-if len(compile_failures) > 0:
-  print()
-  print("Compilation failures:")
-  print("=====================\n")
-  for f in compile_failures:
-    print("    \033[1;31m" + f + "\033[1;m")
-
-if len(run_failures) > 0:
-  print()
-  print("Run failures:")
-  print("=============\n")
-  for f in run_failures:
-    print("    \033[1;33m" + f + "\033[1;m")
-
-print("\n\033[1;32m{}\033[1;m / \033[1;33m{}\033[1;m / {} tests passed"
-      .format(run_count, compile_count - run_count,
-              run_count + len(compile_failures) + len(run_failures)))
diff --git a/third_party/subzero/src/IceASanInstrumentation.cpp b/third_party/subzero/src/IceASanInstrumentation.cpp
index 0531558..659fce1 100644
--- a/third_party/subzero/src/IceASanInstrumentation.cpp
+++ b/third_party/subzero/src/IceASanInstrumentation.cpp
@@ -54,7 +54,7 @@
                                      {"calloc", "__asan_calloc"},
                                      {"__asan_dummy_calloc", "__asan_calloc"},
                                      {"realloc", "__asan_realloc"}};
-const StringSet FuncBlackList = {"_Balloc"};
+const StringSet FuncIgnoreList = {"_Balloc"};
 
 llvm::NaClBitcodeRecord::RecordVector sizeToByteVec(SizeT Size) {
   llvm::NaClBitcodeRecord::RecordVector SizeContents;
@@ -75,8 +75,8 @@
 
 bool ASanInstrumentation::isInstrumentable(Cfg *Func) {
   std::string FuncName = Func->getFunctionName().toStringOrEmpty();
-  return FuncName == "" ||
-         (FuncBlackList.count(FuncName) == 0 && FuncName.find(ASanPrefix) != 0);
+  return FuncName == "" || (FuncIgnoreList.count(FuncName) == 0 &&
+                            FuncName.find(ASanPrefix) != 0);
 }
 
 // Create redzones around all global variables, ensuring that the initializer
diff --git a/third_party/subzero/src/IceAssemblerX86Base.h b/third_party/subzero/src/IceAssemblerX86Base.h
index 9fd9bae..86a93fc 100644
--- a/third_party/subzero/src/IceAssemblerX86Base.h
+++ b/third_party/subzero/src/IceAssemblerX86Base.h
@@ -830,7 +830,7 @@
     // At this point in the assembler, we have encoded regs, so it is not
     // possible to distinguish between the "new" low byte registers introduced
     // in x86-64 and the legacy [abcd]h registers. Because x86, we may still
-    // see ah (div) in the assembler, so we whitelist it here.
+    // see ah (div) in the assembler, so we allow it here.
     //
     // The "local" uint32_t Encoded_Reg_ah is needed because RegType is an
     // enum that is not necessarily the same type of
diff --git a/third_party/subzero/src/IceTargetLoweringARM32.cpp b/third_party/subzero/src/IceTargetLoweringARM32.cpp
index d820bca..af41375 100644
--- a/third_party/subzero/src/IceTargetLoweringARM32.cpp
+++ b/third_party/subzero/src/IceTargetLoweringARM32.cpp
@@ -3098,7 +3098,7 @@
     default:
       UnimplementedLoweringError(this, Instr);
       return;
-    // Explicitly whitelist vector instructions we have implemented/enabled.
+    // Explicitly allow vector instructions we have implemented/enabled.
     case InstArithmetic::Add:
     case InstArithmetic::And:
     case InstArithmetic::Ashr:
diff --git a/third_party/subzero/tests_lit/.gitignore b/third_party/subzero/tests_lit/.gitignore
deleted file mode 100644
index 83260f8..0000000
--- a/third_party/subzero/tests_lit/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-Output
diff --git a/third_party/subzero/tests_lit/asan_tests/Input/calloc.c b/third_party/subzero/tests_lit/asan_tests/Input/calloc.c
deleted file mode 100644
index 16dd6d7..0000000
--- a/third_party/subzero/tests_lit/asan_tests/Input/calloc.c
+++ /dev/null
@@ -1,10 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-
-int main(void) {
-  void *buf = calloc(14, sizeof(int));
-  strcpy(buf, "Hello, world!");
-  printf("%s\n", buf);
-  free(buf);
-}
diff --git a/third_party/subzero/tests_lit/asan_tests/Input/calloc_err.c b/third_party/subzero/tests_lit/asan_tests/Input/calloc_err.c
deleted file mode 100644
index 3dbf902..0000000
--- a/third_party/subzero/tests_lit/asan_tests/Input/calloc_err.c
+++ /dev/null
@@ -1 +0,0 @@
-int main(void) { not_defined(); }
diff --git a/third_party/subzero/tests_lit/asan_tests/alignment.ll b/third_party/subzero/tests_lit/asan_tests/alignment.ll
deleted file mode 100644
index b28ee4b..0000000
--- a/third_party/subzero/tests_lit/asan_tests/alignment.ll
+++ /dev/null
@@ -1,31 +0,0 @@
-; Translate with -fsanitize-address and -O2 to test alignment and ordering of
-; redzones when allocas are coalesced.
-
-; REQUIRES: no_minimal_build
-
-; RUN: %p2i --filetype=obj --disassemble --target x8632 -i %s --args -O2 \
-; RUN:     -allow-externally-defined-symbols -fsanitize-address | FileCheck %s
-
-define internal i32 @func(i32 %arg1, i32 %arg2) {
-  %l1 = alloca i8, i32 4, align 4
-  %l2 = alloca i8, i32 5, align 1
-  ret i32 42
-}
-
-; CHECK: func
-; CHECK-NEXT: sub    esp,0xac
-; CHECK-NEXT: lea    eax,[esp]
-; CHECK-NEXT: shr    eax,0x3
-; CHECK-NEXT: mov    DWORD PTR [eax+0x20000000],0xffffffff
-; CHECK-NEXT: mov    DWORD PTR [eax+0x20000004],0xffffff04
-; CHECK-NEXT: mov    DWORD PTR [eax+0x20000008],0xffffffff
-; CHECK-NEXT: mov    DWORD PTR [eax+0x2000000c],0xffffff05
-; CHECK-NEXT: mov    DWORD PTR [eax+0x20000010],0xffffffff
-; CHECK-NEXT: mov    DWORD PTR [eax+0x20000000],0x0
-; CHECK-NEXT: mov    DWORD PTR [eax+0x20000004],0x0
-; CHECK-NEXT: mov    DWORD PTR [eax+0x20000008],0x0
-; CHECK-NEXT: mov    DWORD PTR [eax+0x2000000c],0x0
-; CHECK-NEXT: mov    DWORD PTR [eax+0x20000010],0x0
-; CHECK-NEXT: mov    eax,0x2a
-; CHECK-NEXT: add    esp,0xac
-; CHECK-NEXT: ret
diff --git a/third_party/subzero/tests_lit/asan_tests/blacklist.ll b/third_party/subzero/tests_lit/asan_tests/blacklist.ll
deleted file mode 100644
index 1281721..0000000
--- a/third_party/subzero/tests_lit/asan_tests/blacklist.ll
+++ /dev/null
@@ -1,55 +0,0 @@
-; Test to ensure that blacklisted functions are not instrumented and others are.
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --args -verbose=inst -threads=0 -fsanitize-address \
-; RUN:     -allow-externally-defined-symbols | FileCheck --check-prefix=DUMP %s
-
-declare external i32 @malloc(i32)
-declare external void @free(i32)
-
-; A black listed function
-define internal void @_Balloc() {
-  %local = alloca i8, i32 4, align 4
-  %heapvar = call i32 @malloc(i32 42)
-  call void @free(i32 %heapvar)
-  ret void
-}
-
-; DUMP-LABEL: ================ Instrumented CFG ================
-; DUMP-NEXT: define internal void @_Balloc() {
-; DUMP-NEXT: __0:
-; DUMP-NEXT:   %local = alloca i8, i32 4, align 4
-; DUMP-NEXT:   %heapvar = call i32 @malloc(i32 42)
-; DUMP-NEXT:   call void @free(i32 %heapvar)
-; DUMP-NEXT:   ret void
-; DUMP-NEXT: }
-
-; A non black listed function
-define internal void @func() {
-  %local = alloca i8, i32 4, align 4
-  %heapvar = call i32 @malloc(i32 42)
-  call void @free(i32 %heapvar)
-  ret void
-}
-
-; DUMP-LABEL: ================ Instrumented CFG ================
-; DUMP-NEXT: define internal void @func() {
-; DUMP-NEXT: __0:
-; DUMP-NEXT:   %__$rz0 = alloca i8, i32 32, align 8
-; DUMP-NEXT:   %local = alloca i8, i32 64, align 8
-; DUMP-NEXT:   %shadowIndex = lshr i32 %__$rz0, 3
-; DUMP-NEXT:   %firstShadowLoc = add i32 %shadowIndex, 536870912
-; DUMP-NEXT:   %__5 = add i32 %firstShadowLoc, 0
-; DUMP-NEXT:   store i32 -1, i32* %__5, align 1
-; DUMP-NEXT:   %__6 = add i32 %firstShadowLoc, 4
-; DUMP-NEXT:   store i32 -252, i32* %__6, align 1
-; DUMP-NEXT:   %__7 = add i32 %firstShadowLoc, 8
-; DUMP-NEXT:   store i32 -1, i32* %__7, align 1
-; DUMP-NEXT:   %heapvar = call i32 @__asan_malloc(i32 42)
-; DUMP-NEXT:   call void @__asan_free(i32 %heapvar)
-; DUMP-NEXT:   store i32 0, i32* %__5, align 1
-; DUMP-NEXT:   store i32 0, i32* %__6, align 1
-; DUMP-NEXT:   store i32 0, i32* %__7, align 1
-; DUMP-NEXT:   ret void
-; DUMP-NEXT: }
diff --git a/third_party/subzero/tests_lit/asan_tests/calloc.ll b/third_party/subzero/tests_lit/asan_tests/calloc.ll
deleted file mode 100644
index a6d7c4c..0000000
--- a/third_party/subzero/tests_lit/asan_tests/calloc.ll
+++ /dev/null
@@ -1,14 +0,0 @@
-; Test that sz-clang.py and sz-clang++.py successfully replace calls to calloc
-
-; RUN: %S/../../pydir/sz-clang.py -fsanitize-address %S/Input/calloc.c -E \
-; RUN:     | FileCheck %s
-
-; RUN: %S/../../pydir/sz-clang++.py -fsanitize-address %S/Input/calloc.c -E \
-; RUN:     | FileCheck %s
-
-; CHECK-LABEL: int main(void) {
-; CHECK-NEXT:    void *buf = (__asan_dummy_calloc(14, sizeof(int)));
-; CHECK-NEXT:    strcpy(buf, "Hello, world!");
-; CHECK-NEXT:    printf("%s\n", buf);
-; CHECK-NEXT:    free(buf);
-; CHECK-NEXT:  }
diff --git a/third_party/subzero/tests_lit/asan_tests/calloc_err.ll b/third_party/subzero/tests_lit/asan_tests/calloc_err.ll
deleted file mode 100644
index f492dbb..0000000
--- a/third_party/subzero/tests_lit/asan_tests/calloc_err.ll
+++ /dev/null
@@ -1,11 +0,0 @@
-; Test that errors in source files are transparently reported by
-; sz-clang.py and sz-clang++.py
-
-; RUN: not %S/../../pydir/sz-clang.py -fsanitize-address %S/Input/calloc_err.c \
-; RUN:     2>&1 | FileCheck %s
-
-; RUN: not %S/../../pydir/sz-clang\+\+.py -fsanitize-address \
-; RUN:     %S/Input/calloc_err.c 2>&1 | FileCheck %s
-
-; CHECK-LABEL: Input/calloc_err.c:1:18: warning:
-; CHECK-SAME: implicit declaration of function 'not_defined' is invalid in C99
diff --git a/third_party/subzero/tests_lit/asan_tests/doublefree.ll b/third_party/subzero/tests_lit/asan_tests/doublefree.ll
deleted file mode 100644
index 88e03e9..0000000
--- a/third_party/subzero/tests_lit/asan_tests/doublefree.ll
+++ /dev/null
@@ -1,25 +0,0 @@
-; Test that double frees are detected
-
-; REQUIRES: no_minimal_build
-
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t 2>&1 | FileCheck --check-prefix=ERR %s
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols -O2 \
-; RUN:     %t.pexe -o %t && %t 2>&1 | FileCheck --check-prefix=ERR %s
-
-declare external i32 @malloc(i32)
-declare external void @free(i32)
-declare external void @exit(i32)
-
-define void @_start(i32 %arg) {
-  %alloc = call i32 @malloc(i32 42)
-  call void @free(i32 %alloc)
-  call void @free(i32 %alloc)
-  call void @exit(i32 1)
-  ret void
-}
-
-; ERR: Double free of object at
-; ERR-NEXT: address of __asan_error symbol is
diff --git a/third_party/subzero/tests_lit/asan_tests/elidelocalchecks.ll b/third_party/subzero/tests_lit/asan_tests/elidelocalchecks.ll
deleted file mode 100644
index ab14c13..0000000
--- a/third_party/subzero/tests_lit/asan_tests/elidelocalchecks.ll
+++ /dev/null
@@ -1,107 +0,0 @@
-; Test that direct loads and stores of local variables are not checked.
-; Also test that redundant checks of the same variable are elided.
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --args -verbose=inst -threads=0 -fsanitize-address \
-; RUN:     | FileCheck --check-prefix=DUMP %s
-
-define internal void @foo() {
-  %ptr8 = alloca i8, i32 1, align 4
-  %ptr16 = alloca i8, i32 2, align 4
-  %ptr32 = alloca i8, i32 4, align 4
-  %ptr64 = alloca i8, i32 8, align 4
-  %ptr128 = alloca i8, i32 16, align 4
-
-  %target8 = bitcast i8* %ptr8 to i8*
-  %target16 = bitcast i8* %ptr16 to i16*
-  %target32 = bitcast i8* %ptr32 to i32*
-  %target64 = bitcast i8* %ptr64 to i64*
-  %target128 = bitcast i8* %ptr128 to <4 x i32>*
-
-  ; unchecked loads
-  %loaded8 = load i8, i8* %target8, align 1
-  %loaded16 = load i16, i16* %target16, align 1
-  %loaded32 = load i32, i32* %target32, align 1
-  %loaded64 = load i64, i64* %target64, align 1
-  %loaded128 = load <4 x i32>, <4 x i32>* %target128, align 4
-
-  ; unchecked stores
-  store i8 %loaded8, i8* %target8, align 1
-  store i16 %loaded16, i16* %target16, align 1
-  store i32 %loaded32, i32* %target32, align 1
-  store i64 %loaded64, i64* %target64, align 1
-  store <4 x i32> %loaded128, <4 x i32>* %target128, align 4
-
-  %addr8 = ptrtoint i8* %ptr8 to i32
-  %addr16 = ptrtoint i8* %ptr16 to i32
-  %addr32 = ptrtoint i8* %ptr32 to i32
-  %addr64 = ptrtoint i8* %ptr64 to i32
-  %addr128 = ptrtoint i8* %ptr128 to i32
-
-  %off8 = add i32 %addr8, -1
-  %off16 = add i32 %addr16, -1
-  %off32 = add i32 %addr32, -1
-  %off64 = add i32 %addr64, -1
-  %off128 = add i32 %addr128, -1
-
-  %offtarget8 = inttoptr i32 %off8 to i8*
-  %offtarget16 = inttoptr i32 %off16 to i16*
-  %offtarget32 = inttoptr i32 %off32 to i32*
-  %offtarget64 = inttoptr i32 %off64 to i64*
-  %offtarget128 = inttoptr i32 %off128 to <4 x i32>*
-
-  ; checked stores
-  store i8 42, i8* %offtarget8, align 1
-  store i16 42, i16* %offtarget16, align 1
-  store i32 42, i32* %offtarget32, align 1
-
-  ; checked loads
-  %offloaded64 = load i64, i64* %offtarget64, align 1
-  %offloaded128 = load <4 x i32>, <4 x i32>* %offtarget128, align 4
-
-  ; loads and stores with elided redundant checks
-  %offloaded8 = load i8, i8* %offtarget8, align 1
-  %offloaded16 = load i16, i16* %offtarget16, align 1
-  %offloaded32 = load i32, i32* %offtarget32, align 1
-  store i64 %offloaded64, i64* %offtarget64, align 1
-  store <4 x i32> %offloaded128, <4 x i32>* %offtarget128, align 4
-
-  ret void
-}
-
-; DUMP-LABEL: ================ Instrumented CFG ================
-; DUMP-NEXT: define internal void @foo() {
-
-; Direct unchecked loads and stores
-; DUMP: %loaded8 = load i8, i8* %ptr8, align 1
-; DUMP-NEXT: %loaded16 = load i16, i16* %ptr16, align 1
-; DUMP-NEXT: %loaded32 = load i32, i32* %ptr32, align 1
-; DUMP-NEXT: %loaded64 = load i64, i64* %ptr64, align 1
-; DUMP-NEXT: %loaded128 = load <4 x i32>, <4 x i32>* %ptr128, align 4
-; DUMP-NEXT: store i8 %loaded8, i8* %ptr8, align 1
-; DUMP-NEXT: store i16 %loaded16, i16* %ptr16, align 1
-; DUMP-NEXT: store i32 %loaded32, i32* %ptr32, align 1
-; DUMP-NEXT: store i64 %loaded64, i64* %ptr64, align 1
-; DUMP-NEXT: store <4 x i32> %loaded128, <4 x i32>* %ptr128, align 4
-
-; Checked stores
-; DUMP: call void @__asan_check_store(i32 %off8, i32 1)
-; DUMP-NEXT: store i8 42, i8* %off8, align 1
-; DUMP-NEXT: call void @__asan_check_store(i32 %off16, i32 2)
-; DUMP-NEXT: store i16 42, i16* %off16, align 1
-; DUMP-NEXT: call void @__asan_check_store(i32 %off32, i32 4)
-; DUMP-NEXT: store i32 42, i32* %off32, align 1
-
-; Checked loads
-; DUMP-NEXT: call void @__asan_check_load(i32 %off64, i32 8)
-; DUMP-NEXT: %offloaded64 = load i64, i64* %off64, align 1
-; DUMP-NEXT: call void @__asan_check_load(i32 %off128, i32 16)
-; DUMP-NEXT: %offloaded128 = load <4 x i32>, <4 x i32>* %off128, align 4
-
-; Loads and stores with elided redundant checks
-; DUMP-NEXT: %offloaded8 = load i8, i8* %off8, align 1
-; DUMP-NEXT: %offloaded16 = load i16, i16* %off16, align 1
-; DUMP-NEXT: %offloaded32 = load i32, i32* %off32, align 1
-; DUMP-NEXT: store i64 %offloaded64, i64* %off64, align 1, beacon %offloaded64
-; DUMP-NEXT: store <4 x i32> %offloaded128, <4 x i32>* %off128, align 4, beacon %offloaded128
diff --git a/third_party/subzero/tests_lit/asan_tests/errors.ll b/third_party/subzero/tests_lit/asan_tests/errors.ll
deleted file mode 100644
index d058ab2..0000000
--- a/third_party/subzero/tests_lit/asan_tests/errors.ll
+++ /dev/null
@@ -1,232 +0,0 @@
-; Verify that ASan properly catches and reports bugs
-
-; REQUIRES: no_minimal_build
-
-; check with a one off the end local load
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t 2>&1 | FileCheck --check-prefix=LOCAL-LOAD %s
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols -O2 \
-; RUN:     %t.pexe -o %t && %t 2>&1 | FileCheck --check-prefix=LOCAL-LOAD %s
-
-; check with a many off the end local load
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t 1 2>&1 | FileCheck --check-prefix=LOCAL-LOAD %s
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols -O2 \
-; RUN:     %t.pexe -o %t && %t 1 2>&1 | FileCheck --check-prefix=LOCAL-LOAD %s
-
-; check with a one before the front local load
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t 1 2 2>&1 | FileCheck --check-prefix=LOCAL-LOAD %s
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols -O2\
-; RUN:     %t.pexe -o %t && %t 1 2 2>&1 | FileCheck --check-prefix=LOCAL-LOAD %s
-
-; check with a one off the end global load
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t 1 2 3 2>&1 | FileCheck \
-; RUN:     --check-prefix=GLOBAL-LOAD %s
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols -O2 \
-; RUN:     %t.pexe -o %t && %t 1 2 3 2>&1 | FileCheck \
-; RUN:     --check-prefix=GLOBAL-LOAD %s
-
-; check with a many off the end global load
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t 1 2 3 4 2>&1 | FileCheck \
-; RUN:    --check-prefix=GLOBAL-LOAD %s
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols -O2 \
-; RUN:     %t.pexe -o %t && %t 1 2 3 4 2>&1 | FileCheck \
-; RUN:     --check-prefix=GLOBAL-LOAD %s
-
-; check with a one before the front global load
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t 1 2 3 4 5 2>&1 | FileCheck \
-; RUN:     --check-prefix=GLOBAL-LOAD %s
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols -O2 \
-; RUN:     %t.pexe -o %t && %t 1 2 3 4 5 2>&1 | FileCheck \
-; RUN:     --check-prefix=GLOBAL-LOAD %s
-
-; check with a one off the end local store
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t 1 2 3 4 5 6 2>&1 | FileCheck \
-; RUN:     --check-prefix=LOCAL-STORE %s
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols -O2 \
-; RUN:     %t.pexe -o %t && %t 1 2 3 4 5 6 2>&1 | FileCheck \
-; RUN:     --check-prefix=LOCAL-STORE %s
-
-; check with a many off the end local store
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t 1 2 3 4 5 6 7 2>&1 | FileCheck \
-; RUN:     --check-prefix=LOCAL-STORE %s
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols -O2 \
-; RUN:     %t.pexe -o %t && %t 1 2 3 4 5 6 7 2>&1 | FileCheck \
-; RUN:     --check-prefix=LOCAL-STORE %s
-
-; check with a one before the front local store
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t 1 2 3 4 5 6 7 8 2>&1 | FileCheck \
-; RUN:     --check-prefix=LOCAL-STORE %s
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols -O2 \
-; RUN:     %t.pexe -o %t && %t 1 2 3 4 5 6 7 8 2>&1 | FileCheck \
-; RUN:     --check-prefix=LOCAL-STORE %s
-
-; check with a one off the end global store
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t 1 2 3 4 5 6 7 8 9 2>&1 | FileCheck \
-; RUN:     --check-prefix=GLOBAL-STORE %s
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols -O2 \
-; RUN:     %t.pexe -o %t && %t 1 2 3 4 5 6 7 8 9 2>&1 | FileCheck \
-; RUN:     --check-prefix=GLOBAL-STORE %s
-
-; check with a many off the end global store
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t 1 2 3 4 5 6 7 8 9 10 2>&1 | FileCheck \
-; RUN:    --check-prefix=GLOBAL-STORE %s
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols -O2 \
-; RUN:     %t.pexe -o %t && %t 1 2 3 4 5 6 7 8 9 10 2>&1 | FileCheck \
-; RUN:    --check-prefix=GLOBAL-STORE %s
-
-; check with a one before the front global store
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t 1 2 3 4 5 6 7 8 9 10 11 2>&1 | FileCheck \
-; RUN:     --check-prefix=GLOBAL-STORE %s
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols -O2 \
-; RUN:     %t.pexe -o %t && %t 1 2 3 4 5 6 7 8 9 10 11 2>&1 | FileCheck \
-; RUN:     --check-prefix=GLOBAL-STORE %s
-
-declare external void @exit(i32)
-
-; A global array
-@array = internal constant [12 x i8] zeroinitializer
-
-define void @access(i32 %is_local_i, i32 %is_load_i, i32 %err) {
-  ; get the base pointer to either the local or global array
-  %local = alloca i8, i32 12, align 1
-  %global = bitcast [12 x i8]* @array to i8*
-  %is_local = icmp ne i32 %is_local_i, 0
-  %arr = select i1 %is_local, i8* %local, i8* %global
-
-  ; determine the offset to access
-  %err_offset = mul i32 %err, 4
-  %pos_offset = add i32 %err_offset, 12
-  %pos = icmp sge i32 %err_offset, 0
-  %offset = select i1 %pos, i32 %pos_offset, i32 %err
-
-  ; calculate the address to access
-  %arraddr = ptrtoint i8* %arr to i32
-  %badaddr = add i32 %arraddr, %offset
-  %badptr = inttoptr i32 %badaddr to i8*
-
-  ; determine load or store
-  %is_load = icmp ne i32 %is_load_i, 0
-  br i1 %is_load, label %bad_load, label %bad_store
-
-bad_load:
-  %result = load i8, i8* %badptr, align 1
-  ret void
-
-bad_store:
-  store i8 42, i8* %badptr, align 1
-  ret void
-}
-
-; use argc to determine which test routine to run
-define void @_start(i32 %arg) {
-  %argcaddr = add i32 %arg, 8
-  %argcptr = inttoptr i32 %argcaddr to i32*
-  %argc = load i32, i32* %argcptr, align 1
-  switch i32 %argc, label %error [i32 1, label %one_local_load
-                                  i32 2, label %many_local_load
-                                  i32 3, label %neg_local_load
-                                  i32 4, label %one_global_load
-                                  i32 5, label %many_global_load
-                                  i32 6, label %neg_global_load
-                                  i32 7, label %one_local_store
-                                  i32 8, label %many_local_store
-                                  i32 9, label %neg_local_store
-                                  i32 10, label %one_global_store
-                                  i32 11, label %many_global_store
-                                  i32 12, label %neg_global_store]
-one_local_load:
-  ; Access one past the end of a local
-  call void @access(i32 1, i32 1, i32 0)
-  br label %error
-many_local_load:
-  ; Access five past the end of a local
-  call void @access(i32 1, i32 1, i32 4)
-  br label %error
-neg_local_load:
-  ; Access one before the beginning of a local
-  call void @access(i32 1, i32 1, i32 -1)
-  br label %error
-one_global_load:
-  ; Access one past the end of a global
-  call void @access(i32 0, i32 1, i32 0)
-  br label %error
-many_global_load:
-  ; Access five past the end of a global
-  call void @access(i32 0, i32 1, i32 4)
-  br label %error
-neg_global_load:
-  ; Access one before the beginning of a global
-  call void @access(i32 0, i32 1, i32 -1)
-  br label %error
-one_local_store:
-  ; Access one past the end of a local
-  call void @access(i32 1, i32 0, i32 0)
-  br label %error
-many_local_store:
-  ; Access five past the end of a local
-  call void @access(i32 1, i32 0, i32 4)
-  br label %error
-neg_local_store:
-  ; Access one before the beginning of a local
-  call void @access(i32 1, i32 0, i32 -1)
-  br label %error
-one_global_store:
-  ; Access one past the end of a global
-  call void @access(i32 0, i32 0, i32 0)
-  br label %error
-many_global_store:
-  ; Access five past the end of a global
-  call void @access(i32 0, i32 0, i32 4)
-  br label %error
-neg_global_store:
-  ; Access one before the beginning of a global
-  call void @access(i32 0, i32 0, i32 -1)
-  br label %error
-error:
-  call void @exit(i32 1)
-  unreachable
-}
-
-; LOCAL-LOAD: Illegal 1 byte load from stack object at
-; LOCAL-LOAD-NEXT: address of __asan_error symbol is
-; LOCAL-STORE: Illegal 1 byte store to stack object at
-; LOCAL-STORE-NEXT: address of __asan_error symbol is
-; GLOBAL-LOAD: Illegal 1 byte load from global object at
-; GLOBAL-LOAD-NEXT: address of __asan_error symbol is
-; GLOBAL-STORE: Illegal 1 byte store to global object at
-; GLOBAL-STORE-NEXT: address of __asan_error symbol is
diff --git a/third_party/subzero/tests_lit/asan_tests/func_ptr.ll b/third_party/subzero/tests_lit/asan_tests/func_ptr.ll
deleted file mode 100644
index 53d89b9..0000000
--- a/third_party/subzero/tests_lit/asan_tests/func_ptr.ll
+++ /dev/null
@@ -1,25 +0,0 @@
-; Test that calls made through pointers are unchanged by ASan
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --args -verbose=inst -threads=0 -fsanitize-address \
-; RUN:     | FileCheck --check-prefix=DUMP %s
-
-define internal i32 @caller(i32 %callee_addr, i32 %arg) {
-  %callee = inttoptr i32 %callee_addr to i32 (i32)*
-  %result = call i32 %callee(i32 %arg)
-  ret i32 %result
-}
-
-; DUMP-LABEL: ================ Initial CFG ================
-; DUMP-NEXT: define internal i32 @caller(i32 %callee_addr, i32 %arg) {
-; DUMP-NEXT: __0:
-; DUMP-NEXT:   %result = call i32 %callee_addr(i32 %arg)
-; DUMP-NEXT:   ret i32 %result
-; DUMP-NEXT: }
-; DUMP-LABEL: ================ Instrumented CFG ================
-; DUMP-NEXT: define internal i32 @caller(i32 %callee_addr, i32 %arg) {
-; DUMP-NEXT: __0:
-; DUMP-NEXT:   %result = call i32 %callee_addr(i32 %arg)
-; DUMP-NEXT:   ret i32 %result
-; DUMP-NEXT: }
diff --git a/third_party/subzero/tests_lit/asan_tests/globalredzones.ll b/third_party/subzero/tests_lit/asan_tests/globalredzones.ll
deleted file mode 100644
index 154ce87..0000000
--- a/third_party/subzero/tests_lit/asan_tests/globalredzones.ll
+++ /dev/null
@@ -1,122 +0,0 @@
-; Test of global redzone layout
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --args -threads=0 -fsanitize-address \
-; RUN:     | FileCheck %s
-; RUN: %p2i -i %s --args -verbose=global_init,inst -threads=0 \
-; RUN:     -fsanitize-address | FileCheck --check-prefix=DUMP %s
-
-; The array of redzones
-
-; DUMP-LABEL: ========= Instrumented Globals =========
-; DUMP: @__$rz_array = internal constant <{ i32, i32, i32, i32, i32, i32 }>
-; DUMP:         <{ i32 ptrtoint ([32 x i8]* @__$rz0 to i32), i32 ptrtoint ([32 x i8]* @__$rz1 to i32),
-; DUMP:         i32 ptrtoint ([32 x i8]* @__$rz2 to i32), i32 ptrtoint ([32 x i8]* @__$rz3 to i32),
-; DUMP:         i32 ptrtoint ([32 x i8]* @__$rz4 to i32), i32 ptrtoint ([32 x i8]* @__$rz5 to i32) }>
-
-; (SPACE is 32 ascii)
-; DUMP-NEXT: @__$rz_sizes = internal constant <{ [4 x i8], [4 x i8], [4 x i8], [4 x i8], [4 x i8],
-; DUMP-SAME: [4 x i8] }> <{ [4 x i8] c" \00\00\00", [4 x i8] c" \00\00\00", [4 x i8] c" \00\00\00",
-; DUMP-SAME: [4 x i8] c" \00\00\00", [4 x i8] c" \00\00\00", [4 x i8] c" \00\00\00" }>
-
-; CHECK-LABEL: .type   __$rz_array,%object
-; CHECK-NEXT: .section   .rodata
-; CHECK-NEXT: __$rz_array:
-; CHECK-NEXT: .long   __$rz0
-; CHECK-NEXT: .long   __$rz1
-; CHECK-NEXT: .long   __$rz2
-; CHECK-NEXT: .long   __$rz3
-; CHECK-NEXT: .long   __$rz4
-; CHECK-NEXT: .long   __$rz5
-; CHECK-LABEL: .type   __$rz_sizes,%object
-; CHECK-NEXT: .section   .rodata
-; CHECK-NEXT: __$rz_sizes:
-; CHECK-NEXT: .byte   32
-; CHECK-NEXT: .byte   0
-; CHECK-NEXT: .byte   0
-; CHECK-NEXT: .byte   0
-; CHECK-NEXT: .byte   32
-; CHECK-NEXT: .byte   0
-; CHECK-NEXT: .byte   0
-; CHECK-NEXT: .byte   0
-; CHECK-NEXT: .byte   32
-; CHECK-NEXT: .byte   0
-; CHECK-NEXT: .byte   0
-; CHECK-NEXT: .byte   0
-; CHECK-NEXT: .byte   32
-; CHECK-NEXT: .byte   0
-; CHECK-NEXT: .byte   0
-; CHECK-NEXT: .byte   0
-; CHECK-NEXT: .byte   32
-; CHECK-NEXT: .byte   0
-; CHECK-NEXT: .byte   0
-; CHECK-NEXT: .byte   0
-; CHECK-NEXT: .byte   32
-; CHECK-NEXT: .byte   0
-; CHECK-NEXT: .byte   0
-; CHECK-NEXT: .byte   0
-
-; A zero-initialized global
-@zeroInitGlobal = internal global [32 x i8] zeroinitializer
-
-; DUMP-NEXT: @__$rz0 = internal global [32 x i8] zeroinitializer
-; DUMP-NEXT: @zeroInitGlobal = internal global [32 x i8] zeroinitializer
-; DUMP-NEXT: @__$rz1 = internal global [32 x i8] zeroinitializer
-
-; CHECK-LABEL: .type   __$rz0,%object
-; CHECK-NEXT: .section   .bss
-; CHECK-NEXT: .p2align   5
-; CHECK-NEXT: __$rz0:
-; CHECK-LABEL: .type   zeroInitGlobal,%object
-; CHECK-NEXT: .section   .bss
-; CHECK-NEXT: .p2align   5
-; CHECK-NEXT: zeroInitGlobal:
-; CHECK-LABEL: .type   __$rz1,%object
-; CHECK-NEXT: .section   .bss
-; CHECK-NEXT: __$rz1:
-
-; A constant-initialized global
-@constInitGlobal = internal constant [32 x i8] c"ABCDEFGHIJKLMNOPQRSTUVWXYZ012345"
-
-; CHECK-LABEL: .type   __$rz2,%object
-; CHECK-NEXT: .section   .rodata
-; CHECK-NEXT: .p2align   5
-; CHECK-NEXT: __$rz2:
-; CHECK-LABEL: .type   constInitGlobal,%object
-; CHECK-NEXT: .section   .rodata
-; CHECK-NEXT: .p2align   5
-; CHECK-NEXT: constInitGlobal:
-; CHECK-LABEL: .type   __$rz3,%object
-; CHECK-NEXT: .section   .rodata
-; CHECK-NEXT: __$rz3:
-
-; DUMP-NEXT: @__$rz2 = internal constant [32 x i8] c"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
-; DUMP-NEXT: @constInitGlobal = internal constant [32 x i8] c"ABCDEFGHIJKLMNOPQRSTUVWXYZ012345"
-; DUMP-NEXT: @__$rz3 = internal constant [32 x i8] c"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
-
-; A regular global
-@regInitGlobal = internal global [32 x i8] c"ABCDEFGHIJKLMNOPQRSTUVWXYZ012345"
-
-; DUMP-NEXT: @__$rz4 = internal global [32 x i8] c"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
-; DUMP-NEXT: @regInitGlobal = internal global [32 x i8] c"ABCDEFGHIJKLMNOPQRSTUVWXYZ012345"
-; DUMP-NEXT: @__$rz5 = internal global [32 x i8] c"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
-
-; CHECK-LABEL: .type   __$rz4,%object
-; CHECK-NEXT: .section   .data
-; CHECK-NEXT: .p2align   5
-; CHECK-NEXT: __$rz4:
-; CHECK-LABEL: .type   regInitGlobal,%object
-; CHECK-NEXT: .section   .data
-; CHECK-NEXT: .p2align   5
-; CHECK-NEXT: regInitGlobal:
-; CHECK-LABEL: .type   __$rz5,%object
-; CHECK-NEXT: .section   .data
-; CHECK-NEXT: __$rz5:
-
-define internal void @func() {
-  ret void
-}
-
-; DUMP-LABEL: define internal void @func() {
-; CHECK-LABEL: func:
\ No newline at end of file
diff --git a/third_party/subzero/tests_lit/asan_tests/globalreplacement.ll b/third_party/subzero/tests_lit/asan_tests/globalreplacement.ll
deleted file mode 100644
index d0f23d4..0000000
--- a/third_party/subzero/tests_lit/asan_tests/globalreplacement.ll
+++ /dev/null
@@ -1,79 +0,0 @@
-; Test that global pointers to allocation functions are replaced
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --args -verbose=global_init -threads=0 -fsanitize-address \
-; RUN:     -allow-externally-defined-symbols | FileCheck --check-prefix=DUMP %s
-
-declare external i32 @malloc(i32)
-declare external i32 @realloc(i32, i32)
-declare external i32 @calloc(i32, i32)
-declare external void @free(i32)
-declare external void @foo()
-
-@global_malloc = internal global i32 ptrtoint (i32 (i32)* @malloc to i32)
-@global_realloc = internal global i32 ptrtoint (i32 (i32, i32)* @realloc to i32)
-@global_calloc = internal global i32 ptrtoint (i32 (i32, i32)* @calloc to i32)
-@global_free = internal global i32 ptrtoint (void (i32)* @free to i32)
-@global_foo = internal global i32 ptrtoint (void ()* @foo to i32)
-
-@constant_malloc = internal constant i32 ptrtoint (i32 (i32)* @malloc to i32)
-@constant_realloc = internal constant i32 ptrtoint (i32 (i32, i32)* @realloc to i32)
-@constant_calloc = internal constant i32 ptrtoint (i32 (i32, i32)* @calloc to i32)
-@constant_free = internal constant i32 ptrtoint (void (i32)* @free to i32)
-@constant_foo = internal constant i32 ptrtoint (void ()* @foo to i32)
-
-@multiple_initializers = internal global <{i32, i32}> <{i32 ptrtoint (i32 (i32)* @malloc to i32), i32 ptrtoint (void (i32)* @free to i32)}>
-
-define void @func() {
-  ret void
-}
-
-; DUMP: Instrumented Globals
-; DUMP-NEXT: @__$rz_array
-; DUMP-NEXT: @__$rz_sizes
-; DUMP-NEXT: @__$rz0
-; DUMP-NEXT: @global_malloc = internal global i32
-; DUMP-SAME:   ptrtoint (i32 (i32)* @__asan_malloc to i32)
-; DUMP-NEXT: @__$rz1
-; DUMP-NEXT: @__$rz2
-; DUMP-NEXT: @global_realloc = internal global i32
-; DUMP-SAME:   ptrtoint (i32 (i32, i32)* @__asan_realloc to i32)
-; DUMP-NEXT: @__$rz3
-; DUMP-NEXT: @__$rz4
-; DUMP-NEXT: @global_calloc = internal global i32
-; DUMP-SAME:   ptrtoint (i32 (i32, i32)* @__asan_calloc to i32)
-; DUMP-NEXT: @__$rz5
-; DUMP-NEXT: @__$rz6
-; DUMP-NEXT: @global_free = internal global i32
-; DUMP-SAME:   ptrtoint (void (i32)* @__asan_free to i32)
-; DUMP-NEXT: @__$rz7
-; DUMP-NEXT: @__$rz8
-; DUMP-NEXT: @global_foo = internal global i32
-; DUMP-SAME:   ptrtoint (void ()* @foo to i32)
-; DUMP-NEXT: @__$rz9
-; DUMP-NEXT: @__$rz10
-; DUMP-NEXT: @constant_malloc = internal constant i32
-; DUMP-SAME:   ptrtoint (i32 (i32)* @__asan_malloc to i32)
-; DUMP-NEXT: @__$rz11
-; DUMP-NEXT: @__$rz12
-; DUMP-NEXT: @constant_realloc = internal constant i32
-; DUMP-SAME:   ptrtoint (i32 (i32, i32)* @__asan_realloc to i32)
-; DUMP-NEXT: @__$rz13
-; DUMP-NEXT: @__$rz14
-; DUMP-NEXT: @constant_calloc = internal constant i32
-; DUMP-SAME:   ptrtoint (i32 (i32, i32)* @__asan_calloc to i32)
-; DUMP-NEXT: @__$rz15
-; DUMP-NEXT: @__$rz16
-; DUMP-NEXT: @constant_free = internal constant i32
-; DUMP-SAME:   ptrtoint (void (i32)* @__asan_free to i32)
-; DUMP-NEXT: @__$rz17
-; DUMP-NEXT: @__$rz18
-; DUMP-NEXT: @constant_foo = internal constant i32
-; DUMP-SAME:   ptrtoint (void ()* @foo to i32)
-; DUMP-NEXT: @__$rz19
-; DUMP-NEXT: @__$rz20
-; DUMP-NEXT: @multiple_initializers = internal global <{ i32, i32 }>
-; DUMP-SAME:   <{ i32 ptrtoint (i32 (i32)* @__asan_malloc to i32),
-; DUMP-SAME:      i32 ptrtoint (void (i32)* @__asan_free to i32) }>
-; DUMP-NEXT: @__$rz21
\ No newline at end of file
diff --git a/third_party/subzero/tests_lit/asan_tests/instrumentload.ll b/third_party/subzero/tests_lit/asan_tests/instrumentload.ll
deleted file mode 100644
index fae7ea6..0000000
--- a/third_party/subzero/tests_lit/asan_tests/instrumentload.ll
+++ /dev/null
@@ -1,40 +0,0 @@
-; Test for a call to __asan_check() preceding loads
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --args -verbose=inst -threads=0 -fsanitize-address \
-; RUN:     | FileCheck --check-prefix=DUMP %s
-
-; A function with a local variable that does the loads
-define internal void @doLoads(i32 %arg8, i32 %arg16, i32 %arg32, i32 %arg64,
-                              i32 %arg128) {
-  %srcLocal8 = inttoptr i32 %arg8 to i8*
-  %srcLocal16 = inttoptr i32 %arg16 to i16*
-  %srcLocal32 = inttoptr i32 %arg32 to i32*
-  %srcLocal64 = inttoptr i32 %arg64 to i64*
-  %srcLocal128 = inttoptr i32 %arg128 to <4 x i32>*
-
-  %dest11 = load i8, i8* %srcLocal8, align 1
-  %dest12 = load i16, i16* %srcLocal16, align 1
-  %dest13 = load i32, i32* %srcLocal32, align 1
-  %dest14 = load i64, i64* %srcLocal64, align 1
-  %dest15 = load <4 x i32>, <4 x i32>* %srcLocal128, align 4
-
-  ret void
-}
-
-; DUMP-LABEL: ================ Instrumented CFG ================
-; DUMP-NEXT: define internal void @doLoads(
-; DUMP-NEXT: __0:
-; DUMP-NEXT: call void @__asan_check_load(i32 %arg8, i32 1)
-; DUMP-NEXT: %dest11 = load i8, i8* %arg8, align 1
-; DUMP-NEXT: call void @__asan_check_load(i32 %arg16, i32 2)
-; DUMP-NEXT: %dest12 = load i16, i16* %arg16, align 1
-; DUMP-NEXT: call void @__asan_check_load(i32 %arg32, i32 4)
-; DUMP-NEXT: %dest13 = load i32, i32* %arg32, align 1
-; DUMP-NEXT: call void @__asan_check_load(i32 %arg64, i32 8)
-; DUMP-NEXT: %dest14 = load i64, i64* %arg64, align 1
-; DUMP-NEXT: call void @__asan_check_load(i32 %arg128, i32 16)
-; DUMP-NEXT: %dest15 = load <4 x i32>, <4 x i32>* %arg128, align 4
-; DUMP:      ret void
-; DUMP-NEXT: }
diff --git a/third_party/subzero/tests_lit/asan_tests/instrumentlocals.ll b/third_party/subzero/tests_lit/asan_tests/instrumentlocals.ll
deleted file mode 100644
index 38688fe..0000000
--- a/third_party/subzero/tests_lit/asan_tests/instrumentlocals.ll
+++ /dev/null
@@ -1,74 +0,0 @@
-; Test for insertion of redzones around local variables
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --args -verbose=inst -threads=0 -fsanitize-address \
-; RUN:     -allow-externally-defined-symbols | FileCheck --check-prefix=DUMP %s
-
-; Function with local variables to be instrumented
-define internal void @func() {
-  %local1 = alloca i8, i32 4, align 4
-  %local2 = alloca i8, i32 32, align 1
-  %local3 = alloca i8, i32 13, align 2
-  %local4 = alloca i8, i32 75, align 4
-  %local5 = alloca i8, i32 64, align 8
-  %i1 = ptrtoint i8* %local1 to i32
-  %i2 = ptrtoint i8* %local2 to i32
-  %i3 = ptrtoint i8* %local3 to i32
-  %i4 = ptrtoint i8* %local4 to i32
-  %i5 = ptrtoint i8* %local5 to i32
-  call void @foo(i32 %i1)
-  call void @foo(i32 %i2)
-  call void @foo(i32 %i3)
-  call void @foo(i32 %i4)
-  call void @foo(i32 %i5)
-  ret void
-}
-
-declare external void @foo(i32)
-
-; DUMP-LABEL: ================ Instrumented CFG ================
-; DUMP-NEXT: define internal void @func() {
-; DUMP-NEXT: __0:
-; DUMP-NEXT:   %__$rz0 = alloca i8, i32 32, align 8
-; DUMP-NEXT:   %local1 = alloca i8, i32 64, align 8
-; DUMP-NEXT:   %local2 = alloca i8, i32 64, align 8
-; DUMP-NEXT:   %local3 = alloca i8, i32 64, align 8
-; DUMP-NEXT:   %local4 = alloca i8, i32 128, align 8
-; DUMP-NEXT:   %local5 = alloca i8, i32 96, align 8
-; DUMP-NEXT:   %shadowIndex = lshr i32 %__$rz0, 3
-; DUMP-NEXT:   %firstShadowLoc = add i32 %shadowIndex, 536870912
-; DUMP-NEXT:   %__8 = add i32 %firstShadowLoc, 0
-; DUMP-NEXT:   store i32 -1, i32* %__8, align 1
-; DUMP-NEXT:   %__9 = add i32 %firstShadowLoc, 4
-; DUMP-NEXT:   store i32 -252, i32* %__9, align 1
-; DUMP-NEXT:   %__10 = add i32 %firstShadowLoc, 8
-; DUMP-NEXT:   store i32 -1, i32* %__10, align 1
-; DUMP-NEXT:   %__11 = add i32 %firstShadowLoc, 16
-; DUMP-NEXT:   store i32 -1, i32* %__11, align 1
-; DUMP-NEXT:   %__12 = add i32 %firstShadowLoc, 20
-; DUMP-NEXT:   store i32 -64256, i32* %__12, align 1
-; DUMP-NEXT:   %__13 = add i32 %firstShadowLoc, 24
-; DUMP-NEXT:   store i32 -1, i32* %__13, align 1
-; DUMP-NEXT:   %__14 = add i32 %firstShadowLoc, 36
-; DUMP-NEXT:   store i32 -64768, i32* %__14, align 1
-; DUMP-NEXT:   %__15 = add i32 %firstShadowLoc, 40
-; DUMP-NEXT:   store i32 -1, i32* %__15, align 1
-; DUMP-NEXT:   %__16 = add i32 %firstShadowLoc, 52
-; DUMP-NEXT:   store i32 -1, i32* %__16, align 1
-; DUMP-NEXT:   call void @foo(i32 %local1)
-; DUMP-NEXT:   call void @foo(i32 %local2)
-; DUMP-NEXT:   call void @foo(i32 %local3)
-; DUMP-NEXT:   call void @foo(i32 %local4)
-; DUMP-NEXT:   call void @foo(i32 %local5)
-; DUMP-NEXT:   store i32 0, i32* %__8, align 1
-; DUMP-NEXT:   store i32 0, i32* %__9, align 1
-; DUMP-NEXT:   store i32 0, i32* %__10, align 1
-; DUMP-NEXT:   store i32 0, i32* %__11, align 1
-; DUMP-NEXT:   store i32 0, i32* %__12, align 1
-; DUMP-NEXT:   store i32 0, i32* %__13, align 1
-; DUMP-NEXT:   store i32 0, i32* %__14, align 1
-; DUMP-NEXT:   store i32 0, i32* %__15, align 1
-; DUMP-NEXT:   store i32 0, i32* %__16, align 1
-; DUMP-NEXT:   ret void
-; DUMP-NEXT: }
diff --git a/third_party/subzero/tests_lit/asan_tests/instrumentmalloc.ll b/third_party/subzero/tests_lit/asan_tests/instrumentmalloc.ll
deleted file mode 100644
index 6cdd9fa..0000000
--- a/third_party/subzero/tests_lit/asan_tests/instrumentmalloc.ll
+++ /dev/null
@@ -1,29 +0,0 @@
-; Test that calls to malloc() and free() are replaced
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --args -verbose=inst -threads=0 -fsanitize-address \
-; RUN:     --allow-externally-defined-symbols | FileCheck --check-prefix=DUMP %s
-
-declare external i32 @malloc(i32)
-declare external i32 @calloc(i32, i32)
-declare external i32 @realloc(i32, i32)
-declare external void @free(i32)
-
-define internal void @func() {
-  %ptr1 = call i32 @malloc(i32 42)
-  %ptr2 = call i32 @calloc(i32 12, i32 42)
-  %ptr3 = call i32 @realloc(i32 0, i32 100)
-  call void @free(i32 %ptr1)
-  ret void
-}
-
-; DUMP-LABEL: ================ Instrumented CFG ================
-; DUMP-NEXT: define internal void @func() {
-; DUMP-NEXT: __0:
-; DUMP-NEXT: %ptr1 = call i32 @__asan_malloc(i32 42)
-; DUMP-NEXT: %ptr2 = call i32 @__asan_calloc(i32 12, i32 42)
-; DUMP-NEXT: %ptr3 = call i32 @__asan_realloc(i32 0, i32 100)
-; DUMP-NEXT: call void @__asan_free(i32 %ptr1)
-; DUMP-NEXT: ret void
-; DUMP-NEXT: }
diff --git a/third_party/subzero/tests_lit/asan_tests/instrumentstore.ll b/third_party/subzero/tests_lit/asan_tests/instrumentstore.ll
deleted file mode 100644
index d486f91..0000000
--- a/third_party/subzero/tests_lit/asan_tests/instrumentstore.ll
+++ /dev/null
@@ -1,40 +0,0 @@
-; Test for a call to __asan_check() preceding stores
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --args -verbose=inst -threads=0 -fsanitize-address \
-; RUN:     | FileCheck --check-prefix=DUMP %s
-
-; A function with a local variable that does the stores
-define internal void @doStores(<4 x i32> %vecSrc, i32 %arg8, i32 %arg16,
-                               i32 %arg32, i32 %arg64, i32 %arg128) {
-  %destLocal8 = inttoptr i32 %arg8 to i8*
-  %destLocal16 = inttoptr i32 %arg16 to i16*
-  %destLocal32 = inttoptr i32 %arg32 to i32*
-  %destLocal64 = inttoptr i32 %arg64 to i64*
-  %destLocal128 = inttoptr i32 %arg128 to <4 x i32>*
-
-  store i8 42, i8* %destLocal8, align 1
-  store i16 42, i16* %destLocal16, align 1
-  store i32 42, i32* %destLocal32, align 1
-  store i64 42, i64* %destLocal64, align 1
-  store <4 x i32> %vecSrc, <4 x i32>* %destLocal128, align 4
-
-  ret void
-}
-
-; DUMP-LABEL: ================ Instrumented CFG ================
-; DUMP-NEXT: define internal void @doStores(
-; DUMP-NEXT: __0:
-; DUMP-NEXT: call void @__asan_check_store(i32 %arg8, i32 1)
-; DUMP-NEXT: store i8 42, i8* %arg8, align 1
-; DUMP-NEXT: call void @__asan_check_store(i32 %arg16, i32 2)
-; DUMP-NEXT: store i16 42, i16* %arg16, align 1
-; DUMP-NEXT: call void @__asan_check_store(i32 %arg32, i32 4)
-; DUMP-NEXT: store i32 42, i32* %arg32, align 1
-; DUMP-NEXT: call void @__asan_check_store(i32 %arg64, i32 8)
-; DUMP-NEXT: store i64 42, i64* %arg64, align 1
-; DUMP-NEXT: call void @__asan_check_store(i32 %arg128, i32 16)
-; DUMP-NEXT: store <4 x i32> %vecSrc, <4 x i32>* %arg128, align 4
-; DUMP:      ret void
-; DUMP-NEXT: }
diff --git a/third_party/subzero/tests_lit/asan_tests/localreplacement.ll b/third_party/subzero/tests_lit/asan_tests/localreplacement.ll
deleted file mode 100644
index b2c1216..0000000
--- a/third_party/subzero/tests_lit/asan_tests/localreplacement.ll
+++ /dev/null
@@ -1,66 +0,0 @@
-; Test that loads of local pointers to allocation functions and stores
-; of pointers to allocation functions are instrumented.
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --args -verbose=inst -threads=0 -fsanitize-address \
-; RUN:     -allow-externally-defined-symbols | FileCheck --check-prefix=DUMP %s
-
-declare external i32 @malloc(i32)
-declare external i32 @realloc(i32, i32)
-declare external i32 @calloc(i32, i32)
-declare external void @free(i32)
-
-define internal void @func(i32 %store_loc) {
-  %store_dest = inttoptr i32 %store_loc to i32*
-
-  %malloc_ptr = bitcast i32 (i32)* @malloc to i32*
-  %realloc_ptr = bitcast i32 (i32, i32)* @realloc to i32*
-  %calloc_ptr = bitcast i32 (i32, i32)* @calloc to i32*
-  %free_ptr = bitcast void (i32)* @free to i32*
-
-  %malloc_addr = ptrtoint i32 (i32)* @malloc to i32
-  %realloc_addr = ptrtoint i32 (i32, i32)* @realloc to i32
-  %calloc_addr = ptrtoint i32 (i32, i32)* @calloc to i32
-  %free_addr = ptrtoint void (i32)* @free to i32
-
-  store i32 %malloc_addr, i32* %store_dest, align 1
-  store i32 %realloc_addr, i32* %store_dest, align 1
-  store i32 %calloc_addr, i32* %store_dest, align 1
-  store i32 %free_addr, i32* %store_dest, align 1
-
-  %local_malloc = load i32, i32* %malloc_ptr, align 1
-  %local_realloc = load i32, i32* %realloc_ptr, align 1
-  %local_calloc = load i32, i32* %calloc_ptr, align 1
-  %local_free = load i32, i32* %free_ptr, align 1
-
-  %local_mallocfunc = inttoptr i32 %local_malloc to i32 (i32)*
-  %local_reallocfunc = inttoptr i32 %local_realloc to i32 (i32, i32)*
-  %local_callocfunc = inttoptr i32 %local_calloc to i32 (i32, i32)*
-  %local_freefunc = inttoptr i32 %local_free to void (i32)*
-
-  %buf = call i32 %local_mallocfunc(i32 42)
-  call void %local_freefunc(i32 %buf)
-  ret void
-}
-
-; DUMP-LABEL: ================ Instrumented CFG ================
-; DUMP-NEXT: @func(i32 %store_loc) {
-; DUMP-NEXT: __0:
-; DUMP-NEXT:   call void @__asan_check_store(i32 %store_loc, i32 4)
-; DUMP-NEXT:   store i32 @__asan_malloc, i32* %store_loc, align 1
-; DUMP-NEXT:   store i32 @__asan_realloc, i32* %store_loc, align 1
-; DUMP-NEXT:   store i32 @__asan_calloc, i32* %store_loc, align 1
-; DUMP-NEXT:   store i32 @__asan_free, i32* %store_loc, align 1
-; DUMP-NEXT:   call void @__asan_check_load(i32 @__asan_malloc, i32 4)
-; DUMP-NEXT:   %local_malloc = load i32, i32* @__asan_malloc, align 1
-; DUMP-NEXT:   call void @__asan_check_load(i32 @__asan_realloc, i32 4)
-; DUMP-NEXT:   %local_realloc = load i32, i32* @__asan_realloc, align 1
-; DUMP-NEXT:   call void @__asan_check_load(i32 @__asan_calloc, i32 4)
-; DUMP-NEXT:   %local_calloc = load i32, i32* @__asan_calloc, align 1
-; DUMP-NEXT:   call void @__asan_check_load(i32 @__asan_free, i32 4)
-; DUMP-NEXT:   %local_free = load i32, i32* @__asan_free, align 1
-; DUMP-NEXT:   %buf = call i32 %local_malloc(i32 42)
-; DUMP-NEXT:   call void %local_free(i32 %buf)
-; DUMP-NEXT:   ret void
-; DUMP-NEXT: }
diff --git a/third_party/subzero/tests_lit/asan_tests/multiple_returns.ll b/third_party/subzero/tests_lit/asan_tests/multiple_returns.ll
deleted file mode 100644
index ec5ed6a..0000000
--- a/third_party/subzero/tests_lit/asan_tests/multiple_returns.ll
+++ /dev/null
@@ -1,53 +0,0 @@
-; Check that functions with multiple returns are correctly instrumented
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --args -verbose=inst -threads=0 -fsanitize-address \
-; RUN:     | FileCheck --check-prefix=DUMP %s
-
-define internal void @ret_twice(i32 %condarg) {
-  %local1 = alloca i8, i32 4, align 4
-  %local2 = alloca i8, i32 4, align 4
-  %cond = icmp ne i32 %condarg, 0
-  br i1 %cond, label %yes, label %no
-yes:
-  ret void
-no:
-  ret void
-}
-
-; DUMP-LABEL:================ Instrumented CFG ================
-; DUMP-NEXT: define internal void @ret_twice(i32 %condarg) {
-; DUMP-NEXT: __0:
-; DUMP-NEXT:   %__$rz0 = alloca i8, i32 32, align 8
-; DUMP-NEXT:   %local1 = alloca i8, i32 64, align 8
-; DUMP-NEXT:   %local2 = alloca i8, i32 64, align 8
-; DUMP-NEXT:   %shadowIndex = lshr i32 %__$rz0, 3
-; DUMP-NEXT:   %firstShadowLoc = add i32 %shadowIndex, 53687091
-; DUMP-NEXT:   %__7 = add i32 %firstShadowLoc, 0
-; DUMP-NEXT:   store i32 -1, i32* %__7, align 1
-; DUMP-NEXT:   %__8 = add i32 %firstShadowLoc, 4
-; DUMP-NEXT:   store i32 -252, i32* %__8, align 1
-; DUMP-NEXT:   %__9 = add i32 %firstShadowLoc, 8
-; DUMP-NEXT:   store i32 -1, i32* %__9, align 1
-; DUMP-NEXT:   %__10 = add i32 %firstShadowLoc, 12
-; DUMP-NEXT:   store i32 -252, i32* %__10, align 1
-; DUMP-NEXT:   %__11 = add i32 %firstShadowLoc, 16
-; DUMP-NEXT:   store i32 -1, i32* %__11, align 1
-; DUMP-NEXT:   %cond = icmp ne i32 %condarg, 0
-; DUMP-NEXT:   br i1 %cond, label %yes, label %no
-; DUMP-NEXT: yes:
-; DUMP-NEXT:   store i32 0, i32* %__7, align 1
-; DUMP-NEXT:   store i32 0, i32* %__8, align 1
-; DUMP-NEXT:   store i32 0, i32* %__9, align 1
-; DUMP-NEXT:   store i32 0, i32* %__10, align 1
-; DUMP-NEXT:   store i32 0, i32* %__11, align 1
-; DUMP-NEXT:   ret void
-; DUMP-NEXT: no:
-; DUMP-NEXT:   store i32 0, i32* %__7, align 1
-; DUMP-NEXT:   store i32 0, i32* %__8, align 1
-; DUMP-NEXT:   store i32 0, i32* %__9, align 1
-; DUMP-NEXT:   store i32 0, i32* %__10, align 1
-; DUMP-NEXT:   store i32 0, i32* %__11, align 1
-; DUMP-NEXT:   ret void
-; DUMP-NEXT: }
diff --git a/third_party/subzero/tests_lit/asan_tests/no_globals.ll b/third_party/subzero/tests_lit/asan_tests/no_globals.ll
deleted file mode 100644
index 1a3d7f9..0000000
--- a/third_party/subzero/tests_lit/asan_tests/no_globals.ll
+++ /dev/null
@@ -1,19 +0,0 @@
-; Check that Subzero can instrument _start when there are no globals.
-; Previously Subzero would deadlock when _start was the first function. Also
-; test that instrumenting start does not deadlock waiting for nonexistent
-; global initializers to be lowered.
-
-; REQUIRES: no_minimal_build
-
-; RUN: %p2i -i %s --args -verbose=inst -fsanitize-address \
-; RUN:     | FileCheck --check-prefix=DUMP %s
-
-; RUN: %p2i -i %s --args -verbose=inst -fsanitize-address -threads=0 \
-; RUN:     | FileCheck --check-prefix=DUMP %s
-
-
-define void @_start(i32 %arg) {
-  ret void
-}
-
-; DUMP: __asan_init
diff --git a/third_party/subzero/tests_lit/asan_tests/quarantine.ll b/third_party/subzero/tests_lit/asan_tests/quarantine.ll
deleted file mode 100644
index 91ff3a6..0000000
--- a/third_party/subzero/tests_lit/asan_tests/quarantine.ll
+++ /dev/null
@@ -1,69 +0,0 @@
-; Test that the quarantine for recently freed objects works
-
-; REQUIRES: no_minimal_build
-
-; Test with an illegal load from a freed block
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t 2>&1 | FileCheck --check-prefix=LOAD %s
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols -O2 \
-; RUN:     %t.pexe -o %t && %t 2>&1 | FileCheck --check-prefix=LOAD %s
-
-; Test with an illegal store to a freed block
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t 1 2>&1 | FileCheck --check-prefix=STORE %s
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols -O2 \
-; RUN:     %t.pexe -o %t && %t 1 2>&1 | FileCheck --check-prefix=STORE %s
-
-; Test that freed objects eventually get out of quarantine and are unpoisoned
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t 1 2 2>&1 | FileCheck --check-prefix=NONE %s \
-; RUN:     --allow-empty
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols -O2 \
-; RUN:     %t.pexe -o %t && %t 1 2 2>&1 | FileCheck --check-prefix=NONE %s \
-; RUN:     --allow-empty
-
-declare external i32 @malloc(i32)
-declare external void @free(i32)
-declare external void @exit(i32)
-
-; make three 100MB allocations
-define void @_start(i32 %arg) {
-  %argcaddr = add i32 %arg, 8
-  %argcptr = inttoptr i32 %argcaddr to i32*
-  %argc = load i32, i32* %argcptr, align 1
-  %alloc1addr = call i32 @malloc(i32 104857600)
-  %alloc2addr = call i32 @malloc(i32 104857600)
-  %alloc3addr = call i32 @malloc(i32 104857600)
-  %alloc1 = inttoptr i32 %alloc1addr to i32*
-  %alloc2 = inttoptr i32 %alloc2addr to i32*
-  %alloc3 = inttoptr i32 %alloc3addr to i32*
-  call void @free(i32 %alloc1addr)
-  call void @free(i32 %alloc2addr)
-  call void @free(i32 %alloc3addr)
-  switch i32 %argc, label %error [i32 1, label %bad_load
-                                  i32 2, label %bad_store
-                                  i32 3, label %no_err]
-bad_load:
-  %result_load = load i32, i32* %alloc2, align 1
-  br label %error
-bad_store:
-  store i32 42, i32* %alloc3, align 1
-  br label %error
-no_err:
-  %result_no_err = load i32, i32* %alloc1, align 1
-  call void @exit(i32 0)
-  unreachable
-error:
-  call void @exit(i32 1)
-  unreachable
-}
-
-; LOAD: Illegal 4 byte load from freed object at
-; STORE: Illegal 4 byte store to freed object at
-; NONE-NOT: Illegal
diff --git a/third_party/subzero/tests_lit/asan_tests/realloc_shrink.ll b/third_party/subzero/tests_lit/asan_tests/realloc_shrink.ll
deleted file mode 100644
index 9db05fa..0000000
--- a/third_party/subzero/tests_lit/asan_tests/realloc_shrink.ll
+++ /dev/null
@@ -1,26 +0,0 @@
-; Test that shrinking an allocation updates the redzones
-
-; REQUIRES: no_minimal_build
-
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t 2>&1 | FileCheck %s
-
-
-declare external i32 @malloc(i32)
-declare external i32 @realloc(i32, i32)
-declare external void @free(i32)
-
-define void @_start(i32 %arg) {
-  %ptr16 = call i32 @malloc(i32 16)
-  %off12a = add i32 %ptr16, 12
-  %offptra = inttoptr i32 %off12a to i32*
-  %resa = load i32, i32* %offptra, align 1
-  %ptr8 = call i32 @realloc(i32 %ptr16, i32 8)
-  %off12b = add i32 %ptr8, 12
-  %offptrb = inttoptr i32 %off12b to i8*
-  %resb = load i8, i8* %offptrb, align 1
-  ret void
-}
-
-; CHECK: Illegal 1 byte load from heap object at
diff --git a/third_party/subzero/tests_lit/asan_tests/scatteredallocas.ll b/third_party/subzero/tests_lit/asan_tests/scatteredallocas.ll
deleted file mode 100644
index 5c4588c..0000000
--- a/third_party/subzero/tests_lit/asan_tests/scatteredallocas.ll
+++ /dev/null
@@ -1,63 +0,0 @@
-; Test that static allocas throughout the entry block are instrumented correctly
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --args -verbose=inst -threads=0 -fsanitize-address \
-; RUN:     -allow-externally-defined-symbols | FileCheck --check-prefix=DUMP %s
-
-declare external i32 @malloc(i32)
-declare external void @free(i32)
-
-define void @func() {
-  %a = alloca i8, i32 4, align 4
-  %m1 = call i32 @malloc(i32 42)
-  %b = alloca i8, i32 16, align 4
-  store i8 50, i8* %a, align 1
-  %c = alloca i8, i32 8, align 8
-  call void @free(i32 %m1)
-  %d = alloca i8, i32 12, align 4
-  ret void
-}
-
-; DUMP-LABEL: ================ Instrumented CFG ================
-; DUMP-NEXT: define void @func() {
-; DUMP-NEXT: __0:
-; DUMP-NEXT:   %__$rz0 = alloca i8, i32 32, align 8
-; DUMP-NEXT:   %a = alloca i8, i32 64, align 8
-; DUMP-NEXT:   %b = alloca i8, i32 64, align 8
-; DUMP-NEXT:   %c = alloca i8, i32 64, align 8
-; DUMP-NEXT:   %d = alloca i8, i32 64, align 8
-; DUMP-NEXT:   %shadowIndex = lshr i32 %__$rz0, 3
-; DUMP-NEXT:   %firstShadowLoc = add i32 %shadowIndex, 536870912
-; DUMP-NEXT:   %__8 = add i32 %firstShadowLoc, 0
-; DUMP-NEXT:   store i32 -1, i32* %__8, align 1
-; DUMP-NEXT:   %__9 = add i32 %firstShadowLoc, 4
-; DUMP-NEXT:   store i32 -252, i32* %__9, align 1
-; DUMP-NEXT:   %__10 = add i32 %firstShadowLoc, 8
-; DUMP-NEXT:   store i32 -1, i32* %__10, align 1
-; DUMP-NEXT:   %__11 = add i32 %firstShadowLoc, 12
-; DUMP-NEXT:   store i32 -65536, i32* %__11, align 1
-; DUMP-NEXT:   %__12 = add i32 %firstShadowLoc, 16
-; DUMP-NEXT:   store i32 -1, i32* %__12, align 1
-; DUMP-NEXT:   %__13 = add i32 %firstShadowLoc, 20
-; DUMP-NEXT:   store i32 -256, i32* %__13, align 1
-; DUMP-NEXT:   %__14 = add i32 %firstShadowLoc, 24
-; DUMP-NEXT:   store i32 -1, i32* %__14, align 1
-; DUMP-NEXT:   %__15 = add i32 %firstShadowLoc, 28
-; DUMP-NEXT:   store i32 -64512, i32* %__15, align 1
-; DUMP-NEXT:   %__16 = add i32 %firstShadowLoc, 32
-; DUMP-NEXT:   store i32 -1, i32* %__16, align 1
-; DUMP-NEXT:   %m1 = call i32 @__asan_malloc(i32 42)
-; DUMP-NEXT:   store i8 50, i8* %a, align 1
-; DUMP-NEXT:   call void @__asan_free(i32 %m1)
-; DUMP-NEXT:   store i32 0, i32* %__8, align 1
-; DUMP-NEXT:   store i32 0, i32* %__9, align 1
-; DUMP-NEXT:   store i32 0, i32* %__10, align 1
-; DUMP-NEXT:   store i32 0, i32* %__11, align 1
-; DUMP-NEXT:   store i32 0, i32* %__12, align 1
-; DUMP-NEXT:   store i32 0, i32* %__13, align 1
-; DUMP-NEXT:   store i32 0, i32* %__14, align 1
-; DUMP-NEXT:   store i32 0, i32* %__15, align 1
-; DUMP-NEXT:   store i32 0, i32* %__16, align 1
-; DUMP-NEXT:   ret void
-; DUMP-NEXT: }
\ No newline at end of file
diff --git a/third_party/subzero/tests_lit/asan_tests/startinitcall.ll b/third_party/subzero/tests_lit/asan_tests/startinitcall.ll
deleted file mode 100644
index a30f149..0000000
--- a/third_party/subzero/tests_lit/asan_tests/startinitcall.ll
+++ /dev/null
@@ -1,30 +0,0 @@
-; Test for a call to __asan_init in _start
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --args -verbose=inst -threads=0 -fsanitize-address \
-; RUN:     | FileCheck --check-prefix=DUMP %s
-
-; notStart() should not be instrumented
-define internal void @notStart() {
-  ret void
-}
-
-; DUMP-LABEL: ================ Instrumented CFG ================
-; DUMP-NEXT: define internal void @notStart() {
-; DUMP-NEXT: __0:
-; DUMP-NOT: __asan_init()
-; DUMP: ret void
-; DUMP-NEXT: }
-
-; _start() should be instrumented
-define void @_start() {
-  ret void
-}
-
-; DUMP-LABEL: ================ Instrumented CFG ================
-; DUMP-NEXT: define void @_start() {
-; DUMP-NEXT: __0:
-; DUMP-NEXT: call void @__asan_init(i32 0, i32 @__$rz_array, i32 @__$rz_sizes)
-; DUMP-NEXT: ret void
-; DUMP-NEXT: }
diff --git a/third_party/subzero/tests_lit/asan_tests/wideloads.ll b/third_party/subzero/tests_lit/asan_tests/wideloads.ll
deleted file mode 100644
index 9b8d15e..0000000
--- a/third_party/subzero/tests_lit/asan_tests/wideloads.ll
+++ /dev/null
@@ -1,55 +0,0 @@
-; Test that potentially widened loads to not trigger an error report
-
-; REQUIRES: no_minimal_build
-
-; check for wide load exception
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t | FileCheck %s --check-prefix=WIDE --allow-empty
-
-; check for error reporting
-; RUN: llvm-as %s -o - | pnacl-freeze > %t.pexe && %S/../../pydir/szbuild.py \
-; RUN:     --fsanitize-address --sz=-allow-externally-defined-symbols \
-; RUN:     %t.pexe -o %t && %t 1 2>&1 | FileCheck %s --check-prefix=NOWIDE
-
-
-declare external void @exit(i32)
-
-define internal void @wide_load() {
-  %str = alloca i8, i32 1, align 1
-  %str4 = bitcast i8* %str to i32*
-  %contents = load i32, i32* %str4, align 1
-  call void @exit(i32 0)
-  unreachable
-}
-
-define internal void @no_wide_load() {
-  %str = alloca i8, i32 1, align 1
-  %straddr = ptrtoint i8* %str to i32
-  %off1addr = add i32 %straddr, 1
-  %off1 = inttoptr i32 %off1addr to i8*
-  %contents = load i8, i8* %off1, align 1
-  call void @exit(i32 1) 
-  unreachable
-}
-
-; WIDE-NOT: Illegal
-; NOWIDE: Illegal 1 byte load from stack object at
-
-; use argc to determine which test routine to run
-define void @_start(i32 %arg) {
-  %argcaddr = add i32 %arg, 8
-  %argcptr = inttoptr i32 %argcaddr to i32*
-  %argc = load i32, i32* %argcptr, align 1
-  switch i32 %argc, label %error [i32 1, label %wide_load
-                                  i32 2, label %no_wide_load]
-wide_load:
-  call void @wide_load()
-  br label %error
-no_wide_load:
-  call void @no_wide_load()
-  br label %error
-error:
-  call void @exit(i32 1)
-  unreachable
-}
\ No newline at end of file
diff --git a/third_party/subzero/tests_lit/assembler/arm32/add-vec.ll b/third_party/subzero/tests_lit/assembler/arm32/add-vec.ll
deleted file mode 100644
index ca64b46..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/add-vec.ll
+++ /dev/null
@@ -1,85 +0,0 @@
-; Show that we know how to translate vadd vector instructions.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   -reg-use q10,q11 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   -reg-use q10,q11 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   -reg-use q10,q11 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   -reg-use q10,q11 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal <4 x float> @testVaddFloat4(<4 x float> %v1, <4 x float> %v2) {
-; ASM-LABEL: testVaddFloat4:
-; DIS-LABEL: 00000000 <testVaddFloat4>:
-; IASM-LABEL: testVaddFloat4:
-
-entry:
-  %res = fadd <4 x float> %v1, %v2
-
-; ASM:     vadd.f32        q10, q10, q11
-; DIS:   8:       f2444de6
-; IASM-NOT:     vadd.f32
-
-  ret <4 x float> %res
-}
-
-define internal <4 x i32> @testVadd4i32(<4 x i32> %v1, <4 x i32> %v2) {
-; ASM-LABEL: testVadd4i32:
-; DIS-LABEL: 00000020 <testVadd4i32>:
-; IASM-LABEL: testVadd4i32:
-
-entry:
-  %res = add <4 x i32> %v1, %v2
-
-; ASM:     vadd.i32        q10, q10, q11
-; DIS:   28:       f26448e6
-; IASM-NOT:     vadd.i32
-
-  ret <4 x i32> %res
-}
-
-define internal <8 x i16> @testVadd8i16(<8 x i16> %v1, <8 x i16> %v2) {
-; ASM-LABEL: testVadd8i16:
-; DIS-LABEL: 00000040 <testVadd8i16>:
-; IASM-LABEL: testVadd8i16:
-
-entry:
-  %res = add <8 x i16> %v1, %v2
-
-; ASM:     vadd.i16        q10, q10, q11
-; DIS:   48:       f25448e6
-; IASM-NOT:     vadd.i16
-
-  ret <8 x i16> %res
-}
-
-define internal <16 x i8> @testVadd16i8(<16 x i8> %v1, <16 x i8> %v2) {
-; ASM-LABEL: testVadd16i8:
-; DIS-LABEL: 00000060 <testVadd16i8>:
-; IASM-LABEL: testVadd16i8:
-
-entry:
-  %res = add <16 x i8> %v1, %v2
-
-; ASM:     vadd.i8        q10, q10, q11
-; DIS:   68:       f24448e6
-; IASM-NOT:     vadd.i8
-
-  ret <16 x i8> %res
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/add.ll b/third_party/subzero/tests_lit/assembler/arm32/add.ll
deleted file mode 100644
index b5e8b37..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/add.ll
+++ /dev/null
@@ -1,123 +0,0 @@
-; Show that we know how to translate add.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @add1ToR0(i32 %p) {
-  %v = add i32 %p, 1
-  ret i32 %v
-}
-
-; ASM-LABEL: add1ToR0:
-; ASM-NEXT:  .Ladd1ToR0$__0:
-; ASM-NEXT:     add     r0, r0, #1
-; ASM-NEXT:     bx      lr
-
-; DIS-LABEL:00000000 <add1ToR0>:
-; DIS-NEXT:   0:        e2800001
-; DIS-NEXT:   4:        e12fff1e
-
-; IASM-LABEL: add1ToR0:
-; IASM-LABEL: .Ladd1ToR0$__0:
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x80
-; IASM-NEXT:    .byte 0xe2
-
-; IASM-NEXT:    .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
-
-define internal i32 @Add2Regs(i32 %p1, i32 %p2) {
-  %v = add i32 %p1, %p2
-  ret i32 %v
-}
-
-; ASM-LABEL: Add2Regs:
-; ASM-NEXT:  .LAdd2Regs$__0:
-; ASM-NEXT:     add r0, r0, r1
-; ASM-NEXT:     bx lr
-
-; DIS-LABEL:00000010 <Add2Regs>:
-; DIS-NEXT:  10:        e0800001
-; DIS-NEXT:  14:        e12fff1e
-
-; IASM-LABEL: Add2Regs:
-; IASM-NEXT:  .LAdd2Regs$__0:
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x80
-; IASM-NEXT:    .byte 0xe0
-
-; IASM-NEXT:    .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
-
-define internal i64 @addI64ToR0R1(i64 %p) {
-  %v = add i64 %p, 1
-  ret i64 %v
-}
-
-; ASM-LABEL:addI64ToR0R1:
-; ASM-NEXT:.LaddI64ToR0R1$__0:
-; ASM-NEXT:     adds    r0, r0, #1
-; ASM-NEXT:     adc     r1, r1, #0
-
-; DIS-LABEL:00000020 <addI64ToR0R1>:
-; DIS-NEXT:  20:        e2900001
-; DIS-NEXT:  24:        e2a11000
-
-; IASM-LABEL:addI64ToR0R1:
-; IASM-NEXT:.LaddI64ToR0R1$__0:
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x90
-; IASM-NEXT:    .byte 0xe2
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0xa1
-; IASM-NEXT:    .byte 0xe2
-
-define internal i64 @AddI64Regs(i64 %p1, i64 %p2) {
-  %v = add i64 %p1, %p2
-  ret i64 %v
-}
-
-; ASM-LABEL:AddI64Regs:
-; ASM-NEXT:.LAddI64Regs$__0:
-; ASM-NEXT:     adds    r0, r0, r2
-; ASM-NEXT:     adc     r1, r1, r3
-
-; DIS-LABEL:00000030 <AddI64Regs>:
-; DIS-NEXT:  30:	e0900002
-; DIS-NEXT:  34:	e0a11003
-
-; IASM-LABEL:AddI64Regs:
-; IASM-NEXT:.LAddI64Regs$__0:
-; IASM-NEXT:    .byte 0x2
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x90
-; IASM-NEXT:    .byte 0xe0
-; IASM-NEXT:    .byte 0x3
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0xa1
-; IASM-NEXT:    .byte 0xe0
diff --git a/third_party/subzero/tests_lit/assembler/arm32/and-vec.ll b/third_party/subzero/tests_lit/assembler/arm32/and-vec.ll
deleted file mode 100644
index 48f28a5..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/and-vec.ll
+++ /dev/null
@@ -1,115 +0,0 @@
-; Show that we know how to translate vand vector instructions.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal <4 x i32> @testVand4i32(<4 x i32> %v1, <4 x i32> %v2) {
-; ASM-LABEL: testVand4i32:
-; DIS-LABEL: 00000000 <testVand4i32>:
-; IASM-LABEL: testVand4i32:
-
-entry:
-  %res = and <4 x i32> %v1, %v2
-
-; ASM:     vand.i32        q0, q0, q1
-; DIS:   0:       f2000152
-; IASM-NOT:     vand
-
-  ret <4 x i32> %res
-}
-
-define internal <8 x i16> @testVand8i16(<8 x i16> %v1, <8 x i16> %v2) {
-; ASM-LABEL: testVand8i16:
-; DIS-LABEL: 00000010 <testVand8i16>:
-; IASM-LABEL: testVand8i16:
-
-entry:
-  %res = and <8 x i16> %v1, %v2
-
-; ASM:     vand.i16        q0, q0, q1
-; DIS:   10:       f2000152
-; IASM-NOT:     vand
-
-  ret <8 x i16> %res
-}
-
-define internal <16 x i8> @testVand16i8(<16 x i8> %v1, <16 x i8> %v2) {
-; ASM-LABEL: testVand16i8:
-; DIS-LABEL: 00000020 <testVand16i8>:
-; IASM-LABEL: testVand16i8:
-
-entry:
-  %res = and <16 x i8> %v1, %v2
-
-; ASM:     vand.i8        q0, q0, q1
-; DIS:   20:       f2000152
-; IASM-NOT:     vand
-
-  ret <16 x i8> %res
-}
-
-;;
-;; The following tests make sure logical and works on predicate vectors.
-;;
-
-define internal <4 x i1> @testVand4i1(<4 x i1> %v1, <4 x i1> %v2) {
-; ASM-LABEL: testVand4i1:
-; DIS-LABEL: 00000030 <testVand4i1>:
-; IASM-LABEL: testVand4i1:
-
-entry:
-  %res = and <4 x i1> %v1, %v2
-
-; ASM:     vand.i32        q0, q0, q1
-; DIS:   30:       f2000152
-; IASM-NOT:     vand
-
-  ret <4 x i1> %res
-}
-
-define internal <8 x i1> @testVand8i1(<8 x i1> %v1, <8 x i1> %v2) {
-; ASM-LABEL: testVand8i1:
-; DIS-LABEL: 00000040 <testVand8i1>:
-; IASM-LABEL: testVand8i1:
-
-entry:
-  %res = and <8 x i1> %v1, %v2
-
-; ASM:     vand.i16        q0, q0, q1
-; DIS:   40:       f2000152
-; IASM-NOT:     vand
-
-  ret <8 x i1> %res
-}
-
-define internal <16 x i1> @testVand16i1(<16 x i1> %v1, <16 x i1> %v2) {
-; ASM-LABEL: testVand16i1:
-; DIS-LABEL: 00000050 <testVand16i1>:
-; IASM-LABEL: testVand16i1:
-
-entry:
-  %res = and <16 x i1> %v1, %v2
-
-; ASM:     vand.i8        q0, q0, q1
-; DIS:   50:       f2000152
-; IASM-NOT:     vand
-
-  ret <16 x i1> %res
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/and.ll b/third_party/subzero/tests_lit/assembler/arm32/and.ll
deleted file mode 100644
index ec563e8..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/and.ll
+++ /dev/null
@@ -1,109 +0,0 @@
-; Show that we know how to translate and.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @And1WithR0(i32 %p) {
-  %v = and i32 %p, 1
-  ret i32 %v
-}
-
-; ASM-LABEL:And1WithR0:
-; ASM-NEXT:.LAnd1WithR0$__0:
-; ASM-NEXT:     and     r0, r0, #1
-
-; DIS-LABEL:00000000 <And1WithR0>:
-; DIS-NEXT:   0:        e2000001
-
-; IASM-LABEL:And1WithR0:
-; IASM-NEXT:.LAnd1WithR0$__0:
-; IASM-NEXT:     .byte 0x1
-; IASM-NEXT:     .byte 0x0
-; IASM-NEXT:     .byte 0x0
-; IASM-NEXT:     .byte 0xe2
-
-define internal i32 @And2Regs(i32 %p1, i32 %p2) {
-  %v = and i32 %p1, %p2
-  ret i32 %v
-}
-
-; ASM-LABEL:And2Regs:
-; ASM-NEXT:.LAnd2Regs$__0:
-; ASM-NEXT:     and     r0, r0, r1
-
-; DIS-LABEL:00000010 <And2Regs>:
-; DIS-NEXT:  10:        e0000001
-
-; IASM-LABEL:And2Regs:
-; IASM-NEXT:.LAnd2Regs$__0:
-; IASM-NEXT:     .byte 0x1
-; IASM-NEXT:     .byte 0x0
-; IASM-NEXT:     .byte 0x0
-; IASM-NEXT:     .byte 0xe0
-
-define internal i64 @AndI64WithR0R1(i64 %p) {
-  %v = and i64 %p, 1
-  ret i64 %v
-}
-
-; ASM-LABEL:AndI64WithR0R1:
-; ASM-NEXT:.LAndI64WithR0R1$__0:
-; ASM-NEXT:     and     r0, r0, #1
-; ASM-NEXT:     and     r1, r1, #0
-
-; DIS-LABEL:00000020 <AndI64WithR0R1>:
-; DIS-NEXT:  20:        e2000001
-; DIS-NEXT:  24:        e2011000
-
-; IASM-LABEL:AndI64WithR0R1:
-; IASM-NEXT:.LAndI64WithR0R1$__0:
-; IASM-NEXT:     .byte 0x1
-; IASM-NEXT:     .byte 0x0
-; IASM-NEXT:     .byte 0x0
-; IASM-NEXT:     .byte 0xe2
-; IASM-NEXT:     .byte 0x0
-; IASM-NEXT:     .byte 0x10
-; IASM-NEXT:     .byte 0x1
-; IASM-NEXT:     .byte 0xe2
-
-define internal i64 @AndI64Regs(i64 %p1, i64 %p2) {
-  %v = and i64 %p1, %p2
-  ret i64 %v
-}
-
-; ASM-LABEL:AndI64Regs:
-; ASM-NEXT:.LAndI64Regs$__0:
-; ASM-NEXT:     and     r0, r0, r2
-; ASM-NEXT:     and     r1, r1, r3
-
-; DIS-LABEL:00000030 <AndI64Regs>:
-; DIS-NEXT:  30:        e0000002
-; DIS-NEXT:  34:        e0011003
-
-; IASM-LABEL:AndI64Regs:
-; IASM-NEXT:.LAndI64Regs$__0:
-; IASM-NEXT:     .byte 0x2
-; IASM-NEXT:     .byte 0x0
-; IASM-NEXT:     .byte 0x0
-; IASM-NEXT:     .byte 0xe0
-; IASM-NEXT:     .byte 0x3
-; IASM-NEXT:     .byte 0x10
-; IASM-NEXT:     .byte 0x1
-; IASM-NEXT:     .byte 0xe0
diff --git a/third_party/subzero/tests_lit/assembler/arm32/asr.ll b/third_party/subzero/tests_lit/assembler/arm32/asr.ll
deleted file mode 100644
index 40a5894..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/asr.ll
+++ /dev/null
@@ -1,118 +0,0 @@
-; Show that we know how to translate asr.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @AshrAmt(i32 %a) {
-; ASM-LABEL:AshrAmt:
-; DIS-LABEL:00000000 <AshrAmt>:
-; IASM-LABEL:AshrAmt:
-
-entry:
-; ASM-NEXT:.LAshrAmt$entry:
-; IASM-NEXT:.LAshrAmt$entry:
-
-  %v = ashr i32 %a, 23
-
-; ASM-NEXT:     asr     r0, r0, #23
-; DIS-NEXT:   0:	e1a00bc0
-; IASM-NOT:     asr
-; IASM-NEXT:	.byte 0xc0
-; IASM-NEXT:	.byte 0xb
-; IASM-NEXT:	.byte 0xa0
-; IASM-NEXT:	.byte 0xe1
-
-  ret i32 %v
-}
-
-define internal i32 @AshrReg(i32 %a, i32 %b) {
-; ASM-LABEL:AshrReg:
-; DIS-LABEL:00000010 <AshrReg>:
-; IASM-LABEL:AshrReg:
-
-entry:
-; ASM-NEXT:.LAshrReg$entry:
-; IASM-NEXT:.LAshrReg$entry:
-
-  %v = ashr i32 %a, %b
-
-; ASM-NEXT:     asr     r0, r0, r1
-; DIS-NEXT:  10:	e1a00150
-; IASM-NOT:     asr
-; IASM-NEXT:	.byte 0x50
-; IASM-NEXT:	.byte 0x1
-; IASM-NEXT:	.byte 0xa0
-; IASM-NEXT:	.byte 0xe1
-
-  ret i32 %v
-}
-
-define internal <4 x i32> @AshrVeci32(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:AshrVeci32:
-; DIS-LABEL:00000020 <AshrVeci32>:
-; IASM-LABEL:AshrVeci32:
-
-entry:
-
-  %v = ashr <4 x i32> %a, %b
-
-; ASM:          vneg.s32  q1, q1
-; ASM-NEXT:     vshl.s32 q0, q0, q1
-; DIS:      20:          f3b923c2
-; DIS:      24:          f2220440
-; IASM-NOT:     vneg
-; IASM-NOT:     vshl
-
-  ret <4 x i32> %v
-}
-
-define internal <8 x i16> @AshrVeci16(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:AshrVeci16:
-
-entry:
-
-  %v = ashr <8 x i16> %a, %b
-
-; ASM:          vneg.s16  q1, q1
-; ASM-NEXT:     vshl.s16 q0, q0, q1
-; DIS:      30:          f3b523c2
-; DIS:      34:          f2120440
-; IASM-NOT:     vneg
-; IASM-NOT:     vshl
-
-  ret <8 x i16> %v
-}
-
-define internal <16 x i8> @AshrVeci8(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:AshrVeci8:
-
-entry:
-
-  %v = ashr <16 x i8> %a, %b
-
-; ASM:          vneg.s8  q1, q1
-; ASM-NEXT:     vshl.s8 q0, q0, q1
-; DIS:      40:         f3b123c2
-; DIS:      44:         f2020440
-; IASM-NOT:     vneg
-; IASM-NOT:     vshl
-
-  ret <16 x i8> %v
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/bic.ll b/third_party/subzero/tests_lit/assembler/arm32/bic.ll
deleted file mode 100644
index 0ba7eb1..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/bic.ll
+++ /dev/null
@@ -1,93 +0,0 @@
-; Show that we know how to translate bic.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @AllocBigAlign() {
-  %addr = alloca i8, align 32
-  %v = ptrtoint i8* %addr to i32
-  ret i32 %v
-}
-
-; ASM-LABEL:AllocBigAlign:
-; ASM-NEXT:.LAllocBigAlign$__0:
-; DIS-LABEL:00000000 <AllocBigAlign>:
-; IASM-LABEL:AllocBigAlign:
-; IASM-NEXT:.LAllocBigAlign$__0:
-
-; ASM-NEXT:  push    {fp}
-; DIS-NEXT:   0:        e52db004
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0xb0
-; IASM-NEXT:    .byte 0x2d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:  mov     fp, sp
-; DIS-NEXT:   4:        e1a0b00d
-; IASM:         .byte 0xd
-; IASM-NEXT:    .byte 0xb0
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe1
-
-; ASM-NEXT:  sub     sp, sp, #32
-; DIS-NEXT:   8:        e24dd020
-; IASM:         .byte 0x20
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x4d
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:  bic     sp, sp, #31
-; DIS-NEXT:   c:        e3cdd01f
-; IASM:         .byte 0x1f
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0xcd
-; IASM-NEXT:    .byte 0xe3
-
-; ASM-NEXT:  # sp = def.pseudo
-
-; ASM-NEXT:  add     r0, sp, #0
-; DIS-NEXT:  10:        e28d0000
-; IASM:         .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:  mov     sp, fp
-; DIS-NEXT:  14:        e1a0d00b
-; IASM:         .byte 0xb
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe1
-
-; ASM-NEXT:  pop     {fp}
-; DIS-NEXT:  18:        e49db004
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0xb0
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe4
-
-; ASM-NEXT:  # fp = def.pseudo
-
-; ASM-NEXT:  bx      lr
-; DIS-NEXT:  1c:        e12fff1e
-; IASM:         .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
diff --git a/third_party/subzero/tests_lit/assembler/arm32/blx.ll b/third_party/subzero/tests_lit/assembler/arm32/blx.ll
deleted file mode 100644
index f3107dc..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/blx.ll
+++ /dev/null
@@ -1,64 +0,0 @@
-; Show that we know how to translate blx.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal void @callIndirect(i32 %addr) {
-; ASM-LABEL:callIndirect:
-; DIS-LABEL:00000000 <callIndirect>:
-; IASM-LABEL:callIndirect:
-
-entry:
-; ASM-NEXT:.LcallIndirect$entry:
-; IASM-NEXT:.LcallIndirect$entry:
-; ASM-NEXT:     push    {lr}
-; DIS-NEXT:   0:        e52de004
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0xe0
-; IASM-NEXT:    .byte 0x2d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     sub     sp, sp, #12
-; DIS-NEXT:   4:        e24dd00c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x4d
-; IASM-NEXT:    .byte 0xe2
-
-   %calladdr = inttoptr i32 %addr to void (i32)*
-
-; ASM-NEXT:     mov     r1, r0
-; DIS-NEXT:   8:        e1a01000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe1
-
-   call void %calladdr(i32 %addr)
-
-; ASM-NEXT:     blx     r1
-; DIS-NEXT:   c:        e12fff31
-; IASM-NEXT:    .byte 0x31
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
-
-   ret void
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/branch-mult-fwd.ll b/third_party/subzero/tests_lit/assembler/arm32/branch-mult-fwd.ll
deleted file mode 100644
index 6f87f8a..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/branch-mult-fwd.ll
+++ /dev/null
@@ -1,172 +0,0 @@
-; Test that we correctly fix multiple forward branches.
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-; REQUIRES: allow_dump
-
-define internal void @mult_fwd_branches(i32 %a, i32 %b) {
-; ASM-LABEL:mult_fwd_branches:
-; DIS-LABEL:00000000 <mult_fwd_branches>:
-; IASM-LABEL:mult_fwd_branches:
-
-; ASM-LABEL:.Lmult_fwd_branches$__0:
-; IASM-LABEL:.Lmult_fwd_branches$__0:
-
-; ASM-NEXT:     sub     sp, sp, #12
-; DIS-NEXT:   0:        e24dd00c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x4d
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     str     r0, [sp, #8]
-; ASM-NEXT:     # [sp, #8] = def.pseudo
-; DIS-NEXT:   4:        e58d0008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     str     r1, [sp, #4]
-; ASM-NEXT:     # [sp, #4] = def.pseudo
-; DIS-NEXT:   8:        e58d1004
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-  %cmp = icmp slt i32 %a, %b
-
-; ASM-NEXT:     mov     r0, #0
-; DIS-NEXT:   c:        e3a00000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe3
-
-; ASM-NEXT:     ldr     r1, [sp, #8]
-; DIS-NEXT:  10:        e59d1008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     ldr     r2, [sp, #4]
-; DIS-NEXT:  14:        e59d2004
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0x20
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     cmp     r1, r2
-; DIS-NEXT:  18:        e1510002
-; IASM-NEXT:    .byte 0x2
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x51
-; IASM-NEXT:    .byte 0xe1
-
-; ASM-NEXT:     movlt   r0, #1
-; DIS-NEXT:  1c:        b3a00001
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xb3
-
-; ASM-NEXT:     strb    r0, [sp]
-; ASM-NEXT:     # [sp] = def.pseudo
-; DIS-NEXT:  20:        e5cd0000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xcd
-; IASM-NEXT:    .byte 0xe5
-
-  br i1 %cmp, label %then, label %else
-
-; ASM-NEXT:     ldrb    r0, [sp]
-; DIS-NEXT:  24:        e5dd0000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xdd
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     tst     r0, #1
-; DIS-NEXT:  28:        e3100001
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0xe3
-
-; ASM-NEXT:     bne     .Lmult_fwd_branches$then
-; DIS-NEXT:  2c:        1a000000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x1a
-
-; ASM-NEXT:     b       .Lmult_fwd_branches$else
-; DIS-NEXT:  30:        ea000000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xea
-
-then:
-; ASM-LABEL:.Lmult_fwd_branches$then:
-; IASM-LABEL:.Lmult_fwd_branches$then:
-
-  br label %end
-
-; ASM-NEXT:     b       .Lmult_fwd_branches$end
-; DIS-NEXT:  34:        ea000000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xea
-
-else:
-; ASM-LABEL:.Lmult_fwd_branches$else:
-; IASM-LABEL:.Lmult_fwd_branches$else:
-
-  br label %end
-; ASM-NEXT:     b       .Lmult_fwd_branches$end
-; DIS-NEXT:  38:        eaffffff
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0xea
-
-
-end:
-; ASM-LABEL:.Lmult_fwd_branches$end:
-; IASM-LABEL: .Lmult_fwd_branches$end:
-
-  ret void
-
-; ASM-NEXT:     add     sp, sp, #12
-; DIS-NEXT:  3c:        e28dd00c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     bx      lr
-; DIS-NEXT:  40:        e12fff1e
-; IASM-NEXT:    .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/branch-simple.ll b/third_party/subzero/tests_lit/assembler/arm32/branch-simple.ll
deleted file mode 100644
index fb4a645..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/branch-simple.ll
+++ /dev/null
@@ -1,74 +0,0 @@
-; Test branching instructions.
-; TODO(kschimpf): Get this working.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-define internal void @simple_uncond_branch() {
-; DIS-LABEL: 00000000 <simple_uncond_branch>:
-; ASM-LABEL: simple_uncond_branch:
-; IASM-LABEL:simple_uncond_branch:
-
-; ASM-NEXT:  .Lsimple_uncond_branch$__0:
-; IASM-NEXT: .Lsimple_uncond_branch$__0:
-
-  br label %l2
-; ASM-NEXT:     b       .Lsimple_uncond_branch$l2
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xea
-; DIS-NEXT:   0:   ea000000
-
-l1:
-; ASM-NEXT:  .Lsimple_uncond_branch$l1:
-; IASM-NEXT: .Lsimple_uncond_branch$l1:
-
-  br label %l3
-; ASM-NEXT:     b       .Lsimple_uncond_branch$l3
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xea
-; DIS-NEXT:   4:   ea000000
-
-l2:
-; ASM-NEXT:  .Lsimple_uncond_branch$l2:
-; IASM-NEXT: .Lsimple_uncond_branch$l2:
-
-  br label %l1
-; ASM-NEXT:     b       .Lsimple_uncond_branch$l1
-; IASM-NEXT:    .byte 0xfd
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0xea
-; DIS-NEXT:   8:   eafffffd
-
-l3:
-; ASM-NEXT:  .Lsimple_uncond_branch$l3:
-; IASM-NEXT: .Lsimple_uncond_branch$l3:
-
-  ret void
-; ASM-NEXT:     bx      lr
-; IASM-NEXT:    .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
-; DIS-NEXT:   c:   e12fff1e
-
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/check-reg-classes.ll b/third_party/subzero/tests_lit/assembler/arm32/check-reg-classes.ll
deleted file mode 100644
index a0956fa..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/check-reg-classes.ll
+++ /dev/null
@@ -1,12 +0,0 @@
-; Show that all register classes are defined for ARM32.
-
-
-; REQUIRES: allow_dump
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   --verbose=registers  | FileCheck %s
-
-define internal void @f() {
-  ret void
-}
-
-; CHECK: Registers available for register allocation:
diff --git a/third_party/subzero/tests_lit/assembler/arm32/clz.ll b/third_party/subzero/tests_lit/assembler/arm32/clz.ll
deleted file mode 100644
index b18dced..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/clz.ll
+++ /dev/null
@@ -1,64 +0,0 @@
-; Show that we know how to translate clz.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-declare i32 @llvm.ctlz.i32(i32, i1)
-
-define internal i32 @testClz(i32 %a) {
-; ASM-LABEL:testClz:
-; DIS-LABEL:00000000 <testClz>:
-; IASM-LABEL:testClz:
-
-entry:
-; ASM-NEXT:.LtestClz$entry:
-; IASM-NEXT:.LtestClz$entry:
-
-; ASM-NEXT:     sub     sp, sp, #8
-; DIS-NEXT:   0:        e24dd008
-; IASM-NEXT:	.byte 0x8
-; IASM-NEXT:	.byte 0xd0
-; IASM-NEXT:	.byte 0x4d
-; IASM-NEXT:	.byte 0xe2
-
-; ASM-NEXT:     str     r0, [sp, #4]
-; ASM-NEXT:     # [sp, #4] = def.pseudo
-; DIS-NEXT:   4:        e58d0004
-; IASM-NEXT:	.byte 0x4
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x8d
-; IASM-NEXT:	.byte 0xe5
-
-  %x = call i32 @llvm.ctlz.i32(i32 %a, i1 0)
-
-; ASM-NEXT:     ldr     r0, [sp, #4]
-; DIS-NEXT:   8:        e59d0004
-; IASM-NEXT:	.byte 0x4
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x9d
-; IASM-NEXT:	.byte 0xe5
-
-; ASM-NEXT:     clz     r0, r0
-; DIS-NEXT:   c:        e16f0f10
-; IASM-NEXT:	.byte 0x10
-; IASM-NEXT:	.byte 0xf
-; IASM-NEXT:	.byte 0x6f
-; IASM-NEXT:	.byte 0xe1
-
-  ret i32 %x
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/cmn.ll b/third_party/subzero/tests_lit/assembler/arm32/cmn.ll
deleted file mode 100644
index 887ce83..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/cmn.ll
+++ /dev/null
@@ -1,70 +0,0 @@
-; Show that we know how to encode CMN in the ARM integrated assembler.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @testCmn(i32 %a) {
-; ASM-LABEL:testCmn:
-; DIS-LABEL:00000000 <testCmn>:
-; IASM-LABEL:testCmn:
-
-entry:
-; ASM-NEXT:.LtestCmn$entry:
-; IASM-NEXT:.LtestCmn$entry:
-
-; ASM-NEXT:     sub     sp, sp, #12
-; DIS-NEXT:   0:        e24dd00c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x4d
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     str     r0, [sp, #8]
-; ASM-NEXT:     # [sp, #8] = def.pseudo
-; DIS-NEXT:   4:        e58d0008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-  %cmp = icmp sgt i32 %a, -1
-
-; ASM-NEXT:     mov     r0, #0
-; DIS-NEXT:   8:        e3a00000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe3
-
-; ASM-NEXT:     ldr     r1, [sp, #8]
-; DIS-NEXT:   c:        e59d1008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     cmn     r1, #1
-; DIS-NEXT:  10:        e3710001
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x71
-; IASM-NEXT:    .byte 0xe3
-
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/cmp-vec.ll b/third_party/subzero/tests_lit/assembler/arm32/cmp-vec.ll
deleted file mode 100644
index ab25cb3..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/cmp-vec.ll
+++ /dev/null
@@ -1,1438 +0,0 @@
-; Test that we handle icmp and fcmp on vectors.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal <4 x i32> @cmpEqV4I32(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpEqV4I32:
-; DIS-LABEL:00000000 <cmpEqV4I32>:
-; IASM-LABEL:cmpEqV4I32:
-
-entry:
-  %cmp = icmp eq <4 x i32> %a, %b
-
-; ASM:         vceq.i32 q0, q0, q1
-; DIS:      0: f3200852
-; IASM-NOT:    vceq
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpNeV4I32(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpNeV4I32:
-; DIS-LABEL:00000010 <cmpNeV4I32>:
-; IASM-LABEL:cmpNeV4I32:
-
-entry:
-  %cmp = icmp ne <4 x i32> %a, %b
-
-; ASM:          vceq.i32 q0, q0, q1
-; ASM-NEXT:     vmvn.i32 q0, q0
-; DIS:      10: f3200852
-; DIS-NEXT: 14: f3b005c0
-; IASM-NOT:     vceq
-; IASM-NOT:     vmvn
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpUgtV4I32(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpUgtV4I32:
-; DIS-LABEL:00000030 <cmpUgtV4I32>:
-; IASM-LABEL:cmpUgtV4I32:
-
-entry:
-  %cmp = icmp ugt <4 x i32> %a, %b
-
-; ASM:          vcgt.u32 q0, q0, q1
-; DIS:      30: f3200342
-; IASM-NOT:     vcgt
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpUgeV4I32(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpUgeV4I32:
-; DIS-LABEL:00000040 <cmpUgeV4I32>:
-; IASM-LABEL:cmpUgeV4I32:
-
-entry:
-  %cmp = icmp uge <4 x i32> %a, %b
-
-; ASM:          vcge.u32 q0, q0, q1
-; DIS:      40: f3200352
-; IASM-NOT:     vcge
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpUltV4I32(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpUltV4I32:
-; DIS-LABEL:00000050 <cmpUltV4I32>:
-; IASM-LABEL:cmpUltV4I32:
-
-entry:
-  %cmp = icmp ult <4 x i32> %a, %b
-
-; ASM:          vcgt.u32 q1, q1, q0
-; DIS:      50: f3222340
-; IASM-NOT:     vcgt
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpUleV4I32(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpUleV4I32:
-; DIS-LABEL:00000070 <cmpUleV4I32>:
-; IASM-LABEL:cmpUleV4I32:
-
-entry:
-  %cmp = icmp ule <4 x i32> %a, %b
-
-; ASM:          vcge.u32 q1, q1, q0
-; DIS:      70: f3222350
-; IASM-NOT:     vcge
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpSgtV4I32(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpSgtV4I32:
-; DIS-LABEL:00000090 <cmpSgtV4I32>:
-; IASM-LABEL:cmpSgtV4I32:
-
-entry:
-  %cmp = icmp sgt <4 x i32> %a, %b
-
-; ASM:          vcgt.s32 q0, q0, q1
-; DIS:      90: f2200342
-; IASM-NOT:     vcgt
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpSgeV4I32(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpSgeV4I32:
-; DIS-LABEL:000000a0 <cmpSgeV4I32>:
-; IASM-LABEL:cmpSgeV4I32:
-
-entry:
-  %cmp = icmp sge <4 x i32> %a, %b
-
-; ASM:          vcge.s32 q0, q0, q1
-; DIS:      a0: f2200352
-; IASM-NOT:     vcge
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpSltV4I32(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpSltV4I32:
-; DIS-LABEL:000000b0 <cmpSltV4I32>:
-; IASM-LABEL:cmpSltV4I32:
-
-entry:
-  %cmp = icmp slt <4 x i32> %a, %b
-
-; ASM:          vcgt.s32 q1, q1, q0
-; DIS:      b0: f2222340
-; IASM-NOT:     vcgt
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpSleV4I32(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpSleV4I32:
-; DIS-LABEL:000000d0 <cmpSleV4I32>:
-; IASM-LABEL:cmpSleV4I32:
-
-entry:
-  %cmp = icmp sle <4 x i32> %a, %b
-
-; ASM:          vcge.s32 q1, q1, q0
-; DIS:      d0: f2222350
-; IASM-NOT:     vcge
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpEqV4I1(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpEqV4I1:
-; DIS-LABEL:000000f0 <cmpEqV4I1>:
-; IASM-LABEL:cmpEqV4I1:
-
-entry:
-  %a1 = trunc <4 x i32> %a to <4 x i1>
-  %b1 = trunc <4 x i32> %b to <4 x i1>
-  %cmp = icmp eq <4 x i1> %a1, %b1
-
-; ASM:          vshl.u32 q0, q0, #31
-; ASM-NEXT:     vshl.u32 q1, q1, #31
-; ASM-NEXT:     vceq.i32 q0, q0, q1
-; DIS:      f0: f2bf0550
-; DIS-NEXT: f4: f2bf2552
-; DIS-NEXT: f8: f3200852
-; IASM-NOT:     vshl
-; IASM-NOT:     vceq
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpNeV4I1(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpNeV4I1:
-; DIS-LABEL:00000110 <cmpNeV4I1>:
-; IASM-LABEL:cmpNeV4I1:
-
-entry:
-  %a1 = trunc <4 x i32> %a to <4 x i1>
-  %b1 = trunc <4 x i32> %b to <4 x i1>
-  %cmp = icmp ne <4 x i1> %a1, %b1
-
-; ASM:           vshl.u32 q0, q0, #31
-; ASM-NEXT:      vshl.u32 q1, q1, #31
-; ASM-NEXT:      vceq.i32 q0, q0, q1
-; ASM-NEXT:      vmvn.i32 q0, q0
-; DIS:      110: f2bf0550
-; DIS-NEXT: 114: f2bf2552
-; DIS-NEXT: 118: f3200852
-; DIS-NEXT: 11c: f3b005c0
-; IASM-NOT:      vshl
-; IASM-NOT:      vceq
-; IASM-NOT:      vmvn
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpUgtV4I1(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpUgtV4I1:
-; DIS-LABEL:00000130 <cmpUgtV4I1>:
-; IASM-LABEL:cmpUgtV4I1:
-
-entry:
-  %a1 = trunc <4 x i32> %a to <4 x i1>
-  %b1 = trunc <4 x i32> %b to <4 x i1>
-  %cmp = icmp ugt <4 x i1> %a1, %b1
-
-; ASM:           vshl.u32 q0, q0, #31
-; ASM-NEXT:      vshl.u32 q1, q1, #31
-; ASM-NEXT:      vcgt.u32 q0, q0, q1
-; DIS:      130: f2bf0550
-; DIS-NEXT: 134: f2bf2552
-; DIS-NEXT: 138: f3200342
-; IASM-NOT:      vshl
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpUgeV4I1(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpUgeV4I1:
-; DIS-LABEL:00000150 <cmpUgeV4I1>:
-; IASM-LABEL:cmpUgeV4I1:
-
-entry:
-  %a1 = trunc <4 x i32> %a to <4 x i1>
-  %b1 = trunc <4 x i32> %b to <4 x i1>
-  %cmp = icmp uge <4 x i1> %a1, %b1
-
-; ASM:           vshl.u32 q0, q0, #31
-; ASM-NEXT:      vshl.u32 q1, q1, #31
-; ASM-NEXT:      vcge.u32 q0, q0, q1
-; DIS:      150: f2bf0550
-; DIS-NEXT: 154: f2bf2552
-; DIS-NEXT: 158: f3200352
-; IASM-NOT:      vshl
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpUltV4I1(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpUltV4I1:
-; DIS-LABEL:00000170 <cmpUltV4I1>:
-; IASM-LABEL:cmpUltV4I1:
-
-entry:
-  %a1 = trunc <4 x i32> %a to <4 x i1>
-  %b1 = trunc <4 x i32> %b to <4 x i1>
-  %cmp = icmp ult <4 x i1> %a1, %b1
-
-; ASM:           vshl.u32 q0, q0, #31
-; ASM-NEXT:      vshl.u32 q1, q1, #31
-; ASM-NEXT:      vcgt.u32 q1, q1, q0
-; DIS:      170: f2bf0550
-; DIS-NEXT: 174: f2bf2552
-; DIS-NEXT: 178: f3222340
-; IASM-NOT:      vshl
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpUleV4I1(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpUleV4I1:
-; DIS-LABEL:00000190 <cmpUleV4I1>:
-; IASM-LABEL:cmpUleV4I1:
-
-entry:
-  %a1 = trunc <4 x i32> %a to <4 x i1>
-  %b1 = trunc <4 x i32> %b to <4 x i1>
-  %cmp = icmp ule <4 x i1> %a1, %b1
-
-; ASM:           vshl.u32 q0, q0, #31
-; ASM-NEXT:      vshl.u32 q1, q1, #31
-; ASM-NEXT:      vcge.u32 q1, q1, q0
-; DIS:      190: f2bf0550
-; DIS-NEXT: 194: f2bf2552
-; DIS-NEXT: 198: f3222350
-; IASM-NOT:      vshl
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpSgtV4I1(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpSgtV4I1:
-; DIS-LABEL:000001b0 <cmpSgtV4I1>:
-; IASM-LABEL:cmpSgtV4I1:
-
-entry:
-  %a1 = trunc <4 x i32> %a to <4 x i1>
-  %b1 = trunc <4 x i32> %b to <4 x i1>
-  %cmp = icmp sgt <4 x i1> %a1, %b1
-
-; ASM:           vshl.u32 q0, q0, #31
-; ASM-NEXT:      vshl.u32 q1, q1, #31
-; ASM-NEXT:      vcgt.s32 q0, q0, q1
-; DIS:      1b0: f2bf0550
-; DIS-NEXT: 1b4: f2bf2552
-; DIS-NEXT: 1b8: f2200342
-; IASM-NOT:      vshl
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpSgeV4I1(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpSgeV4I1:
-; DIS-LABEL:000001d0 <cmpSgeV4I1>:
-; IASM-LABEL:cmpSgeV4I1:
-
-entry:
-  %a1 = trunc <4 x i32> %a to <4 x i1>
-  %b1 = trunc <4 x i32> %b to <4 x i1>
-  %cmp = icmp sge <4 x i1> %a1, %b1
-
-; ASM:           vshl.u32 q0, q0, #31
-; ASM-NEXT:      vshl.u32 q1, q1, #31
-; ASM-NEXT:      vcge.s32 q0, q0, q1
-; DIS:      1d0: f2bf0550
-; DIS-NEXT: 1d4: f2bf2552
-; DIS-NEXT: 1d8: f2200352
-; IASM-NOT:      vshl
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpSltV4I1(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpSltV4I1:
-; DIS-LABEL:000001f0 <cmpSltV4I1>:
-; IASM-LABEL:cmpSltV4I1:
-
-entry:
-  %a1 = trunc <4 x i32> %a to <4 x i1>
-  %b1 = trunc <4 x i32> %b to <4 x i1>
-  %cmp = icmp slt <4 x i1> %a1, %b1
-
-; ASM:           vshl.u32 q0, q0, #31
-; ASM-NEXT:      vshl.u32 q1, q1, #31
-; ASM-NEXT:      vcgt.s32 q1, q1, q0
-; DIS:      1f0: f2bf0550
-; DIS-NEXT: 1f4: f2bf2552
-; DIS-NEXT: 1f8: f2222340
-; IASM-NOT:      vshl
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpSleV4I1(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:cmpSleV4I1:
-; DIS-LABEL:00000210 <cmpSleV4I1>:
-; IASM-LABEL:cmpSleV4I1:
-
-entry:
-  %a1 = trunc <4 x i32> %a to <4 x i1>
-  %b1 = trunc <4 x i32> %b to <4 x i1>
-  %cmp = icmp sle <4 x i1> %a1, %b1
-
-; ASM:           vshl.u32 q0, q0, #31
-; ASM-NEXT:      vshl.u32 q1, q1, #31
-; ASM-NEXT:      vcge.s32 q1, q1, q0
-; DIS:      210: f2bf0550
-; DIS-NEXT: 214: f2bf2552
-; DIS-NEXT: 218: f2222350
-; IASM-NOT:      vshl
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpEqV8I16(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpEqV8I16:
-; DIS-LABEL:00000230 <cmpEqV8I16>:
-; IASM-LABEL:cmpEqV8I16:
-
-entry:
-  %cmp = icmp eq <8 x i16> %a, %b
-
-; ASM:           vceq.i16 q0, q0, q1
-; DIS:      230: f3100852
-; IASM-NOT:      vceq
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpNeV8I16(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpNeV8I16:
-; DIS-LABEL:00000240 <cmpNeV8I16>:
-; IASM-LABEL:cmpNeV8I16:
-
-entry:
-  %cmp = icmp ne <8 x i16> %a, %b
-
-; ASM:           vceq.i16 q0, q0, q1
-; ASM-NEXT:      vmvn.i16 q0, q0
-; DIS:      240: f3100852
-; DIS-NEXT: 244: f3b005c0
-; IASM-NOT:      vceq
-; IASM-NOT:      vmvn
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpUgtV8I16(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpUgtV8I16:
-; DIS-LABEL:00000260 <cmpUgtV8I16>:
-; IASM-LABEL:cmpUgtV8I16:
-
-entry:
-  %cmp = icmp ugt <8 x i16> %a, %b
-
-; ASM:           vcgt.u16 q0, q0, q1
-; DIS:      260: f3100342
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpUgeV8I16(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpUgeV8I16:
-; DIS-LABEL:00000270 <cmpUgeV8I16>:
-; IASM-LABEL:cmpUgeV8I16:
-
-entry:
-  %cmp = icmp uge <8 x i16> %a, %b
-
-; ASM:           vcge.u16 q0, q0, q1
-; DIS:      270: f3100352
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpUltV8I16(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpUltV8I16:
-; DIS-LABEL:00000280 <cmpUltV8I16>:
-; IASM-LABEL:cmpUltV8I16:
-
-entry:
-  %cmp = icmp ult <8 x i16> %a, %b
-
-; ASM:           vcgt.u16 q1, q1, q0
-; DIS:      280: f3122340
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpUleV8I16(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpUleV8I16:
-; DIS-LABEL:000002a0 <cmpUleV8I16>:
-; IASM-LABEL:cmpUleV8I16:
-
-entry:
-  %cmp = icmp ule <8 x i16> %a, %b
-
-; ASM:           vcge.u16 q1, q1, q0
-; DIS:      2a0: f3122350
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpSgtV8I16(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpSgtV8I16:
-; DIS-LABEL:000002c0 <cmpSgtV8I16>:
-; IASM-LABEL:cmpSgtV8I16:
-
-entry:
-  %cmp = icmp sgt <8 x i16> %a, %b
-
-; ASM:           vcgt.s16 q0, q0, q1
-; DIS:      2c0: f2100342
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpSgeV8I16(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpSgeV8I16:
-; DIS-LABEL:000002d0 <cmpSgeV8I16>:
-; IASM-LABEL:cmpSgeV8I16:
-
-entry:
-  %cmp = icmp sge <8 x i16> %a, %b
-
-; ASM:           vcge.s16 q0, q0, q1
-; DIS:      2d0: f2100352
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpSltV8I16(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpSltV8I16:
-; DIS-LABEL:000002e0 <cmpSltV8I16>:
-; IASM-LABEL:cmpSltV8I16:
-
-entry:
-  %cmp = icmp slt <8 x i16> %a, %b
-
-; ASM:           vcgt.s16 q1, q1, q0
-; DIS:      2e0: f2122340
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpSleV8I16(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpSleV8I16:
-; DIS-LABEL:00000300 <cmpSleV8I16>:
-; IASM-LABEL:cmpSleV8I16:
-
-entry:
-  %cmp = icmp sle <8 x i16> %a, %b
-
-; ASM:           vcge.s16 q1, q1, q0
-; DIS:      300: f2122350
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpEqV8I1(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpEqV8I1:
-; DIS-LABEL:00000320 <cmpEqV8I1>:
-; IASM-LABEL:cmpEqV8I1:
-
-entry:
-  %a1 = trunc <8 x i16> %a to <8 x i1>
-  %b1 = trunc <8 x i16> %b to <8 x i1>
-  %cmp = icmp eq <8 x i1> %a1, %b1
-
-; ASM:           vshl.u16 q0, q0, #15
-; ASM-NEXT:      vshl.u16 q1, q1, #15
-; ASM-NEXT:      vceq.i16 q0, q0, q1
-; DIS:      320: f29f0550
-; DIS-NEXT: 324: f29f2552
-; DIS-NEXT: 328: f3100852
-; IASM-NOT:      vshl
-; IASM-NOT:      vceq
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpNeV8I1(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpNeV8I1:
-; DIS-LABEL:00000340 <cmpNeV8I1>:
-; IASM-LABEL:cmpNeV8I1:
-
-entry:
-  %a1 = trunc <8 x i16> %a to <8 x i1>
-  %b1 = trunc <8 x i16> %b to <8 x i1>
-  %cmp = icmp ne <8 x i1> %a1, %b1
-
-; ASM:           vshl.u16 q0, q0, #15
-; ASM-NEXT:      vshl.u16 q1, q1, #15
-; ASM-NEXT:      vceq.i16 q0, q0, q1
-; ASM-NEXT:      vmvn.i16 q0, q0
-; DIS:      340: f29f0550
-; DIS-NEXT: 344: f29f2552
-; DIS-NEXT: 348: f3100852
-; DIS-NEXT: 34c: f3b005c0
-; IASM-NOT:      vshl
-; IASM-NOT:      vceq
-; IASM-NOT:      vmvn
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpUgtV8I1(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpUgtV8I1:
-; DIS-LABEL:00000360 <cmpUgtV8I1>:
-; IASM-LABEL:cmpUgtV8I1:
-
-entry:
-  %a1 = trunc <8 x i16> %a to <8 x i1>
-  %b1 = trunc <8 x i16> %b to <8 x i1>
-  %cmp = icmp ugt <8 x i1> %a1, %b1
-
-; ASM:           vshl.u16 q0, q0, #15
-; ASM-NEXT:      vshl.u16 q1, q1, #15
-; ASM-NEXT:      vcgt.u16 q0, q0, q1
-; DIS:      360: f29f0550
-; DIS-NEXT: 364: f29f2552
-; DIS-NEXT: 368: f3100342
-; IASM-NOT:      vshl
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpUgeV8I1(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpUgeV8I1:
-; DIS-LABEL:00000380 <cmpUgeV8I1>:
-; IASM-LABEL:cmpUgeV8I1:
-
-entry:
-  %a1 = trunc <8 x i16> %a to <8 x i1>
-  %b1 = trunc <8 x i16> %b to <8 x i1>
-  %cmp = icmp uge <8 x i1> %a1, %b1
-
-; ASM:           vshl.u16 q0, q0, #15
-; ASM-NEXT:      vshl.u16 q1, q1, #15
-; ASM-NEXT:      vcge.u16 q0, q0, q1
-; DIS:      380: f29f0550
-; DIS-NEXT: 384: f29f2552
-; DIS-NEXT: 388: f3100352
-; IASM-NOT:      vshl
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpUltV8I1(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpUltV8I1:
-; DIS-LABEL:000003a0 <cmpUltV8I1>:
-; IASM-LABEL:cmpUltV8I1:
-
-entry:
-  %a1 = trunc <8 x i16> %a to <8 x i1>
-  %b1 = trunc <8 x i16> %b to <8 x i1>
-  %cmp = icmp ult <8 x i1> %a1, %b1
-
-; ASM:           vshl.u16 q0, q0, #15
-; ASM-NEXT:      vshl.u16 q1, q1, #15
-; ASM-NEXT:      vcgt.u16 q1, q1, q0
-; DIS:      3a0: f29f0550
-; DIS-NEXT: 3a4: f29f2552
-; DIS-NEXT: 3a8: f3122340
-; IASM-NOT:      vshl
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpUleV8I1(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpUleV8I1:
-; DIS-LABEL:000003c0 <cmpUleV8I1>:
-; IASM-LABEL:cmpUleV8I1:
-
-entry:
-  %a1 = trunc <8 x i16> %a to <8 x i1>
-  %b1 = trunc <8 x i16> %b to <8 x i1>
-  %cmp = icmp ule <8 x i1> %a1, %b1
-
-; ASM:           vshl.u16 q0, q0, #15
-; ASM-NEXT:      vshl.u16 q1, q1, #15
-; ASM-NEXT:      vcge.u16 q1, q1, q0
-; DIS:      3c0: f29f0550
-; DIS-NEXT: 3c4: f29f2552
-; DIS-NEXT: 3c8: f3122350
-; IASM-NOT:      vshl
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpSgtV8I1(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpSgtV8I1:
-; DIS-LABEL:000003e0 <cmpSgtV8I1>:
-; IASM-LABEL:cmpSgtV8I1:
-
-entry:
-  %a1 = trunc <8 x i16> %a to <8 x i1>
-  %b1 = trunc <8 x i16> %b to <8 x i1>
-  %cmp = icmp sgt <8 x i1> %a1, %b1
-
-; ASM:           vshl.u16 q0, q0, #15
-; ASM-NEXT:      vshl.u16 q1, q1, #15
-; ASM-NEXT:      vcgt.s16 q0, q0, q1
-; DIS:      3e0: f29f0550
-; DIS-NEXT: 3e4: f29f2552
-; DIS-NEXT: 3e8: f2100342
-; IASM-NOT:      vshl
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpSgeV8I1(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpSgeV8I1:
-; DIS-LABEL:00000400 <cmpSgeV8I1>:
-; IASM-LABEL:cmpSgeV8I1:
-
-entry:
-  %a1 = trunc <8 x i16> %a to <8 x i1>
-  %b1 = trunc <8 x i16> %b to <8 x i1>
-  %cmp = icmp sge <8 x i1> %a1, %b1
-
-; ASM:           vshl.u16 q0, q0, #15
-; ASM-NEXT:      vshl.u16 q1, q1, #15
-; ASM-NEXT:      vcge.s16 q0, q0, q1
-; DIS:      400: f29f0550
-; DIS-NEXT: 404: f29f2552
-; DIS-NEXT: 408: f2100352
-; IASM-NOT:      vshl
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpSltV8I1(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpSltV8I1:
-; DIS-LABEL:00000420 <cmpSltV8I1>:
-; IASM-LABEL:cmpSltV8I1:
-
-entry:
-  %a1 = trunc <8 x i16> %a to <8 x i1>
-  %b1 = trunc <8 x i16> %b to <8 x i1>
-  %cmp = icmp slt <8 x i1> %a1, %b1
-
-; ASM:           vshl.u16 q0, q0, #15
-; ASM-NEXT:      vshl.u16 q1, q1, #15
-; ASM-NEXT:      vcgt.s16 q1, q1, q0
-; DIS:      420: f29f0550
-; DIS-NEXT: 424: f29f2552
-; DIS-NEXT: 428: f2122340
-; IASM-NOT:      vshl
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <8 x i16> @cmpSleV8I1(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:cmpSleV8I1:
-; DIS-LABEL:00000440 <cmpSleV8I1>:
-; IASM-LABEL:cmpSleV8I1:
-
-entry:
-  %a1 = trunc <8 x i16> %a to <8 x i1>
-  %b1 = trunc <8 x i16> %b to <8 x i1>
-  %cmp = icmp sle <8 x i1> %a1, %b1
-
-; ASM:           vshl.u16 q0, q0, #15
-; ASM-NEXT:      vshl.u16 q1, q1, #15
-; ASM-NEXT:      vcge.s16 q1, q1, q0
-; DIS:      440: f29f0550
-; DIS-NEXT: 444: f29f2552
-; DIS-NEXT: 448: f2122350
-; IASM-NOT:      vshl
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <8 x i1> %cmp to <8 x i16>
-  ret <8 x i16> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpEqV16I8(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpEqV16I8:
-; DIS-LABEL:00000460 <cmpEqV16I8>:
-; IASM-LABEL:cmpEqV16I8:
-
-entry:
-  %cmp = icmp eq <16 x i8> %a, %b
-
-; ASM:           vceq.i8 q0, q0, q1
-; DIS:      460: f3000852
-; IASM-NOT:      vceq
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpNeV16I8(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpNeV16I8:
-; DIS-LABEL:00000470 <cmpNeV16I8>:
-; IASM-LABEL:cmpNeV16I8:
-
-entry:
-  %cmp = icmp ne <16 x i8> %a, %b
-
-; ASM:           vceq.i8 q0, q0, q1
-; ASM-NEXT:      vmvn.i8 q0, q0
-; DIS:      470: f3000852
-; DIS-NEXT: 474: f3b005c0
-; IASM-NOT:      vceq
-; IASM-NOT:      vmvn
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpUgtV16I8(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpUgtV16I8:
-; DIS-LABEL:00000490 <cmpUgtV16I8>:
-; IASM-LABEL:cmpUgtV16I8:
-
-entry:
-  %cmp = icmp ugt <16 x i8> %a, %b
-
-; ASM:           vcgt.u8 q0, q0, q1
-; DIS:      490: f3000342
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpUgeV16I8(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpUgeV16I8:
-; DIS-LABEL:000004a0 <cmpUgeV16I8>:
-; IASM-LABEL:cmpUgeV16I8:
-
-entry:
-  %cmp = icmp uge <16 x i8> %a, %b
-
-; ASM:           vcge.u8 q0, q0, q1
-; DIS:      4a0: f3000352
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpUltV16I8(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpUltV16I8:
-; DIS-LABEL:000004b0 <cmpUltV16I8>:
-; IASM-LABEL:cmpUltV16I8:
-
-entry:
-  %cmp = icmp ult <16 x i8> %a, %b
-
-; ASM:           vcgt.u8 q1, q1, q0
-; DIS:      4b0: f3022340
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpUleV16I8(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpUleV16I8:
-; DIS-LABEL:000004d0 <cmpUleV16I8>:
-; IASM-LABEL:cmpUleV16I8:
-
-entry:
-  %cmp = icmp ule <16 x i8> %a, %b
-
-; ASM:           vcge.u8 q1, q1, q0
-; DIS:      4d0: f3022350
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpSgtV16I8(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpSgtV16I8:
-; DIS-LABEL:000004f0 <cmpSgtV16I8>:
-; IASM-LABEL:cmpSgtV16I8:
-
-entry:
-  %cmp = icmp sgt <16 x i8> %a, %b
-
-; ASM:           vcgt.s8 q0, q0, q1
-; DIS:      4f0: f2000342
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpSgeV16I8(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpSgeV16I8:
-; DIS-LABEL:00000500 <cmpSgeV16I8>:
-; IASM-LABEL:cmpSgeV16I8:
-
-entry:
-  %cmp = icmp sge <16 x i8> %a, %b
-
-; ASM:           vcge.s8 q0, q0, q1
-; DIS:      500: f2000352
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpSltV16I8(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpSltV16I8:
-; DIS-LABEL:00000510 <cmpSltV16I8>:
-; IASM-LABEL:cmpSltV16I8:
-
-entry:
-  %cmp = icmp slt <16 x i8> %a, %b
-
-; ASM:           vcgt.s8 q1, q1, q0
-; DIS:      510: f2022340
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpSleV16I8(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpSleV16I8:
-; DIS-LABEL:00000530 <cmpSleV16I8>:
-; IASM-LABEL:cmpSleV16I8:
-
-entry:
-  %cmp = icmp sle <16 x i8> %a, %b
-
-; ASM:           vcge.s8 q1, q1, q0
-; DIS:      530: f2022350
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpEqV16I1(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpEqV16I1:
-; DIS-LABEL:00000550 <cmpEqV16I1>:
-; IASM-LABEL:cmpEqV16I1:
-
-entry:
-  %a1 = trunc <16 x i8> %a to <16 x i1>
-  %b1 = trunc <16 x i8> %b to <16 x i1>
-  %cmp = icmp eq <16 x i1> %a1, %b1
-
-; ASM:           vshl.u8 q0, q0, #7
-; ASM-NEXT:      vshl.u8 q1, q1, #7
-; ASM-NEXT:      vceq.i8 q0, q0, q1
-; DIS:      550: f28f0550
-; DIS-NEXT: 554: f28f2552
-; DIS-NEXT: 558: f3000852
-; IASM-NOT:      vshl
-; IASM-NOT:      vceq
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpNeV16I1(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpNeV16I1:
-; DIS-LABEL:00000570 <cmpNeV16I1>:
-; IASM-LABEL:cmpNeV16I1:
-
-entry:
-  %a1 = trunc <16 x i8> %a to <16 x i1>
-  %b1 = trunc <16 x i8> %b to <16 x i1>
-  %cmp = icmp ne <16 x i1> %a1, %b1
-
-; ASM:           vshl.u8 q0, q0, #7
-; ASM-NEXT:      vshl.u8 q1, q1, #7
-; ASM-NEXT:      vceq.i8 q0, q0, q1
-; ASM-NEXT:      vmvn.i8 q0, q0
-; DIS:      570: f28f0550
-; DIS-NEXT: 574: f28f2552
-; DIS-NEXT: 578: f3000852
-; DIS-NEXT: 57c: f3b005c0
-; IASM-NOT:      vshl
-; IASM-NOT:      vceq
-; IASM-NOT:      vmvn
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpUgtV16I1(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpUgtV16I1:
-; DIS-LABEL:00000590 <cmpUgtV16I1>:
-; IASM-LABEL:cmpUgtV16I1:
-
-entry:
-  %a1 = trunc <16 x i8> %a to <16 x i1>
-  %b1 = trunc <16 x i8> %b to <16 x i1>
-  %cmp = icmp ugt <16 x i1> %a1, %b1
-
-; ASM:           vshl.u8 q0, q0, #7
-; ASM-NEXT:      vshl.u8 q1, q1, #7
-; ASM-NEXT:      vcgt.u8 q0, q0, q1
-; DIS:      590: f28f0550
-; DIS-NEXT: 594: f28f2552
-; DIS-NEXT: 598: f3000342
-; IASM-NOT:      vshl
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpUgeV16I1(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpUgeV16I1:
-; DIS-LABEL:000005b0 <cmpUgeV16I1>:
-; IASM-LABEL:cmpUgeV16I1:
-
-entry:
-  %a1 = trunc <16 x i8> %a to <16 x i1>
-  %b1 = trunc <16 x i8> %b to <16 x i1>
-  %cmp = icmp uge <16 x i1> %a1, %b1
-
-; ASM:           vshl.u8 q0, q0, #7
-; ASM-NEXT:      vshl.u8 q1, q1, #7
-; ASM-NEXT:      vcge.u8 q0, q0, q1
-; DIS:      5b0: f28f0550
-; DIS-NEXT: 5b4: f28f2552
-; DIS-NEXT: 5b8: f3000352
-; IASM-NOT:      vshl
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpUltV16I1(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpUltV16I1:
-; DIS-LABEL:000005d0 <cmpUltV16I1>:
-; IASM-LABEL:cmpUltV16I1:
-
-entry:
-  %a1 = trunc <16 x i8> %a to <16 x i1>
-  %b1 = trunc <16 x i8> %b to <16 x i1>
-  %cmp = icmp ult <16 x i1> %a1, %b1
-
-; ASM:           vshl.u8 q0, q0, #7
-; ASM-NEXT:      vshl.u8 q1, q1, #7
-; ASM-NEXT:      vcgt.u8 q1, q1, q0
-; DIS:      5d0: f28f0550
-; DIS-NEXT: 5d4: f28f2552
-; DIS-NEXT: 5d8: f3022340
-; IASM-NOT:      vshl
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpUleV16I1(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpUleV16I1:
-; DIS-LABEL:000005f0 <cmpUleV16I1>:
-; IASM-LABEL:cmpUleV16I1:
-
-entry:
-  %a1 = trunc <16 x i8> %a to <16 x i1>
-  %b1 = trunc <16 x i8> %b to <16 x i1>
-  %cmp = icmp ule <16 x i1> %a1, %b1
-
-; ASM:           vshl.u8 q0, q0, #7
-; ASM-NEXT:      vshl.u8 q1, q1, #7
-; ASM-NEXT:      vcge.u8 q1, q1, q0
-; DIS:      5f0: f28f0550
-; DIS-NEXT: 5f4: f28f2552
-; DIS-NEXT: 5f8: f3022350
-; IASM-NOT:      vshl
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpSgtV16I1(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpSgtV16I1:
-; DIS-LABEL:00000610 <cmpSgtV16I1>:
-; IASM-LABEL:cmpSgtV16I1:
-
-entry:
-  %a1 = trunc <16 x i8> %a to <16 x i1>
-  %b1 = trunc <16 x i8> %b to <16 x i1>
-  %cmp = icmp sgt <16 x i1> %a1, %b1
-
-; ASM:           vshl.u8 q0, q0, #7
-; ASM-NEXT:      vshl.u8 q1, q1, #7
-; ASM-NEXT:      vcgt.s8 q0, q0, q1
-; DIS:      610: f28f0550
-; DIS-NEXT: 614: f28f2552
-; DIS-NEXT: 618: f2000342
-; IASM-NOT:      vshl
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpSgeV16I1(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpSgeV16I1:
-; DIS-LABEL:00000630 <cmpSgeV16I1>:
-; IASM-LABEL:cmpSgeV16I1:
-
-entry:
-  %a1 = trunc <16 x i8> %a to <16 x i1>
-  %b1 = trunc <16 x i8> %b to <16 x i1>
-  %cmp = icmp sge <16 x i1> %a1, %b1
-
-; ASM:           vshl.u8 q0, q0, #7
-; ASM-NEXT:      vshl.u8 q1, q1, #7
-; ASM-NEXT:      vcge.s8 q0, q0, q1
-; DIS:      630: f28f0550
-; DIS-NEXT: 634: f28f2552
-; DIS-NEXT: 638: f2000352
-; IASM-NOT:      vshl
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpSltV16I1(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpSltV16I1:
-; DIS-LABEL:00000650 <cmpSltV16I1>:
-; IASM-LABEL:cmpSltV16I1:
-
-entry:
-  %a1 = trunc <16 x i8> %a to <16 x i1>
-  %b1 = trunc <16 x i8> %b to <16 x i1>
-  %cmp = icmp slt <16 x i1> %a1, %b1
-
-; ASM:           vshl.u8 q0, q0, #7
-; ASM-NEXT:      vshl.u8 q1, q1, #7
-; ASM-NEXT:      vcgt.s8 q1, q1, q0
-; DIS:      650: f28f0550
-; DIS-NEXT: 654: f28f2552
-; DIS-NEXT: 658: f2022340
-; IASM-NOT:      vshl
-; IASM-NOT:      vcgt
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <16 x i8> @cmpSleV16I1(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:cmpSleV16I1:
-; DIS-LABEL:00000670 <cmpSleV16I1>:
-; IASM-LABEL:cmpSleV16I1:
-
-entry:
-  %a1 = trunc <16 x i8> %a to <16 x i1>
-  %b1 = trunc <16 x i8> %b to <16 x i1>
-  %cmp = icmp sle <16 x i1> %a1, %b1
-
-; ASM:           vshl.u8 q0, q0, #7
-; ASM-NEXT:      vshl.u8 q1, q1, #7
-; ASM-NEXT:      vcge.s8 q1, q1, q0
-; DIS:      670: f28f0550
-; DIS-NEXT: 674: f28f2552
-; DIS-NEXT: 678: f2022350
-; IASM-NOT:      vshl
-; IASM-NOT:      vcge
-
-  %cmp.ret_ext = zext <16 x i1> %cmp to <16 x i8>
-  ret <16 x i8> %cmp.ret_ext
-}
-
-define internal <4 x i32> @cmpFalseV4Float(<4 x float> %a, <4 x float> %b) {
-; ASM-LABEL:cmpFalseV4Float:
-; DIS-LABEL:00000690 <cmpFalseV4Float>:
-; IASM-LABEL:cmpFalseV4Float:
-
-entry:
-  %cmp = fcmp false <4 x float> %a, %b
-
-; ASM:           vmov.i32 q0, #0
-; DIS:      690: f2800050
-; IASM-NOT:      vmov
-
-  %zext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %zext
-}
-
-define internal <4 x i32> @cmpOeqV4Float(<4 x float> %a, <4 x float> %b) {
-; ASM-LABEL:cmpOeqV4Float:
-; DIS-LABEL:000006a0 <cmpOeqV4Float>:
-; IASM-LABEL:cmpOeqV4Float:
-
-entry:
-  %cmp = fcmp oeq <4 x float> %a, %b
-
-; ASM:           vceq.f32 q0, q0, q1
-; DIS:      6a0: f2000e42
-; IASM-NOT:      vceq
-
-  %zext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %zext
-}
-
-define internal <4 x i32> @cmpOgtV4Float(<4 x float> %a, <4 x float> %b) {
-; ASM-LABEL:cmpOgtV4Float:
-; DIS-LABEL:000006b0 <cmpOgtV4Float>:
-; IASM-LABEL:cmpOgtV4Float:
-
-entry:
-  %cmp = fcmp ogt <4 x float> %a, %b
-
-; ASM:           vcgt.f32 q0, q0, q1
-; DIS:      6b0: f3200e42
-; IASM-NOT:      vcgt
-
-  %zext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %zext
-}
-
-define internal <4 x i32> @cmpOgeV4Float(<4 x float> %a, <4 x float> %b) {
-; ASM-LABEL:cmpOgeV4Float:
-; DIS-LABEL:000006c0 <cmpOgeV4Float>:
-; IASM-LABEL:cmpOgeV4Float:
-
-entry:
-  %cmp = fcmp oge <4 x float> %a, %b
-
-; ASM:           vcge.f32 q0, q0, q1
-; DIS:      6c0: f3000e42
-; IASM-NOT:      vcge
-
-  %zext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %zext
-}
-
-define internal <4 x i32> @cmpOltV4Float(<4 x float> %a, <4 x float> %b) {
-; ASM-LABEL:cmpOltV4Float:
-; DIS-LABEL:000006d0 <cmpOltV4Float>:
-; IASM-LABEL:cmpOltV4Float:
-
-entry:
-  %cmp = fcmp olt <4 x float> %a, %b
-
-; ASM:           vcgt.f32 q1, q1, q0
-; DIS:      6d0: f3222e40
-; IASM-NOT:      vcgt
-
-  %zext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %zext
-}
-
-define internal <4 x i32> @cmpOleV4Float(<4 x float> %a, <4 x float> %b) {
-; ASM-LABEL:cmpOleV4Float:
-; DIS-LABEL:000006f0 <cmpOleV4Float>:
-; IASM-LABEL:cmpOleV4Float:
-
-entry:
-  %cmp = fcmp ole <4 x float> %a, %b
-
-; ASM:           vcge.f32 q1, q1, q0
-; DIS:      6f0: f3022e40
-; IASM-NOT:      vcge
-
-  %zext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %zext
-}
-
-define internal <4 x i32> @cmpOrdV4Float(<4 x float> %a, <4 x float> %b) {
-; ASM-LABEL:cmpOrdV4Float:
-; DIS-LABEL:00000710 <cmpOrdV4Float>:
-; IASM-LABEL:cmpOrdV4Float:
-
-entry:
-  %cmp = fcmp ord <4 x float> %a, %b
-
-; ASM:           vcge.f32 q2, q0, q1
-; ASM-NEXT:      vcgt.f32 q1, q1, q0
-; DIS:      710: f3004e42
-; DIS-NEXT: 714: f3222e40
-; IASM-NOT:      vcge
-; IASM-NOT:      vcgt
-
-  %zext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %zext
-}
-
-define internal <4 x i32> @cmpUeqV4Float(<4 x float> %a, <4 x float> %b) {
-; ASM-LABEL:cmpUeqV4Float:
-; DIS-LABEL:00000730 <cmpUeqV4Float>:
-; IASM-LABEL:cmpUeqV4Float:
-
-entry:
-  %cmp = fcmp ueq <4 x float> %a, %b
-
-; ASM:           vcgt.f32 q2, q0, q1
-; ASM-NEXT:      vcgt.f32 q1, q1, q0
-; ASM-NEXT:      vorr.i32 q2, q2, q1
-; ASM-NEXT:      vmvn.i32 q2, q2
-; DIS:      730: f3204e42
-; DIS-NEXT: 734: f3222e40
-; DIS-NEXT: 738: f2244152
-; DIS-NEXT: 73c: f3b045c4
-; IASM-NOT:      vcgt
-; IASM-NOT:      vorr
-; IASM-NOT:      vmvn
-
-  %zext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %zext
-}
-
-define internal <4 x i32> @cmpUgtV4Float(<4 x float> %a, <4 x float> %b) {
-; ASM-LABEL:cmpUgtV4Float:
-; DIS-LABEL:00000750 <cmpUgtV4Float>:
-; IASM-LABEL:cmpUgtV4Float:
-
-entry:
-  %cmp = fcmp ugt <4 x float> %a, %b
-
-; ASM:           vcge.f32 q1, q1, q0
-; ASM-NEXT:      vmvn.i32 q1, q1
-; DIS:      750: f3022e40
-; DIS-NEXT: 754: f3b025c2
-; IASM-NOT:      vcge
-; IASM-NOT:      vmvn
-
-  %zext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %zext
-}
-
-define internal <4 x i32> @cmpUgeV4Float(<4 x float> %a, <4 x float> %b) {
-; ASM-LABEL:cmpUgeV4Float:
-; DIS-LABEL:00000770 <cmpUgeV4Float>:
-; IASM-LABEL:cmpUgeV4Float:
-
-entry:
-  %cmp = fcmp uge <4 x float> %a, %b
-
-; ASM:           vcgt.f32 q1, q1, q0
-; ASM-NEXT:      vmvn.i32 q1, q1
-; DIS:      770: f3222e40
-; DIS-NEXT: 774: f3b025c2
-; IASM-NOT:      vcgt
-; IASM-NOT:      vmvn
-
-  %zext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %zext
-}
-
-define internal <4 x i32> @cmpUltV4Float(<4 x float> %a, <4 x float> %b) {
-; ASM-LABEL:cmpUltV4Float:
-; DIS-LABEL:00000790 <cmpUltV4Float>:
-; IASM-LABEL:cmpUltV4Float:
-
-entry:
-  %cmp = fcmp ult <4 x float> %a, %b
-
-; ASM:           vcge.f32 q0, q0, q1
-; ASM-NEXT:      vmvn.i32 q0, q0
-; DIS:      790: f3000e42
-; DIS-NEXT: 794: f3b005c0
-; IASM-NOT:      vcge
-; IASM-NOT:      vmvn
-
-  %zext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %zext
-}
-
-define internal <4 x i32> @cmpUleV4Float(<4 x float> %a, <4 x float> %b) {
-; ASM-LABEL:cmpUleV4Float:
-; DIS-LABEL:000007b0 <cmpUleV4Float>:
-; IASM-LABEL:cmpUleV4Float:
-
-entry:
-  %cmp = fcmp ule <4 x float> %a, %b
-
-; ASM:           vcgt.f32 q0, q0, q1
-; ASM-NEXT:      vmvn.i32 q0, q0
-; DIS:      7b0: f3200e42
-; DIS-NEXT: 7b4: f3b005c0
-; IASM-NOT:      vcgt
-; IASM-NOT:      vmvn
-
-  %zext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %zext
-}
-
-define internal <4 x i32> @cmpTrueV4Float(<4 x float> %a, <4 x float> %b) {
-; ASM-LABEL:cmpTrueV4Float:
-; DIS-LABEL:000007d0 <cmpTrueV4Float>:
-; IASM-LABEL:cmpTrueV4Float:
-
-entry:
-  %cmp = fcmp true <4 x float> %a, %b
-
-; ASM:           vmov.i32 q0, #1
-; DIS:      7d0: f2800051
-; IASM-NOT:      vmov
-
-  %zext = zext <4 x i1> %cmp to <4 x i32>
-  ret <4 x i32> %zext
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/cmp.ll b/third_party/subzero/tests_lit/assembler/arm32/cmp.ll
deleted file mode 100644
index 34847e7..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/cmp.ll
+++ /dev/null
@@ -1,196 +0,0 @@
-; Test that we handle cmp (register) and cmp (immediate).
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @cmpEqI8(i32 %a, i32 %b) {
-; ASM-LABEL:cmpEqI8:
-; DIS-LABEL:00000000 <cmpEqI8>:
-; IASM-LABEL:cmpEqI8:
-
-
-entry:
-; ASM-NEXT:.LcmpEqI8$entry:
-; IASM-NEXT:.LcmpEqI8$entry:
-
-  %b.arg_trunc = trunc i32 %b to i8
-  %a.arg_trunc = trunc i32 %a to i8
-
-; ASM-NEXT:     sub     sp, sp, #24
-; DIS-NEXT:   0:        e24dd018
-; IASM-NEXT:    .byte 0x18
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x4d
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     str     r0, [sp, #20]
-; ASM-NEXT:     # [sp, #20] = def.pseudo
-; DIS-NEXT:   4:        e58d0014
-; IASM-NEXT:    .byte 0x14
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     str     r1, [sp, #16]
-; ASM-NEXT:     # [sp, #16] = def.pseudo
-; DIS-NEXT:   8:        e58d1010
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     ldr     r0, [sp, #16]
-; DIS-NEXT:   c:        e59d0010
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     strb    r0, [sp, #12]
-; ASM-NEXT:     # [sp, #12] = def.pseudo
-; DIS-NEXT:  10:       e5cd000c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xcd
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     ldr     r0, [sp, #20]
-; DIS-NEXT:  14:        e59d0014
-; IASM-NEXT:    .byte 0x14
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     strb    r0, [sp, #8]
-; ASM-NEXT:     # [sp, #8] = def.pseudo
-; DIS-NEXT:  18:        e5cd0008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xcd
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     mov     r0, #0
-; DIS-NEXT:  1c:        e3a00000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe3
-
-; ASM-NEXT:     ldrb    r1, [sp, #8]
-; DIS-NEXT:  20:        e5dd1008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0xdd
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     lsl     r1, r1, #24
-; DIS-NEXT:  24:        e1a01c01
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x1c
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe1
-
-; ASM-NEXT:     ldrb    r2, [sp, #12]
-; DIS-NEXT:  28:        e5dd200c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0x20
-; IASM-NEXT:    .byte 0xdd
-; IASM-NEXT:    .byte 0xe5
-
-; ******** CMP instruction test **************
-
-  %cmp = icmp eq i8 %a.arg_trunc, %b.arg_trunc
-
-; ASM-NEXT:        cmp     r1, r2, lsl #24
-; DIS-NEXT:  2c:        e1510c02
-; IASM-NEXT:    .byte 0x2
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0x51
-; IASM-NEXT:    .byte 0xe1
-
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-define internal i32 @cmpEqI32(i32 %a, i32 %b) {
-; ASM-LABEL:cmpEqI32:
-; DIS-LABEL:00000050 <cmpEqI32>:
-; IASM-LABEL:cmpEqI32:
-
-entry:
-; ASM-NEXT:.LcmpEqI32$entry:
-; IASM-NEXT:.LcmpEqI32$entry:
-
-; ASM-NEXT:     sub     sp, sp, #16
-; DIS-NEXT:  50:        e24dd010
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x4d
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     str     r0, [sp, #12]
-; ASM-NEXT:     # [sp, #12] = def.pseudo
-; DIS-NEXT:  54:        e58d000c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     str     r1, [sp, #8]
-; ASM-NEXT:     # [sp, #8] = def.pseudo
-; DIS-NEXT:  58:        e58d1008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     mov     r0, #0
-; DIS-NEXT:  5c:        e3a00000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe3
-
-; ASM-NEXT:     ldr     r1, [sp, #12]
-; DIS-NEXT:  60:        e59d100c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     ldr     r2, [sp, #8]
-; DIS-NEXT:  64:        e59d2008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0x20
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ******** CMP instruction test **************
-
-  %cmp = icmp eq i32 %a, %b
-
-; ASM-NEXT:     cmp     r1, r2
-; DIS-NEXT:  68:        e1510002
-; IASM-NEXT:    .byte 0x2
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x51
-; IASM-NEXT:    .byte 0xe1
-
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/div-vec.ll b/third_party/subzero/tests_lit/assembler/arm32/div-vec.ll
deleted file mode 100644
index 91b953b..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/div-vec.ll
+++ /dev/null
@@ -1,367 +0,0 @@
-; Show that we know how to translate vector division instructions.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 -mattr=hwdiv-arm \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 -mattr=hwdiv-arm \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 -mattr=hwdiv-arm \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 -mattr=hwdiv-arm \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal <4 x float> @testVdivFloat4(<4 x float> %v1, <4 x float> %v2) {
-; ASM-LABEL: testVdivFloat4:
-; DIS-LABEL: 00000000 <testVdivFloat4>:
-; IASM-LABEL: testVdivFloat4:
-
-entry:
-  %res = fdiv <4 x float> %v1, %v2
-
-; TODO(eholk): this code could be a lot better. Fix the code generator
-; and update the test. Same for the rest of the tests.
-
-; ASM:      vdiv.f32        s12, s12, s13
-; ASM-NEXT: vmov.f32	    s8, s12
-; ASM:      vdiv.f32        s12, s12, s13
-; ASM-NEXT: vmov.f32	    s9, s12
-; ASM:      vdiv.f32        s12, s12, s13
-; ASM-NEXT: vmov.f32	    s10, s12
-; ASM:      vdiv.f32        s0, s0, s4
-; ASM-NEXT: vmov.f32	    s11, s0
-
-; DIS:   8:	ee866a26
-; DIS:  18:	ee866a26
-; DIS:  28:	ee866a26
-; DIS:  38:	ee800a02
-
-; IASM-NOT:     vdiv
-
-  ret <4 x float> %res
-}
-
-define internal <4 x i32> @testVdiv4i32(<4 x i32> %v1, <4 x i32> %v2) {
-; ASM-LABEL: testVdiv4i32:
-; DIS-LABEL: 00000050 <testVdiv4i32>:
-; IASM-LABEL: testVdiv4i32:
-
-entry:
-  %res = udiv <4 x i32> %v1, %v2
-
-; ASM:     udiv r0, r0, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     udiv r0, r0, r1
-
-; DIS:  64:	e730f110
-; DIS:  80:	e730f110
-; DIS:  9c:	e730f110
-; DIS:  b8:	e730f110
-
-; IASM-NOT:     udiv
-
-  ret <4 x i32> %res
-}
-
-define internal <8 x i16> @testVdiv8i16(<8 x i16> %v1, <8 x i16> %v2) {
-; ASM-LABEL: testVdiv8i16:
-; DIS-LABEL: 000000d0 <testVdiv8i16>:
-; IASM-LABEL: testVdiv8i16:
-
-entry:
-  %res = udiv <8 x i16> %v1, %v2
-
-; ASM:     uxth            r0, r0
-; ASM:     uxth            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxth            r0, r0
-; ASM:     uxth            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxth            r0, r0
-; ASM:     uxth            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxth            r0, r0
-; ASM:     uxth            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxth            r0, r0
-; ASM:     uxth            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxth            r0, r0
-; ASM:     uxth            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxth            r0, r0
-; ASM:     uxth            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxth            r0, r0
-; ASM:     uxth            r1, r1
-; ASM:     udiv r0, r0, r1
-
-; DIS:  e4:	e6ff0070
-; DIS:  e8:	e6ff1071
-; DIS:  ec:	e730f110
-; DIS: 108:	e6ff0070
-; DIS: 10c:	e6ff1071
-; DIS: 110:	e730f110
-; DIS: 12c:	e6ff0070
-; DIS: 130:	e6ff1071
-; DIS: 134:	e730f110
-; DIS: 150:	e6ff0070
-; DIS: 154:	e6ff1071
-; DIS: 158:	e730f110
-; DIS: 174:	e6ff0070
-; DIS: 178:	e6ff1071
-; DIS: 17c:	e730f110
-; DIS: 198:	e6ff0070
-; DIS: 19c:	e6ff1071
-; DIS: 1a0:	e730f110
-; DIS: 1bc:	e6ff0070
-; DIS: 1c0:	e6ff1071
-; DIS: 1c4:	e730f110
-; DIS: 1e0:	e6ff0070
-; DIS: 1e4:	e6ff1071
-; DIS: 1e8:	e730f110
-
-; IASM-NOT:     uxth
-; IASM-NOT:     udiv
-
-  ret <8 x i16> %res
-}
-
-define internal <16 x i8> @testVdiv16i8(<16 x i8> %v1, <16 x i8> %v2) {
-; ASM-LABEL: testVdiv16i8:
-; DIS-LABEL: 00000200 <testVdiv16i8>:
-; IASM-LABEL: testVdiv16i8:
-
-entry:
-  %res = udiv <16 x i8> %v1, %v2
-
-; ASM:     uxtb            r0, r0
-; ASM:     uxtb            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxtb            r0, r0
-; ASM:     uxtb            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxtb            r0, r0
-; ASM:     uxtb            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxtb            r0, r0
-; ASM:     uxtb            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxtb            r0, r0
-; ASM:     uxtb            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxtb            r0, r0
-; ASM:     uxtb            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxtb            r0, r0
-; ASM:     uxtb            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxtb            r0, r0
-; ASM:     uxtb            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxtb            r0, r0
-; ASM:     uxtb            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxtb            r0, r0
-; ASM:     uxtb            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxtb            r0, r0
-; ASM:     uxtb            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxtb            r0, r0
-; ASM:     uxtb            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxtb            r0, r0
-; ASM:     uxtb            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxtb            r0, r0
-; ASM:     uxtb            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxtb            r0, r0
-; ASM:     uxtb            r1, r1
-; ASM:     udiv r0, r0, r1
-; ASM:     uxtb            r0, r0
-; ASM:     uxtb            r1, r1
-; ASM:     udiv r0, r0, r1
-
-; DIS: 214:	e6ef0070
-; DIS: 218:	e6ef1071
-; DIS: 21c:	e730f110
-; DIS: 238:	e6ef0070
-; DIS: 23c:	e6ef1071
-; DIS: 240:	e730f110
-; DIS: 25c:	e6ef0070
-; DIS: 260:	e6ef1071
-; DIS: 264:	e730f110
-; DIS: 280:	e6ef0070
-; DIS: 284:	e6ef1071
-; DIS: 288:	e730f110
-; DIS: 2a4:	e6ef0070
-; DIS: 2a8:	e6ef1071
-; DIS: 2ac:	e730f110
-; DIS: 2c8:	e6ef0070
-; DIS: 2cc:	e6ef1071
-; DIS: 2d0:	e730f110
-; DIS: 2ec:	e6ef0070
-; DIS: 2f0:	e6ef1071
-; DIS: 2f4:	e730f110
-; DIS: 310:	e6ef0070
-; DIS: 314:	e6ef1071
-; DIS: 318:	e730f110
-; DIS: 334:	e6ef0070
-; DIS: 338:	e6ef1071
-; DIS: 33c:	e730f110
-; DIS: 358:	e6ef0070
-; DIS: 35c:	e6ef1071
-; DIS: 360:	e730f110
-; DIS: 37c:	e6ef0070
-; DIS: 380:	e6ef1071
-; DIS: 384:	e730f110
-; DIS: 3a0:	e6ef0070
-; DIS: 3a4:	e6ef1071
-; DIS: 3a8:	e730f110
-; DIS: 3c4:	e6ef0070
-; DIS: 3c8:	e6ef1071
-; DIS: 3cc:	e730f110
-; DIS: 3e8:	e6ef0070
-; DIS: 3ec:	e6ef1071
-; DIS: 3f0:	e730f110
-; DIS: 40c:	e6ef0070
-; DIS: 410:	e6ef1071
-; DIS: 414:	e730f110
-; DIS: 430:	e6ef0070
-; DIS: 434:	e6ef1071
-; DIS: 438:	e730f110
-
-; IASM-NOT:     uxtb
-; IASM-NOT:     udiv
-
-  ret <16 x i8> %res
-}
-
-define internal <4 x i32> @testSdiv4i32(<4 x i32> %v1, <4 x i32> %v2) {
-; ASM-LABEL: testSdiv4i32:
-; IASM-LABEL: testSdiv4i32:
-
-entry:
-  %res = sdiv <4 x i32> %v1, %v2
-
-; ASM:     sdiv r0, r0, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sdiv r0, r0, r1
-
-; IASM-NOT:     sdiv
-
-  ret <4 x i32> %res
-}
-
-define internal <8 x i16> @testSdiv8i16(<8 x i16> %v1, <8 x i16> %v2) {
-; ASM-LABEL: testSdiv8i16:
-; IASM-LABEL: testSdiv8i16:
-
-entry:
-  %res = sdiv <8 x i16> %v1, %v2
-
-; ASM:     sxth            r0, r0
-; ASM:     sxth            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxth            r0, r0
-; ASM:     sxth            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxth            r0, r0
-; ASM:     sxth            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxth            r0, r0
-; ASM:     sxth            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxth            r0, r0
-; ASM:     sxth            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxth            r0, r0
-; ASM:     sxth            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxth            r0, r0
-; ASM:     sxth            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxth            r0, r0
-; ASM:     sxth            r1, r1
-; ASM:     sdiv r0, r0, r1
-
-; IASM-NOT:     sxth
-; IASM-NOT:     sdiv
-
-  ret <8 x i16> %res
-}
-
-define internal <16 x i8> @testSdiv16i8(<16 x i8> %v1, <16 x i8> %v2) {
-; ASM-LABEL: testSdiv16i8:
-; IASM-LABEL: testSdiv16i8:
-
-entry:
-  %res = sdiv <16 x i8> %v1, %v2
-
-; ASM:     sxtb            r0, r0
-; ASM:     sxtb            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxtb            r0, r0
-; ASM:     sxtb            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxtb            r0, r0
-; ASM:     sxtb            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxtb            r0, r0
-; ASM:     sxtb            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxtb            r0, r0
-; ASM:     sxtb            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxtb            r0, r0
-; ASM:     sxtb            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxtb            r0, r0
-; ASM:     sxtb            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxtb            r0, r0
-; ASM:     sxtb            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxtb            r0, r0
-; ASM:     sxtb            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxtb            r0, r0
-; ASM:     sxtb            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxtb            r0, r0
-; ASM:     sxtb            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxtb            r0, r0
-; ASM:     sxtb            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxtb            r0, r0
-; ASM:     sxtb            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxtb            r0, r0
-; ASM:     sxtb            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxtb            r0, r0
-; ASM:     sxtb            r1, r1
-; ASM:     sdiv r0, r0, r1
-; ASM:     sxtb            r0, r0
-; ASM:     sxtb            r1, r1
-; ASM:     sdiv r0, r0, r1
-
-; IASM-NOT:     sxtb
-; IASM-NOT:     sdiv
-
-  ret <16 x i8> %res
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/dmb.ll b/third_party/subzero/tests_lit/assembler/arm32/dmb.ll
deleted file mode 100644
index cf0078a..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/dmb.ll
+++ /dev/null
@@ -1,74 +0,0 @@
-; Show that we know how to encode the dmb instruction.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-declare i8 @llvm.nacl.atomic.load.i8(i8*, i32)
-
-define internal i32 @test_atomic_load_8(i32 %iptr) {
-; ASM-LABEL:test_atomic_load_8:
-; DIS-LABEL:00000000 <test_atomic_load_8>:
-; IASM-LABEL:test_atomic_load_8:
-
-entry:
-; ASM-NEXT:.Ltest_atomic_load_8$entry:
-; IASM-NEXT:.Ltest_atomic_load_8$entry:
-
-; ASM-NEXT:	sub	sp, sp, #12
-; DIS-NEXT:   0:	e24dd00c
-; IASM-NEXT:	.byte 0xc
-; IASM-NEXT:	.byte 0xd0
-; IASM-NEXT:	.byte 0x4d
-; IASM-NEXT:	.byte 0xe2
-
-; ASM-NEXT:	str	r0, [sp, #8]
-; ASM-NEXT:	# [sp, #8] = def.pseudo
-; DIS-NEXT:   4:	e58d0008
-; IASM-NEXT:	.byte 0x8
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x8d
-; IASM-NEXT:	.byte 0xe5
-
-  %ptr = inttoptr i32 %iptr to i8*
-  ; parameter value "6" is for the sequential consistency memory order.
-  %i = call i8 @llvm.nacl.atomic.load.i8(i8* %ptr, i32 6)
-
-; ASM-NEXT:	ldr	r0, [sp, #8]
-; DIS-NEXT:   8:	e59d0008
-; IASM-NEXT:	.byte 0x8
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x9d
-; IASM-NEXT:	.byte 0xe5
-
-; ASM-NEXT:	ldrb	r0, [r0]
-; DIS-NEXT:   c:	e5d00000
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0xd0
-; IASM-NEXT:	.byte 0xe5
-
-; ASM-NEXT:	dmb	sy
-; DIS-NEXT:  10:	f57ff05f
-; IASM-NEXT:	.byte 0x5f
-; IASM-NEXT:	.byte 0xf0
-; IASM-NEXT:	.byte 0x7f
-; IASM-NEXT:	.byte 0xf5
-
-  %r = zext i8 %i to i32
-  ret i32 %r
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/eor.ll b/third_party/subzero/tests_lit/assembler/arm32/eor.ll
deleted file mode 100644
index 95cf47e..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/eor.ll
+++ /dev/null
@@ -1,109 +0,0 @@
-; Show that we know how to translate eor.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @Eor1WithR0(i32 %p) {
-  %v = xor i32 %p, 1
-  ret i32 %v
-}
-
-; ASM-LABEL:Eor1WithR0:
-; ASM-NEXT:.LEor1WithR0$__0:
-; ASM-NEXT:     eor     r0, r0, #1
-
-; DIS-LABEL:00000000 <Eor1WithR0>:
-; DIS-NEXT:   0:        e2200001
-
-; IASM-LABEL:Eor1WithR0:
-; IASM-NEXT:.LEor1WithR0$__0:
-; IASM-NEXT:	.byte 0x1
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x20
-; IASM-NEXT:	.byte 0xe2
-
-define internal i32 @Eor2Regs(i32 %p1, i32 %p2) {
-  %v = xor i32 %p1, %p2
-  ret i32 %v
-}
-
-; ASM-LABEL:Eor2Regs:
-; ASM-NEXT:.LEor2Regs$__0:
-; ASM-NEXT:     eor     r0, r0, r1
-
-; DIS-LABEL:00000010 <Eor2Regs>:
-; DIS-NEXT:  10:        e0200001
-
-; IASM-LABEL:Eor2Regs:
-; IASM-NEXT:.LEor2Regs$__0:
-; IASM-NEXT:	.byte 0x1
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x20
-; IASM-NEXT:	.byte 0xe0
-
-define internal i64 @EorI64WithR0R1(i64 %p) {
-  %v = xor i64 %p, 1
-  ret i64 %v
-}
-
-; ASM-LABEL:EorI64WithR0R1:
-; ASM-NEXT:.LEorI64WithR0R1$__0:
-; ASM-NEXT:     eor     r0, r0, #1
-; ASM-NEXT:     eor     r1, r1, #0
-
-; DIS-LABEL:00000020 <EorI64WithR0R1>:
-; DIS-NEXT:  20:        e2200001
-; DIS-NEXT:  24:        e2211000
-
-; IASM-LABEL:EorI64WithR0R1:
-; IASM-NEXT:.LEorI64WithR0R1$__0:
-; IASM-NEXT:	.byte 0x1
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x20
-; IASM-NEXT:	.byte 0xe2
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x10
-; IASM-NEXT:	.byte 0x21
-; IASM-NEXT:	.byte 0xe2
-
-define internal i64 @EorI64Regs(i64 %p1, i64 %p2) {
-  %v = xor i64 %p1, %p2
-  ret i64 %v
-}
-
-; ASM-LABEL:EorI64Regs:
-; ASM-NEXT:.LEorI64Regs$__0:
-; ASM-NEXT:     eor     r0, r0, r2
-; ASM-NEXT:     eor     r1, r1, r3
-
-; DIS-LABEL:00000030 <EorI64Regs>:
-; DIS-NEXT:  30:        e0200002
-; DIS-NEXT:  34:        e0211003
-
-; IASM-LABEL:EorI64Regs:
-; IASM-NEXT:.LEorI64Regs$__0:
-; IASM-NEXT:	.byte 0x2
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x20
-; IASM-NEXT:	.byte 0xe0
-; IASM-NEXT:	.byte 0x3
-; IASM-NEXT:	.byte 0x10
-; IASM-NEXT:	.byte 0x21
-; IASM-NEXT:	.byte 0xe0
diff --git a/third_party/subzero/tests_lit/assembler/arm32/global-load-store.ll b/third_party/subzero/tests_lit/assembler/arm32/global-load-store.ll
deleted file mode 100644
index 3f7f6a7..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/global-load-store.ll
+++ /dev/null
@@ -1,99 +0,0 @@
-; TODO(kschimpf): Show that we can handle global variable loads/stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-@filler = internal global [128 x i8] zeroinitializer, align 4
-
-@global1 = internal global [4 x i8] zeroinitializer, align 4
-
-; ASM-LABEL: global1:
-; ASM-NEXT:    .zero   4
-; ASM-NEXT:    .size   global1, 4
-; ASM-NEXT:    .text
-; ASM-NEXT:    .p2alignl 4,0xe7fedef0
-
-; IASM-LABEL:global1:
-; IASM-NEXT:    .zero   4
-; IASM-NEXT:    .size   global1, 4
-; IASM-NEXT:    .text
-; IASM-NEXT:    .p2alignl 4,0xe7fedef0
-
-define internal i32 @load() {
-  %addr = bitcast [4 x i8]* @global1 to i32*
-  %v = load i32, i32* %addr, align 1
-  ret i32 %v
-}
-
-; ASM-LABEL: load:
-; ASM-NEXT: .Lload$__0:
-; ASM-NEXT:    movw    r0, #:lower16:global1
-; ASM-NEXT:    movt    r0, #:upper16:global1
-; ASM-NEXT:    ldr     r0, [r0]
-; ASM-NEXT:    bx      lr
-
-; DIS-LABEL:00000000 <load>:
-; DIS-NEXT:   0:   e3000000
-; DIS-NEXT:   4:   e3400000
-; DIS-NEXT:   8:   e5900000
-; DIS-NEXT:   c:   e12fff1e
-
-; IASM-LABEL:load:
-; IASM-NEXT: .Lload$__0:
-; IASM-NEXT:    movw    r0, #:lower16:global1   @ .word e3000000
-; IASM-NEXT:    movt    r0, #:upper16:global1   @ .word e3400000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x90
-; IASM-NEXT:    .byte 0xe5
-; IASM-NEXT:    .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
-
-define internal void @store(i32 %v) {
-  %addr = bitcast [4 x i8]* @global1 to i32*
-  store i32 %v, i32* %addr, align 1
-  ret void
-}
-
-; ASM-LABEL:store:
-; ASM-NEXT: .Lstore$__0:
-; ASM-NEXT:     movw    r1, #:lower16:global1
-; ASM-NEXT:     movt    r1, #:upper16:global1
-; ASM-NEXT:     str     r0, [r1]
-; ASM-NEXT:     bx      lr
-
-; DIS-LABEL:00000010 <store>:
-; DIS-NEXT:  10:   e3001000
-; DIS-NEXT:  14:   e3401000
-; DIS-NEXT:  18:   e5810000
-; DIS-NEXT:  1c:   e12fff1e
-
-; IASM-LABEL:store:
-; IASM-NEXT: .Lstore$__0:
-; IASM-NEXT:    movw    r1, #:lower16:global1   @ .word e3001000
-; IASM-NEXT:    movt    r1, #:upper16:global1   @ .word e3401000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x81
-; IASM-NEXT:    .byte 0xe5
-; IASM-NEXT:    .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
diff --git a/third_party/subzero/tests_lit/assembler/arm32/insert-extract.ll b/third_party/subzero/tests_lit/assembler/arm32/insert-extract.ll
deleted file mode 100644
index 5bbb18b..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/insert-extract.ll
+++ /dev/null
@@ -1,252 +0,0 @@
-; Show that we know how to translate insertelement and extractelement.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal i32 @extract1_v4i32(<4 x i32> %src) {
-; ASM-LABEL: extract1_v4i32:
-; DIS-LABEL: 00000000 <extract1_v4i32>:
-; IASM-LABEL: extract1_v4i32:
-
-  %1 = extractelement <4 x i32> %src, i32 1
-
-; ASM: vmov.32  r0, d0[1]
-; DIS:   10:       ee300b10
-; IASM-NOT: vmov.32  r0, d0[1]
-  ret i32 %1
-}
-
-define internal i32 @extract2_v4i32(<4 x i32> %src) {
-; ASM-LABEL: extract2_v4i32:
-; DIS-LABEL: 00000030 <extract2_v4i32>:
-; IASM-LABEL: extract2_v4i32:
-
-  %1 = extractelement <4 x i32> %src, i32 2
-
-; ASM: vmov.32  r0, d1[0]
-; DIS:   40:       ee110b10
-; IASM-NOT: vmov.32  r0, d1[0]
-
-  ret i32 %1
-}
-
-define internal i32 @extract3_v8i16(<8 x i16> %src) {
-; ASM-LABEL: extract3_v8i16:
-; DIS-LABEL: 00000060 <extract3_v8i16>:
-; IASM-LABEL: extract3_v8i16:
-
-  %1 = extractelement <8 x i16> %src, i32 3
-
-; ASM: vmov.s16 r0, d0[3]
-; DIS:   70:       ee300b70
-; IASM-NOT: vmov.s16 r0, d0[3]
-
-  %2 = sext i16 %1 to i32
-  ret i32 %2
-}
-
-define internal i32 @extract4_v8i16(<8 x i16> %src) {
-; ASM-LABEL: extract4_v8i16:
-; DIS-LABEL: 00000090 <extract4_v8i16>:
-; IASM-LABEL: extract4_v8i16:
-
-  %1 = extractelement <8 x i16> %src, i32 4
-
-; ASM: vmov.s16 r0, d1[0]
-; DIS:   a0:       ee110b30
-; IASM-NOT: vmov.s16 r0, d1[0]
-
-  %2 = sext i16 %1 to i32
-  ret i32 %2
-}
-
-define internal i32 @extract7_v4i8(<16 x i8> %src) {
-; ASM-LABEL: extract7_v4i8:
-; DIS-LABEL: 000000c0 <extract7_v4i8>:
-; IASM-LABEL: extract7_v4i8:
-
-  %1 = extractelement <16 x i8> %src, i32 7
-
-; ASM: vmov.s8  r0, d0[7]
-; DIS:   d0:       ee700b70
-; IASM-NOT: vmov.s8  r0, d0[7]
-
-  %2 = sext i8 %1 to i32
-  ret i32 %2
-}
-
-define internal i32 @extract8_v16i8(<16 x i8> %src) {
-; ASM-LABEL: extract8_v16i8:
-; DIS-LABEL: 000000f0 <extract8_v16i8>:
-; IASM-LABEL: extract8_v16i8:
-
-  %1 = extractelement <16 x i8> %src, i32 8
-
-; ASM: vmov.s8  r0, d1[0]
-; DIS:   100:       ee510b10
-; IASM-NOT: vmov.s8  r0, d1[0]
-
-  %2 = sext i8 %1 to i32
-  ret i32 %2
-}
-
-define internal float @extract1_v4float(<4 x float> %src) {
-; ASM-LABEL: extract1_v4float:
-; DIS-LABEL: 00000120 <extract1_v4float>:
-; IASM-LABEL: extract1_v4float:
-
-  %1 = extractelement <4 x float> %src, i32 1
-
-; ASM: vmov.f32 s0, s1
-; DIS:   130:       eeb00a60
-; IASM-NOT: vmov.f32 s0, s1
-
-  ret float %1
-}
-
-define internal float @extract2_v4float(<4 x float> %src) {
-; ASM-LABEL: extract2_v4float:
-; DIS-LABEL: 00000150 <extract2_v4float>:
-; IASM-LABEL: extract2_v4float:
-
-  %1 = extractelement <4 x float> %src, i32 2
-
-; ASM: vmov.f32 s0, s2
-; DIS:   160:       eeb00a41
-; IASM-NOT: vmov.f32 s0, s2
-
-  ret float %1
-}
-
-define internal <4 x i32> @insert1_v4i32(<4 x i32> %src, i32 %s) {
-; ASM-LABEL: insert1_v4i32:
-; DIS-LABEL: 00000180 <insert1_v4i32>:
-; IASM-LABEL: insert1_v4i32:
-
-  %1 = insertelement <4 x i32> %src, i32 %s, i32 1
-
-; ASM: vmov.32  d0[1], r0
-; DIS:   198:       ee200b10
-; IASM-NOT: vmov.32  d0[1], r0
-
-  ret <4 x i32> %1
-}
-
-define internal <4 x i32> @insert2_v4i32(<4 x i32> %src, i32 %s) {
-; ASM-LABEL: insert2_v4i32:
-; DIS-LABEL: 000001b0 <insert2_v4i32>:
-; IASM-LABEL: insert2_v4i32:
-
-  %1 = insertelement <4 x i32> %src, i32 %s, i32 2
-
-; ASM: vmov.32  d1[0], r0
-; DIS:   1c8:       ee010b10
-; IASM-NOT: vmov.32  d1[0], r0
-
-  ret <4 x i32> %1
-}
-
-define internal <8 x i16> @insert3_v8i16(<8 x i16> %src, i32 %s) {
-; ASM-LABEL: insert3_v8i16:
-; DIS-LABEL: 000001e0 <insert3_v8i16>:
-; IASM-LABEL: insert3_v8i16:
-
-  %s2 = trunc i32 %s to i16
-  %1 = insertelement <8 x i16> %src, i16 %s2, i32 3
-
-; ASM: vmov.16  d0[3], r0
-; DIS:   200:       ee200b70
-; IASM-NOT: vmov.16  d0[3], r0
-
-  ret <8 x i16> %1
-}
-
-define internal <8 x i16> @insert4_v8i16(<8 x i16> %src, i32 %s) {
-; ASM-LABEL: insert4_v8i16:
-; DIS-LABEL: 00000220 <insert4_v8i16>:
-; IASM-LABEL: insert4_v8i16:
-
-  %s2 = trunc i32 %s to i16
-  %1 = insertelement <8 x i16> %src, i16 %s2, i32 4
-
-; ASM: vmov.16  d1[0], r0
-; DIS:   240:       ee010b30
-; IASM-NOT: vmov.16  d1[0], r0
-
-  ret <8 x i16> %1
-}
-
-define internal <16 x i8> @insert7_v4i8(<16 x i8> %src, i32 %s) {
-; ASM-LABEL: insert7_v4i8:
-; DIS-LABEL: 00000260 <insert7_v4i8>:
-; IASM-LABEL: insert7_v4i8:
-
-  %s2 = trunc i32 %s to i8
-  %1 = insertelement <16 x i8> %src, i8 %s2, i32 7
-
-; ASM: vmov.8   d0[7], r0
-; DIS:   280:       ee600b70
-; IASM-NOT: vmov.8   d0[7], r0
-
-  ret <16 x i8> %1
-}
-
-define internal <16 x i8> @insert8_v16i8(<16 x i8> %src, i32 %s) {
-; ASM-LABEL: insert8_v16i8:
-; DIS-LABEL: 000002a0 <insert8_v16i8>:
-; IASM-LABEL: insert8_v16i8:
-
-  %s2 = trunc i32 %s to i8
-  %1 = insertelement <16 x i8> %src, i8 %s2, i32 8
-
-; ASM: vmov.8   d1[0], r0
-; DIS:   2c0:       ee410b10
-; IASM-NOT: vmov.8   d1[0], r0
-
-  ret <16 x i8> %1
-}
-
-define internal <4 x float> @insert1_v4float(<4 x float> %src, float %s) {
-; ASM-LABEL: insert1_v4float:
-; DIS-LABEL: 000002e0 <insert1_v4float>:
-; IASM-LABEL: insert1_v4float:
-
-  %1 = insertelement <4 x float> %src, float %s, i32 1
-
-; ASM: vmov.f32 s1, s4
-; DIS:   2f8:       eef00a42
-; IASM-NOT: vmov.f32 s1, s4
-
-  ret <4 x float> %1
-}
-
-define internal <4 x float> @insert2_v4float(<4 x float> %src, float %s) {
-; ASM-LABEL: insert2_v4float:
-; DIS-LABEL: 00000310 <insert2_v4float>:
-; IASM-LABEL: insert2_v4float:
-
-  %1 = insertelement <4 x float> %src, float %s, i32 2
-
-; ASM: vmov.f32 s2, s4
-; DIS:   328:       eeb01a42
-; IASM-NOT: vmov.f32 s2, s4
-
-  ret <4 x float> %1
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/int-extend.ll b/third_party/subzero/tests_lit/assembler/arm32/int-extend.ll
deleted file mode 100644
index 5ea1365..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/int-extend.ll
+++ /dev/null
@@ -1,113 +0,0 @@
-; Tests signed/unsigned extend to 32 bits.
-
-; Show that we know how to translate add.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @testUxtb(i32 %v) {
-; ASM-LABEL:testUxtb:
-; DIS-LABEL:00000000 <testUxtb>:
-; IASM-LABEL:testUxtb:
-
-entry:
-; ASM-NEXT:.LtestUxtb$entry:
-; IASM-NEXT:.LtestUxtb$entry:
-
-  %v.b = trunc i32 %v to i8
-  %res = zext i8 %v.b to i32
-
-; ASM-NEXT:     uxtb    r0, r0
-; DIS-NEXT:   0:        e6ef0070
-; IASM-NEXT:    .byte 0x70
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xef
-; IASM-NEXT:    .byte 0xe6
-
-  ret i32 %res
-}
-
-define internal i32 @testSxtb(i32 %v) {
-; ASM-LABEL:testSxtb:
-; DIS-LABEL:00000010 <testSxtb>:
-; IASM-LABEL:testSxtb:
-
-entry:
-; ASM-NEXT:.LtestSxtb$entry:
-; IASM-NEXT:.LtestSxtb$entry:
-
-  %v.b = trunc i32 %v to i8
-  %res = sext i8 %v.b to i32
-
-; ASM-NEXT:     sxtb    r0, r0
-; DIS-NEXT:  10:        e6af0070
-; IASM-NEXT:    .byte 0x70
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xaf
-; IASM-NEXT:    .byte 0xe6
-
-  ret i32 %res
-}
-
-define internal i32 @testUxth(i32 %v) {
-; ASM-LABEL:testUxth:
-; DIS-LABEL:00000020 <testUxth>:
-; IASM-LABEL:testUxth:
-
-entry:
-; ASM-NEXT:.LtestUxth$entry:
-; IASM-NEXT:.LtestUxth$entry:
-
-  %v.h = trunc i32 %v to i16
-  %res = zext i16 %v.h to i32
-
-; ASM-NEXT:     uxth    r0, r0
-; DIS-NEXT:  20:        e6ff0070
-; IASM-NEXT:    .byte 0x70
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0xe6
-
-  ret i32 %res
-}
-
-define internal i32 @testSxth(i32 %v) {
-; ASM-LABEL:testSxth:
-; DIS-LABEL:00000030 <testSxth>:
-; IASM-LABEL:testSxth:
-
-entry:
-; ASM-NEXT:.LtestSxth$entry:
-; IASM-NEXT:.LtestSxth$entry:
-
-  %v.h = trunc i32 %v to i16
-  %res = sext i16 %v.h to i32
-
-; ASM-NEXT:     sxth    r0, r0
-; DIS-NEXT:  30:        e6bf0070
-; IASM-NEXT:    .byte 0x70
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xbf
-; IASM-NEXT:    .byte 0xe6
-
-  ret i32 %res
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/ldr-shift.ll b/third_party/subzero/tests_lit/assembler/arm32/ldr-shift.ll
deleted file mode 100644
index 815b903..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/ldr-shift.ll
+++ /dev/null
@@ -1,116 +0,0 @@
-; Show that we know how to translate LDR/LDRH (register) instructions.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %lc2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %lc2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %lc2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %lc2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Define some global arrays to access.
-@ArrayInitPartial = internal global [40 x i8] c"<\00\00\00F\00\00\00P\00\00\00Z\00\00\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 4
-
-@Arrays = internal constant <{ i32, [4 x i8] }> <{ i32 ptrtoint ([40 x i8]* @ArrayInitPartial to i32), [4 x i8] c"\14\00\00\00" }>, align 4
-
-; Index elements of an array.
-define internal i32 @IndexArray(i32 %WhichArray, i32 %Len) {
-; ASM-LABEL:IndexArray:
-; DIS-LABEL:00000000 <IndexArray>:
-; IASM-LABEL:IndexArray:
-
-entry:
-; ASM-NEXT:.LIndexArray$entry:
-; IASM-NEXT:.LIndexArray$entry:
-
-  %gep_array = mul i32 %WhichArray, 8
-
-; ASM-NEXT:     push    {r4}
-; DIS-NEXT:   0:        e52d4004
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0x40
-; IASM-NEXT:    .byte 0x2d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     lsl     r2, r0, #3
-; DIS-NEXT:   4:        e1a02180
-; IASM-NEXT:    .byte 0x80
-; IASM-NEXT:    .byte 0x21
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe1
-
-  %expanded1 = ptrtoint <{ i32, [4 x i8] }>* @Arrays to i32
-  %gep = add i32 %expanded1, %gep_array
-
-; ASM-NEXT:     movw    r3, #:lower16:Arrays
-; DIS-NEXT:   8:        e3003000
-; IASM-NEXT:    movw    r3, #:lower16:Arrays    @ .word e3003000
-
-; ASM-NEXT:     movt    r3, #:upper16:Arrays
-; DIS-NEXT:   c:        e3403000
-; IASM-NEXT:    movt    r3, #:upper16:Arrays    @ .word e3403000
-
-  %gep3 = add i32 %gep, 4
-
-; ASM-NEXT:     add     r4, r3, #4
-; DIS-NEXT:  10:        e2834004
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0x40
-; IASM-NEXT:    .byte 0x83
-; IASM-NEXT:    .byte 0xe2
-
-; ***** Here is the use of a LDR (register) instruction.
-  %gep3.asptr = inttoptr i32 %gep3 to i32*
-  %v1 = load i32, i32* %gep3.asptr, align 1
-
-; ASM-NEXT:     ldr     r4, [r4, r0, lsl #3]
-; DIS-NEXT:  14:        e7944180
-; IASM-NEXT:    .byte 0x80
-; IASM-NEXT:    .byte 0x41
-; IASM-NEXT:    .byte 0x94
-; IASM-NEXT:    .byte 0xe7
-
-  %Len.asptr3 = inttoptr i32 %Len to i32*
-  store i32 %v1, i32* %Len.asptr3, align 1
-
-; ASM-NEXT:     str     r4, [r1]
-; DIS-NEXT:  18:        e5814000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x40
-; IASM-NEXT:    .byte 0x81
-; IASM-NEXT:    .byte 0xe5
-
-  ; Now read the value as an i16 to test ldrh (register).
-  %gep3.i16ptr = inttoptr i32 %gep3 to i16*
-  %v16 = load i16, i16* %gep3.i16ptr, align 1
-
-; ASM-NEXT:     add     r3, r3, #4
-; DIS-NEXT:  1c:        e2833004
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0x30
-; IASM-NEXT:    .byte 0x83
-; IASM-NEXT:    .byte 0xe2
-
-; ***** Here is the use of a LDRH (register) instruction.
-; ASM-NEXT:     ldrh    r3, [r3, r2]
-; DIS-NEXT:  20:        e19330b2
-; IASM-NEXT:    .byte 0xb2
-; IASM-NEXT:    .byte 0x30
-; IASM-NEXT:    .byte 0x93
-; IASM-NEXT:    .byte 0xe1
-
-  %ret = sext i16 %v16 to i32
-  ret i32 %ret
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/ldr-str-more.ll b/third_party/subzero/tests_lit/assembler/arm32/ldr-str-more.ll
deleted file mode 100644
index 25ed0e9..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/ldr-str-more.ll
+++ /dev/null
@@ -1,459 +0,0 @@
-; More ldr/str examples (byte and half word).
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %lc2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %lc2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %lc2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %lc2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-
-define internal i32 @LoadStoreI1(i32 %a, i32 %b) {
-; ASM-LABEL:LoadStoreI1:
-; DIS-LABEL:00000000 <LoadStoreI1>:
-; IASM-LABEL:LoadStoreI1:
-
-entry:
-; ASM-NEXT:.LLoadStoreI1$entry:
-; IASM-NEXT:.LLoadStoreI1$entry:
-
-; ASM-NEXT:     sub     sp, sp, #32
-; DIS-NEXT:   0:        e24dd020
-; IASM-NEXT:    .byte 0x20
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x4d
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     str     r0, [sp, #28]
-; ASM-NEXT:     # [sp, #28] = def.pseudo
-; DIS-NEXT:   4:        e58d001c
-; IASM-NEXT:    .byte 0x1c
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     str     r1, [sp, #24]
-; ASM-NEXT:     # [sp, #24] = def.pseudo
-; DIS-NEXT:   8:        e58d1018
-; IASM-NEXT:    .byte 0x18
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-  %b.arg_trunc = trunc i32 %b to i1
-
-; ASM-NEXT:     ldr     r0, [sp, #24]
-; DIS-NEXT:   c:        e59d0018
-; IASM-NEXT:    .byte 0x18
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     and     r0, r0, #1
-; DIS-NEXT:  10:        e2000001
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     strb    r0, [sp, #20]
-; ASM-NEXT:     # [sp, #20] = def.pseudo
-; DIS-NEXT:  14:        e5cd0014
-; IASM-NEXT:    .byte 0x14
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xcd
-; IASM-NEXT:    .byte 0xe5
-
-  %a.arg_trunc = trunc i32 %a to i1
-  %conv = zext i1 %a.arg_trunc to i32
-
-; ASM-NEXT:     ldr     r0, [sp, #28]
-; DIS-NEXT:  18:        e59d001c
-; IASM-NEXT:    .byte 0x1c
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     and     r0, r0, #1
-; DIS-NEXT:  1c:        e2000001
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     strb    r0, [sp, #16]
-; ASM-NEXT:     # [sp, #16] = def.pseudo
-; DIS-NEXT:  20:        e5cd0010
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xcd
-; IASM-NEXT:    .byte 0xe5
-
-  %add = sext i1 %b.arg_trunc to i32
-
-; ASM-NEXT:     ldrb    r0, [sp, #16]
-; DIS-NEXT:  24:        e5dd0010
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xdd
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     str     r0, [sp, #12]
-; ASM-NEXT:     # [sp, #12] = def.pseudo
-; DIS-NEXT:  28:        e58d000c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-  %tobool4 = icmp ne i32 %conv, %add
-
-; ASM-NEXT:     mov     r0, #0
-; DIS-NEXT:  2c:        e3a00000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe3
-
-; ASM-NEXT:     ldrb    r1, [sp, #20]
-; DIS-NEXT:  30:        e5dd1014
-; IASM-NEXT:    .byte 0x14
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0xdd
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     tst     r1, #1
-; DIS-NEXT:  34:        e3110001
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x11
-; IASM-NEXT:    .byte 0xe3
-
-; ASM-NEXT:     mvn     r1, #0
-; DIS-NEXT:  38:        e3e01000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0xe0
-; IASM-NEXT:    .byte 0xe3
-
-; ASM-NEXT:     movne   r0, r1
-; DIS-NEXT:  3c:        11a00001
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0x11
-
-; ASM-NEXT:     str     r0, [sp, #8]
-; ASM-NEXT:     # [sp, #8] = def.pseudo
-; DIS-NEXT:  40:        e58d0008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-  %tobool4.ret_ext = zext i1 %tobool4 to i32
-
-; ASM-NEXT:     mov     r0, #0
-; DIS-NEXT:  44:        e3a00000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe3
-
-; ASM-NEXT:     ldr     r1, [sp, #12]
-; DIS-NEXT:  48:        e59d100c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     ldr     r2, [sp, #8]
-; DIS-NEXT:  4c:        e59d2008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0x20
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     cmp     r1, r2
-; DIS-NEXT:  50:        e1510002
-; IASM-NEXT:    .byte 0x2
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x51
-; IASM-NEXT:    .byte 0xe1
-
-; ASM-NEXT:     movne   r0, #1
-; DIS-NEXT:  54:        13a00001
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0x13
-
-; ASM-NEXT:     strb    r0, [sp, #4]
-; ASM-NEXT:     # [sp, #4] = def.pseudo
-; DIS-NEXT:  58:        e5cd0004
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xcd
-; IASM-NEXT:    .byte 0xe5
-
-  ret i32 %tobool4.ret_ext
-
-; ASM-NEXT:     ldrb    r0, [sp, #4]
-; DIS-NEXT:  5c:        e5dd0004
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xdd
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     str     r0, [sp]
-; ASM-NEXT:     # [sp] = def.pseudo
-; DIS-NEXT:  60:        e58d0000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     ldr     r0, [sp]
-; DIS-NEXT:  64:        e59d0000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     add     sp, sp, #32
-; DIS-NEXT:  68:        e28dd020
-; IASM-NEXT:    .byte 0x20
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     bx      lr
-; DIS-NEXT:  6c:        e12fff1e
-; IASM-NEXT:    .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
-}
-
-
-define internal i32 @LoadStoreI16(i32 %a, i32 %b) {
-; ASM-LABEL:LoadStoreI16:
-; DIS-LABEL:00000070 <LoadStoreI16>:
-; IASM-LABEL:LoadStoreI16:
-
-entry:
-; ASM-NEXT:.LLoadStoreI16$entry:
-; IASM-NEXT:.LLoadStoreI16$entry:
-
-; ASM-NEXT:     sub     sp, sp, #36
-; DIS-NEXT:  70:        e24dd024
-; IASM-NEXT:    .byte 0x24
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x4d
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     str     r0, [sp, #32]
-; ASM-NEXT:     # [sp, #32] = def.pseudo
-; DIS-NEXT:  74:        e58d0020
-; IASM-NEXT:    .byte 0x20
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     str     r1, [sp, #28]
-; ASM-NEXT:     # [sp, #28] = def.pseudo
-; DIS-NEXT:  78:        e58d101c
-; IASM-NEXT:    .byte 0x1c
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-  %b.arg_trunc = trunc i32 %b to i16
-
-; ASM-NEXT:     ldr     r0, [sp, #28]
-; DIS-NEXT:  7c:        e59d001c
-; IASM-NEXT:    .byte 0x1c
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     strh    r0, [sp, #24]
-; ASM-NEXT:     # [sp, #24] = def.pseudo
-; DIS-NEXT:  80:        e1cd01b8
-; IASM-NEXT:    .byte 0xb8
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0xcd
-; IASM-NEXT:    .byte 0xe1
-
-  %a.arg_trunc = trunc i32 %a to i16
-
-; ASM-NEXT:     ldr     r0, [sp, #32]
-; DIS-NEXT:  84:        e59d0020
-; IASM-NEXT:    .byte 0x20
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     strh    r0, [sp, #20]
-; ASM-NEXT:     # [sp, #20] = def.pseudo
-; DIS-NEXT:  88:        e1cd01b4
-; IASM-NEXT:    .byte 0xb4
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0xcd
-; IASM-NEXT:    .byte 0xe1
-
-  %conv = zext i16 %a.arg_trunc to i32
-
-; ASM-NEXT:     ldrh    r0, [sp, #20]
-; DIS-NEXT:  8c:        e1dd01b4
-; IASM-NEXT:    .byte 0xb4
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0xdd
-; IASM-NEXT:    .byte 0xe1
-
-; ASM-NEXT:     uxth    r0, r0
-; DIS-NEXT:  90:        e6ff0070
-; IASM-NEXT:    .byte 0x70
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0xe6
-
-; ASM-NEXT:     str     r0, [sp, #16]
-; ASM-NEXT:     # [sp, #16] = def.pseudo
-; DIS-NEXT:  94:        e58d0010
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-  %conv1 = zext i16 %b.arg_trunc to i32
-
-; ASM-NEXT:     ldrh    r0, [sp, #24]
-; DIS-NEXT:  98:        e1dd01b8
-; IASM-NEXT:    .byte 0xb8
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0xdd
-; IASM-NEXT:    .byte 0xe1
-
-; ASM-NEXT:     uxth    r0, r0
-; DIS-NEXT:  9c:        e6ff0070
-; IASM-NEXT:    .byte 0x70
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0xe6
-
-; ASM-NEXT:     str     r0, [sp, #12]
-; ASM-NEXT:     # [sp, #12] = def.pseudo
-; DIS-NEXT:  a0:        e58d000c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-  %add = add i32 %conv1, %conv
-
-; ASM-NEXT:     ldr     r0, [sp, #12]
-; DIS-NEXT:  a4:        e59d000c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     ldr     r1, [sp, #16]
-; DIS-NEXT:  a8:        e59d1010
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     add     r0, r0, r1
-; DIS-NEXT:  ac:        e0800001
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x80
-; IASM-NEXT:    .byte 0xe0
-
-; ASM-NEXT:     str     r0, [sp, #8]
-; ASM-NEXT:     # [sp, #8] = def.pseudo
-; DIS-NEXT:  b0:        e58d0008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-  %conv2 = trunc i32 %add to i16
-
-; ASM-NEXT:     ldr     r0, [sp, #8]
-; DIS-NEXT:  b4:        e59d0008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     strh    r0, [sp, #4]
-; ASM-NEXT:     # [sp, #4] = def.pseudo
-; DIS-NEXT:  b8:        e1cd00b4
-; IASM-NEXT:    .byte 0xb4
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xcd
-; IASM-NEXT:    .byte 0xe1
-
-  %conv2.ret_ext = zext i16 %conv2 to i32
-
-; ASM-NEXT:     ldrh    r0, [sp, #4]
-; DIS-NEXT:  bc:        e1dd00b4
-; IASM-NEXT:    .byte 0xb4
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xdd
-; IASM-NEXT:    .byte 0xe1
-
-; ASM-NEXT:     uxth    r0, r0
-; DIS-NEXT:  c0:        e6ff0070
-; IASM-NEXT:    .byte 0x70
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0xe6
-
-; ASM-NEXT:     str     r0, [sp]
-; ASM-NEXT:     # [sp] = def.pseudo
-; DIS-NEXT:  c4:        e58d0000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-  ret i32 %conv2.ret_ext
-
-; ASM-NEXT:     ldr     r0, [sp]
-; DIS-NEXT:  c8:        e59d0000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     add     sp, sp, #36
-; DIS-NEXT:  cc:        e28dd024
-; IASM-NEXT:    .byte 0x24
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     bx      lr
-; DIS-NEXT:  d0:        e12fff1e
-; IASM-NEXT:    .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
-
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/ldrex-strex.ll b/third_party/subzero/tests_lit/assembler/arm32/ldrex-strex.ll
deleted file mode 100644
index 47e99f3..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/ldrex-strex.ll
+++ /dev/null
@@ -1,156 +0,0 @@
-; Tests assembly of ldrex and strex instructions
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-declare i8 @llvm.nacl.atomic.rmw.i8(i32, i8*, i8, i32)
-
-declare i16 @llvm.nacl.atomic.rmw.i16(i32, i16*, i16, i32)
-
-declare i32 @llvm.nacl.atomic.rmw.i32(i32, i32*, i32, i32) #0
-
-declare i64 @llvm.nacl.atomic.rmw.i64(i32, i64*, i64, i32) #0
-
-define internal i32 @testI8Form(i32 %ptr, i32 %a) {
-; ASM-LABEL:testI8Form:
-; DIS-LABEL:<testI8Form>:
-; IASM-LABEL:testI8Form:
-
-entry:
-  %ptr.asptr = inttoptr i32 %ptr to i8*
-  %a.arg_trunc = trunc i32 %a to i8
-
-  %v = call i8 @llvm.nacl.atomic.rmw.i8(i32 1, i8* %ptr.asptr,
-                                        i8 %a.arg_trunc, i32 6)
-
-; ****** Example of dmb *******
-; ASM:          dmb     sy
-; DIS:     1c:  f57ff05f
-; IASM:         .byte 0x5f
-; IASM-NEXT:    .byte 0xf0
-; IASM-NEXT:    .byte 0x7f
-; IASM-NEXT:    .byte 0xf5
-
-; ***** Example of ldrexb *****
-; ASM:          ldrexb  r1, [r2]
-; DIS:     24:  e1d21f9f
-; IASM:         .byte 0x9f
-; IASM-NEXT:    .byte 0x1f
-; IASM-NEXT:    .byte 0xd2
-; IASM-NEXT:    .byte 0xe1
-
-; ***** Example of strexb *****
-; ASM:          strexb  r4, r3, [r2]
-; DIS:     2c:  e1c24f93
-; IASM:         .byte 0x93
-; IASM-NEXT:    .byte 0x4f
-; IASM-NEXT:    .byte 0xc2
-; IASM-NEXT:    .byte 0xe1
-
-  %retval = zext i8 %v to i32
-  ret i32 %retval
-}
-
-define internal i32 @testI16Form(i32 %ptr, i32 %a) {
-; ASM-LABEL:testI16Form:
-; DIS-LABEL:<testI16Form>:
-; IASM-LABEL:testI16Form:
-
-entry:
-  %ptr.asptr = inttoptr i32 %ptr to i16*
-  %a.arg_trunc = trunc i32 %a to i16
-
-  %v = call i16 @llvm.nacl.atomic.rmw.i16(i32 1, i16* %ptr.asptr,
-                                          i16 %a.arg_trunc, i32 6)
-; ***** Example of ldrexh *****
-; ASM:          ldrexh  r1, [r2]
-; DIS:     84:  e1f21f9f
-; IASM:         .byte 0x9f
-; IASM-NEXT:    .byte 0x1f
-; IASM-NEXT:    .byte 0xf2
-; IASM-NEXT:    .byte 0xe1
-
-; ***** Example of strexh *****
-; ASM:          strexh  r4, r3, [r2]
-; DIS:     8c:  e1e24f93
-; IASM:         .byte 0x93
-; IASM-NEXT:    .byte 0x4f
-; IASM-NEXT:    .byte 0xe2
-; IASM-NEXT:    .byte 0xe1
-
-  %retval = zext i16 %v to i32
-  ret i32 %retval
-}
-
-define internal i32 @testI32Form(i32 %ptr, i32 %a) {
-; ASM-LABEL:testI32Form:
-; DIS-LABEL:<testI32Form>:
-; IASM-LABEL:testI32Form:
-
-entry:
-  %ptr.asptr = inttoptr i32 %ptr to i32*
-  %v = call i32 @llvm.nacl.atomic.rmw.i32(i32 1, i32* %ptr.asptr,
-                                          i32 %a, i32 6)
-
-; ***** Example of ldrex *****
-; ASM:          ldrex   r1, [r2]
-; DIS:     dc:  e1921f9f
-; IASM:         .byte 0x9f
-; IASM-NEXT:    .byte 0x1f
-; IASM-NEXT:    .byte 0x92
-; IASM-NEXT:    .byte 0xe1
-
-; ***** Example of strex *****
-; ASM:          strex   r4, r3, [r2]
-; DIS:     e4:  e1824f93
-; IASM:         .byte 0x93
-; IASM-NEXT:    .byte 0x4f
-; IASM-NEXT:    .byte 0x82
-; IASM-NEXT:    .byte 0xe1
-
-  ret i32 %v
-}
-
-define internal i64 @testI64Form(i32 %ptr, i64 %a) {
-; ASM-LABEL:testI64Form:
-; DIS-LABEL:<testI64Form>:
-; IASM-LABEL:testI64Form:
-
-entry:
-  %ptr.asptr = inttoptr i32 %ptr to i64*
-  %v = call i64 @llvm.nacl.atomic.rmw.i64(i32 1, i64* %ptr.asptr,
-                                          i64 %a, i32 6)
-
-; ***** Example of ldrexd *****
-; ASM:          ldrexd  r4, r5, [r6]
-; DIS:     13c: e1b64f9f
-; IASM:         .byte 0x9f
-; IASM-NEXT:    .byte 0x4f
-; IASM-NEXT:    .byte 0xb6
-; IASM-NEXT:    .byte 0xe1
-
-; ***** Example of strexd *****
-; ASM:          strexd  r4, r0, r1, [r6]
-; DIS:     158: e1a64f90
-; IASM:         .byte 0x90
-; IASM-NEXT:    .byte 0x4f
-; IASM-NEXT:    .byte 0xa6
-; IASM-NEXT:    .byte 0xe1
-
-  ret i64 %v
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/load-store.ll b/third_party/subzero/tests_lit/assembler/arm32/load-store.ll
deleted file mode 100644
index 9f80f69..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/load-store.ll
+++ /dev/null
@@ -1,86 +0,0 @@
-; Show that we can handle variable (i.e. stack) spills.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @add1ToR0(i32 %p) {
-  %v = add i32 %p, 1
-  ret i32 %v
-}
-
-; ASM-LABEL: add1ToR0:
-; IASM-LABEL: add1ToR0:
-; DIS-LABEL:00000000 <add1ToR0>:
-
-; ASM:          sub     sp, sp, #8
-; DIS-NEXT:   0:        e24dd008
-; IASM:         .byte 0x8
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x4d
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     str     r0, [sp, #4]
-; ASM-NEXT:     # [sp, #4] = def.pseudo
-; DIS-NEXT:   4:        e58d0004
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     ldr     r0, [sp, #4]
-; DIS-NEXT:   8:        e59d0004
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     add     r0, r0, #1
-; DIS-NEXT:   c:        e2800001
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x80
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     str     r0, [sp]
-; ASM-NEXT:     # [sp] = def.pseudo
-; DIS-NEXT:  10:        e58d0000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     ldr     r0, [sp]
-; DIS-NEXT:  14:        e59d0000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     add     sp, sp, #8
-; DIS-NEXT:  18:        e28dd008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     bx      lr
-; DIS-NEXT:  1c:        e12fff1e
-; IASM-NEXT:    .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
diff --git a/third_party/subzero/tests_lit/assembler/arm32/lsl.ll b/third_party/subzero/tests_lit/assembler/arm32/lsl.ll
deleted file mode 100644
index 35e65c4..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/lsl.ll
+++ /dev/null
@@ -1,103 +0,0 @@
-; Show that we know how to translate lsl.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @ShlAmt(i32 %a) {
-; ASM-LABEL:ShlAmt:
-; DIS-LABEL:00000000 <ShlAmt>:
-; IASM-LABEL:ShlAmt:
-
-entry:
-; ASM-NEXT:.LShlAmt$entry:
-; IASM-NEXT:.LShlAmt$entry:
-
-  %shl = shl i32 %a, 23
-
-; ASM-NEXT:     lsl     r0, r0, #23
-; DIS-NEXT:   0:        e1a00b80
-; IASM-NOT:     lsl
-
-  ret i32 %shl
-}
-
-define internal i32 @ShlReg(i32 %a, i32 %b) {
-; ASM-LABEL:ShlReg:
-; DIS-LABEL:00000010 <ShlReg>:
-; IASM-LABEL:ShlReg:
-
-entry:
-; ASM-NEXT:.LShlReg$entry:
-; IASM-NEXT:.LShlReg$entry:
-
-  %shl = shl i32 %a, %b
-
-; ASM-NEXT:     lsl     r0, r0, r1
-; DIS-NEXT:  10:        e1a00110
-; IASM-NOT:     lsl
-
-  ret i32 %shl
-}
-
-define internal <4 x i32> @ShlVec(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:ShlVec:
-; DIS-LABEL:00000020 <ShlVec>:
-; IASM-LABEL:ShlVec:
-
-entry:
-; ASM-NEXT:.LShlVec$entry:
-; IASM-NEXT:.LShlVec$entry:
-
-  %shl = shl <4 x i32> %a, %b
-
-; ASM:      vshl.u32     q0, q0, q1
-; DIS:  20: f3220440
-; IASM-NOT: vshl
-
-  ret <4 x i32> %shl
-}
-
-define internal <8 x i16> @ShlVeci16(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:ShlVeci16:
-
-entry:
-
-  %v = shl <8 x i16> %a, %b
-
-; ASM:      vshl.u16     q0, q0, q1
-; DIS:  30: f3120440
-; IASM-NOT: vshl
-
-  ret <8 x i16> %v
-}
-
-define internal <16 x i8> @ShlVeci8(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:ShlVeci8:
-
-entry:
-
-  %v = shl <16 x i8> %a, %b
-
-; ASM:      vshl.u8     q0, q0, q1
-; DIS:  40: f3020440
-; IASM-NOT: vshl
-
-  ret <16 x i8> %v
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/lsr.ll b/third_party/subzero/tests_lit/assembler/arm32/lsr.ll
deleted file mode 100644
index 193d0aa..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/lsr.ll
+++ /dev/null
@@ -1,112 +0,0 @@
-; Show that we know how to translate lsr.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @LshrAmt(i32 %a) {
-; ASM-LABEL:LshrAmt:
-; DIS-LABEL:00000000 <LshrAmt>:
-; IASM-LABEL:LshrAmt:
-
-entry:
-; ASM-NEXT:.LLshrAmt$entry:
-; IASM-NEXT:.LLshrAmt$entry:
-
-  %v = lshr i32 %a, 23
-
-; ASM-NEXT:     lsr     r0, r0, #23
-; DIS-NEXT:   0:        e1a00ba0
-; IASM-NOT:     lsr
-
-  ret i32 %v
-}
-
-define internal i32 @LshrReg(i32 %a, i32 %b) {
-; ASM-LABEL:LshrReg:
-; DIS-LABEL:00000010 <LshrReg>:
-; IASM-LABEL:LshrReg:
-
-entry:
-; ASM-NEXT:.LLshrReg$entry:
-; IASM-NEXT:.LLshrReg$entry:
-
-  %v = lshr i32 %a, %b
-
-; ASM-NEXT:     lsr     r0, r0, r1
-; DIS-NEXT:  10:        e1a00130
-; IASM-NOT:     lsr
-
-  ret i32 %v
-}
-
-define internal <4 x i32> @LshrVec(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:LshrVec:
-; DIS-LABEL:00000020 <LshrVec>:
-; IASM-LABEL:LshrVec:
-
-entry:
-; ASM-NEXT:.LLshrVec$entry:
-; IASM-NEXT:.LLshrVec$entry:
-
-  %v = lshr <4 x i32> %a, %b
-
-; ASM:          vneg.s32  q1, q1
-; ASM-NEXT:     vshl.u32 q0, q0, q1
-; DIS:      20:          f3b923c2
-; DIS:      24:          f3220440
-; IASM-NOT:     vneg
-; IASM-NOT:     vshl
-
-  ret <4 x i32> %v
-}
-
-define internal <8 x i16> @LshrVeci16(<8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:LshrVeci16:
-
-entry:
-
-  %v = lshr <8 x i16> %a, %b
-
-; ASM:          vneg.s16  q1, q1
-; ASM-NEXT:     vshl.u16 q0, q0, q1
-; DIS:      30:          f3b523c2
-; DIS:      34:          f3120440
-; IASM-NOT:     vneg
-; IASM-NOT:     vshl
-
-  ret <8 x i16> %v
-}
-
-define internal <16 x i8> @LshrVeci8(<16 x i8> %a, <16 x i8> %b) {
-; ASM-LABEL:LshrVeci8:
-
-entry:
-
-  %v = lshr <16 x i8> %a, %b
-
-; ASM:          vneg.s8  q1, q1
-; ASM-NEXT:     vshl.u8 q0, q0, q1
-; DIS:      40:         f3b123c2
-; DIS:      44:         f3020440
-; IASM-NOT:     vneg
-; IASM-NOT:     vshl
-
-  ret <16 x i8> %v
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/mls.ll b/third_party/subzero/tests_lit/assembler/arm32/mls.ll
deleted file mode 100644
index c9ded32..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/mls.ll
+++ /dev/null
@@ -1,115 +0,0 @@
-; Show that we know how to translate mls.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 --mattr=hwdiv-arm \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --mattr=hwdiv-arm | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 --mattr=hwdiv-arm \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --mattr=hwdiv-arm | FileCheck %s --check-prefix=DIS
-
-define internal i32 @testMls(i32 %a, i32 %b) {
-; ASM-LABEL: testMls:
-; DIS-LABEL: 00000000 <testMls>:
-; IASM-LABEL: testMls:
-
-entry:
-; ASM-NEXT: .LtestMls$entry:
-; IASM-NEXT: .LtestMls$entry:
-
-; ASM-NEXT:     sub     sp, sp, #12
-; DIS-NEXT:    0:       e24dd00c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x4d
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     str     r0, [sp, #8]
-; ASM-NEXT:     # [sp, #8] = def.pseudo
-; DIS-NEXT:    4:       e58d0008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     str     r1, [sp, #4]
-; ASM-NEXT:     # [sp, #4] = def.pseudo
-; DIS-NEXT:    8:       e58d1004
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-  %rem = srem i32 %a, %b
-
-; ASM-NEXT:     ldr     r0, [sp, #8]
-; DIS-NEXT:    c:       e59d0008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     ldr     r1, [sp, #4]
-; DIS-NEXT:   10:       e59d1004
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:    tst     r1, r1
-; DIS-NEXT:   14:       e1110001
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x11
-; IASM-NEXT:    .byte 0xe1
-
-; ASM-NEXT:     bne     .LtestMls$local$__0
-; DIS-NEXT:   18:       1a000000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x1a
-
-; ASM-NEXT:     .long 0xe7fedef0
-; DIS-NEXT:   1c:       e7fedef0
-; IASM-NEXT:    .byte 0xf0
-; IASM-NEXT:    .byte 0xde
-; IASM-NEXT:    .byte 0xfe
-; IASM-NEXT:    .byte 0xe7
-
-; ASM-NEXT: .LtestMls$local$__0:
-; IASM-NEXT: .LtestMls$local$__0:
-
-; ASM-NEXT:     ldr     r1, [sp, #4]
-; DIS-NEXT:   20:       e59d1004
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     sdiv    r2, r0, r1
-; DIS-NEXT:   24:       e712f110
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0xf1
-; IASM-NEXT:    .byte 0x12
-; IASM-NEXT:    .byte 0xe7
-
-; ASM-NEXT:     mls     r0, r2, r1, r0
-; DIS-NEXT:   28:       e0600192
-; IASM-NEXT:    .byte 0x92
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x60
-; IASM-NEXT:    .byte 0xe0
-
-  ret i32 %rem
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/mov-const.ll b/third_party/subzero/tests_lit/assembler/arm32/mov-const.ll
deleted file mode 100644
index c5ccbdc..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/mov-const.ll
+++ /dev/null
@@ -1,204 +0,0 @@
-; Show that we handle constants in movw and mvt, when it isn't represented as
-; ConstantRelocatable (see mov-imm.ll for the ConstantRelocatable case).
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   --test-stack-extra 4084 | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --test-stack-extra 4084 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   --test-stack-extra 4084 | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --test-stack-extra 4084 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal i32 @foo(i32 %x) {
-entry:
-
-; ASM-LABEL: foo:
-; DIS-LABEL: 00000000 <foo>:
-; IASM-LABEL: foo:
-
-; ASM-NEXT: .Lfoo$entry:
-; IASM-NEXT: .Lfoo$entry:
-
-; ASM-NEXT:     movw    ip, #4092
-; DIS-NEXT:    0:       e300cffc
-; IASM-NEXT:    .byte 0xfc
-; IASM-NEXT:    .byte 0xcf
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xe3
-
-; ASM-NEXT:     sub     sp, sp, ip
-; DIS-NEXT:    4:       e04dd00c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x4d
-; IASM-NEXT:    .byte 0xe0
-
-; ASM-NEXT:     str     r0, [sp, #4088]
-; DIS-NEXT:    8:       e58d0ff8
-; IASM-NEXT:    .byte 0xf8
-; IASM-NEXT:    .byte 0xf
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     # [sp, #4088] = def.pseudo
-
-  %mul = mul i32 %x, %x
-
-; ASM-NEXT:     ldr     r0, [sp, #4088]
-; DIS-NEXT:    c:       e59d0ff8
-; IASM-NEXT:    .byte 0xf8
-; IASM-NEXT:    .byte 0xf
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     ldr     r1, [sp, #4088]
-; DIS-NEXT:   10:       e59d1ff8
-; IASM-NEXT:    .byte 0xf8
-; IASM-NEXT:    .byte 0x1f
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     mul     r0, r0, r1
-; DIS-NEXT:   14:       e0000190
-; IASM-NEXT:    .byte 0x90
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xe0
-
-; ASM-NEXT:     str     r0, [sp, #4084]
-; DIS-NEXT:   18:       e58d0ff4
-; IASM-NEXT:    .byte 0xf4
-; IASM-NEXT:    .byte 0xf
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     # [sp, #4084] = def.pseudo
-
-  ret i32 %mul
-
-; ASM-NEXT:     ldr     r0, [sp, #4084]
-; DIS-NEXT:   1c:       e59d0ff4
-; IASM-NEXT:    .byte 0xf4
-; IASM-NEXT:    .byte 0xf
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     movw    ip, #4092
-; DIS-NEXT:   20:       e300cffc
-; IASM-NEXT:    .byte 0xfc
-; IASM-NEXT:    .byte 0xcf
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xe3
-
-; ASM-NEXT:     add     sp, sp, ip
-; DIS-NEXT:   24:       e08dd00c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe0
-
-; ASM-NEXT:     bx      lr
-; DIS-NEXT:   28:       e12fff1e
-; IASM-NEXT:    .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
-
-}
-
-define internal void @saveConstI32(i32 %loc) {
-; ASM-LABEL:saveConstI32:
-; DIS-LABEL:00000030 <saveConstI32>:
-; IASM-LABEL:saveConstI32:
-
-entry:
-; ASM-NEXT:.LsaveConstI32$entry:
-; IASM-NEXT:.LsaveConstI32$entry:
-
-; ASM-NEXT:     movw    ip, #4088
-; DIS-NEXT:  30:        e300cff8
-; IASM-NEXT:    .byte 0xf8
-; IASM-NEXT:    .byte 0xcf
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xe3
-
-; ASM-NEXT:     sub     sp, sp, ip
-; DIS-NEXT:  34:        e04dd00c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x4d
-; IASM-NEXT:    .byte 0xe0
-
-; ASM-NEXT:     str     r0, [sp, #4084]
-; ASM-NEXT:     # [sp, #4084] = def.pseudo
-; DIS-NEXT:  38:        e58d0ff4
-; IASM-NEXT:    .byte 0xf4
-; IASM-NEXT:    .byte 0xf
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-  %loc.asptr = inttoptr i32 %loc to i32*
-  store i32 524289, i32* %loc.asptr, align 1
-
-; ASM-NEXT:     ldr     r0, [sp, #4084]
-; DIS-NEXT:  3c:        e59d0ff4
-; IASM-NEXT:    .byte 0xf4
-; IASM-NEXT:    .byte 0xf
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     movw     r1, #1
-; DIS-NEXT:  40:        e3001001
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xe3
-
-; ASM-NEXT:     movt    r1, #8
-; DIS-NEXT:  44:        e3401008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x40
-; IASM-NEXT:    .byte 0xe3
-
-; ASM-NEXT:     str     r1, [r0]
-; DIS-NEXT:  48:        e5801000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x80
-; IASM-NEXT:    .byte 0xe5
-
-  ret void
-
-; ASM-NEXT:     movw    ip, #4088
-; DIS-NEXT:  4c:        e300cff8
-; IASM-NEXT:    .byte 0xf8
-; IASM-NEXT:    .byte 0xcf
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xe3
-
-; ASM-NEXT:     add     sp, sp, ip
-; DIS-NEXT:  50:        e08dd00c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe0
-
-; ASM-NEXT:     bx      lr
-; DIS-NEXT:  54:        e12fff1e
-; IASM-NEXT:    .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/mov-imm.ll b/third_party/subzero/tests_lit/assembler/arm32/mov-imm.ll
deleted file mode 100644
index f307701..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/mov-imm.ll
+++ /dev/null
@@ -1,308 +0,0 @@
-; Show that we know how to translate move (immediate) ARM instruction.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @Imm1() {
-  ret i32 1
-}
-
-; ASM-LABEL: Imm1:
-; ASM: mov      r0, #1
-
-; DIS-LABEL:00000000 <Imm1>:
-; DIS-NEXT:   0:        e3a00001
-
-; IASM-LABEL: Imm1:
-; IASM: .byte 0x1
-; IASM: .byte 0x0
-; IASM: .byte 0xa0
-; IASM: .byte 0xe3
-
-
-define internal i32 @rotateFImmAA() {
-  ; immediate = 0x000002a8 = b 0000 0000 0000 0000 0000 0010 1010 1000
-  ret i32 680
-}
-
-; ASM-LABEL: rotateFImmAA:
-; ASM: mov      r0, #680
-
-; DIS-LABEL:00000010 <rotateFImmAA>:
-; DIS-NEXT:  10:        e3a00faa
-
-; IASM-LABEL: rotateFImmAA:
-; IASM: .byte 0xaa
-; IASM: .byte 0xf
-; IASM: .byte 0xa0
-; IASM: .byte 0xe3
-
-define internal i32 @rotateEImmAA() {
- ; immediate = 0x00000aa0 = b 0000 0000 0000 0000 0000 1010 1010 0000
-  ret i32 2720
-}
-
-; ASM-LABEL: rotateEImmAA:
-; ASM: mov      r0, #2720
-
-; DIS-LABEL:00000020 <rotateEImmAA>:
-; DIS-NEXT:  20:        e3a00eaa
-
-; IASM-LABEL: rotateEImmAA:
-; IASM: .byte 0xaa
-; IASM: .byte 0xe
-; IASM: .byte 0xa0
-; IASM: .byte 0xe3
-
-define internal i32 @rotateDImmAA() {
-  ; immediate = 0x00002a80 = b 0000 0000 0000 0000 0010 1010 1000 0000
-  ret i32 10880
-}
-
-; ASM-LABEL: rotateDImmAA:
-; ASM: mov      r0, #10880
-
-; DIS-LABEL:00000030 <rotateDImmAA>:
-; DIS-NEXT:  30:        e3a00daa
-
-; IASM-LABEL: rotateDImmAA:
-; IASM: .byte 0xaa
-; IASM: .byte 0xd
-; IASM: .byte 0xa0
-; IASM: .byte 0xe3
-
-define internal i32 @rotateCImmAA() {
-  ; immediate = 0x0000aa00 = b 0000 0000 0000 0000 1010 1010 0000 0000
-  ret i32 43520
-}
-
-; ASM-LABEL: rotateCImmAA:
-; ASM: mov      r0, #43520
-
-; DIS-LABEL:00000040 <rotateCImmAA>:
-; DIS-NEXT:  40:        e3a00caa
-
-; IASM-LABEL: rotateCImmAA:
-; IASM: .byte 0xaa
-; IASM: .byte 0xc
-; IASM: .byte 0xa0
-; IASM: .byte 0xe3
-
-define internal i32 @rotateBImmAA() {
-  ; immediate = 0x0002a800 = b 0000 0000 0000 0010 1010 1000 0000 0000
-  ret i32 174080
-}
-
-; ASM-LABEL: rotateBImmAA:
-; ASM: mov      r0, #174080
-
-; DIS-LABEL:00000050 <rotateBImmAA>:
-; DIS-NEXT:  50:        e3a00baa
-
-; IASM-LABEL: rotateBImmAA:
-; IASM: .byte 0xaa
-; IASM: .byte 0xb
-; IASM: .byte 0xa0
-; IASM: .byte 0xe3
-
-define internal i32 @rotateAImmAA() {
-  ; immediate = 0x000aa000 = b 0000 0000 0000 1010 1010 0000 0000 0000
-  ret i32 696320
-}
-
-; ASM-LABEL: rotateAImmAA:
-; ASM: mov      r0, #696320
-
-; DIS-LABEL:00000060 <rotateAImmAA>:
-; DIS-NEXT:  60:        e3a00aaa
-
-; IASM-LABEL: rotateAImmAA:
-; IASM: .byte 0xaa
-; IASM: .byte 0xa
-; IASM: .byte 0xa0
-; IASM: .byte 0xe3
-
-define internal i32 @rotate9ImmAA() {
-  ; immediate = 0x002a8000 = b 0000 0000 0010 1010 1000 0000 0000 0000
-  ret i32 2785280
-}
-
-; ASM-LABEL: rotate9ImmAA:
-; ASM: mov      r0, #2785280
-
-; DIS-LABEL:00000070 <rotate9ImmAA>:
-; DIS-NEXT:  70:        e3a009aa
-
-; IASM-LABEL: rotate9ImmAA:
-; IASM: .byte 0xaa
-; IASM: .byte 0x9
-; IASM: .byte 0xa0
-; IASM: .byte 0xe3
-
-define internal i32 @rotate8ImmAA() {
-  ; immediate = 0x00aa0000 = b 0000 0000 1010 1010 0000 0000 0000 0000
-  ret i32 11141120
-}
-
-; ASM-LABEL: rotate8ImmAA:
-; ASM: mov      r0, #11141120
-
-; DIS-LABEL:00000080 <rotate8ImmAA>:
-; DIS-NEXT:  80:        e3a008aa
-
-; IASM-LABEL: rotate8ImmAA:
-; IASM: .byte 0xaa
-; IASM: .byte 0x8
-; IASM: .byte 0xa0
-; IASM: .byte 0xe3
-
-define internal i32 @rotate7ImmAA() {
-  ; immediate = 0x02a80000 = b 0000 0010 1010 1000 0000 0000 0000 0000
-  ret i32 44564480
-}
-
-; ASM-LABEL: rotate7ImmAA:
-; ASM:  mov     r0, #44564480
-
-; DIS-LABEL:00000090 <rotate7ImmAA>:
-; DIS-NEXT:  90:        e3a007aa
-
-; IASM-LABEL: rotate7ImmAA:
-; IASM: .byte 0xaa
-; IASM: .byte 0x7
-; IASM: .byte 0xa0
-; IASM: .byte 0xe3
-
-define internal i32 @rotate6ImmAA() {
-  ; immediate = 0x0aa00000 = b 0000 1010 1010 0000 0000 0000 0000 0000
-  ret i32 178257920
-}
-
-; ASM-LABEL: rotate6ImmAA:
-; ASM:  mov     r0, #178257920
-
-; DIS-LABEL:000000a0 <rotate6ImmAA>:
-; DIS-NEXT:  a0:        e3a006aa
-
-; IASM-LABEL: rotate6ImmAA:
-; IASM: .byte 0xaa
-; IASM: .byte 0x6
-; IASM: .byte 0xa0
-; IASM: .byte 0xe3
-
-define internal i32 @rotate5ImmAA() {
-  ; immediate = 0x2a800000 = b 0010 1010 1000 0000 0000 0000 0000 0000
-  ret i32 713031680
-}
-
-; ASM-LABEL: rotate5ImmAA:
-; ASM:  mov     r0, #713031680
-
-; DIS-LABEL:000000b0 <rotate5ImmAA>:
-; DIS-NEXT:  b0:        e3a005aa
-
-; IASM-LABEL: rotate5ImmAA:
-; IASM: .byte 0xaa
-; IASM: .byte 0x5
-; IASM: .byte 0xa0
-; IASM: .byte 0xe3
-
-define internal i32 @rotate4ImmAA() {
-  ; immediate = 0xaa000000 = b 1010 1010 0000 0000 0000 0000 0000 0000
-  ret i32 2852126720
-}
-
-; ASM-LABEL: rotate4ImmAA:
-; ASM: mov      r0, #2852126720
-
-; DIS-LABEL:000000c0 <rotate4ImmAA>:
-; DIS-NEXT:  c0:        e3a004aa
-
-; IASM-LABEL: rotate4ImmAA:
-; IASM: .byte 0xaa
-; IASM: .byte 0x4
-; IASM: .byte 0xa0
-; IASM: .byte 0xe3
-
-define internal i32 @rotate3ImmAA() {
-  ; immediate = 0xa8000002 = b 1010 1000 0000 0000 0000 0000 0000 0010
-  ret i32 2818572290
-}
-
-; ASM-LABEL: rotate3ImmAA:
-; ASM: mov      r0, #2818572290
-
-; DIS-LABEL:000000d0 <rotate3ImmAA>:
-; DIS-NEXT:  d0:        e3a003aa
-
-; IASM-LABEL: rotate3ImmAA:
-; IASM: .byte 0xaa
-; IASM: .byte 0x3
-; IASM: .byte 0xa0
-; IASM: .byte 0xe3
-
-define internal i32 @rotate2ImmAA() {
-  ; immediate = 0xa000000a = b 1010 0000 0000 0000 0000 0000 0000 1010
-  ret i32 2684354570
-}
-
-; ASM-LABEL: rotate2ImmAA:
-; ASM:  mov     r0, #2684354570
-
-; DIS-LABEL:000000e0 <rotate2ImmAA>:
-; DIS-NEXT:  e0:        e3a002aa
-
-; IASM-LABEL: rotate2ImmAA:
-; IASM: .byte 0xaa
-; IASM: .byte 0x2
-; IASM: .byte 0xa0
-; IASM: .byte 0xe3
-
-define internal i32 @rotate1ImmAA() {
-  ; immediate = 0x8000002a = b 1000 1000 0000 0000 0000 0000 0010 1010
-  ret i32 2147483690
-}
-
-; ASM-LABEL: rotate1ImmAA:
-; ASM: mov      r0, #2147483690
-
-; DIS-LABEL:000000f0 <rotate1ImmAA>:
-; DIS-NEXT:  f0:        e3a001aa
-
-; IASM-LABEL: rotate1ImmAA:
-; IASM: .byte 0xaa
-; IASM: .byte 0x1
-; IASM: .byte 0xa0
-; IASM: .byte 0xe3
-
-define internal i32 @rotate0ImmAA() {
-  ; immediate = 0x000000aa = b 0000 0000 0000 0000 0000 0000 1010 1010
-  ret i32 170
-}
-
-; ASM-LABEL: rotate0ImmAA:
-; ASM: mov      r0, #170
-
-; DIS-LABEL:00000100 <rotate0ImmAA>:
-; DIS-NEXT: 100:        e3a000aa
-
-; IASM-LABEL: rotate0ImmAA:
-; IASM: .byte 0xaa
-; IASM: .byte 0x0
-; IASM: .byte 0xa0
-; IASM: .byte 0xe3
diff --git a/third_party/subzero/tests_lit/assembler/arm32/mov-reg.ll b/third_party/subzero/tests_lit/assembler/arm32/mov-reg.ll
deleted file mode 100644
index fbfd897..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/mov-reg.ll
+++ /dev/null
@@ -1,54 +0,0 @@
-; Show that we know how to translate mov (shifted register), which
-; are pseudo instructions for ASR, LSR, ROR, and RRX.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal i64 @testMovWithAsr(i32 %a) {
-; ASM-LABEL:testMovWithAsr:
-; DIS-LABEL:00000000 <testMovWithAsr>:
-; IASM-LABEL:testMovWithAsr:
-
-entry:
-; ASM-NEXT:.LtestMovWithAsr$entry:
-; IASM-NEXT:.LtestMovWithAsr$entry:
-
-  %a.arg_trunc = trunc i32 %a to i8
-  %conv = sext i8 %a.arg_trunc to i64
-  ret i64 %conv
-
-; ASM-NEXT:     sxtb    r0, r0
-; DIS-NEXT:   0:        e6af0070
-; IASM-NEXT:    .byte 0x70
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xaf
-; IASM-NEXT:    .byte 0xe6
-
-; ***** Example of mov pseudo instruction.
-; ASM-NEXT:     mov     r1, r0, asr #31
-; DIS-NEXT:   4:        e1a01fc0
-; IASM-NEXT:    .byte 0xc0
-; IASM-NEXT:    .byte 0x1f
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe1
-
-; ASM-NEXT:     bx      lr
-
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/mul-vec.ll b/third_party/subzero/tests_lit/assembler/arm32/mul-vec.ll
deleted file mode 100644
index a009135..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/mul-vec.ll
+++ /dev/null
@@ -1,85 +0,0 @@
-; Show that we know how to translate vmul vector instructions.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   -reg-use q10,q11 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   -reg-use q10,q11 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   -reg-use q10,q11 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   -reg-use q10,q11 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal <4 x float> @testVmulFloat4(<4 x float> %v1, <4 x float> %v2) {
-; ASM-LABEL: testVmulFloat4:
-; DIS-LABEL: 00000000 <testVmulFloat4>:
-; IASM-LABEL: testVmulFloat4:
-
-entry:
-  %res = fmul <4 x float> %v1, %v2
-
-; ASM:     vmul.f32        q10, q10, q11
-; DIS:   8:       f3444df6
-; IASM-NOT:     vmul.f32
-
-  ret <4 x float> %res
-}
-
-define internal <4 x i32> @testVmul4i32(<4 x i32> %v1, <4 x i32> %v2) {
-; ASM-LABEL: testVmul4i32:
-; DIS-LABEL: 00000020 <testVmul4i32>:
-; IASM-LABEL: testVmul4i32:
-
-entry:
-  %res = mul <4 x i32> %v1, %v2
-
-; ASM:     vmul.i32        q10, q10, q11
-; DIS:   28:       f26449f6
-; IASM-NOT:     vmul.i32
-
-  ret <4 x i32> %res
-}
-
-define internal <8 x i16> @testVmul8i16(<8 x i16> %v1, <8 x i16> %v2) {
-; ASM-LABEL: testVmul8i16:
-; DIS-LABEL: 00000040 <testVmul8i16>:
-; IASM-LABEL: testVmul8i16:
-
-entry:
-  %res = mul <8 x i16> %v1, %v2
-
-; ASM:     vmul.i16        q10, q10, q11
-; DIS:   48:       f25449f6
-; IASM-NOT:     vmul.i16
-
-  ret <8 x i16> %res
-}
-
-define internal <16 x i8> @testVmul16i8(<16 x i8> %v1, <16 x i8> %v2) {
-; ASM-LABEL: testVmul16i8:
-; DIS-LABEL: 00000060 <testVmul16i8>:
-; IASM-LABEL: testVmul16i8:
-
-entry:
-  %res = mul <16 x i8> %v1, %v2
-
-; ASM:     vmul.i8        q10, q10, q11
-; DIS:   68:       f24449f6
-; IASM-NOT:     vmul.i8
-
-  ret <16 x i8> %res
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/mul.ll b/third_party/subzero/tests_lit/assembler/arm32/mul.ll
deleted file mode 100644
index 5c8ffab..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/mul.ll
+++ /dev/null
@@ -1,60 +0,0 @@
-; Show that we know how to translate mul.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @MulTwoRegs(i32 %a, i32 %b) {
-  %v = mul i32 %a, %b
-  ret i32 %v
-}
-
-; ASM-LABEL:MulTwoRegs:
-; DIS-LABEL:<MulTwoRegs>:
-; IASM-LABEL:MulTwoRegs:
-
-; ASM:          mul     r0, r0, r1
-; DIS:          e0000190
-; IASM-NOT:     mul
-
-define internal i64 @MulTwoI64Regs(i64 %a, i64 %b) {
-  %v = mul i64 %a, %b
-  ret i64 %v
-}
-
-; ASM-LABEL:MulTwoI64Regs:
-; DIS-LABEL:<MulTwoI64Regs>:
-; IASM-LABEL:MulTwoI64Regs:
-
-; ASM:          mul     r3, r0, r3
-; ASM-NEXT:     mla     r1, r2, r1, r3
-; ASM-NEXT:     # r3 = def.pseudo
-; ASM-NEXT:     umull   r0, r3, r0, r2
-; ASM-NEXT:     # r3 = def.pseudo r0
-; ASM-NEXT:     add     r3, r3, r1
-
-; DIS:          e0030390
-; DIS-NEXT:     e0213192
-; DIS-NEXT:     e0830290
-; DIS-NEXT:     e0833001
-
-; IASM-NOT:     mul
-; IASM-NOT:     mla
-; IASM-NOT:     umull
-; IASM-NOT:     add
diff --git a/third_party/subzero/tests_lit/assembler/arm32/mvn.ll b/third_party/subzero/tests_lit/assembler/arm32/mvn.ll
deleted file mode 100644
index 70a2d0d..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/mvn.ll
+++ /dev/null
@@ -1,157 +0,0 @@
-; Tests MVN instruction.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-define internal void @mvnEx(i32 %a, i32 %b) {
-; ASM-LABEL:mvnEx:
-; DIS-LABEL:00000000 <mvnEx>:
-; IASM-LABEL:mvnEx:
-
-entry:
-; ASM-NEXT:.LmvnEx$entry:
-; IASM-NEXT:.LmvnEx$entry:
-
-; ASM-NEXT:     sub     sp, sp, #24
-; DIS-NEXT:   0:        e24dd018
-; IASM-NEXT:    .byte 0x18
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x4d
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     str     r0, [sp, #20]
-; ASM-NEXT:     # [sp, #20] = def.pseudo
-; DIS-NEXT:   4:        e58d0014
-; IASM-NEXT:    .byte 0x14
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     str     r1, [sp, #16]
-; ASM-NEXT:     # [sp, #16] = def.pseudo
-; DIS-NEXT:   8:        e58d1010
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-  %b.arg_trunc = trunc i32 %b to i1
-
-; ASM-NEXT:     ldr     r0, [sp, #16]
-; DIS-NEXT:   c:        e59d0010
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     and     r0, r0, #1
-; DIS-NEXT:  10:        e2000001
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     strb    r0, [sp, #12]
-; ASM-NEXT:     # [sp, #12] = def.pseudo
-; DIS-NEXT:  14:        e5cd000c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xcd
-; IASM-NEXT:    .byte 0xe5
-
-  %a.arg_trunc = trunc i32 %a to i1
-
-; ASM-NEXT:     ldr     r0, [sp, #20]
-; DIS-NEXT:  18:        e59d0014
-; IASM-NEXT:    .byte 0x14
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     and     r0, r0, #1
-; DIS-NEXT:  1c:        e2000001
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     strb    r0, [sp, #8]
-; ASM-NEXT:     # [sp, #8] = def.pseudo
-; DIS-NEXT:  20:        e5cd0008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xcd
-; IASM-NEXT:    .byte 0xe5
-
-  %conv = zext i1 %a.arg_trunc to i32
-
-; ASM-NEXT:     ldrb    r0, [sp, #8]
-; DIS-NEXT:  24:        e5dd0008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xdd
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     str     r0, [sp, #4]
-; ASM-NEXT:     # [sp, #4] = def.pseudo
-; DIS-NEXT:  28:        e58d0004
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-  %ignore = sext i1 %b.arg_trunc to i32
-
-; ASM-NEXT:     mov     r0, #0
-; DIS-NEXT:  2c:        e3a00000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe3
-
-; ASM-NEXT:     ldrb    r1, [sp, #12]
-; DIS-NEXT:  30:        e5dd100c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0xdd
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     tst     r1, #1
-; DIS-NEXT:  34:        e3110001
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x11
-; IASM-NEXT:    .byte 0xe3
-
-; ********* Use of MVN ********
-; ASM-NEXT:     mvn     r1, #0
-; DIS-NEXT:  38:        e3e01000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0xe0
-; IASM-NEXT:    .byte 0xe3
-
-; ASM-NEXT:     movne   r0, r1
-; DIS-NEXT:  3c:        11a00001
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0x11
-
-  ret void
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/or-vec.ll b/third_party/subzero/tests_lit/assembler/arm32/or-vec.ll
deleted file mode 100644
index b6cf580..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/or-vec.ll
+++ /dev/null
@@ -1,115 +0,0 @@
-; Show that we know how to translate vorr vector instructions.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal <4 x i32> @testVor4i32(<4 x i32> %v1, <4 x i32> %v2) {
-; ASM-LABEL: testVor4i32:
-; DIS-LABEL: 00000000 <testVor4i32>:
-; IASM-LABEL: testVor4i32:
-
-entry:
-  %res = or <4 x i32> %v1, %v2
-
-; ASM:     vorr.i32        q0, q0, q1
-; DIS:   0:       f2200152
-; IASM-NOT:     vorr.i32
-
-  ret <4 x i32> %res
-}
-
-define internal <8 x i16> @testVor8i16(<8 x i16> %v1, <8 x i16> %v2) {
-; ASM-LABEL: testVor8i16:
-; DIS-LABEL: 00000010 <testVor8i16>:
-; IASM-LABEL: testVor8i16:
-
-entry:
-  %res = or <8 x i16> %v1, %v2
-
-; ASM:     vorr.i16        q0, q0, q1
-; DIS:   10:       f2200152
-; IASM-NOT:     vorr.i16
-
-  ret <8 x i16> %res
-}
-
-define internal <16 x i8> @testVor16i8(<16 x i8> %v1, <16 x i8> %v2) {
-; ASM-LABEL: testVor16i8:
-; DIS-LABEL: 00000020 <testVor16i8>:
-; IASM-LABEL: testVor16i8:
-
-entry:
-  %res = or <16 x i8> %v1, %v2
-
-; ASM:     vorr.i8        q0, q0, q1
-; DIS:   20:       f2200152
-; IASM-NOT:     vorr.i8
-
-  ret <16 x i8> %res
-}
-
-;;
-;; The following tests make sure logical or works on predicate vectors.
-;;
-
-define internal <4 x i1> @testVor4i1(<4 x i1> %v1, <4 x i1> %v2) {
-; ASM-LABEL: testVor4i1:
-; DIS-LABEL: 00000030 <testVor4i1>:
-; IASM-LABEL: testVor4i1:
-
-entry:
-  %res = or <4 x i1> %v1, %v2
-
-; ASM:     vorr.i32        q0, q0, q1
-; DIS:   30:       f2200152
-; IASM-NOT:     vorr.i32
-
-  ret <4 x i1> %res
-}
-
-define internal <8 x i1> @testVor8i1(<8 x i1> %v1, <8 x i1> %v2) {
-; ASM-LABEL: testVor8i1:
-; DIS-LABEL: 00000040 <testVor8i1>:
-; IASM-LABEL: testVor8i1:
-
-entry:
-  %res = or <8 x i1> %v1, %v2
-
-; ASM:     vorr.i16        q0, q0, q1
-; DIS:   40:       f2200152
-; IASM-NOT:     vorr.i16
-
-  ret <8 x i1> %res
-}
-
-define internal <16 x i1> @testVor16i1(<16 x i1> %v1, <16 x i1> %v2) {
-; ASM-LABEL: testVor16i1:
-; DIS-LABEL: 00000050 <testVor16i1>:
-; IASM-LABEL: testVor16i1:
-
-entry:
-  %res = or <16 x i1> %v1, %v2
-
-; ASM:     vorr.i8        q0, q0, q1
-; DIS:   50:       f2200152
-; IASM-NOT:     vorr.i8
-
-  ret <16 x i1> %res
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/orr.ll b/third_party/subzero/tests_lit/assembler/arm32/orr.ll
deleted file mode 100644
index 480b99a..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/orr.ll
+++ /dev/null
@@ -1,110 +0,0 @@
-; Show that we know how to translate or.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @Or1WithR0(i32 %p) {
-  %v = or i32 %p, 1
-  ret i32 %v
-}
-
-; ASM-LABEL:Or1WithR0:
-; ASM-NEXT:.LOr1WithR0$__0:
-; ASM-NEXT:     orr     r0, r0, #1
-
-; DIS-LABEL:00000000 <Or1WithR0>:
-; DIS-NEXT:   0:        e3800001
-
-; IASM-LABEL:Or1WithR0:
-; IASM-NEXT:.LOr1WithR0$__0:
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x80
-; IASM-NEXT:    .byte 0xe3
-
-define internal i32 @Or2Regs(i32 %p1, i32 %p2) {
-  %v = or i32 %p1, %p2
-  ret i32 %v
-}
-
-; ASM-LABEL:Or2Regs:
-; ASM-NEXT:.LOr2Regs$__0:
-; ASM-NEXT:     orr     r0, r0, r1
-
-; DIS-LABEL:00000010 <Or2Regs>:
-; DIS-NEXT:  10:        e1800001
-
-; IASM-LABEL:Or2Regs:
-; IASM-NEXT:.LOr2Regs$__0:
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x80
-; IASM-NEXT:    .byte 0xe1
-
-define internal i64 @OrI64WithR0R1(i64 %p) {
-  %v = or i64 %p, 1
-  ret i64 %v
-}
-
-; ASM-LABEL:OrI64WithR0R1:
-; ASM-NEXT:.LOrI64WithR0R1$__0:
-; ASM-NEXT:     orr     r0, r0, #1
-; ASM-NEXT:     orr     r1, r1, #0
-
-; DIS-LABEL:00000020 <OrI64WithR0R1>:
-; DIS-NEXT:  20:        e3800001
-; DIS-NEXT:  24:        e3811000
-
-; IASM-LABEL:OrI64WithR0R1:
-; IASM-NEXT:.LOrI64WithR0R1$__0:
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x80
-; IASM-NEXT:    .byte 0xe3
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x81
-; IASM-NEXT:    .byte 0xe3
-
-
-define internal i64 @OrI64Regs(i64 %p1, i64 %p2) {
-  %v = or i64 %p1, %p2
-  ret i64 %v
-}
-
-; ASM-LABEL:OrI64Regs:
-; ASM-NEXT:.LOrI64Regs$__0:
-; ASM-NEXT:     orr     r0, r0, r2
-; ASM-NEXT:     orr     r1, r1, r3
-
-; DIS-LABEL:00000030 <OrI64Regs>:
-; DIS-NEXT:  30:        e1800002
-; DIS-NEXT:  34:        e1811003
-
-; IASM-LABEL:OrI64Regs:
-; IASM-NEXT:.LOrI64Regs$__0:
-; IASM-NEXT:    .byte 0x2
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x80
-; IASM-NEXT:    .byte 0xe1
-; IASM-NEXT:    .byte 0x3
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x81
-; IASM-NEXT:    .byte 0xe1
diff --git a/third_party/subzero/tests_lit/assembler/arm32/popmult.ll b/third_party/subzero/tests_lit/assembler/arm32/popmult.ll
deleted file mode 100644
index d7d1c45..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/popmult.ll
+++ /dev/null
@@ -1,70 +0,0 @@
-; Show that pops are generated in reverse order of pushes.
-
-; NOTE: Restricts to nonconsecutive S registers to force the generation of
-; multiple vpush/vpop instructions. Also tests that we generate them in the
-; right order (the reverse of the corresponding push). Uses -O2 to keep all
-; results in S registers.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 -allow-extern \
-; RUN:   -reg-use s20,s22,s23 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 -allow-extern \
-; RUN:   -reg-use s20,s22,s23 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 -allow-extern \
-; RUN:   -reg-use s20,s22,s23 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 -allow-extern \
-; RUN:   -reg-use s20,s22,s23 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-declare external void @f()
-
-define internal float @test2SPops(float %p1, float %p2) {
-; ASM-LABEL: test2SPops:
-; DIS-LABEL: 00000000 <test2SPops>:
-; IASM-LABEL: test2SPops:
-
-; ASM:          vpush   {s20}
-; ASM-NEXT:     vpush   {s22, s23}
-; ASM-NEXT:     push    {lr}
-
-; DIS:          0:      ed2daa01
-; DIS-NEXT:     4:      ed2dba02
-; DIS-NEXT:     8:      e52de004
-
-; IASM-NOT:     vpush
-; IASM-NOT:     push
-
-  %v1 = fadd float %p1, %p2
-  %v2 = fsub float %p1, %p2
-  %v3 = fsub float %p2, %p1
-  call void @f()
-  %v4 = fadd float %v1, %v2
-  %res = fadd float %v3, %v4
-
-; ASM:          pop     {lr}
-; ASM-NEXT:     # lr = def.pseudo
-; ASM-NEXT:     vpop    {s22, s23}
-; ASM-NEXT:     vpop    {s20}
-
-; DIS:         40:      e49de004
-; DIS-NEXT:    44:      ecbdba02
-; DIS-NEXT:    48:      ecbdaa01
-
-; IASM-NOT: pop
-; IASM-NOT: vpop
-
-  ret float %res
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/push-pop.ll b/third_party/subzero/tests_lit/assembler/arm32/push-pop.ll
deleted file mode 100644
index 7b4b749..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/push-pop.ll
+++ /dev/null
@@ -1,161 +0,0 @@
-; Show that we know how to translate push and pop.
-; TODO(kschimpf) Translate pop instructions.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 -allow-extern \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 -allow-extern | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   -allow-extern | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 -allow-extern | FileCheck %s --check-prefix=DIS
-
-declare external void @DoSomething()
-
-define internal void @SinglePushPop() {
-  call void @DoSomething();
-  ret void
-}
-
-; ASM-LABEL:SinglePushPop:
-; ASM-NEXT:.LSinglePushPop$__0:
-; ASM-NEXT:    push    {lr}
-; ASM-NEXT:    sub     sp, sp, #12
-; ASM-NEXT:    bl      DoSomething
-; ASM-NEXT:    add     sp, sp, #12
-; ASM-NEXT:    pop     {lr}
-; ASM-NEXT:     # lr = def.pseudo
-; ASM-NEXT:    bx      lr
-
-; DIS-LABEL:00000000 <SinglePushPop>:
-; DIS-NEXT:   0:        e52de004
-; DIS-NEXT:   4:        e24dd00c
-; DIS-NEXT:   8:        ebfffffe
-; DIS-NEXT:   c:        e28dd00c
-; DIS-NEXT:  10:        e49de004
-; DIS-NEXT:  14:        e12fff1e
-
-; IASM-LABEL:SinglePushPop:
-; IASM-NEXT:.LSinglePushPop$__0:
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0xe0
-; IASM-NEXT:    .byte 0x2d
-; IASM-NEXT:    .byte 0xe5
-
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x4d
-; IASM-NEXT:    .byte 0xe2
-; IASM-NEXT:    bl      DoSomething     @ .word ebfffffe
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe2
-
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0xe0
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe4
-
-; IASM:         .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
-
-; This test is based on taking advantage of the over-eager -O2
-; register allocator that puts V1 and V2 into callee-save registers,
-; since the call instruction kills the scratch registers. This
-; requires the callee-save registers to be pushed/popped in the
-; prolog/epilog.
-define internal i32 @MultPushPop(i32 %v1, i32 %v2) {
-  call void @DoSomething();
-  %v3 = add i32 %v1, %v2
-  ret i32 %v3
-}
-
-; ASM-LABEL:MultPushPop:
-; ASM-NEXT:.LMultPushPop$__0:
-; ASM-NEXT:     push    {r4, r5, lr}
-; ASM-NEXT:     sub     sp, sp, #4
-; ASM-NEXT:     mov     r4, r0
-; ASM-NEXT:     mov     r5, r1
-; ASM-NEXT:     bl      DoSomething
-; ASM-NEXT:     add     r4, r4, r5
-; ASM-NEXT:     mov     r0, r4
-; ASM-NEXT:     add     sp, sp, #4
-; ASM-NEXT:     pop     {r4, r5, lr}
-; ASM-NEXT:     # r4 = def.pseudo
-; ASM-NEXT:     # r5 = def.pseudo
-; ASM-NEXT:     # lr = def.pseudo
-; ASM-NEXT:     bx      lr
-
-; DIS-LABEL:00000020 <MultPushPop>:
-; DIS-NEXT:  20:        e92d4030
-; DIS-NEXT:  24:        e24dd004
-; DIS-NEXT:  28:        e1a04000
-; DIS-NEXT:  2c:        e1a05001
-; DIS-NEXT:  30:        ebfffffe
-; DIS-NEXT:  34:        e0844005
-; DIS-NEXT:  38:        e1a00004
-; DIS-NEXT:  3c:        e28dd004
-; DIS-NEXT:  40:        e8bd4030
-; DIS-NEXT:  44:        e12fff1e
-
-; IASM-LABEL:MultPushPop:
-; IASM-NEXT:.LMultPushPop$__0:
-; IASM-NEXT:    .byte 0x30
-; IASM-NEXT:    .byte 0x40
-; IASM-NEXT:    .byte 0x2d
-; IASM-NEXT:    .byte 0xe9
-
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x4d
-; IASM-NEXT:    .byte 0xe2
-
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x40
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe1
-
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x50
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe1
-
-; IASM-NEXT:    bl      DoSomething     @ .word ebfffffe
-; IASM-NEXT:    .byte 0x5
-; IASM-NEXT:    .byte 0x40
-; IASM-NEXT:    .byte 0x84
-; IASM-NEXT:    .byte 0xe0
-
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe1
-
-; IASM-NEXT:    .byte 0x4
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe2
-
-; IASM-NEXT:    .byte 0x30
-; IASM-NEXT:    .byte 0x40
-; IASM-NEXT:    .byte 0xbd
-; IASM-NEXT:    .byte 0xe8
-
-; IASM:         .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
diff --git a/third_party/subzero/tests_lit/assembler/arm32/rbit.ll b/third_party/subzero/tests_lit/assembler/arm32/rbit.ll
deleted file mode 100644
index 8f217bd..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/rbit.ll
+++ /dev/null
@@ -1,44 +0,0 @@
-; Show that we know how to translate rbit.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-declare i32 @llvm.cttz.i32(i32, i1)
-
-define internal i32 @testRbit(i32 %a) {
-; ASM-LABEL: testRbit:
-; DIS-LABEL: 00000000 <testRbit>:
-; IASM-LABEL: testRbit:
-
-entry:
-; ASM-NEXT: .LtestRbit$entry:
-; IASM-NEXT: .LtestRbit$entry:
-
-  %x = call i32 @llvm.cttz.i32(i32 %a, i1 0)
-
-; ASM-NEXT:     rbit    r0, r0
-; DIS-NEXT:    0:       e6ff0f30
-; IASM-NEXT:    .byte 0x30
-; IASM-NEXT:    .byte 0xf
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0xe6
-
-  ret i32 %x
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/rem-vec.ll b/third_party/subzero/tests_lit/assembler/arm32/rem-vec.ll
deleted file mode 100644
index 00190cf..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/rem-vec.ll
+++ /dev/null
@@ -1,98 +0,0 @@
-; Show that we know how to translate vector urem, srem and frem.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 -mattr=hwdiv-arm \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-define internal <4 x i32> @Urem4i32(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:Urem4i32:
-
-entry:
-; ASM-NEXT:.LUrem4i32$entry:
-
-  %v = urem <4 x i32> %a, %b
-
-; ASM-LABEL:.LUrem4i32$local$__0:
-; ASM-NEXT: udiv r2, r0, r1
-; ASM-NEXT: mls r2, r2, r1, r0
-; ASM-NEXT: vmov.32 d4[0], r2
-
-; ASM-LABEL:.LUrem4i32$local$__1:
-; ASM-NEXT: udiv r2, r0, r1
-; ASM-NEXT: mls r2, r2, r1, r0
-; ASM-NEXT: vmov.32 d4[1], r2
-
-; ASM-LABEL:.LUrem4i32$local$__2:
-; ASM-NEXT: udiv r2, r0, r1
-; ASM-NEXT: mls r2, r2, r1, r0
-; ASM-NEXT: vmov.32 d5[0], r2
-
-; ASM-LABEL:.LUrem4i32$local$__3:
-; ASM-NEXT: udiv r2, r0, r1
-; ASM-NEXT: mls r2, r2, r1, r0
-; ASM-NEXT: vmov.32 d5[1], r2
-
-  ret <4 x i32> %v
-}
-
-define internal <4 x i32> @Srem4i32(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:Srem4i32:
-
-entry:
-; ASM-NEXT:.LSrem4i32$entry:
-
-  %v = srem <4 x i32> %a, %b
-
-; ASM-LABEL:.LSrem4i32$local$__0:
-; ASM-NEXT: sdiv r2, r0, r1
-; ASM-NEXT: mls r2, r2, r1, r0
-; ASM-NEXT: vmov.32 d4[0], r2
-
-; ASM-LABEL:.LSrem4i32$local$__1:
-; ASM-NEXT: sdiv r2, r0, r1
-; ASM-NEXT: mls r2, r2, r1, r0
-; ASM-NEXT: vmov.32 d4[1], r2
-
-; ASM-LABEL:.LSrem4i32$local$__2:
-; ASM-NEXT: sdiv r2, r0, r1
-; ASM-NEXT: mls r2, r2, r1, r0
-; ASM-NEXT: vmov.32 d5[0], r2
-
-; ASM-LABEL:.LSrem4i32$local$__3:
-; ASM-NEXT: sdiv r2, r0, r1
-; ASM-NEXT: mls r2, r2, r1, r0
-; ASM-NEXT: vmov.32 d5[1], r2
-
-  ret <4 x i32> %v
-}
-
-define internal <4 x float> @Frem4float(<4 x float> %a, <4 x float> %b) {
-; ASM-LABEL:Frem4float:
-
-entry:
-; ASM-NEXT:.LFrem4float$entry:
-
-  %v = frem <4 x float> %a, %b
-
-; ASM:         vmov.f32 s0, s16
-; ASM-NEXT: vmov.f32 s1, s20
-; ASM-NEXT: bl fmodf
-
-; ASM:  vmov.f32 s0, s17
-; ASM-NEXT: vmov.f32 s1, s21
-; ASM-NEXT: bl fmodf
-
-; ASM:  vmov.f32 s0, s18
-; ASM-NEXT: vmov.f32 s1, s22
-; ASM-NEXT: bl fmodf
-
-; ASM:  vmov.f32 s16, s19
-; ASM-NEXT: vmov.f32 s20, s23
-; ASM: bl fmodf
-
-  ret <4 x float> %v
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/ret.ll b/third_party/subzero/tests_lit/assembler/arm32/ret.ll
deleted file mode 100644
index ad8eef8..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/ret.ll
+++ /dev/null
@@ -1,64 +0,0 @@
-; Shows that the ARM integrated assembler can translate a trivial,
-; bundle-aligned function.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-define internal void @f() {
-  ret void
-}
-
-; ASM-LABEL:f:
-; ASM-NEXT: .Lf$__0:
-; ASM-NEXT:     bx      lr
-
-; DIS-LABEL:00000000 <f>:
-; IASM-LABEL:f:
-; IASM-NEXT:.Lf$__0:
-
-; DIS-NEXT:   0:        e12fff1e
-; IASM-NEXT:    .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
-
-; DIS-NEXT:   4:        e7fedef0
-; IASM-NEXT:    .byte 0xf0
-; IASM-NEXT:    .byte 0xde
-; IASM-NEXT:    .byte 0xfe
-; IASM-NEXT:    .byte 0xe7
-
-; DIS-NEXT:   8:        e7fedef0
-; IASM-NEXT:    .byte 0xf0
-; IASM-NEXT:    .byte 0xde
-; IASM-NEXT:    .byte 0xfe
-; IASM-NEXT:    .byte 0xe7
-
-; DIS-NEXT:   c:        e7fedef0
-; IASM-NEXT:    .byte 0xf0
-; IASM-NEXT:    .byte 0xde
-; IASM-NEXT:    .byte 0xfe
-; IASM-NEXT:    .byte 0xe7
-
-define internal void @ignore() {
-  ret void
-}
-
-; ASM-LABEL:ignore:
-; DIS-LABEL:00000010 <ignore>:
-; IASM-LABEL:ignore:
diff --git a/third_party/subzero/tests_lit/assembler/arm32/rev.ll b/third_party/subzero/tests_lit/assembler/arm32/rev.ll
deleted file mode 100644
index 6634813..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/rev.ll
+++ /dev/null
@@ -1,49 +0,0 @@
-; Show that we know how to translate rev (used in bswap).
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-declare i16 @llvm.bswap.i16(i16)
-
-define internal i32 @testRev(i32 %a) {
-; ASM-LABEL:testRev:
-; DIS-LABEL:00000000 <testRev>:
-; IASM-LABEL:testRev:
-
-entry:
-; ASM-NEXT:.LtestRev$entry:
-; IASM-NEXT:.LtestRev$entry:
-
-  %a.arg_trunc = trunc i32 %a to i16
-  %v = tail call i16 @llvm.bswap.i16(i16 %a.arg_trunc)
-
-; ***** Example of rev instruction. *****
-; ASM-NEXT:     rev     r0, r0
-; DIS-NEXT:   0:        e6bf0f30
-; IASM-NEXT:    .byte 0x30
-; IASM-NEXT:    .byte 0xf
-; IASM-NEXT:    .byte 0xbf
-; IASM-NEXT:    .byte 0xe6
-
-; ASM-NEXT:     lsr     r0, r0, #16
-
-  %.ret_ext = zext i16 %v to i32
-  ret i32 %.ret_ext
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/rsb.ll b/third_party/subzero/tests_lit/assembler/arm32/rsb.ll
deleted file mode 100644
index 962c0ed..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/rsb.ll
+++ /dev/null
@@ -1,140 +0,0 @@
-; Show that we know how to translate rsb. Uses shl as example, because it
-; uses rsb for type i64.
-
-; Also shows an example of a register-shifted register (data) operation.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-define internal i64 @shiftLeft(i64 %v, i64 %l) {
-; ASM-LABEL:shiftLeft:
-; DIS-LABEL:00000000 <shiftLeft>:
-; IASM-LABEL:shiftLeft:
-
-entry:
-; ASM-NEXT:.LshiftLeft$entry:
-; IASM-NEXT:.LshiftLeft$entry:
-
-; ASM-NEXT:     sub     sp, sp, #24
-; DIS-NEXT:   0:        e24dd018
-; IASM-NEXT:    .byte 0x18
-; IASM-NEXT:    .byte 0xd0
-; IASM-NEXT:    .byte 0x4d
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:     str     r0, [sp, #20]
-; ASM-NEXT:     # [sp, #20] = def.pseudo
-; DIS-NEXT:   4:        e58d0014
-; IASM-NEXT:    .byte 0x14
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     mov     r0, r1
-; DIS-NEXT:   8:        e1a00001
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe1
-
-; ASM-NEXT:     str     r0, [sp, #16]
-; ASM-NEXT:     # [sp, #16] = def.pseudo
-; DIS-NEXT:   c:        e58d0010
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     mov     r0, r2
-; DIS-NEXT:  10:        e1a00002
-; IASM-NEXT:    .byte 0x2
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe1
-
-; ASM-NEXT:     str     r0, [sp, #12]
-; ASM-NEXT:     # [sp, #12] = def.pseudo
-; DIS-NEXT:  14:        e58d000c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     mov     r0, r3
-; DIS-NEXT:  18:        e1a00003
-; IASM-NEXT:    .byte 0x3
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe1
-
-; ASM-NEXT:     str     r0, [sp, #8]
-; ASM-NEXT:     # [sp, #8] = def.pseudo
-; DIS-NEXT:  1c:        e58d0008
-; IASM-NEXT:    .byte 0x8
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x8d
-; IASM-NEXT:    .byte 0xe5
-
-  %result = shl i64 %v, %l
-
-; ASM-NEXT:     ldr     r0, [sp, #20]
-; DIS-NEXT:  20:        e59d0014
-; IASM-NEXT:    .byte 0x14
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     ldr     r1, [sp, #16]
-; DIS-NEXT:  24:        e59d1010
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ASM-NEXT:     ldr     r2, [sp, #12]
-; DIS-NEXT:  28:        e59d200c
-; IASM-NEXT:    .byte 0xc
-; IASM-NEXT:    .byte 0x20
-; IASM-NEXT:    .byte 0x9d
-; IASM-NEXT:    .byte 0xe5
-
-; ****** Here is the example of rsb *****
-; ASM-NEXT:     rsb     r3, r2, #32
-; DIS-NEXT:  2c:        e2623020
-; IASM-NEXT:    .byte 0x20
-; IASM-NEXT:    .byte 0x30
-; IASM-NEXT:    .byte 0x62
-; IASM-NEXT:    .byte 0xe2
-
-; ASM-NEXT:    lsr     r3, r0, r3
-; DIS-NEXT:  30:        e1a03330
-; IASM-NEXT:    .byte 0x30
-; IASM-NEXT:    .byte 0x33
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe1
-
-; ***** Here is an example of a register-shifted register *****
-; ASM-NEXT:    orr     r1, r3, r1, lsl r2
-; DIS-NEXT:  34:        e1831211
-; IASM-NEXT:    .byte 0x11
-; IASM-NEXT:    .byte 0x12
-; IASM-NEXT:    .byte 0x83
-; IASM-NEXT:    .byte 0xe1
-
-  ret i64 %result
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/rsc.ll b/third_party/subzero/tests_lit/assembler/arm32/rsc.ll
deleted file mode 100644
index f79fc04..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/rsc.ll
+++ /dev/null
@@ -1,49 +0,0 @@
-; Show that we know how to translate rsc
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal i64 @NegateI64(i64 %a) {
-; ASM-LABEL:NegateI64:
-; DIS-LABEL:00000000 <NegateI64>:
-; IASM-LABEL:NegateI64:
-
-entry:
-; ASM-NEXT:.LNegateI64$entry:
-; IASM-NEXT:.LNegateI64$entry:
-
-  %res = sub i64 0, %a
-
-; ASM-NEXT:     rsbs    r0, r0, #0
-; DIS-NEXT:   0:        e2700000
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x70
-; IASM-NEXT:	.byte 0xe2
-
-; ASM-NEXT:     rsc     r1, r1, #0
-; DIS-NEXT:   4:        e2e11000
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x10
-; IASM-NEXT:	.byte 0xe1
-; IASM-NEXT:	.byte 0xe2
-
-  ret i64 %res
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/sandboxing.ll b/third_party/subzero/tests_lit/assembler/arm32/sandboxing.ll
deleted file mode 100644
index 3ff27cb..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/sandboxing.ll
+++ /dev/null
@@ -1,307 +0,0 @@
-; Tests basics and corner cases of arm32 sandboxing, using -Om1 in the hope that
-; the output will remain stable.  When packing bundles, we try to limit to a few
-; instructions with well known sizes and minimal use of registers and stack
-; slots in the lowering sequence.
-
-; REQUIRES: allow_dump, target_ARM32
-; RUN: %p2i -i %s --sandbox --filetype=asm --target=arm32 --assemble \
-; RUN:   --disassemble --args -Om1 -allow-externally-defined-symbols \
-; RUN:   -ffunction-sections -reg-use r0,r1,r3 | FileCheck %s
-
-declare void @call_target()
-declare void @call_target1(i32 %arg0)
-declare void @call_target2(i32 %arg0, i32 %arg1)
-declare void @call_target3(i32 %arg0, i32 %arg1, i32 %arg2)
-@global_short = internal global [2 x i8] zeroinitializer
-
-; A direct call sequence uses the right mask and register-call sequence.
-define internal void @test_direct_call() {
-entry:
-  call void @call_target()
-  ; bundle aigned.
-  ret void
-}
-
-; CHECK-LABEL:<test_direct_call>:
-;             Search for bundle alignment of first call.
-; CHECK:      {{[0-9a-f]*}}c: {{.*}} bl {{.*}} call_target
-
-; Same as above, but force bundle padding by adding three (branch) instruction
-; before the tested call.
-define internal void @test_direct_call_with_padding_1() {
-entry:
-  call void @call_target()
-  ; bundle aigned.
-
-  br label %next1 ; add 1 inst.
-next1:
-  br label %next2 ; add 1 inst.
-next2:
-  call void @call_target()
-  ret void
-}
-; CHECK-LABEL:<test_direct_call_with_padding_1>:
-;             Search for bundle alignment of first call.
-; CHECK:      {{[0-9a-f]*}}c: {{.+}} bl
-; CHECK-NEXT: b
-; CHECK-NEXT: b
-; CHECK-NEXT: nop
-; CHECK-NEXT: bl {{.*}} call_target
-; CHECK-NEXT: {{[0-9a-f]*}}0:
-
-; Same as above, but force bundle padding by adding two (branch) instruction
-; before the tested call.
-define internal void @test_direct_call_with_padding_2() {
-entry:
-  call void @call_target()
-  ; bundle aigned.
-
-  br label %next1 ; add 1 inst.
-next1:
-  call void @call_target()
-  ret void
-}
-
-; CHECK-LABEL:<test_direct_call_with_padding_2>:
-;             Search for bundle alignment of first call.
-; CHECK:      {{[0-9a-f]*}}c: {{.+}} bl
-; CHECK-NEXT: b
-; CHECK-NEXT: nop
-; CHECK-NEXT: nop
-; CHECK-NEXT: bl {{.*}} call_target
-; CHECK-NEXT: {{[0-9a-f]*}}0:
-
-; Same as above, but force bundle padding by adding single (branch) instruction
-; before the tested call.
-define internal void @test_direct_call_with_padding_3() {
-entry:
-  call void @call_target()
-  ; bundle aigned.
-
-  call void @call_target()
-  ret void
-}
-
-; CHECK-LABEL:<test_direct_call_with_padding_3>:
-;             Search for bundle alignment of first call.
-; CHECK:      {{[0-9a-f]*}}c: {{.+}} bl
-; CHECK-NEXT: nop
-; CHECK-NEXT: nop
-; CHECK-NEXT: nop
-; CHECK-NEXT: bl {{.*}} call_target
-; CHECK-NEXT: {{[0-9a-f]*}}0:
-
-; An indirect call sequence uses the right mask and register-call sequence.
-define internal void @test_indirect_call(i32 %target) {
-entry:
-  %__1 = inttoptr i32 %target to void ()*
-  call void @call_target();
-  ; bundle aigned.
-
-  br label %next ; add 1 inst.
-next:
-  call void %__1() ; requires 3 insts.
-  ret void
-}
-
-; CHECK-LABEL:<test_indirect_call>:
-;             Search for bundle alignment of first call.
-; CHECK:      {{[0-9a-f]*}}c: {{.+}} bl
-; CHECK-NEXT: b
-; CHECK-NEXT: ldr
-; CHECK-NEXT: bic [[REG:r[0-3]]], [[REG]], {{.*}} 0xc000000f
-; CHECK-NEXT: blx [[REG]]
-; CHECK-NEXT: {{[0-9]+}}0:
-
-; An indirect call sequence uses the right mask and register-call sequence.
-; Forces bundling before the tested call.
-define internal void @test_indirect_call_with_padding_1(i32 %target) {
-entry:
-  %__1 = inttoptr i32 %target to void ()*
-  call void @call_target();
-  ; bundle aigned.
-  call void %__1() ; requires 3 insts.
-  ret void
-}
-
-; CHECK-LABEL: <test_indirect_call_with_padding_1>:
-;              Search for bundle alignment of first call.
-; CHECK:      {{[0-9a-f]*}}c: {{.+}} bl
-; CHECK-NEXT: ldr
-; CHECK-NEXT: nop
-; CHECK-NEXT: bic [[REG:r[0-3]]], [[REG]], {{.*}} 0xc000000f
-; CHECK-NEXT: blx [[REG]]
-; CHECK-NEXT: {{[0-9]+}}0:
-
-; An indirect call sequence uses the right mask and register-call sequence.
-; Forces bundling by adding three (branch) instructions befor the tested call.
-define internal void @test_indirect_call_with_padding_2(i32 %target) {
-entry:
-  %__1 = inttoptr i32 %target to void ()*
-  call void @call_target();
-  ; bundle aigned.
-
-  br label %next1 ; add 1 inst.
-next1:
-  br label %next2 ; add 1 inst.
-next2:
-  br label %next3 ; add 1 inst.
-next3:
-  call void %__1() ; requires 3 insts.
-  ret void
-}
-
-; CHECK-LABEL: <test_indirect_call_with_padding_2>:
-;              Search for bundle alignment of first call.
-; CHECK:      {{[0-9a-f]*}}c: {{.+}} bl
-; CHECK-NEXT: b
-; CHECK-NEXT: b
-; CHECK-NEXT: b
-; CHECK-NEXT: ldr
-; CHECK-NEXT: nop
-; CHECK-NEXT: nop
-; CHECK-NEXT: bic [[REG:r[0-3]]], [[REG]], {{.*}} 0xc000000f
-; CHECK-NEXT: blx [[REG]]
-; CHECK-NEXT: {{[0-9]+}}0:
-
-; An indirect call sequence uses the right mask and register-call sequence.
-; Forces bundling by adding two (branch) instructions befor the tested call.
-define internal void @test_indirect_call_with_padding_3(i32 %target) {
-entry:
-  %__1 = inttoptr i32 %target to void ()*
-  call void @call_target();
-  ; bundle aigned.
-
-  br label %next1 ; add 1 inst
-next1:
-  br label %next2 ; add 1 inst
-next2:
-  call void %__1() ; requires 3 insts.
-  ret void
-}
-; CHECK-LABEL: <test_indirect_call_with_padding_3>:
-;              Search for bundle alignment of first call.
-; CHECK:      {{[0-9a-f]*}}c: {{.+}} bl
-; CHECK-NEXT: b
-; CHECK-NEXT: b
-; CHECK-NEXT: ldr
-; CHECK-NEXT: nop
-; CHECK-NEXT: nop
-; CHECK-NEXT: nop
-; CHECK-NEXT: bic [[REG:r[0-3]]], [[REG]], {{.*}} 0xc000000f
-; CHECK-NEXT: blx [[REG]]
-; CHECK-NEXT: {{[0-9]+}}0:
-
-; A return sequences uses the right pop / mask / jmp sequence.
-define internal void @test_ret() {
-entry:
-  call void @call_target()
-  ; Bundle boundary.
-  br label %next ; add 1 inst.
-next:
-  ret void
-}
-; CHECK-LABEL:<test_ret>:
-;             Search for bundle alignment of first call.
-; CHECK:      {{[0-9a-f]*}}c: {{.+}} bl
-; CHECK-NEXT: b
-; CHECK-NEXT: add sp, sp
-; CHECK-NEXT: bic sp, sp, {{.+}} ; 0xc0000000
-; CHECK-NEXT: pop {lr}
-; CHECK-NEXT: {{[0-9a-f]*}}0: {{.+}} bic lr, lr, {{.+}} ; 0xc000000f
-; CHECK-NEXT: bx lr
-
-; A return sequence with padding for bundle lock.
-define internal void @test_ret_with_padding() {
-  call void @call_target()
-  ; Bundle boundary.
-  ret void
-}
-
-; CHECK-LABEL:<test_ret_with_padding>:
-;             Search for bundle alignment of first call.
-; CHECK:      {{[0-9a-f]*}}c: {{.+}} bl
-; CHECK-NEXT: add sp, sp
-; CHECK-NEXT: bic sp, sp, {{.+}} ; 0xc0000000
-; CHECK-NEXT: pop {lr}
-; CHECK-NEXT: nop
-; CHECK-NEXT: {{[0-9a-f]*}}0: {{.+}} bic lr, lr, {{.+}} ; 0xc000000f
-; CHECK-NEXT: bx lr
-
-; Store without bundle padding.
-define internal void @test_store() {
-entry:
-  call void @call_target()
-  ; Bundle boundary
-  store i16 1, i16* undef, align 1   ; 3 insts + bic.
-  ret void
-}
-
-; CHECK-LABEL: test_store
-;             Search for call at end of bundle.
-; CHECK:      {{[0-9a-f]*}}c: {{.+}} bl
-; CHECK-NEXT: mov [[REG:r[0-9]]], #0
-; CHECK-NEXT: mov
-; CHECK-NEXT: bic [[REG]], [[REG]], {{.+}} ; 0xc0000000
-; CHECK-NEXT: strh r{{.+}}[[REG]]
-
-; Store with bundle padding. Force padding by adding a single branch
-; instruction.
-define internal void @test_store_with_padding() {
-entry:
-  call void @call_target()
-  ; bundle boundary
-  br label %next ; add 1 inst.
-next:
-  store i16 0, i16* undef, align 1   ; 3 insts
-  ret void
-}
-; CHECK-LABEL: test_store_with_padding
-;             Search for call at end of bundle.
-; CHECK:      {{[0-9a-f]*}}c: {{.+}} bl
-; CHECK-NEXT: b
-; CHECK-NEXT: mov [[REG:r[0-9]]], #0
-; CHECK-NEXT: mov
-; CHECK-NEXT: nop
-; CHECK-NEXT: bic [[REG]], [[REG]], {{.+}} ; 0xc0000000
-; CHECK-NEXT: strh r{{.+}}[[REG]]
-
-
-; Store without bundle padding.
-define internal i32 @test_load() {
-entry:
-  call void @call_target()
-  ; Bundle boundary
-  %v = load i32, i32* undef, align 1 ; 4 insts, bundling middle 2.
-  ret i32 %v
-}
-
-; CHECK-LABEL: test_load
-;             Search for call at end of bundle.
-; CHECK:      {{[0-9a-f]*}}c: {{.+}} bl
-; CHECK-NEXT: mov [[REG:r[0-9]]], #0
-; CHECK-NEXT: bic [[REG]], [[REG]], {{.+}} ; 0xc0000000
-; CHECK-NEXT: ldr r{{.+}}[[REG]]
-
-; Store with bundle padding.
-define internal i32 @test_load_with_padding() {
-entry:
-  call void @call_target()
-  ; Bundle boundary
-  br label %next1 ; add 1 inst.
-next1:
-  br label %next2 ; add 1 inst.
-next2:
-  %v = load i32, i32* undef, align 1 ; 4 insts, bundling middle 2.
-  ret i32 %v
-}
-
-; CHECK-LABEL: test_load_with_padding
-;             Search for call at end of bundle.
-; CHECK:      {{[0-9a-f]*}}c: {{.+}} bl
-; CHECK-NEXT: b
-; CHECK-NEXT: b
-; CHECK-NEXT: mov [[REG:r[0-9]]], #0
-; CHECK-NEXT: nop
-; CHECK-NEXT: bic [[REG]], [[REG]], {{.+}} ; 0xc0000000
-; CHECK-NEXT: ldr r{{.+}}[[REG]]
diff --git a/third_party/subzero/tests_lit/assembler/arm32/sdiv.ll b/third_party/subzero/tests_lit/assembler/arm32/sdiv.ll
deleted file mode 100644
index c365b76..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/sdiv.ll
+++ /dev/null
@@ -1,72 +0,0 @@
-; Show that we know how to translate sdiv
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 -mattr=hwdiv-arm \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 -mattr=hwdiv-arm | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 -mattr=hwdiv-arm \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 -mattr=hwdiv-arm \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal i32 @SdivTwoRegs(i32 %a, i32 %b) {
-  %v = sdiv i32 %a, %b
-  ret i32 %v
-}
-
-; ASM-LABEL:SdivTwoRegs:
-; ASM-NEXT:.LSdivTwoRegs$__0:
-; ASM-NEXT:     tst     r1, r1
-; ASM-NEXT:     bne     .LSdivTwoRegs$local$__0
-; ASM-NEXT:     .long 0xe7fedef0
-; ASM-NEXT:.LSdivTwoRegs$local$__0:
-; ASM-NEXT:     sdiv    r0, r0, r1
-; ASM-NEXT:     bx      lr
-
-; DIS-LABEL:00000000 <SdivTwoRegs>:
-; DIS-NEXT:   0:        e1110001
-; DIS-NEXT:   4:        1a000000
-; DIS-NEXT:   8:        e7fedef0
-; DIS-NEXT:   c:        e710f110
-; DIS-NEXT:  10:        e12fff1e
-
-; IASM-LABEL:SdivTwoRegs:
-; IASM-NEXT:.LSdivTwoRegs$__0:
-
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x11
-; IASM-NEXT:    .byte 0xe1
-
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x1a
-
-; IASM-NEXT:    .byte 0xf0
-; IASM-NEXT:    .byte 0xde
-; IASM-NEXT:    .byte 0xfe
-; IASM-NEXT:    .byte 0xe7
-
-; IASM-NEXT:.LSdivTwoRegs$local$__0:
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0xf1
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0xe7
-
-; IASM-NEXT:    .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
diff --git a/third_party/subzero/tests_lit/assembler/arm32/select-vec.ll b/third_party/subzero/tests_lit/assembler/arm32/select-vec.ll
deleted file mode 100644
index 415f936..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/select-vec.ll
+++ /dev/null
@@ -1,106 +0,0 @@
-; Test that we handle select on vectors.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 --reg-use=s20  | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   --reg-use=s20 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 --reg-use=s20 | FileCheck %s --check-prefix=DIS
-
-define internal <4 x float> @select4float(<4 x i1> %s, <4 x float> %a,
-                                          <4 x float> %b) {
-; ASM-LABEL:select4float:
-; DIS-LABEL:00000000 <select4float>:
-; IASM-LABEL:select4float:
-
-entry:
-  %res = select <4 x i1> %s, <4 x float> %a, <4 x float> %b
-
-; ASM:          vshl.u32 [[M:.*]], {{.*}}, #31
-; ASM-NEXT:     vshr.s32 [[M:.*]], {{.*}}, #31
-; ASM-NEXT:     vbsl.i32 [[M]], {{.*}}
-; DIS:       0: f2bf0550
-; DIS-NEXT:  4: f2a10050
-; DIS-NEXT:  8: f3120154
-; IASM-NOT:     vshl
-; IASM-NOT:     vshr
-; IASM-NOT:     vbsl
-
-  ret <4 x float> %res
-}
-
-define internal <4 x i32> @select4i32(<4 x i1> %s, <4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL:select4i32:
-; DIS-LABEL:00000010 <select4i32>:
-; IASM-LABEL:select4i32:
-
-entry:
-  %res = select <4 x i1> %s, <4 x i32> %a, <4 x i32> %b
-
-; ASM:          vshl.u32 [[M:.*]], {{.*}}, #31
-; ASM-NEXT:     vshr.s32 [[M:.*]], {{.*}}, #31
-; ASM-NEXT:     vbsl.i32 [[M]], {{.*}}
-; DIS:      10: f2bf0550
-; DIS-NEXT: 14: f2a10050
-; DIS_NEXT: 18: f3120154
-; IASM-NOT:     vshl
-; IASM-NOT:     vshr
-; IASM-NOT:     vbsl
-
-  ret <4 x i32> %res
-}
-
-define internal <8 x i16> @select8i16(<8 x i1> %s, <8 x i16> %a, <8 x i16> %b) {
-; ASM-LABEL:select8i16:
-; DIS-LABEL:00000020 <select8i16>:
-; IASM-LABEL:select8i16:
-
-entry:
-  %res = select <8 x i1> %s, <8 x i16> %a, <8 x i16> %b
-
-; ASM:          vshl.u16 [[M:.*]], {{.*}}, #15
-; ASM-NEXT:     vshr.s16 [[M:.*]], {{.*}}, #15
-; ASM-NEXT:     vbsl.i16 [[M]], {{.*}}
-; DIS:      20: f29f0550
-; DIS-NEXT: 24: f2910050
-; DIS-NEXT: 28: f3120154
-; IASM-NOT:     vshl
-; IASM-NOT:     vshr
-; IASM-NOT:     vbsl
-
-  ret <8 x i16> %res
-}
-
-define internal <16 x i8> @select16i8(<16 x i1> %s, <16 x i8> %a,
-                                      <16 x i8> %b) {
-; ASM-LABEL:select16i8:
-; DIS-LABEL:00000030 <select16i8>:
-; IASM-LABEL:select16i8:
-
-entry:
-  %res = select <16 x i1> %s, <16 x i8> %a, <16 x i8> %b
-
-; ASM:          vshl.u8 [[M:.*]], {{.*}}, #7
-; ASM-NEXT:     vshr.s8 [[M:.*]], {{.*}}, #7
-; ASM-NEXT:     vbsl.i8 [[M]], {{.*}}
-; DIS:      30: f28f0550
-; DIS-NEXT: 34: f2890050
-; DIS-NEXT: 38: f3120154
-; IASM-NOT:     vshl
-; IASM-NOT:     vshr
-; IASM-NOT:     vbsl
-
-  ret <16 x i8> %res
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/store-sf.ll b/third_party/subzero/tests_lit/assembler/arm32/store-sf.ll
deleted file mode 100644
index fe76000..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/store-sf.ll
+++ /dev/null
@@ -1,77 +0,0 @@
-; Sample program that generates "str reg, [fp, #CCCC]", to show that we
-; recognize that "fp" should be used instead of "sp".
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-define internal void @test_vla_in_loop(i32 %n) {
-; ASM-LABEL: test_vla_in_loop:
-; DIS-LABEL: 00000000 <test_vla_in_loop>:
-; IASM-LABEL: test_vla_in_loop:
-
-entry:
-
-; ASM-NEXT: .Ltest_vla_in_loop$entry:
-; IASM-NEXT: .Ltest_vla_in_loop$entry:
-
-; ASM-NEXT: 	push	{fp}
-; DIS-NEXT:    0:	e52db004
-; IASM-NEXT: 	.byte 0x4
-; IASM-NEXT: 	.byte 0xb0
-; IASM-NEXT: 	.byte 0x2d
-; IASM-NEXT: 	.byte 0xe5
-
-; ASM-NEXT: 	mov	fp, sp
-; DIS-NEXT:    4:	e1a0b00d
-; IASM-NEXT: 	.byte 0xd
-; IASM-NEXT: 	.byte 0xb0
-; IASM-NEXT: 	.byte 0xa0
-; IASM-NEXT: 	.byte 0xe1
-
-; ASM-NEXT: 	sub	sp, sp, #12
-; DIS-NEXT:    8:	e24dd00c
-; IASM-NEXT: 	.byte 0xc
-; IASM-NEXT: 	.byte 0xd0
-; IASM-NEXT: 	.byte 0x4d
-; IASM-NEXT: 	.byte 0xe2
-
-; **** Example of fixed instruction.
-; ASM-NEXT: 	str	r0, [fp, #-4]
-; DIS-NEXT:    c:	e50b0004
-; IASM-NEXT: 	.byte 0x4
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xb
-; IASM-NEXT: 	.byte 0xe5
-; ASM-NEXT:     # [fp, #-4] = def.pseudo
-  br label %next
-
-; ASM-NEXT: 	b	.Ltest_vla_in_loop$next
-; DIS-NEXT:   10:	eaffffff
-
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0xea
-
-; Put the variable-length alloca in a non-entry block, to reduce the
-; chance the optimizer putting it before the regular frame creation.
-
-next:
-  %v = alloca i8, i32 %n, align 4
-  ret void
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/sub-vec.ll b/third_party/subzero/tests_lit/assembler/arm32/sub-vec.ll
deleted file mode 100644
index 923766b..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/sub-vec.ll
+++ /dev/null
@@ -1,85 +0,0 @@
-; Show that we know how to translate vsub vector instructions.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   -reg-use q10,q11 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   -reg-use q10,q11 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   -reg-use q10,q11 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   -reg-use q10,q11 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal <4 x float> @testVsubFloat4(<4 x float> %v1, <4 x float> %v2) {
-; ASM-LABEL: testVsubFloat4:
-; DIS-LABEL: 00000000 <testVsubFloat4>:
-; IASM-LABEL: testVsubFloat4:
-
-entry:
-  %res = fsub <4 x float> %v1, %v2
-
-; ASM:     vsub.f32        q10, q10, q11
-; DIS:   8:       f2644de6
-; IASM-NOT:     vsub.f32
-
-  ret <4 x float> %res
-}
-
-define internal <4 x i32> @testVsub4i32(<4 x i32> %v1, <4 x i32> %v2) {
-; ASM-LABEL: testVsub4i32:
-; DIS-LABEL: 00000020 <testVsub4i32>:
-; IASM-LABEL: testVsub4i32:
-
-entry:
-  %res = sub <4 x i32> %v1, %v2
-
-; ASM:     vsub.i32        q10, q10, q11
-; DIS:   28:       f36448e6
-; IASM-NOT:     vsub.i32
-
-  ret <4 x i32> %res
-}
-
-define internal <8 x i16> @testVsub8i16(<8 x i16> %v1, <8 x i16> %v2) {
-; ASM-LABEL: testVsub8i16:
-; DIS-LABEL: 00000040 <testVsub8i16>:
-; IASM-LABEL: testVsub8i16:
-
-entry:
-  %res = sub <8 x i16> %v1, %v2
-
-; ASM:     vsub.i16        q10, q10, q11
-; DIS:   48:       f35448e6
-; IASM-NOT:     vsub.i16
-
-  ret <8 x i16> %res
-}
-
-define internal <16 x i8> @testVsub16i8(<16 x i8> %v1, <16 x i8> %v2) {
-; ASM-LABEL: testVsub16i8:
-; DIS-LABEL: 00000060 <testVsub16i8>:
-; IASM-LABEL: testVsub16i8:
-
-entry:
-  %res = sub <16 x i8> %v1, %v2
-
-; ASM:     vsub.i8        q10, q10, q11
-; DIS:   68:       f34448e6
-; IASM-NOT:     vsub.i8
-
-  ret <16 x i8> %res
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/sub.ll b/third_party/subzero/tests_lit/assembler/arm32/sub.ll
deleted file mode 100644
index 51db745..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/sub.ll
+++ /dev/null
@@ -1,123 +0,0 @@
-; Show that we know how to translate sub.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @Sub1FromR0(i32 %p) {
-  %v = sub i32 %p, 1
-  ret i32 %v
-}
-
-; ASM-LABEL: Sub1FromR0:
-; ASM-NEXT:  .LSub1FromR0$__0:
-; ASM-NEXT:     sub     r0, r0, #1
-; ASM-NEXT:     bx      lr
-
-; DIS-LABEL:00000000 <Sub1FromR0>:
-; DIS-NEXT:   0:        e2400001
-; DIS-NEXT:   4:        e12fff1e
-
-; IASM-LABEL: Sub1FromR0:
-; IASM-LABEL: .LSub1FromR0$__0:
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x40
-; IASM-NEXT:    .byte 0xe2
-
-; IASM-NEXT:    .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
-
-define internal i32 @Sub2Regs(i32 %p1, i32 %p2) {
-  %v = sub i32 %p1, %p2
-  ret i32 %v
-}
-
-; ASM-LABEL: Sub2Regs:
-; ASM-NEXT:  .LSub2Regs$__0:
-; ASM-NEXT:     sub r0, r0, r1
-; ASM-NEXT:     bx lr
-
-; DIS-LABEL:00000010 <Sub2Regs>:
-; DIS-NEXT:  10:        e0400001
-; DIS-NEXT:  14:        e12fff1e
-
-; IASM-LABEL: Sub2Regs:
-; IASM-NEXT:  .LSub2Regs$__0:
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x40
-; IASM-NEXT:    .byte 0xe0
-
-; IASM-NEXT:    .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
-
-define internal i64 @SubI64FromR0R1(i64 %p) {
-  %v = sub i64 %p, 1
-  ret i64 %v
-}
-
-; ASM-LABEL:SubI64FromR0R1:
-; ASM-NEXT:.LSubI64FromR0R1$__0:
-; ASM-NEXT:     subs    r0, r0, #1
-; ASM-NEXT:     sbc     r1, r1, #0
-
-; DIS-LABEL:00000020 <SubI64FromR0R1>:
-; DIS-NEXT:  20:        e2500001
-; DIS-NEXT:  24:        e2c11000
-
-; IASM-LABEL:SubI64FromR0R1:
-; IASM-NEXT:.LSubI64FromR0R1$__0:
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x50
-; IASM-NEXT:    .byte 0xe2
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0xc1
-; IASM-NEXT:    .byte 0xe2
-
-define internal i64 @SubI64Regs(i64 %p1, i64 %p2) {
-  %v = sub i64 %p1, %p2
-  ret i64 %v
-}
-
-; ASM-LABEL:SubI64Regs:
-; ASM-NEXT:.LSubI64Regs$__0:
-; ASM-NEXT:     subs    r0, r0, r2
-; ASM-NEXT:     sbc     r1, r1, r3
-
-; DIS-LABEL:00000030 <SubI64Regs>:
-; DIS-NEXT:  30:	e0500002
-; DIS-NEXT:  34:	e0c11003
-
-; IASM-LABEL:SubI64Regs:
-; IASM-NEXT:.LSubI64Regs$__0:
-; IASM-NEXT:    .byte 0x2
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x50
-; IASM-NEXT:    .byte 0xe0
-; IASM-NEXT:    .byte 0x3
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0xc1
-; IASM-NEXT:    .byte 0xe0
diff --git a/third_party/subzero/tests_lit/assembler/arm32/trap.ll b/third_party/subzero/tests_lit/assembler/arm32/trap.ll
deleted file mode 100644
index 52a5a12..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/trap.ll
+++ /dev/null
@@ -1,55 +0,0 @@
-; Show that we can translate IR instruction "trap".
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; testUnreachable generates a trap for the unreachable instruction.
-
-define internal void @testUnreachable() {
-; ASM-LABEL: testUnreachable:
-; DIS-LABEL: 00000000 <testUnreachable>:
-
-  unreachable
-
-; ASM:  .long 0xe7fedef0
-; DIS-NEXT:    0:       e7fedef0
-; IASM-NOT:     .long 0xe7fedef0
-}
-
-; testTrap uses integer division to test this, since a trap is
-; inserted if one divides by zero.
-
-define internal i32 @testTrap(i32 %v1, i32 %v2) {
-; ASM-LABEL: testTrap:
-; DIS-LABEL: 00000010 <testTrap>:
-; IASM-LABEL: testTrap:
-
-  %res = udiv i32 %v1, %v2
-
-; ASM:          bne
-; DIS:  28:     1a000000
-; IASM-NOT:     bne
-
-; ASM-NEXT:     .long 0xe7fedef0
-; DIS-NEXT:  2c:        e7fedef0
-; IASM-NOT:     .long 0xe7fedef0
-
-  ret i32 %res
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/udiv.ll b/third_party/subzero/tests_lit/assembler/arm32/udiv.ll
deleted file mode 100644
index 7a41e12..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/udiv.ll
+++ /dev/null
@@ -1,72 +0,0 @@
-; Show that we know how to translate udiv
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 -mattr=hwdiv-arm \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 -mattr=hwdiv-arm | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 -mattr=hwdiv-arm \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 -mattr=hwdiv-arm \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal i32 @UdivTwoRegs(i32 %a, i32 %b) {
-  %v = udiv i32 %a, %b
-  ret i32 %v
-}
-
-; ASM-LABEL:UdivTwoRegs:
-; ASM-NEXT:.LUdivTwoRegs$__0:
-; ASM-NEXT:     tst     r1, r1
-; ASM-NEXT:     bne     .LUdivTwoRegs$local$__0
-; ASM-NEXT:     .long 0xe7fedef0
-; ASM-NEXT:.LUdivTwoRegs$local$__0:
-; ASM-NEXT:     udiv    r0, r0, r1
-; ASM-NEXT:     bx      lr
-
-; DIS-LABEL:00000000 <UdivTwoRegs>:
-; DIS-NEXT:   0:        e1110001
-; DIS-NEXT:   4:        1a000000
-; DIS-NEXT:   8:        e7fedef0
-; DIS-NEXT:   c:        e730f110
-; DIS-NEXT:  10:        e12fff1e
-
-; IASM-LABEL:UdivTwoRegs:
-; IASM-NEXT:.LUdivTwoRegs$__0:
-
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x11
-; IASM-NEXT:    .byte 0xe1
-
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x1a
-
-; IASM-NEXT:    .byte 0xf0
-; IASM-NEXT:    .byte 0xde
-; IASM-NEXT:    .byte 0xfe
-; IASM-NEXT:    .byte 0xe7
-
-; IASM-NEXT:.LUdivTwoRegs$local$__0:
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0xf1
-; IASM-NEXT:    .byte 0x30
-; IASM-NEXT:    .byte 0xe7
-
-; IASM-NEXT:    .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
diff --git a/third_party/subzero/tests_lit/assembler/arm32/uxtb.ll b/third_party/subzero/tests_lit/assembler/arm32/uxtb.ll
deleted file mode 100644
index e140283..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/uxtb.ll
+++ /dev/null
@@ -1,89 +0,0 @@
-; Test the UXTB and UXTH instructions.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @_Z7testAddhh(i32 %a, i32 %b) {
-; ASM-LABEL: _Z7testAddhh:
-; DIS-LABEL: 00000000 <_Z7testAddhh>:
-; IASM-LABEL: _Z7testAddhh:
-
-entry:
-
-; ASM-NEXT: .L_Z7testAddhh$entry:
-; IASM-NEXT: .L_Z7testAddhh$entry:
-
-  %a.arg_trunc = trunc i32 %a to i8
-  %conv = zext i8 %a.arg_trunc to i32
-
-; ASM-NEXT:     uxtb    r0, r0
-; DIS-NEXT:    0:       e6ef0070
-; IASM-NEXT:    .byte 0x70
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xef
-; IASM-NEXT:    .byte 0xe6
-
-  %b.arg_trunc = trunc i32 %b to i8
-  %conv1 = zext i8 %b.arg_trunc to i32
-
-; ASM-NEXT:     uxtb    r1, r1
-; DIS-NEXT:    4:       e6ef1071
-; IASM-NEXT:    .byte 0x71
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0xef
-; IASM-NEXT:    .byte 0xe6
-
-  %add = add i32 %conv1, %conv
-
-; ASM-NEXT:     add     r1, r1, r0
-; DIS-NEXT:    8:       e0811000
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0x81
-; IASM-NEXT:    .byte 0xe0
-
-  %conv2 = trunc i32 %add to i16
-  %conv2.ret_ext = zext i16 %conv2 to i32
-
-; ASM-NEXT:     uxth    r1, r1
-; DIS-NEXT:   c:        e6ff1071
-; IASM-NEXT:    .byte 0x71
-; IASM-NEXT:    .byte 0x10
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0xe6
-
-  ret i32 %conv2.ret_ext
-
-; ASM-NEXT:     mov     r0, r1
-; DIS-NEXT:   10:       e1a00001
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0x0
-; IASM-NEXT:    .byte 0xa0
-; IASM-NEXT:    .byte 0xe1
-
-
-; ASM-NEXT:     bx      lr
-; DIS-NEXT:   14:       e12fff1e
-; IASM-NEXT:    .byte 0x1e
-; IASM-NEXT:    .byte 0xff
-; IASM-NEXT:    .byte 0x2f
-; IASM-NEXT:    .byte 0xe1
-
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vabs-vec.ll b/third_party/subzero/tests_lit/assembler/arm32/vabs-vec.ll
deleted file mode 100644
index fc47d39..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vabs-vec.ll
+++ /dev/null
@@ -1,41 +0,0 @@
-; Show that we know how to translate the fabs intrinsic on float vectors.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   -reg-use q5 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   -reg-use q5 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   -reg-use q5 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   -reg-use q5 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-declare <4 x float> @llvm.fabs.v4f32(<4 x float>)
-
-define internal <4 x float> @_Z6myFabsDv4_f(<4 x float> %a) {
-; ASM-LABEL: _Z6myFabsDv4_f:
-; DIS-LABEL: {{.+}} <_Z6myFabsDv4_f>:
-; IASM-LABEL: _Z6myFabsDv4_f:
-
-  %x = call <4 x float> @llvm.fabs.v4f32(<4 x float> %a)
-
-; ASM:            vabs.f32    q5, q5
-; DIS: {{.+}}:    f3b9a74a
-; IASM-NOT:       vabs.f32
-
-  ret <4 x float> %x
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vabs.ll b/third_party/subzero/tests_lit/assembler/arm32/vabs.ll
deleted file mode 100644
index f773673..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vabs.ll
+++ /dev/null
@@ -1,74 +0,0 @@
-; Show that we translate intrinsics for fabs on float, double and float vectors.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   -reg-use s20,d22 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   -reg-use s20,d22 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   -reg-use s20,d22 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   -reg-use s20,d22 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-declare float @llvm.fabs.f32(float)
-declare double @llvm.fabs.f64(double)
-declare <4 x float> @llvm.fabs.v4f32(<4 x float>)
-
-define internal float @test_fabs_float(float %x) {
-; ASM-LABEL: test_fabs_float:
-; DIS-LABEL: 00000000 <test_fabs_float>:
-; IASM-LABEL: test_fabs_float:
-
-entry:
-  %r = call float @llvm.fabs.f32(float %x)
-
-; ASM:  vabs.f32        s20, s20
-; DIS:   10:    eeb0aaca
-; IASM-NOT: vabs.f32
-
-  ret float %r
-}
-
-define internal double @test_fabs_double(double %x) {
-; ASM-LABEL: test_fabs_double:
-; DIS-LABEL: 00000030 <test_fabs_double>:
-; IASM-LABEL: test_fabs_double:
-
-entry:
-  %r = call double @llvm.fabs.f64(double %x)
-
-; ASM:  vabs.f64        d22, d22
-; DIS:   3c:    eef06be6
-; IASM-NOT: vabs.64
-
-  ret double %r
-}
-
-define internal <4 x float> @test_fabs_4float(<4 x float> %x) {
-; ASM-LABEL: test_fabs_4float:
-; DIS-LABEL: 00000050 <test_fabs_4float>:
-; IASM-LABEL: test_fabs_4float:
-
-entry:
-  %r = call <4 x float> @llvm.fabs.v4f32(<4 x float> %x)
-
-; ASM:  vabs.f32        q0, q0
-; DIS:   60:    f3b90740
-; IASM-NOT: vabs.f32
-
-  ret <4 x float> %r
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vadd.ll b/third_party/subzero/tests_lit/assembler/arm32/vadd.ll
deleted file mode 100644
index b219a71..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vadd.ll
+++ /dev/null
@@ -1,58 +0,0 @@
-; Show that we know how to translate vadd.
-
-; NOTE: Restricts S and D registers to ones that will better test S/D
-; register encodings.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   -reg-use s20,s22,d20,d22 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   -reg-use s20,s22,d20,d22 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   -reg-use s20,s22,d20,d22 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   -reg-use s20,s22,d20,d22 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal float @testVaddFloat(float %v1, float %v2) {
-; ASM-LABEL: testVaddFloat:
-; DIS-LABEL: 00000000 <testVaddFloat>:
-; IASM-LABEL: testVaddFloat:
-
-entry:
-  %res = fadd float %v1, %v2
-
-; ASM:     vadd.f32        s20, s20, s22
-; DIS:   1c:       ee3aaa0b
-; IASM-NOT:     vadd
-
-  ret float %res
-}
-
-define internal double @testVaddDouble(double %v1, double %v2) {
-; ASM-LABEL: testVaddDouble:
-; DIS-LABEL: 00000040 <testVaddDouble>:
-; IASM-LABEL: .LtestVaddDouble$entry:
-
-entry:
-  %res = fadd double %v1, %v2
-
-; ASM:        vadd.f64        d20, d20, d22
-; DIS:      54:       ee744ba6
-; IASM-NOT:   vadd
-
-  ret double %res
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vcmp.ll b/third_party/subzero/tests_lit/assembler/arm32/vcmp.ll
deleted file mode 100644
index cb1fb10..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vcmp.ll
+++ /dev/null
@@ -1,98 +0,0 @@
-; Show that we know how to translate vcmp.
-
-; REQUIRES: allow_dump
-
-; TODO(kschimpf): Use include registers for compare instructions, so that the
-; test is less brittle.
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @vcmpFloat(float %v1, float %v2) {
-; ASM-LABEL: vcmpFloat:
-; DIS-LABEL: 00000000 <vcmpFloat>:
-; IASM-LABEL: vcmpFloat:
-
-entry:
-; ASM-NEXT: .LvcmpFloat$entry:
-; IASM-NEXT: .LvcmpFloat$entry:
-
-  %cmp = fcmp olt float %v1, %v2
-
-; ASM:      vcmp.f32        s0, s1
-; DIS:   14:      eeb40a60
-; IASM-NOT: vcmp
-
-  %res = zext i1 %cmp to i32
-  ret i32 %res
-}
-
-define internal i32 @vcmpFloatToZero(float %v) {
-; ASM-LABEL: vcmpFloatToZero:
-; DIS-LABEL: 00000040 <vcmpFloatToZero>:
-; IASM-LABEL: vcmpFloatToZero:
-
-entry:
-; ASM-NEXT: .LvcmpFloatToZero$entry:
-; IASM-NEXT: .LvcmpFloatToZero$entry:
-
-  %cmp = fcmp olt float %v, 0.0
-
-; ASM:      vcmp.f32        s0, #0.0
-; DIS:   4c:      eeb50a40
-; IASM-NOT: vcmp
-
-  %res = zext i1 %cmp to i32
-  ret i32 %res
-}
-
-define internal i32 @vcmpDouble(double %v1, double %v2) {
-; ASM-LABEL: vcmpDouble:
-; DIS-LABEL: 00000080 <vcmpDouble>:
-; IASM-LABEL: vcmpDouble:
-
-entry:
-; ASM-NEXT: .LvcmpDouble$entry:
-; IASM-NEXT: .LvcmpDouble$entry:
-
-  %cmp = fcmp olt double %v1, %v2
-
-; ASM:      vcmp.f64        d0, d1
-; DIS:   94:      eeb40b41
-; IASM-NOT: vcmp
-
-  %res = zext i1 %cmp to i32
-  ret i32 %res
-}
-
-define internal i32 @vcmpDoubleToZero(double %v) {
-; ASM-LABEL: vcmpDoubleToZero:
-; DIS-LABEL: 000000c0 <vcmpDoubleToZero>:
-; IASM-LABEL: vcmpDoubleToZero:
-
-entry:
-; ASM-NEXT: .LvcmpDoubleToZero$entry:
-; IASM-NEXT: .LvcmpDoubleToZero$entry:
-
-  %cmp = fcmp olt double %v, 0.0
-
-; ASM:      vcmp.f64        d0, #0.0
-; DIS:   cc:      eeb50b40
-; IASM-NOT: vcmp
-
-  %res = zext i1 %cmp to i32
-  ret i32 %res
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vcvt.f32.s32.ll b/third_party/subzero/tests_lit/assembler/arm32/vcvt.f32.s32.ll
deleted file mode 100644
index 8481e87..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vcvt.f32.s32.ll
+++ /dev/null
@@ -1,52 +0,0 @@
-; Show that we know how to translate converting signed integer to floast.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   --reg-use=s20 | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --reg-use=s20  | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   --reg-use=s20 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --reg-use=s20 | FileCheck %s --check-prefix=DIS
-
-define internal float @SignedIntToFloat() {
-; ASM-LABEL: SignedIntToFloat:
-; DIS-LABEL: 00000000 <SignedIntToFloat>:
-; IASM-LABEL: SignedIntToFloat:
-
-entry:
-; ASM: .LSignedIntToFloat$entry:
-; IASM: .LSignedIntToFloat$entry:
-
-  %v = sitofp i32 17 to float
-
-; ASM:  vcvt.f32.s32    s20, s20
-; DIS:   10:    eeb8aaca
-; IASM-NOT: vcvt
-
-  ret float %v
-}
-
-define internal <4 x float> @IntVecToFloatVec(<4 x i32> %a) {
-; ASM-LABEL: IntVecToFloatVec:
-; DIS-LABEL: 00000030 <IntVecToFloatVec>:
-; IASM-LABEL: IntVecToFloatVec:
-
-  %v = sitofp <4 x i32> %a to <4 x float>
-
-; ASM:         vcvt.f32.s32    q0, q0
-; DIS:     40: f3bb0640
-; IASM-NOT:    vcvt
-
-  ret <4 x float> %v
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vcvt.f32.u32.ll b/third_party/subzero/tests_lit/assembler/arm32/vcvt.f32.u32.ll
deleted file mode 100644
index 56fd7c8..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vcvt.f32.u32.ll
+++ /dev/null
@@ -1,52 +0,0 @@
-; Show that we know how to translate converting unsigned integer to float.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   --reg-use=s20 | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --reg-use=s20  | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   --reg-use=s20 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --reg-use=s20 | FileCheck %s --check-prefix=DIS
-
-define internal float @SignedIntToFloat() {
-; ASM-LABEL: SignedIntToFloat:
-; DIS-LABEL: 00000000 <SignedIntToFloat>:
-; IASM-LABEL: SignedIntToFloat:
-
-entry:
-; ASM: .LSignedIntToFloat$entry:
-; IASM: .LSignedIntToFloat$entry:
-
-  %v = uitofp i32 17 to float
-
-; ASM:  vcvt.f32.u32    s20, s20
-; DIS:  10:     eeb8aa4a
-; IASM-NOT: vcvt
-
-  ret float %v
-}
-
-define internal <4 x float> @UIntVecToFloatVec(<4 x i32> %a) {
-; ASM-LABEL: UIntVecToFloatVec:
-; DIS-LABEL: 00000030 <UIntVecToFloatVec>:
-; IASM-LABEL: UIntVecToFloatVec:
-
-  %v = uitofp <4 x i32> %a to <4 x float>
-
-; ASM:         vcvt.f32.u32    q0, q0
-; DIS:     40: f3bb06c0
-; IASM-NOT:    vcvt
-
-  ret <4 x float> %v
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vcvt.f64.s32.ll b/third_party/subzero/tests_lit/assembler/arm32/vcvt.f64.s32.ll
deleted file mode 100644
index 34e94ef..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vcvt.f64.s32.ll
+++ /dev/null
@@ -1,38 +0,0 @@
-; Show that we know how to translate converting signed integer to double.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   --reg-use=s20 | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --reg-use=s20  | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   --reg-use=s20 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --reg-use=s20 | FileCheck %s --check-prefix=DIS
-
-define internal double @SignedIntToDouble() {
-; ASM-LABEL: SignedIntToDouble:
-; DIS-LABEL: 00000000 <SignedIntToDouble>:
-; IASM-LABEL: SignedIntToDouble:
-
-entry:
-; ASM: .LSignedIntToDouble$entry:
-; IASM: .LSignedIntToDouble$entry:
-
-  %v = sitofp i32 17 to double
-
-; ASM:  vcvt.f64.s32    d0, s20
-; DIS:   10:   eeb80bca
-; IASM-NOT: vcvt
-
-  ret double %v
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vcvt.f64.u32.ll b/third_party/subzero/tests_lit/assembler/arm32/vcvt.f64.u32.ll
deleted file mode 100644
index 12a24a2..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vcvt.f64.u32.ll
+++ /dev/null
@@ -1,38 +0,0 @@
-; Show that we know how to translate converting unsigned integer to double.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   --reg-use=s20 | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --reg-use=s20  | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   --reg-use=s20 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --reg-use=s20 | FileCheck %s --check-prefix=DIS
-
-define internal double @UnsignedIntToDouble() {
-; ASM-LABEL: UnsignedIntToDouble:
-; DIS-LABEL: 00000000 <UnsignedIntToDouble>:
-; IASM-LABEL: UnsignedIntToDouble:
-
-entry:
-; ASM: .LUnsignedIntToDouble$entry:
-; IASM: .LUnsignedIntToDouble$entry:
-
-  %v = uitofp i32 17 to double
-
-; ASM:  vcvt.f64.u32    d0, s20
-; DIS:   10:    eeb80b4a
-; IASM-NOT: vcvt
-
-  ret double %v
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vcvt.s32.f32.ll b/third_party/subzero/tests_lit/assembler/arm32/vcvt.s32.f32.ll
deleted file mode 100644
index 656ba04..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vcvt.s32.f32.ll
+++ /dev/null
@@ -1,52 +0,0 @@
-; Show that we know how to translate converting float to signed integer.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   --reg-use=s20 | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --reg-use=s20  | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   --reg-use=s20 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --reg-use=s20 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @FloatToSignedInt() {
-; ASM-LABEL: FloatToSignedInt:
-; DIS-LABEL: 00000000 <FloatToSignedInt>:
-; IASM-LABEL: FloatToSignedInt:
-
-entry:
-; ASM-NEXT: .LFloatToSignedInt$entry:
-; IASM-NEXT: .LFloatToSignedInt$entry:
-
-  %v = fptosi float 0.0 to i32
-
-; ASM:  vcvt.s32.f32    s20, s20
-; DIS:   14:    eebdaaca
-; IASM-NOT: vcvt
-
-  ret i32 %v
-}
-
-define internal <4 x i32> @FloatVecToIntVec(<4 x float> %a) {
-; ASM-LABEL: FloatVecToIntVec:
-; DIS-LABEL: 00000030 <FloatVecToIntVec>:
-; IASM-LABEL: FloatVecToIntVec:
-
-  %v = fptosi <4 x float> %a to <4 x i32>
-
-; ASM:         vcvt.s32.f32    q0, q0
-; DIS:     40: f3bb0740
-; IASM-NOT:    vcvt
-
-  ret <4 x i32> %v
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vcvt.s32.f64.ll b/third_party/subzero/tests_lit/assembler/arm32/vcvt.s32.f64.ll
deleted file mode 100644
index 5b60bce..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vcvt.s32.f64.ll
+++ /dev/null
@@ -1,38 +0,0 @@
-; Show that we know how to translate converting double to signed integer.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   --reg-use=s20 | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --reg-use=s20  | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   --reg-use=s20 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --reg-use=s20 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @DoubleToSignedInt() {
-; ASM-LABEL: DoubleToSignedInt:
-; DIS-LABEL: 00000000 <DoubleToSignedInt>:
-; IASM-LABEL: DoubleToSignedInt:
-
-entry:
-; ASM: .LDoubleToSignedInt$entry:
-; IASM: .LDoubleToSignedInt$entry:
-
-  %v = fptosi double 0.0 to i32
-
-; ASM:  vcvt.s32.f64    s20, d0
-; DIS:    c:   eebdabc0
-; IASM-NOT: vcvt
-
-  ret i32 %v
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vcvt.u32.f32.ll b/third_party/subzero/tests_lit/assembler/arm32/vcvt.u32.f32.ll
deleted file mode 100644
index 2fae0f5..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vcvt.u32.f32.ll
+++ /dev/null
@@ -1,51 +0,0 @@
-; Show that we know how to translate converting float to unsigned integer.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   --reg-use=s20 | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --reg-use=s20  | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   --reg-use=s20 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --reg-use=s20 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @FloatToUnsignedInt() {
-; ASM-LABEL: FloatToUnsignedInt:
-; DIS-LABEL: 00000000 <FloatToUnsignedInt>:
-; IASM-LABEL: FloatToUnsignedInt:
-
-entry:
-; ASM-NEXT: .LFloatToUnsignedInt$entry:
-; IASM-NEXT: .LFloatToUnsignedInt$entry:
-
-  %v = fptoui float 0.0 to i32
-; ASM:  vcvt.u32.f32    s20, s20
-; DIS:   14:    eebcaaca
-; IASM-NOT: vcvt
-
-  ret i32 %v
-}
-
-define internal <4 x i32> @FloatVecToUIntVec(<4 x float> %a) {
-; ASM-LABEL: FloatVecToUIntVec:
-; DIS-LABEL: 00000030 <FloatVecToUIntVec>:
-; IASM-LABEL: FloatVecToUIntVec:
-
-  %v = fptoui <4 x float> %a to <4 x i32>
-
-; ASM:         vcvt.u32.f32    q0, q0
-; DIS:     40: f3bb07c0
-; IASM-NOT:    vcvt
-
-  ret <4 x i32> %v
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vcvt.u32.f64.ll b/third_party/subzero/tests_lit/assembler/arm32/vcvt.u32.f64.ll
deleted file mode 100644
index bc4ed78..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vcvt.u32.f64.ll
+++ /dev/null
@@ -1,36 +0,0 @@
-; Show that we know how to translate converting double to unsigned integer.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   --reg-use=s20 | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --reg-use=s20  | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   --reg-use=s20 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --reg-use=s20 | FileCheck %s --check-prefix=DIS
-
-define internal i32 @DoubleToUnsignedInt() {
-; ASM-LABEL: DoubleToUnsignedInt:
-; DIS-LABEL: 00000000 <DoubleToUnsignedInt>:
-
-entry:
-; ASM: .LDoubleToUnsignedInt$entry:
-
-  %v = fptoui double 0.0 to i32
-
-; ASM:  vcvt.u32.f64    s20, d0
-; DIS:    c:    eebcabc0
-; IASM-NOT: vcvt
-
-  ret i32 %v
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vcvt_f32_f64.ll b/third_party/subzero/tests_lit/assembler/arm32/vcvt_f32_f64.ll
deleted file mode 100644
index e320588..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vcvt_f32_f64.ll
+++ /dev/null
@@ -1,62 +0,0 @@
-; Show that we know how to translate vcvt between float and double.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal double @testVcvtFloatToDouble(float %v) {
-; ASM-LABEL: testVcvtFloatToDouble:
-; DIS-LABEL: 00000000 <testVcvtFloatToDouble>:
-; IASM-LABEL: testVcvtFloatToDouble:
-
-entry:
-; ASM-NEXT: .LtestVcvtFloatToDouble$entry:
-; IASM-NEXT: .LtestVcvtFloatToDouble$entry:
-
-  %res = fpext float %v to double
-
-; ASM-NEXT:    vcvt.f64.f32    d0, s0
-; DIS-NEXT:    0:	eeb70ac0
-; IASM-NEXT: 	.byte 0xc0
-; IASM-NEXT: 	.byte 0xa
-; IASM-NEXT: 	.byte 0xb7
-; IASM-NEXT: 	.byte 0xee
-
-  ret double %res
-}
-
-define internal float @testVcvtDoubleToFloat(double %v) {
-; ASM-LABEL: testVcvtDoubleToFloat:
-; DIS-LABEL: 00000010 <testVcvtDoubleToFloat>:
-; IASM-LABEL: testVcvtDoubleToFloat:
-
-entry:
-; ASM-NEXT: .LtestVcvtDoubleToFloat$entry:
-; IASM-NEXT: .LtestVcvtDoubleToFloat$entry:
-
-  %res = fptrunc double %v to float
-; ASM-NEXT:    vcvt.f32.f64    s0, d0
-; DIS-NEXT:   10:	eeb70bc0
-; IASM-NEXT: 	.byte 0xc0
-; IASM-NEXT: 	.byte 0xb
-; IASM-NEXT: 	.byte 0xb7
-; IASM-NEXT: 	.byte 0xee
-
-  ret float %res
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vdiv.ll b/third_party/subzero/tests_lit/assembler/arm32/vdiv.ll
deleted file mode 100644
index 774d183..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vdiv.ll
+++ /dev/null
@@ -1,63 +0,0 @@
-; Show that we know how to translate vdiv.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal float @testVdivFloat(float %v1, float %v2) {
-; ASM-LABEL: testVdivFloat:
-; DIS-LABEL: 00000000 <testVdivFloat>:
-; IASM-LABEL: testVdivFloat:
-
-entry:
-; ASM-NEXT: .LtestVdivFloat$entry:
-; IASM-NEXT: .LtestVdivFloat$entry:
-
-  %res = fdiv float %v1, %v2
-
-; ASM-NEXT:     vdiv.f32        s0, s0, s1
-; DIS-NEXT:    0:       ee800a20
-; IASM-NEXT:    .byte 0x20
-; IASM-NEXT:    .byte 0xa
-; IASM-NEXT:    .byte 0x80
-; IASM-NEXT:    .byte 0xee
-
-  ret float %res
-}
-
-define internal double @testVdivDouble(double %v1, double %v2) {
-; ASM-LABEL: testVdivDouble:
-; DIS-LABEL: 00000010 <testVdivDouble>:
-; IASM-LABEL: testVdivDouble:
-
-entry:
-; ASM-NEXT: .LtestVdivDouble$entry:
-; IASM-NEXT: .LtestVdivDouble$entry:
-
-  %res = fdiv double %v1, %v2
-
-; ASM-NEXT:     vdiv.f64        d0, d0, d1
-; DIS-NEXT:   10:       ee800b01
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0xb
-; IASM-NEXT:    .byte 0x80
-; IASM-NEXT:    .byte 0xee
-
-  ret double %res
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vec-move.ll b/third_party/subzero/tests_lit/assembler/arm32/vec-move.ll
deleted file mode 100644
index df8d906..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vec-move.ll
+++ /dev/null
@@ -1,41 +0,0 @@
-; Test that we handle a vector move.
-
-; NOTE: We use -O2 to force a vector move for the return value.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-
-define internal <4 x float> @testMoveVector(<4 x i32> %a, <4 x i32> %b) {
-; ASM-LABEL: testMoveVector:
-; DIS-LABEL:{{.+}} <testMoveVector>:
-; IASM-LABEL: testMoveVector:
-
-entry:
-  %0 = bitcast <4 x i32> %b to <4 x float>
-  ret <4 x float> %0
-
-; ASM:  vmov.f32        q0, q1
-; The integrated assembler emits a vorr instead of a vmov.
-; DIS:  0:     f2220152
-; IASM-NOT: vmov.f32    q0, q1
-; IASM-NOT: vorr        q0, q1, q1
-
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vec-sh-imm.ll b/third_party/subzero/tests_lit/assembler/arm32/vec-sh-imm.ll
deleted file mode 100644
index c2c5ebc..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vec-sh-imm.ll
+++ /dev/null
@@ -1,71 +0,0 @@
-; Show that we know how to translate vshl and vshr with immediate shift amounts.
-; We abuse sign extension of vectors of i1 because that's the only way to force
-; Subzero to emit these instructions.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal <4 x i32> @SextV4I1(<4 x i32> %a) {
-; ASM-LABEL:SextV4I1
-; DIS-LABEL:00000000 <SextV4I1>:
-; IASM-LABEL:SextV4I1:
-
-  %trunc = trunc <4 x i32> %a to <4 x i1>
-  %sext = sext <4 x i1> %trunc to <4 x i32>
-  ret <4 x i32> %sext
-; ASM:         vshl.u32 {{.*}}, #31
-; ASM-NEXT:    vshr.s32 {{.*}}, #31
-; DIS:      0: f2bf0550
-; DIS-NEXT: 4: f2a10050
-; IASM-NOT:    vshl
-; IASM-NOT:    vshr
-}
-
-define internal <8 x i16> @SextV8I1(<8 x i16> %a) {
-; ASM-LABEL:SextV8I1
-; DIS-LABEL:00000010 <SextV8I1>:
-; IASM-LABEL:SextV8I1:
-
-  %trunc = trunc <8 x i16> %a to <8 x i1>
-  %sext = sext <8 x i1> %trunc to <8 x i16>
-  ret <8 x i16> %sext
-; ASM:          vshl.u16 {{.*}}, #15
-; ASM-NEXT:     vshr.s16 {{.*}}, #15
-; DIS:      10: f29f0550
-; DIS-NEXT: 14: f2910050
-; IASM-NOT:     vshl
-; IASM-NOT:     vshr
-}
-
-define internal <16 x i8> @SextV16I1(<16 x i8> %a) {
-; ASM-LABEL:SextV16I1
-; DIS-LABEL:00000020 <SextV16I1>:
-; IASM-LABEL:SextV16I1:
-
-  %trunc = trunc <16 x i8> %a to <16 x i1>
-  %sext = sext <16 x i1> %trunc to <16 x i8>
-  ret <16 x i8> %sext
-; ASM:          vshl.u8 {{.*}}, #7
-; ASM-NEXT:     vshr.s8 {{.*}}, #7
-; DIS:      20: f28f0550
-; DIS-NEXT: 24: f2890050
-; IASM-NOT:     vshl
-; IASM-NOT:     vshr
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/veor.ll b/third_party/subzero/tests_lit/assembler/arm32/veor.ll
deleted file mode 100644
index 8b138a1..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/veor.ll
+++ /dev/null
@@ -1,37 +0,0 @@
-; Show that we know how to translate veor. Does this by noting that
-; loading a double 0.0 introduces a veor.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal double @testVeor() {
-; ASM-LABEL: testVeor:
-; DIS: 00000000 <testVeor>:
-
-entry:
-; ASM: .LtestVeor$entry:
-
-  ret double 0.0
-
-; ASM:  veor.f64        d0, d0, d0
-; DIS:    0:    f3000110
-; IASM-NOT: veor
-
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vldr-vector.ll b/third_party/subzero/tests_lit/assembler/arm32/vldr-vector.ll
deleted file mode 100644
index 60ebf05..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vldr-vector.ll
+++ /dev/null
@@ -1,84 +0,0 @@
-; Show that we know how to translate vector load instructions.
-
-; Note: Uses -O2 to remove unnecessary loads/stores, resulting in only one VLD1
-; instruction per function.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   -reg-use=q11,r5 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   -reg-use=q11,r5 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   -reg-use=q11,r5 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   -reg-use=q11,r5 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal <4 x float> @testDerefFloat4(<4 x float> *%p) {
-; ASM-LABEL: testDerefFloat4:
-; DIS-LABEL: {{.+}} <testDerefFloat4>:
-; IASM-LABEL: testDerefFloat4:
-
-entry:
-  %ret = load <4 x float>, <4 x float>* %p, align 4
-; ASM:   vld1.32        q11, [r5]
-; DIS:   {{.*}}:        f4656a8f
-; IASM-NOT:  vld1.32
-
-  ret <4 x float> %ret
-}
-
-define internal <4 x i32> @testDeref4i32(<4 x i32> *%p) {
-; ASM-LABEL: testDeref4i32:
-; DIS-LABEL: {{.+}} <testDeref4i32>:
-; IASM-LABEL: testDeref4i32:
-
-entry:
-  %ret = load <4 x i32>, <4 x i32>* %p, align 4
-; ASM:   vld1.32        q11, [r5]
-; DIS:   {{.+}}:        f4656a8f
-; IASM-NOT:  vld1.32
-
-  ret <4 x i32> %ret
-}
-
-define internal <8 x i16> @testDeref8i16(<8 x i16> *%p) {
-; ASM-LABEL: testDeref8i16:
-; DIS-LABEL: {{.+}} <testDeref8i16>:
-; IASM-LABEL: testDeref8i16:
-
-entry:
-  %ret = load <8 x i16>, <8 x i16>* %p, align 2
-; ASM:   vld1.16        q11, [r5]
-; DIS:   {{.+}}:        f4656a4f
-; IASM-NOT:  vld1.16
-
-  ret <8 x i16> %ret
-}
-
-define internal <16 x i8> @testDeref16i8(<16 x i8> *%p) {
-; ASM-LABEL: testDeref16i8:
-; DIS-LABEL: {{.+}} <testDeref16i8>:
-; IASM-LABEL: testDeref16i8:
-
-entry:
-  %ret = load <16 x i8>, <16 x i8>* %p, align 1
-; ASM:   vld1.8         q11, [r5]
-; DIS:   {{.+}}:        f4656a0f
-; IASM-NOT:  vld1.8
-
-  ret <16 x i8> %ret
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vldr.ll b/third_party/subzero/tests_lit/assembler/arm32/vldr.ll
deleted file mode 100644
index f71cf37..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vldr.ll
+++ /dev/null
@@ -1,60 +0,0 @@
-; Show that we know how to translate (floating point) vldr.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   -reg-use r5,s20,d20 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   -reg-use r5,s20,d20 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   -reg-use r5,s20,d20 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   -reg-use r5,s20,d20 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal float @testFloat() {
-; ASM-LABEL: testFloat:
-; DIS-LABEL: 00000000 <testFloat>:
-
-entry:
-; ASM: .LtestFloat$entry:
-
-  %vaddr = inttoptr i32 0 to float*
-  %v = load float, float* %vaddr, align 1
-
-; ASM:  vldr    s20, [r5]
-; DIS:   c:    ed95aa00
-; IASM-NOT: vldr
-
-  ret float %v
-}
-
-define internal double @testDouble() {
-; ASM-LABEL: testDouble:
-; DIS-LABEL: 00000020 <testDouble>:
-
-entry:
-; ASM: .LtestDouble$entry:
-
-;  %vaddr = bitcast [8 x i8]* @doubleVal to double*
-  %vaddr = inttoptr i32 0 to double*
-  %v = load double, double* %vaddr, align 1
-
-; ASM:  vldr    d20, [r5]
-; DIS:   28:    edd54b00
-; IASM-NOT: vldr
-
-  ret double %v
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vldr.vstr.imm.ll b/third_party/subzero/tests_lit/assembler/arm32/vldr.vstr.imm.ll
deleted file mode 100644
index 053dae8..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vldr.vstr.imm.ll
+++ /dev/null
@@ -1,69 +0,0 @@
-; Test vldr{s,d} and vstr{s,d} when address is offset with an immediate.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   -reg-use d20 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   -reg-use d20 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   -reg-use d20 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   -reg-use d20 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal i32 @testFloatImm(float %f) {
-; ASM-LABEL: testFloatImm:
-; DIS-LABEL: 00000000 <testFloatImm>:
-; IASM-LABEL: testFloatImm:
-
-entry:
-; ASM: .LtestFloatImm$entry:
-; IASM: .LtestFloatImm$entry:
-
-; ASM:  vstr    s0, [sp, #4]
-; DIS:    4:    ed8d0a01
-; IASM-NOT: vstr
-
-  %v = bitcast float %f to i32
-
-; ASM:  vldr    s0, [sp, #4]
-; DIS:    8:    ed9d0a01
-; IASM-NOT: vldr
-
-  ret i32 %v
-}
-
-define internal i64 @testDoubleImm(double %d) {
-; ASM-LABEL: testDoubleImm:
-; DIS-LABEL: 00000020 <testDoubleImm>:
-; IASM-LABEL: testDoubleImm:
-
-entry:
-; ASM: .LtestDoubleImm$entry:
-; IASM: .LtestDoubleImm$entry:
-
-; ASM:  vstr    d0, [sp, #8]
-; DIS:   24:    ed8d0b02
-; IASM-NOT: vstr
-
-  %v = bitcast double %d to i64
-
-; ASM:  vldr    d20, [sp, #8]
-; DIS:   28:    eddd4b02
-; IASM-NOT: vldr
-
-  ret i64 %v
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vmla.ll b/third_party/subzero/tests_lit/assembler/arm32/vmla.ll
deleted file mode 100644
index 04797ee..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vmla.ll
+++ /dev/null
@@ -1,56 +0,0 @@
-; Show that we can take advantage of the vmla instruction for floating point
-; operations during optimization.
-
-; Note that we use -O2 to force the result of the fmul to be (immediately)
-; available for the fadd. When using -Om1, the merge of fmul and fadd does not
-; happen due to intervening register spill code.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   -reg-use=s20,s21,s22,d20,d21,d22 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 -reg-use=s20,s21,s22,d20,d21,d22 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   -reg-use=s20,s21,s22,d20,d21,d22 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 -reg-use=s20,s21,s22,d20,d21,d22 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal float @mulAddFloat(float %f1, float %f2) {
-; ASM-LABEL: mulAddFloat:
-; DIS-LABEL: 00000000 <mulAddFloat>:
-
-  %v1 = fmul float %f1, 1.5
-  %v2 = fadd float %f2, %v1
-
-; ASM:  vmla.f32        s21, s20, s22
-; DIS:   10:    ee4aaa0b
-; IASM-NOT: vmla
-
-  ret float %v2
-}
-
-define internal double @mulAddDouble(double %f1, double %f2) {
-; ASM-LABEL: mulAddDouble:
-; DIS-LABEL: 00000020 <mulAddDouble>:
-
-  %v1 = fmul double %f1, 1.5
-  %v2 = fadd double %f2, %v1
-
-; ASM:  vmla.f64        d21, d20, d22
-; DIS:   2c:    ee445ba6
-; IASM-NOT: vmla
-
-  ret double %v2
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vmls.ll b/third_party/subzero/tests_lit/assembler/arm32/vmls.ll
deleted file mode 100644
index d1243cc..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vmls.ll
+++ /dev/null
@@ -1,56 +0,0 @@
-; Show that we can take advantage of the vmls instruction for floating point
-; operations during optimization.
-
-; Note that we use -O2 to force the result of the fmul to be
-; (immediately) available for the fsub. When using -Om1, the merge of
-; fmul and fsub does not happen.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   -reg-use=s20,s21,s22,d20,d21,d22 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 -reg-use=s20,s21,s22,d20,d21,d22 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   -reg-use=s20,s21,s22,d20,d21,d22 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 -reg-use=s20,s21,s22,d20,d21,d22 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal float @mulSubFloat(float %f1, float %f2) {
-; ASM-LABEL: mulSubFloat:
-; DIS-LABEL: 00000000 <mulSubFloat>:
-
-  %v1 = fmul float %f1, 1.5
-  %v2 = fsub float %f2, %v1
-
-; ASM:  vmls.f32        s21, s20, s22
-; DIS:   10:    ee4aaa4b
-; IASM-NOT: vmls.f32
-
-  ret float %v2
-}
-
-define internal double @mulSubDouble(double %f1, double %f2) {
-; ASM-LABEL: mulSubDouble:
-; DIS-LABEL: 00000020 <mulSubDouble>:
-
-  %v1 = fmul double %f1, 1.5
-  %v2 = fsub double %f2, %v1
-
-; ASM:  vmls.f64        d21, d20, d22
-; DIS:   2c:    ee445be6
-; IASM-NOT: vmls.f64
-
-  ret double %v2
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vmov-cast.ll b/third_party/subzero/tests_lit/assembler/arm32/vmov-cast.ll
deleted file mode 100644
index 2fa59d1..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vmov-cast.ll
+++ /dev/null
@@ -1,45 +0,0 @@
-; Show that we know how to translate vmov for casts.
-
-; NOTE: Restricts S register to one that will better test S register encodings.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   -reg-use s20,s22,d20,d22 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   -reg-use s20,s22,d20,d22 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   -reg-use s20,s22,d20,d22 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   -reg-use s20,s22,d20,d22 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal float @castToFloat(i32 %a) {
-; ASM-LABEL: castToFloat:
-; DIS-LABEL: 00000000 <castToFloat>:
-; IASM-LABEL: castToFloat:
-
-entry:
-; ASM: .LcastToFloat$entry:
-; IASM: .LcastToFloat$entry:
-
-  %0 = bitcast i32 %a to float
-
-; ASM:          vmov    s20, r0
-; DIS:  10:     ee0a0a10
-; IASM-NOT:     vmov
-
-  ret float %0
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vmov-dbl.ll b/third_party/subzero/tests_lit/assembler/arm32/vmov-dbl.ll
deleted file mode 100644
index 4e86af9..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vmov-dbl.ll
+++ /dev/null
@@ -1,57 +0,0 @@
-; Show that we can generate vmov for bitcasts between i64 and double.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   -allow-extern -reg-use r5,r10,d20 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   -allow-extern -reg-use r5,r10,d20 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   -allow-extern -reg-use r5,r10,d20 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   -allow-extern -reg-use r5,r10,d20 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal i64 @convertDoubleToI64(double %d) {
-; ASM-LABEL: convertDoubleToI64:
-; DIS-LABEL: {{.+}} <convertDoubleToI64>:
-
-  %v = bitcast double %d to i64
-
-; ASM:  vmov    r5, r10, d20
-; DIS:   {{.+}}:    ec5a5b34
-; IASM-NOT: vmov
-
-  ret i64 %v
-}
-
-define internal double @convertI64ToDouble(i64 %i) {
-; ASM-LABEL: convertI64ToDouble:
-; DIS-LABEL: {{.+}} <convertI64ToDouble>:
-
-  %v = bitcast i64 %i to double
-
-; ASM:  vmov    d20, r5, r10
-; DIS:   {{.+}}:    ec4a5b34
-; IASM-NOT: vmov
-
-  ; Note: This call is added to allow %v to be put into d20 (instead of
-  ; return register d0).
-  call void @ignore(double %v)
-
-  ret double %v
-}
-
-declare external void @ignore(double)
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vmov-f2i.ll b/third_party/subzero/tests_lit/assembler/arm32/vmov-f2i.ll
deleted file mode 100644
index c8b8504..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vmov-f2i.ll
+++ /dev/null
@@ -1,124 +0,0 @@
-; Show that we can move between float (S) and integer (GPR) registers.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   --reg-use=s20,r5,r6 | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --reg-use=s20,r5,r6  | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   --reg-use=s20,r5,r6 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 --reg-use=s20,r5,r6 | FileCheck %s --check-prefix=DIS
-
-define internal void @FloatToI1() {
-; ASM-LABEL: FloatToI1:
-; DIS-LABEL: {{.+}} <FloatToI1>:
-
-  %v = fptoui float 0.0 to i1
-
-; ASM:  vmov    r5, s20
-; DIS:   {{.+}}:   ee1a5a10
-; IASM-NOT: vmov
-
-  ret void
-}
-
-define internal void @FloatToI8() {
-; ASM-LABEL: FloatToI8:
-; DIS-LABEL: {{.+}} <FloatToI8>:
-
-  %v = fptoui float 0.0 to i8
-
-; ASM:  vmov    r5, s20
-; DIS:   {{.+}}:   ee1a5a10
-; IASM-NOT: vmov
-
-  ret void
-}
-
-define internal void @FloatToI16() {
-; ASM-LABEL: FloatToI16:
-; DIS-LABEL: {{.+}} <FloatToI16>:
-
-  %v = fptoui float 0.0 to i16
-
-; ASM:  vmov    r5, s20
-; DIS:   {{.+}}:   ee1a5a10
-; IASM-NOT: vmov
-
-  ret void
-}
-
-define internal void @FloatToI32() {
-; ASM-LABEL: FloatToI32:
-; DIS-LABEL: {{.+}} <FloatToI32>:
-
-  %v = fptoui float 0.0 to i32
-
-; ASM:  vmov    r5, s20
-; DIS:   {{.+}}:   ee1a5a10
-; IASM-NOT: vmov
-
-  ret void
-}
-
-define internal float @I1ToFloat() {
-; ASM-LABEL: I1ToFloat:
-; DIS-LABEL: {{.+}} <I1ToFloat>:
-
-  %v = uitofp i1 1 to float
-
-; ASM:  vmov    s20, r5
-; DIS:  {{.+}}:   ee0a5a10
-; IASM-NOT: vmov
-
-  ret float %v
-}
-
-define internal float @I8ToFloat() {
-; ASM-LABEL: I8ToFloat:
-; DIS-LABEL: {{.+}} <I8ToFloat>:
-
-  %v = uitofp i8 1 to float
-
-; ASM:  vmov    s20, r5
-; DIS:  {{.+}}:   ee0a5a10
-; IASM-NOT: vmov
-
-  ret float %v
-}
-
-define internal float @I16ToFloat() {
-; ASM-LABEL: I16ToFloat:
-; DIS-LABEL: {{.+}} <I16ToFloat>:
-
-  %v = uitofp i16 1 to float
-
-; ASM:  vmov    s20, r5
-; DIS:  {{.+}}:   ee0a5a10
-; IASM-NOT: vmov
-
-  ret float %v
-}
-
-define internal float @I32ToFloat() {
-; ASM-LABEL: I32ToFloat:
-; DIS-LABEL: {{.+}} <I32ToFloat>:
-
-  %v = uitofp i32 17 to float
-
-; ASM:  vmov    s20, r5
-; DIS:  {{.+}}:   ee0a5a10
-; IASM-NOT: vmov
-
-  ret float %v
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vmov-fp.ll b/third_party/subzero/tests_lit/assembler/arm32/vmov-fp.ll
deleted file mode 100644
index 277632a..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vmov-fp.ll
+++ /dev/null
@@ -1,57 +0,0 @@
-; Show that we know how to move between floating point registers.
-
-; NOTE: We use the select instruction to fire this in -Om1, since a
-; vmovne is generated (after a branch) to (conditionally) assign the
-; else value.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   -reg-use s20,s22,d20,d22 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   -reg-use s20,s22,d20,d22 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   -reg-use s20,s22,d20,d22 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   -reg-use s20,s22,d20,d22 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal float @moveFloat() {
-; ASM-LABEL: moveFloat:
-; DIS-LABEL: 00000000 <moveFloat>:
-; IASM-LABEL: moveFloat:
-
-  %v = select i1 true, float 0.5, float 1.5
-
-; ASM:  vmovne.f32      s20, s22
-; DIS:   1c:    1eb0aa4b
-; IASM-NOT: vmovnew.f32
-
-  ret float %v
-}
-
-define internal double @moveDouble() {
-; ASM-LABEL: moveDouble:
-; DIS-LABEL: 00000040 <moveDouble>:
-; IASM-LABEL: moveDouble:
-
-  %v = select i1 true, double 0.5, double 1.5
-
-; ASM:  vmovne.f64      d20, d22
-; DIS:   54:    1ef04b66
-; IASM-NOT: vmovne.f64
-
-  ret double %v
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vmov-imm.ll b/third_party/subzero/tests_lit/assembler/arm32/vmov-imm.ll
deleted file mode 100644
index 9e3c80e..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vmov-imm.ll
+++ /dev/null
@@ -1,50 +0,0 @@
-; Test moving constants into VPF registers.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 -reg-use=d21,s20 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 -reg-use=d21,s20 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 -reg-use=d21,s20 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 -reg-use=d21,s20 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal void @testMoveDouble() {
-; ASM-LABEL: testMoveDouble:
-; DIS-LABEL: 00000000 <testMoveDouble>:
-
-entry:
-  store double 1.5, double* undef, align 8
-
-; ASM:  vmov.f64        d21, #1.500000e+00
-; DIS:    4:    eef75b08
-; IASM-NOT: vmov.f64
-
-  ret void
-}
-
-define internal void @testMoveFloat() {
-; ASM-LABEL: testMoveFloat:
-; DIS-LABEL: 00000010 <testMoveFloat>:
-
-entry:
-  %addr = inttoptr i32 0 to float*
-  store float 1.5, float* %addr, align 4
-
-; ASM:  vmov.f32        s20, #1.500000e+00
-; DIS:   18:    eeb7aa08
-; IASM-NOT: vmov.f32
-
-  ret void
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vmrs.ll b/third_party/subzero/tests_lit/assembler/arm32/vmrs.ll
deleted file mode 100644
index f635389..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vmrs.ll
+++ /dev/null
@@ -1,38 +0,0 @@
-; Test the "vmrs APSR_nzcv, FPSCR" form of the VMRS instruction.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal i32 @testVmrsASPR_nzcv() {
-; ASM-LABEL: testVmrsASPR_nzcv:
-; DIS-LABEL: 00000000 <testVmrsASPR_nzcv>:
-
-entry:
-; ASM: .LtestVmrsASPR_nzcv$entry:
-
-  %test = fcmp olt float 0.0, 0.0
-
-; ASM:  vmrs    APSR_nzcv, FPSCR
-; DIS:   14:    eef1fa10
-; IASM-NOT: vmrs
-
-  %result = zext i1 %test to i32
-  ret i32 %result
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vmul.ll b/third_party/subzero/tests_lit/assembler/arm32/vmul.ll
deleted file mode 100644
index 7d53279..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vmul.ll
+++ /dev/null
@@ -1,63 +0,0 @@
-; Show that we know how to translate vmul.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal float @testVmulFloat(float %a, float %b) {
-; ASM-LABEL: testVmulFloat:
-; DIS-LABEL: 00000000 <testVmulFloat>:
-; IASM-LABEL: testVmulFloat:
-
-entry:
-; ASM-NEXT: .LtestVmulFloat$entry:
-; IASM-NEXT: .LtestVmulFloat$entry:
-
-  %mul = fmul float %a, %b
-
-; ASM-NEXT:    vmul.f32        s0, s0, s1
-; DIS-NEXT:    0:       ee200a20
-; IASM-NEXT:    .byte 0x20
-; IASM-NEXT:    .byte 0xa
-; IASM-NEXT:    .byte 0x20
-; IASM-NEXT:    .byte 0xee
-
-  ret float %mul
-}
-
-define internal double @testVmulDouble(double %a, double %b) {
-; ASM-LABEL: testVmulDouble:
-; DIS-LABEL: 00000010 <testVmulDouble>:
-; IASM-LABEL: testVmulDouble:
-
-entry:
-; ASM-NEXT: .LtestVmulDouble$entry:
-; IASM-NEXT: .LtestVmulDouble$entry:
-
-  %mul = fmul double %a, %b
-
-; ASM-NEXT:    vmul.f64        d0, d0, d1
-; DIS-NEXT:   10:       ee200b01
-; IASM-NEXT:    .byte 0x1
-; IASM-NEXT:    .byte 0xb
-; IASM-NEXT:    .byte 0x20
-; IASM-NEXT:    .byte 0xee
-
-  ret double %mul
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vpush.ll b/third_party/subzero/tests_lit/assembler/arm32/vpush.ll
deleted file mode 100644
index 1aa9c7a..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vpush.ll
+++ /dev/null
@@ -1,47 +0,0 @@
-; Show that we know how to translate vpush and vpop.
-
-; NOTE: We use -O2 because vpush/vpop only occur if optimized. Uses
-; simple call with double parameters to cause the insertion of
-; vpush/vpop.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 -reg-use=d9,d10 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 -reg-use=d9,d10 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 -reg-use=d9,d10 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 -reg-use=d9,d10 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal double @testVpushVpop(double %v1, double %v2) {
-; ASM-LABEL: testVpushVpop:
-; DIS-LABEL: 00000000 <testVpushVpop>:
-
-; ASM:  vpush   {s18, s19, s20, s21}
-; DIS:    0:    ed2d9a04
-; IASM-NOT: vpush
-
-  call void @foo()
-  %res = fadd double %v1, %v2
-  ret double %res
-
-; ASM:  vpop    {s18, s19, s20, s21}
-; DIS:   28:       ecbd9a04
-; IASM-NOT: vpopd
-
-}
-
-define internal void @foo() {
-  ret void
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vsqrt.ll b/third_party/subzero/tests_lit/assembler/arm32/vsqrt.ll
deleted file mode 100644
index a9408d2..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vsqrt.ll
+++ /dev/null
@@ -1,52 +0,0 @@
-; Show that we can translate intrinsic vsqrt into a binary instruction.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 -allow-extern \
-; RUN:   -reg-use s20,d20 | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 -allow-extern -reg-use s20,d20 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 -allow-extern \
-; RUN:   -reg-use s20,d20 | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -Om1 -allow-extern -reg-use s20,d20 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-declare float @llvm.sqrt.f32(float)
-declare double @llvm.sqrt.f64(double)
-
-define internal float @sqrtFloat() {
-; ASM-LABEL: sqrtFloat:
-; DIS-LABEL: 00000000 <sqrtFloat>:
-; IASM-LABEL: sqrtFloat:
-
-  %v = call float @llvm.sqrt.f32(float 0.5);
-
-; ASM:  vsqrt.f32       s20, s20
-; DIS:    c:    eeb1aaca
-; IASM-NOT: vsqrt.f32
-
-  ret float %v
-}
-
-define internal double @sqrtDouble() {
-; ASM-LABEL: sqrtDouble:
-; DIS-LABEL: 00000030 <sqrtDouble>:
-; IASM-LABEL: sqrtDouble:
-
-  %v = call double @llvm.sqrt.f64(double 0.5);
-
-; ASM:  vsqrt.f64       d20, d20
-; DIS:   38:    eef14be4
-; IASM-NOT: vsqrt.f64
-
-  ret double %v
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vstr-vector.ll b/third_party/subzero/tests_lit/assembler/arm32/vstr-vector.ll
deleted file mode 100644
index ea810bc..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vstr-vector.ll
+++ /dev/null
@@ -1,78 +0,0 @@
-; Show that we know how to translate vector store instructions.
-
-; Note: Uses -O2 to remove unnecessary loads/stores, resulting in only one VST1
-; instruction per function.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   -reg-use=q11,r5 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   -reg-use=q11,r5 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   -reg-use=q11,r5 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   -reg-use=q11,r5 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal void @testDerefFloat4(<4 x float>* %p, <4 x float> %v) {
-; ASM-LABEL: testDerefFloat4:
-; DIS-LABEL: {{.+}} <testDerefFloat4>:
-
-entry:
-  store <4 x float> %v, <4 x float>* %p, align 4
-; ASM:    vst1.32   q11, [r5]
-; DIS:    {{.+}}:   f4456a8f
-; IASM-NOT:   vst1.32
-
-  ret void
-}
-
-define internal void @testDeref4i32(<4 x i32> *%p, <4 x i32> %v) {
-; ASM-LABEL: testDeref4i32:
-; DIS-LABEL: {{.+}} <testDeref4i32>:
-
-entry:
-  store <4 x i32> %v, <4 x i32>* %p, align 4
-; ASM:   vst1.32  q11, [r5]
-; DIS:   {{.+}}:  f4456a8f
-; IASM-NOT:   vst1.32
-
-  ret void
-}
-
-define internal void @testDeref8i16(<8 x i16> *%p, <8 x i16> %v) {
-; ASM-LABEl: testDeref8i16:
-; DIS-LABEL: {{.+}} <testDeref8i16>:
-
-  store <8 x i16> %v, <8 x i16>* %p, align 2
-; ASM:   vst1.16  q11, [r5]
-; DIS:   {{.+}}:  f4456a4f
-; IASM-NOT:   vst1.16
-
-  ret void
-}
-
-define internal void @testDeref16i8(<16 x i8> *%p, <16 x i8> %v) {
-; ASM-LABEL: testDeref16i8:
-; DIS-LABEL: {{.+}} <testDeref16i8>:
-
-  store <16 x i8> %v, <16 x i8>* %p, align 1
-; ASM:   vst1.8   q11, [r5]
-; DIS:   {{.+}}:  f4456a0f
-; IASM-NOT:   vst1.8
-
-  ret void
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vstr.ll b/third_party/subzero/tests_lit/assembler/arm32/vstr.ll
deleted file mode 100644
index df6f397..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vstr.ll
+++ /dev/null
@@ -1,61 +0,0 @@
-; Show that we know how to translate (floating point) vstr.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   -reg-use r5,r6,s20,d20 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   -reg-use r5,r6,s20,d20 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   -reg-use r5,r6,s20,d20 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   -reg-use r5,r6,s20,d20 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal void @testFloat() {
-; ASM-LABEL: testFloat:
-; DIS-LABEL: 00000000 <testFloat>:
-; IASM-LABEL: testFloat:
-
-entry:
-; ASM: .LtestFloat$entry:
-
-  %vaddr = inttoptr i32 0 to float*
-  store float 0.0, float* %vaddr, align 1
-
-; ASM:  vstr    s20, [r5]
-; DIS:  14:     ed96aa00
-; IASM-NOT: vstr
-
-  ret void
-}
-
-define internal void @testDouble() {
-; ASM-LABEL: testDouble:
-; DIS-LABEL: 00000030 <testDouble>:
-; IASM-LABEL: testDouble:
-
-entry:
-; ASM: .LtestDouble$entry:
-
-  %vaddr = inttoptr i32 0 to double*
-  store double 0.0, double* %vaddr, align 1
-
-; ASM:  vstr    d20, [r5]
-; DIS:  3c:     edc54b00
-; IASM-NOT: vstr
-
-  ret void
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/vsub.ll b/third_party/subzero/tests_lit/assembler/arm32/vsub.ll
deleted file mode 100644
index dc70726..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/vsub.ll
+++ /dev/null
@@ -1,63 +0,0 @@
-; Show that we know how to translate vsub.
-
-; NOTE: We use -O2 to get rid of memory stores.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
-
-define internal float @testVsubFloat(float %v1, float %v2) {
-; ASM-LABEL: testVsubFloat:
-; DIS-LABEL: 00000000 <testVsubFloat>:
-; IASM-LABEL: testVsubFloat:
-
-entry:
-; ASM-NEXT: .LtestVsubFloat$entry:
-; IASM-NEXT: .LtestVsubFloat$entry:
-
-  %res = fsub float %v1, %v2
-
-; ASM-NEXT:     vsub.f32        s0, s0, s1
-; DIS-NEXT:    0:       ee300a60
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0xa
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0xee
-
-  ret float %res
-}
-
-define internal double @testVsubDouble(double %v1, double %v2) {
-; ASM-LABEL: testVsubDouble:
-; DIS-LABEL: 00000010 <testVsubDouble>:
-; IASM-LABEL: testVsubDouble:
-
-entry:
-; ASM-NEXT: .LtestVsubDouble$entry:
-; IASM-NEXT: .LtestVsubDouble$entry:
-
-  %res = fsub double %v1, %v2
-
-; ASM-NEXT:     vsub.f64        d0, d0, d1
-; DIS-NEXT:   10:       ee300b41
-; IASM-NEXT: 	.byte 0x41
-; IASM-NEXT: 	.byte 0xb
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0xee
-
-  ret double %res
-}
diff --git a/third_party/subzero/tests_lit/assembler/arm32/xor-vec.ll b/third_party/subzero/tests_lit/assembler/arm32/xor-vec.ll
deleted file mode 100644
index eef201e..0000000
--- a/third_party/subzero/tests_lit/assembler/arm32/xor-vec.ll
+++ /dev/null
@@ -1,115 +0,0 @@
-; Show that we know how to translate veor vector instructions.
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
-; RUN:   --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal <4 x i32> @testVxor4i32(<4 x i32> %v1, <4 x i32> %v2) {
-; ASM-LABEL: testVxor4i32:
-; DIS-LABEL: 00000000 <testVxor4i32>:
-; IASM-LABEL: testVxor4i32:
-
-entry:
-  %res = xor <4 x i32> %v1, %v2
-
-; ASM:     veor.i32        q0, q0, q1
-; DIS:   0:       f3000152
-; IASM-NOT:     veor.i32
-
-  ret <4 x i32> %res
-}
-
-define internal <8 x i16> @testVxor8i16(<8 x i16> %v1, <8 x i16> %v2) {
-; ASM-LABEL: testVxor8i16:
-; DIS-LABEL: 00000010 <testVxor8i16>:
-; IASM-LABEL: testVxor8i16:
-
-entry:
-  %res = xor <8 x i16> %v1, %v2
-
-; ASM:     veor.i16        q0, q0, q1
-; DIS:   10:       f3000152
-; IASM-NOT:     veor.i16
-
-  ret <8 x i16> %res
-}
-
-define internal <16 x i8> @testVxor16i8(<16 x i8> %v1, <16 x i8> %v2) {
-; ASM-LABEL: testVxor16i8:
-; DIS-LABEL: 00000020 <testVxor16i8>:
-; IASM-LABEL: testVxor16i8:
-
-entry:
-  %res = xor <16 x i8> %v1, %v2
-
-; ASM:     veor.i8        q0, q0, q1
-; DIS:   20:       f3000152
-; IASM-NOT:     veor.i8
-
-  ret <16 x i8> %res
-}
-
-;;
-;; The following tests make sure logical xor works on predicate vectors.
-;;
-
-define internal <4 x i1> @testVxor4i1(<4 x i1> %v1, <4 x i1> %v2) {
-; ASM-LABEL: testVxor4i1:
-; DIS-LABEL: 00000030 <testVxor4i1>:
-; IASM-LABEL: testVxor4i1:
-
-entry:
-  %res = xor <4 x i1> %v1, %v2
-
-; ASM:     veor.i32        q0, q0, q1
-; DIS:   30:       f3000152
-; IASM-NOT:     veor.i32
-
-  ret <4 x i1> %res
-}
-
-define internal <8 x i1> @testVxor8i1(<8 x i1> %v1, <8 x i1> %v2) {
-; ASM-LABEL: testVxor8i1:
-; DIS-LABEL: 00000040 <testVxor8i1>:
-; IASM-LABEL: testVxor8i1:
-
-entry:
-  %res = xor <8 x i1> %v1, %v2
-
-; ASM:     veor.i16        q0, q0, q1
-; DIS:   40:       f3000152
-; IASM-NOT:     veor.i16
-
-  ret <8 x i1> %res
-}
-
-define internal <16 x i1> @testVxor16i1(<16 x i1> %v1, <16 x i1> %v2) {
-; ASM-LABEL: testVxor16i1:
-; DIS-LABEL: 00000050 <testVxor16i1>:
-; IASM-LABEL: testVxor16i1:
-
-entry:
-  %res = xor <16 x i1> %v1, %v2
-
-; ASM:     veor.i8        q0, q0, q1
-; DIS:   50:       f3000152
-; IASM-NOT:     veor.i8
-
-  ret <16 x i1> %res
-}
diff --git a/third_party/subzero/tests_lit/assembler/mips32/encoding_intrinsics.ll b/third_party/subzero/tests_lit/assembler/mips32/encoding_intrinsics.ll
deleted file mode 100644
index 7d18f3e..0000000
--- a/third_party/subzero/tests_lit/assembler/mips32/encoding_intrinsics.ll
+++ /dev/null
@@ -1,1091 +0,0 @@
-; Test encoding of MIPS32 instructions used in intrinsic calls
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=mips32 --args -O2 \
-; RUN:   --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=mips32 --assemble --disassemble \
-; RUN:   --args -O2 --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=mips32 --args -O2 \
-; RUN:   --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=mips32 --assemble --disassemble \
-; RUN:   --args -O2 --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-declare i16 @llvm.bswap.i16(i16)
-declare i32 @llvm.bswap.i32(i32)
-declare i64 @llvm.bswap.i64(i64)
-declare i32 @llvm.ctlz.i32(i32, i1)
-declare i64 @llvm.ctlz.i64(i64, i1)
-declare i32 @llvm.cttz.i32(i32, i1)
-declare i64 @llvm.cttz.i64(i64, i1)
-declare void @llvm.trap()
-
-define internal i32 @encBswap16(i32 %x) {
-entry:
-  %x_trunc = trunc i32 %x to i16
-  %r = call i16 @llvm.bswap.i16(i16 %x_trunc)
-  %r_zext = zext i16 %r to i32
-  ret i32 %r_zext
-}
-
-; ASM-LABEL: encBswap16
-; ASM-NEXT: .LencBswap16$entry:
-; ASM-NEXT: 	andi	$a0, $a0, 65535
-; ASM-NEXT: 	sll	$v0, $a0, 8
-; ASM-NEXT: 	lui	$v1, 255
-; ASM-NEXT: 	and	$v0, $v0, $v1
-; ASM-NEXT: 	sll	$a0, $a0, 24
-; ASM-NEXT: 	or	$v0, $a0, $v0
-; ASM-NEXT: 	srl	$v0, $v0, 16
-; ASM-NEXT: 	andi	$v0, $v0, 65535
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: <encBswap16>:
-; DIS-NEXT:  3084ffff 	andi	a0,a0,0xffff
-; DIS-NEXT:  00041200 	sll	v0,a0,0x8
-; DIS-NEXT:  3c0300ff 	lui	v1,0xff
-; DIS-NEXT:  00431024 	and	v0,v0,v1
-; DIS-NEXT:  00042600 	sll	a0,a0,0x18
-; DIS-NEXT:  00821025 	or	v0,a0,v0
-; DIS-NEXT:  00021402 	srl	v0,v0,0x10
-; DIS-NEXT:  3042ffff 	andi	v0,v0,0xffff
-; DIS-NEXT:  03e00008 	jr	ra
-
-; IASM-LABEL: encBswap16
-; IASM-NEXT: .LencBswap16$entry:
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0x84
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x12
-; IASM-NEXT: 	.byte 0x4
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x3c
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x43
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x26
-; IASM-NEXT: 	.byte 0x4
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x25
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x82
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x14
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @encBswap32(i32 %x) {
-entry:
-  %r = call i32 @llvm.bswap.i32(i32 %x)
-  ret i32 %r
-}
-
-; ASM-LABEL: encBswap32
-; ASM-NEXT: .LencBswap32$entry:
-; ASM-NEXT: 	srl	$v0, $a0, 24
-; ASM-NEXT: 	srl	$v1, $a0, 8
-; ASM-NEXT: 	andi	$v1, $v1, 65280
-; ASM-NEXT: 	or	$v0, $v1, $v0
-; ASM-NEXT: 	sll	$v1, $a0, 8
-; ASM-NEXT: 	lui	$a1, 255
-; ASM-NEXT: 	and	$v1, $v1, $a1
-; ASM-NEXT: 	sll	$a0, $a0, 24
-; ASM-NEXT: 	or	$v1, $a0, $v1
-; ASM-NEXT: 	or	$v1, $v1, $v0
-; ASM-NEXT: 	move	$v0, $v1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: <encBswap32>:
-; DIS-NEXT:  00041602 	srl	v0,a0,0x18
-; DIS-NEXT:  00041a02 	srl	v1,a0,0x8
-; DIS-NEXT:  3063ff00 	andi	v1,v1,0xff00
-; DIS-NEXT:  00621025 	or	v0,v1,v0
-; DIS-NEXT:  00041a00 	sll	v1,a0,0x8
-; DIS-NEXT:  3c0500ff 	lui	a1,0xff
-; DIS-NEXT:  00651824 	and	v1,v1,a1
-; DIS-NEXT:  00042600 	sll	a0,a0,0x18
-; DIS-NEXT:  00831825 	or	v1,a0,v1
-; DIS-NEXT:  00621825 	or	v1,v1,v0
-; DIS-NEXT:  00601021 	move	v0,v1
-; DIS-NEXT:  03e00008 	jr	ra
-
-; IASM-LABEL: encBswap32
-; IASM-NEXT: .LencBswap32$entry:
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x16
-; IASM-NEXT: 	.byte 0x4
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x1a
-; IASM-NEXT: 	.byte 0x4
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0x63
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x25
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x62
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1a
-; IASM-NEXT: 	.byte 0x4
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x5
-; IASM-NEXT: 	.byte 0x3c
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x18
-; IASM-NEXT: 	.byte 0x65
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x26
-; IASM-NEXT: 	.byte 0x4
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x25
-; IASM-NEXT: 	.byte 0x18
-; IASM-NEXT: 	.byte 0x83
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x25
-; IASM-NEXT: 	.byte 0x18
-; IASM-NEXT: 	.byte 0x62
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x21
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i64 @encBswap64(i64 %x) {
-entry:
-  %r = call i64 @llvm.bswap.i64(i64 %x)
-  ret i64 %r
-}
-
-; ASM-LABEL: encBswap64
-; ASM-NEXT: .LencBswap64$entry:
-; ASM-NEXT: 	sll	$v0, $a1, 8
-; ASM-NEXT: 	srl	$v1, $a1, 24
-; ASM-NEXT: 	srl	$a2, $a1, 8
-; ASM-NEXT: 	andi	$a2, $a2, 65280
-; ASM-NEXT: 	lui	$a3, 255
-; ASM-NEXT: 	or	$a2, $a2, $v1
-; ASM-NEXT: 	and	$v0, $v0, $a3
-; ASM-NEXT: 	sll	$a1, $a1, 24
-; ASM-NEXT: 	or	$a1, $a1, $v0
-; ASM-NEXT: 	srl	$v0, $a0, 24
-; ASM-NEXT: 	srl	$v1, $a0, 8
-; ASM-NEXT: 	andi	$v1, $v1, 65280
-; ASM-NEXT: 	or	$a1, $a1, $a2
-; ASM-NEXT: 	or	$v1, $v1, $v0
-; ASM-NEXT: 	sll	$v0, $a0, 8
-; ASM-NEXT: 	and	$v0, $v0, $a3
-; ASM-NEXT: 	sll	$a0, $a0, 24
-; ASM-NEXT: 	or	$a0, $a0, $v0
-; ASM-NEXT: 	or	$a0, $a0, $v1
-; ASM-NEXT: 	move	$v0, $a1
-; ASM-NEXT: 	move	$v1, $a0
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: <encBswap64>:
-; DIS-NEXT:  00051200 	sll	v0,a1,0x8
-; DIS-NEXT:  00051e02 	srl	v1,a1,0x18
-; DIS-NEXT:  00053202 	srl	a2,a1,0x8
-; DIS-NEXT:  30c6ff00 	andi	a2,a2,0xff00
-; DIS-NEXT:  3c0700ff 	lui	a3,0xff
-; DIS-NEXT:  00c33025 	or	a2,a2,v1
-; DIS-NEXT:  00471024 	and	v0,v0,a3
-; DIS-NEXT:  00052e00 	sll	a1,a1,0x18
-; DIS-NEXT:  00a22825 	or	a1,a1,v0
-; DIS-NEXT:  00041602 	srl	v0,a0,0x18
-; DIS-NEXT:  00041a02 	srl	v1,a0,0x8
-; DIS-NEXT:  3063ff00 	andi	v1,v1,0xff00
-; DIS-NEXT:  00a62825 	or	a1,a1,a2
-; DIS-NEXT:  00621825 	or	v1,v1,v0
-; DIS-NEXT:  00041200 	sll	v0,a0,0x8
-; DIS-NEXT:  00471024 	and	v0,v0,a3
-; DIS-NEXT:  00042600 	sll	a0,a0,0x18
-; DIS-NEXT:  00822025 	or	a0,a0,v0
-; DIS-NEXT:  00832025 	or	a0,a0,v1
-; DIS-NEXT:  00a01021 	move	v0,a1
-; DIS-NEXT:  00801821 	move	v1,a0
-; DIS-NEXT:  03e00008 	jr	ra
-
-
-; IASM-LABEL: encBswap64
-; IASM-NEXT: .LencBswap64$entry:
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x12
-; IASM-NEXT: 	.byte 0x5
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x1e
-; IASM-NEXT: 	.byte 0x5
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x32
-; IASM-NEXT: 	.byte 0x5
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0xc6
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x7
-; IASM-NEXT: 	.byte 0x3c
-; IASM-NEXT: 	.byte 0x25
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0xc3
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x47
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT:	.byte 0x5
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x25
-; IASM-NEXT: 	.byte 0x28
-; IASM-NEXT: 	.byte 0xa2
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x16
-; IASM-NEXT: 	.byte 0x4
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x1a
-; IASM-NEXT: 	.byte 0x4
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0x63
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x25
-; IASM-NEXT: 	.byte 0x28
-; IASM-NEXT: 	.byte 0xa6
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x25
-; IASM-NEXT: 	.byte 0x18
-; IASM-NEXT: 	.byte 0x62
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x12
-; IASM-NEXT: 	.byte 0x4
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x47
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x26
-; IASM-NEXT: 	.byte 0x4
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x25
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x82
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x25
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x83
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x21
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0xa0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x21
-; IASM-NEXT: 	.byte 0x18
-; IASM-NEXT: 	.byte 0x80
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i64 @encBswap64Undef() {
-entry:
-  %r = call i64 @llvm.bswap.i64(i64 undef)
-  ret i64 %r
-}
-
-; ASM-LABEL: encBswap64Undef
-; ASM-NEXT: .LencBswap64Undef$entry:
-; ASM-NEXT: 	# $zero = def.pseudo
-; ASM-NEXT: 	addiu	$v0, $zero, 0
-; ASM-NEXT: 	# $zero = def.pseudo
-; ASM-NEXT: 	addiu	$v1, $zero, 0
-; ASM-NEXT: 	sll	$a0, $v1, 8
-; ASM-NEXT: 	srl	$a1, $v1, 24
-; ASM-NEXT: 	srl	$a2, $v1, 8
-; ASM-NEXT: 	andi	$a2, $a2, 65280
-; ASM-NEXT: 	lui	$a3, 255
-; ASM-NEXT: 	or	$a2, $a2, $a1
-; ASM-NEXT: 	and	$a0, $a0, $a3
-; ASM-NEXT: 	sll	$v1, $v1, 24
-; ASM-NEXT: 	or	$v1, $v1, $a0
-; ASM-NEXT: 	srl	$a0, $v0, 24
-; ASM-NEXT: 	srl	$a1, $v0, 8
-; ASM-NEXT: 	andi	$a1, $a1, 65280
-; ASM-NEXT: 	or	$v1, $v1, $a2
-; ASM-NEXT: 	or	$a1, $a1, $a0
-; ASM-NEXT: 	sll	$a0, $v0, 8
-; ASM-NEXT: 	and	$a0, $a0, $a3
-; ASM-NEXT: 	sll	$v0, $v0, 24
-; ASM-NEXT: 	or	$v0, $v0, $a0
-; ASM-NEXT: 	or	$v0, $v0, $a1
-; ASM-NEXT: 	move	$a0, $v0
-; ASM-NEXT: 	move	$v0, $v1
-; ASM-NEXT: 	move	$v1, $a0
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: <encBswap64Undef>:
-; DIS-NEXT:  24020000 	li	v0,0
-; DIS-NEXT:  24030000 	li	v1,0
-; DIS-NEXT:  00032200 	sll	a0,v1,0x8
-; DIS-NEXT:  00032e02 	srl	a1,v1,0x18
-; DIS-NEXT:  00033202 	srl	a2,v1,0x8
-; DIS-NEXT:  30c6ff00 	andi	a2,a2,0xff00
-; DIS-NEXT:  3c0700ff 	lui	a3,0xff
-; DIS-NEXT:  00c53025 	or	a2,a2,a1
-; DIS-NEXT:  00872024 	and	a0,a0,a3
-; DIS-NEXT:  00031e00 	sll	v1,v1,0x18
-; DIS-NEXT:  00641825 	or	v1,v1,a0
-; DIS-NEXT:  00022602 	srl	a0,v0,0x18
-; DIS-NEXT:  00022a02 	srl	a1,v0,0x8
-; DIS-NEXT:  30a5ff00 	andi	a1,a1,0xff00
-; DIS-NEXT:  00661825 	or	v1,v1,a2
-; DIS-NEXT:  00a42825 	or	a1,a1,a0
-; DIS-NEXT:  00022200 	sll	a0,v0,0x8
-; DIS-NEXT:  00872024 	and	a0,a0,a3
-; DIS-NEXT:  00021600 	sll	v0,v0,0x18
-; DIS-NEXT:  00441025 	or	v0,v0,a0
-; DIS-NEXT:  00451025 	or	v0,v0,a1
-; DIS-NEXT:  00402021 	move	a0,v0
-; DIS-NEXT:  00601021 	move	v0,v1
-; DIS-NEXT:  00801821 	move	v1,a0
-; DIS-NEXT:  03e00008 	jr	ra
-
-; IASM-LABEL: encBswap64Undef
-; IASM-NEXT: .LencBswap64Undef$entry:
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x22
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x32
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0xc6
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x7
-; IASM-NEXT: 	.byte 0x3c
-; IASM-NEXT: 	.byte 0x25
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0xc5
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x87
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT:	.byte 0x1e
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x25
-; IASM-NEXT: 	.byte 0x18
-; IASM-NEXT: 	.byte 0x64
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x26
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x2a
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0xa5
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x25
-; IASM-NEXT: 	.byte 0x18
-; IASM-NEXT: 	.byte 0x66
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x25
-; IASM-NEXT: 	.byte 0x28
-; IASM-NEXT: 	.byte 0xa4
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x22
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x87
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x16
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x25
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x44
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x25
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x45
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x21
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x40
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x21
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT:	.byte 0x21
-; IASM-NEXT: 	.byte 0x18
-; IASM-NEXT: 	.byte 0x80
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @encCtlz32(i32 %x) {
-entry:
-  %r = call i32 @llvm.ctlz.i32(i32 %x, i1 false)
-  ret i32 %r
-}
-
-; ASM-LABEL: encCtlz32
-; ASM-NEXT: .LencCtlz32$entry:
-; ASM-NEXT: 	clz	$a0, $a0
-; ASM-NEXT: 	move	$v0, $a0
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: <encCtlz32>:
-; DIS-NEXT:  70842020 	clz	a0,a0
-; DIS-NEXT:  00801021 	move	v0,a0
-; DIS-NEXT:  03e00008 	jr	ra
-
-; IASM-LABEL: encCtlz32
-; IASM-NEXT: .LencCtlz32$entry:
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x84
-; IASM-NEXT: 	.byte 0x70
-; IASM-NEXT: 	.byte 0x21
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x80
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @encCtlz32Const() {
-entry:
-  %r = call i32 @llvm.ctlz.i32(i32 123456, i1 false)
-  ret i32 %r
-}
-
-; ASM-LABEL: encCtlz32Const
-; ASM-NEXT: .LencCtlz32Const$entry:
-; ASM-NEXT: 	lui	$v0, 1
-; ASM-NEXT: 	ori	$v0, $v0, 57920
-; ASM-NEXT: 	clz	$v0, $v0
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: <encCtlz32Const>:
-; DIS-NEXT:  3c020001 	lui	v0,0x1
-; DIS-NEXT:  3442e240 	ori	v0,v0,0xe240
-; DIS-NEXT:  70421020 	clz	v0,v0
-; DIS-NEXT:  03e00008 	jr	ra
-
-; IASM-LABEL: encCtlz32Const
-; IASM-NEXT: .LencCtlz32Const$entry:
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x3c
-; IASM-NEXT: 	.byte 0x40
-; IASM-NEXT: 	.byte 0xe2
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x34
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x70
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i64 @encCtlz64(i64 %x) {
-entry:
-  %r = call i64 @llvm.ctlz.i64(i64 %x, i1 false)
-  ret i64 %r
-}
-
-; ASM-LABEL: encCtlz64
-; ASM-NEXT: .LencCtlz64$entry:
-; ASM-NEXT: 	clz	$v0, $a1
-; ASM-NEXT: 	clz	$a0, $a0
-; ASM-NEXT: 	addiu	$a0, $a0, 32
-; ASM-NEXT: 	movn	$a0, $v0, $a1
-; ASM:      	addiu	$v0, $zero, 0
-; ASM-NEXT: 	move	$v1, $v0
-; ASM-NEXT: 	move	$v0, $a0
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: <encCtlz64>:
-; DIS-NEXT:  70a21020 	clz	v0,a1
-; DIS-NEXT:  70842020 	clz	a0,a0
-; DIS-NEXT:  24840020 	addiu	a0,a0,32
-; DIS-NEXT:  0045200b 	movn	a0,v0,a1
-; DIS-NEXT:  24020000 	li	v0,0
-; DIS-NEXT:  00401821 	move	v1,v0
-; DIS-NEXT:  00801021 	move	v0,a0
-; DIS-NEXT:  03e00008 	jr	ra
-
-; IASM-LABEL: encCtlz64
-; IASM-NEXT: .LencCtlz64$entry:
-; IASM-NEXT:	.byte 0x20
-; IASM-NEXT:	.byte 0x10
-; IASM-NEXT:	.byte 0xa2
-; IASM-NEXT:	.byte 0x70
-; IASM-NEXT:	.byte 0x20
-; IASM-NEXT:	.byte 0x20
-; IASM-NEXT:	.byte 0x84
-; IASM-NEXT:	.byte 0x70
-; IASM-NEXT:	.byte 0x20
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x84
-; IASM-NEXT:	.byte 0x24
-; IASM-NEXT:	.byte 0xb
-; IASM-NEXT:	.byte 0x20
-; IASM-NEXT:	.byte 0x45
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x2
-; IASM-NEXT:	.byte 0x24
-; IASM-NEXT:	.byte 0x21
-; IASM-NEXT:	.byte 0x18
-; IASM-NEXT:	.byte 0x40
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x21
-; IASM-NEXT:	.byte 0x10
-; IASM-NEXT:	.byte 0x80
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x8
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0xe0
-; IASM-NEXT:	.byte 0x3
-
-define internal i32 @encCtlz64Const(i64 %x) {
-entry:
-  %r = call i64 @llvm.ctlz.i64(i64 123456789012, i1 false)
-  %r2 = trunc i64 %r to i32
-  ret i32 %r2
-}
-
-; ASM-LABEL: encCtlz64Const
-; ASM-NEXT: .LencCtlz64Const$entry:
-; ASM-NEXT: 	# $zero = def.pseudo
-; ASM-NEXT: 	addiu	$v0, $zero, 28
-; ASM-NEXT: 	lui	$v1, 48793
-; ASM-NEXT: 	ori	$v1, $v1, 6676
-; ASM-NEXT: 	clz	$a0, $v0
-; ASM-NEXT: 	clz	$v1, $v1
-; ASM-NEXT: 	addiu	$v1, $v1, 32
-; ASM-NEXT: 	movn	$v1, $a0, $v0
-; ASM-NEXT: 	move	$v0, $v1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: <encCtlz64Const>:
-; DIS-NEXT:  2402001c 	li	v0,28
-; DIS-NEXT:  3c03be99 	lui	v1,0xbe99
-; DIS-NEXT:  34631a14 	ori	v1,v1,0x1a14
-; DIS-NEXT:  70442020 	clz	a0,v0
-; DIS-NEXT:  70631820 	clz	v1,v1
-; DIS-NEXT:  24630020 	addiu	v1,v1,32
-; DIS-NEXT:  0082180b 	movn	v1,a0,v0
-; DIS-NEXT:  00601021 	move	v0,v1
-; DIS-NEXT:  03e00008 	jr	ra
-
-; IASM-LABEL: encCtlz64Const
-; IASM-NEXT: .LencCtlz64Const$entry:
-; IASM-NEXT:	.byte 0x1c
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x2
-; IASM-NEXT:	.byte 0x24
-; IASM-NEXT:	.byte 0x99
-; IASM-NEXT:	.byte 0xbe
-; IASM-NEXT:	.byte 0x3
-; IASM-NEXT:	.byte 0x3c
-; IASM-NEXT:	.byte 0x14
-; IASM-NEXT:	.byte 0x1a
-; IASM-NEXT:	.byte 0x63
-; IASM-NEXT:	.byte 0x34
-; IASM-NEXT:	.byte 0x20
-; IASM-NEXT:	.byte 0x20
-; IASM-NEXT:	.byte 0x44
-; IASM-NEXT:	.byte 0x70
-; IASM-NEXT:	.byte 0x20
-; IASM-NEXT:	.byte 0x18
-; IASM-NEXT:	.byte 0x63
-; IASM-NEXT:	.byte 0x70
-; IASM-NEXT:	.byte 0x20
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x63
-; IASM-NEXT:	.byte 0x24
-; IASM-NEXT:	.byte 0xb
-; IASM-NEXT:	.byte 0x18
-; IASM-NEXT:	.byte 0x82
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x21
-; IASM-NEXT:	.byte 0x10
-; IASM-NEXT:	.byte 0x60
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x8
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0xe0
-; IASM-NEXT:	.byte 0x3
-
-define internal i32 @encCttz32(i32 %x) {
-entry:
-  %r = call i32 @llvm.cttz.i32(i32 %x, i1 false)
-  ret i32 %r
-}
-
-; ASM-LABEL: encCttz32
-; ASM-NEXT: .LencCttz32$entry:
-; ASM-NEXT: 	addiu	$v0, $a0, -1
-; ASM: 	nor	$a0, $a0, $zero
-; ASM-NEXT: 	and	$a0, $a0, $v0
-; ASM-NEXT: 	clz	$a0, $a0
-; ASM: 	addiu	$v0, $zero, 32
-; ASM-NEXT: 	subu	$v0, $v0, $a0
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: <encCttz32>:
-; DIS-NEXT:  2482ffff 	addiu	v0,a0,-1
-; DIS-NEXT:  00802027 	nor	a0,a0,zero
-; DIS-NEXT:  00822024 	and	a0,a0,v0
-; DIS-NEXT:  70842020 	clz	a0,a0
-; DIS-NEXT:  24020020 	li	v0,32
-; DIS-NEXT:  00441023 	subu	v0,v0,a0
-; DIS-NEXT:  03e00008 	jr	ra
-
-; IASM-LABEL: encCttz32
-; IASM-NEXT: .LencCttz32$entry:
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0x82
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x27
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x80
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x82
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x84
-; IASM-NEXT: 	.byte 0x70
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x23
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x44
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @encCttz32Const() {
-entry:
-  %r = call i32 @llvm.cttz.i32(i32 123456, i1 false)
-  ret i32 %r
-}
-
-; ASM-LABEL: encCttz32Const
-; ASM-NEXT: .LencCttz32Const$entry:
-; ASM-NEXT: 	lui     $v0, 1
-; ASM-NEXT: 	ori     $v0, $v0, 57920
-; ASM-NEXT: 	addiu   $v1, $v0, -1
-; ASM: 	nor     $v0, $v0, $zero
-; ASM-NEXT: 	and     $v0, $v0, $v1
-; ASM-NEXT: 	clz     $v0, $v0
-; ASM: 	addiu   $v1, $zero, 32
-; ASM-NEXT: 	subu    $v1, $v1, $v0
-; ASM-NEXT: 	move    $v0, $v1
-; ASM-NEXT: 	jr      $ra
-
-; DIS-LABEL: <encCttz32Const>:
-; DIS-NEXT:  3c020001 	lui	v0,0x1
-; DIS-NEXT:  3442e240 	ori	v0,v0,0xe240
-; DIS-NEXT:  2443ffff 	addiu	v1,v0,-1
-; DIS-NEXT:  00401027 	nor	v0,v0,zero
-; DIS-NEXT:  00431024 	and	v0,v0,v1
-; DIS-NEXT:  70421020 	clz	v0,v0
-; DIS-NEXT:  24030020 	li	v1,32
-; DIS-NEXT:  00621823 	subu	v1,v1,v0
-; DIS-NEXT:  00601021 	move	v0,v1
-; DIS-NEXT:  03e00008 	jr	ra
-
-; IASM-LABEL: encCttz32Const:
-; IASM-NEXT: .LencCttz32Const$entry:
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x3c
-; IASM-NEXT: 	.byte 0x40
-; IASM-NEXT: 	.byte 0xe2
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x34
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0x43
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x27
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x40
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x43
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x70
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x23
-; IASM-NEXT: 	.byte 0x18
-; IASM-NEXT: 	.byte 0x62
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x21
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i64 @encCttz64(i64 %x) {
-entry:
-  %r = call i64 @llvm.cttz.i64(i64 %x, i1 false)
-  ret i64 %r
-}
-
-; ASM-LABEL: encCttz64
-; ASM-NEXT: .LencCttz64$entry:
-; ASM-NEXT: 	addiu   $v0, $a1, -1
-; ASM: 	nor     $a1, $a1, $zero
-; ASM-NEXT: 	and     $a1, $a1, $v0
-; ASM-NEXT: 	clz     $a1, $a1
-; ASM: 	addiu   $v0, $zero, 64
-; ASM-NEXT: 	subu    $v0, $v0, $a1
-; ASM-NEXT: 	addiu   $v1, $a0, -1
-; ASM: 	nor     $a1, $a0, $zero
-; ASM-NEXT: 	and     $a1, $a1, $v1
-; ASM-NEXT: 	clz     $a1, $a1
-; ASM: 	addiu   $v1, $zero, 32
-; ASM-NEXT: 	subu    $v1, $v1, $a1
-; ASM-NEXT: 	movn    $v0, $v1, $a0
-; ASM: 	addiu   $v1, $zero, 0
-; ASM-NEXT: 	jr      $ra
-
-; DIS-LABEL:  <encCttz64>:
-; DIS-NEXT:   24a2ffff 	addiu	v0,a1,-1
-; DIS-NEXT:   00a02827 	nor	a1,a1,zero
-; DIS-NEXT:   00a22824 	and	a1,a1,v0
-; DIS-NEXT:   70a52820 	clz	a1,a1
-; DIS-NEXT:   24020040 	li	v0,64
-; DIS-NEXT:   00451023 	subu	v0,v0,a1
-; DIS-NEXT:   2483ffff 	addiu	v1,a0,-1
-; DIS-NEXT:   00802827 	nor	a1,a0,zero
-; DIS-NEXT:   00a32824 	and	a1,a1,v1
-; DIS-NEXT:   70a52820 	clz	a1,a1
-; DIS-NEXT:   24030020 	li	v1,32
-; DIS-NEXT:   00651823 	subu	v1,v1,a1
-; DIS-NEXT:   0064100b 	movn	v0,v1,a0
-; DIS-NEXT:   24030000 	li	v1,0
-; DIS-NEXT:   03e00008 	jr	ra
-; DIS-NEXT:   00000000 	nop
-
-; IASM-LABEL: encCttz64:
-; IASM-NEXT: .LencCttz64$entry:
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0xa2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x27
-; IASM-NEXT: 	.byte 0x28
-; IASM-NEXT: 	.byte 0xa0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x28
-; IASM-NEXT: 	.byte 0xa2
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x28
-; IASM-NEXT: 	.byte 0xa5
-; IASM-NEXT: 	.byte 0x70
-; IASM-NEXT: 	.byte 0x40
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x23
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x45
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0x83
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x27
-; IASM-NEXT: 	.byte 0x28
-; IASM-NEXT: 	.byte 0x80
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x28
-; IASM-NEXT: 	.byte 0xa3
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x28
-; IASM-NEXT: 	.byte 0xa5
-; IASM-NEXT: 	.byte 0x70
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x23
-; IASM-NEXT: 	.byte 0x18
-; IASM-NEXT: 	.byte 0x65
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xb
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x64
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i64 @encCttz64Const(i64 %x) {
-entry:
-  %r = call i64 @llvm.cttz.i64(i64 123456789012, i1 false)
-  ret i64 %r
-}
-
-; ASM-LABEL: encCttz64Const
-; ASM-NEXT: .LencCttz64Const$entry:
-; ASM-NEXT: 	# $zero = def.pseudo
-; ASM-NEXT: 	addiu   $v0, $zero, 28
-; ASM-NEXT: 	lui     $v1, 48793
-; ASM-NEXT: 	ori     $v1, $v1, 6676
-; ASM-NEXT: 	addiu   $a0, $v0, -1
-; ASM: 	nor     $v0, $v0, $zero
-; ASM-NEXT: 	and     $v0, $v0, $a0
-; ASM-NEXT: 	clz     $v0, $v0
-; ASM: 	addiu   $a0, $zero, 64
-; ASM-NEXT: 	subu    $a0, $a0, $v0
-; ASM-NEXT: 	addiu   $v0, $v1, -1
-; ASM: 	nor     $a1, $v1, $zero
-; ASM-NEXT: 	and     $a1, $a1, $v0
-; ASM-NEXT: 	clz     $a1, $a1
-; ASM: 	addiu   $v0, $zero, 32
-; ASM-NEXT: 	subu    $v0, $v0, $a1
-; ASM-NEXT: 	movn    $a0, $v0, $v1
-; ASM: 	addiu   $v0, $zero, 0
-; ASM-NEXT: 	move    $v1, $v0
-; ASM-NEXT: 	move    $v0, $a0
-; ASM-NEXT: 	jr      $ra
-
-; DIS-LABEL: <encCttz64Const>:
-; DIS-NEXT:  2402001c 	li	v0,28
-; DIS-NEXT:  3c03be99 	lui	v1,0xbe99
-; DIS-NEXT:  34631a14 	ori	v1,v1,0x1a14
-; DIS-NEXT:  2444ffff 	addiu	a0,v0,-1
-; DIS-NEXT:  00401027 	nor	v0,v0,zero
-; DIS-NEXT:  00441024 	and	v0,v0,a0
-; DIS-NEXT:  70421020 	clz	v0,v0
-; DIS-NEXT:  24040040 	li	a0,64
-; DIS-NEXT:  00822023 	subu	a0,a0,v0
-; DIS-NEXT:  2462ffff 	addiu	v0,v1,-1
-; DIS-NEXT:  00602827 	nor	a1,v1,zero
-; DIS-NEXT:  00a22824 	and	a1,a1,v0
-; DIS-NEXT:  70a52820 	clz	a1,a1
-; DIS-NEXT:  24020020 	li	v0,32
-; DIS-NEXT:  00451023 	subu	v0,v0,a1
-; DIS-NEXT:  0043200b 	movn	a0,v0,v1
-; DIS-NEXT:  24020000 	li	v0,0
-; DIS-NEXT:  00401821 	move	v1,v0
-; DIS-NEXT:  00801021 	move	v0,a0
-; DIS-NEXT:  03e00008 	jr	ra
-
-; IASM-LABEL: encCttz64Const:
-; IASM-NEXT: .LencCttz64Const$entry:
-; IASM-NEXT: 	.byte 0x1c
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x99
-; IASM-NEXT: 	.byte 0xbe
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x3c
-; IASM-NEXT: 	.byte 0x14
-; IASM-NEXT: 	.byte 0x1a
-; IASM-NEXT: 	.byte 0x63
-; IASM-NEXT: 	.byte 0x34
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0x44
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x27
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x40
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x44
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x70
-; IASM-NEXT: 	.byte 0x40
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x4
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x23
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x82
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0xff
-; IASM-NEXT: 	.byte 0x62
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x27
-; IASM-NEXT: 	.byte 0x28
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x28
-; IASM-NEXT: 	.byte 0xa2
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x28
-; IASM-NEXT: 	.byte 0xa5
-; IASM-NEXT: 	.byte 0x70
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x23
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x45
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xb
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x43
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x21
-; IASM-NEXT: 	.byte 0x18
-; IASM-NEXT: 	.byte 0x40
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x21
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x80
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal void @encTrap() {
-  unreachable
-}
-
-; ASM-LABEL: encTrap
-; ASM-NEXT: .LencTrap$__0:
-; ASM: 	teq	$zero, $zero, 0
-
-; DIS-LABEL: <encTrap>:
-; DIS-NEXT:  00000034 	teq	zero,zero
-
-; IASM-LABEL: encTrap:
-; IASM-NEXT: .LencTrap$__0:
-; IASM-NEXT: 	.byte 0x34
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
diff --git a/third_party/subzero/tests_lit/assembler/mips32/encoding_test_arith.ll b/third_party/subzero/tests_lit/assembler/mips32/encoding_test_arith.ll
deleted file mode 100644
index eb8266e..0000000
--- a/third_party/subzero/tests_lit/assembler/mips32/encoding_test_arith.ll
+++ /dev/null
@@ -1,172 +0,0 @@
-; Test encoding of MIPS32 arithmetic instructions
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=mips32 --args -O2 \
-; RUN:   --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=mips32 --assemble --disassemble \
-; RUN:   --args -O2 --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=mips32 --args -O2 \
-; RUN:   --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=mips32 --assemble --disassemble \
-; RUN:   --args -O2 --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal i32 @test_01(i32 %a) {
-  %v = add i32 %a, 1
-  %v1 = and i32 %v, 1
-  %v2 = or i32 %v1, 1
-  %v3 = xor i32 %v2, 1
-  ret i32 %v3
-}
-
-; ASM-LABEL: test_01:
-; ASM-NEXT: .Ltest_01$__0:
-; ASM-NEXT:	addiu	$a0, $a0, 1
-; ASM-NEXT:	andi	$a0, $a0, 1
-; ASM-NEXT:	ori	$a0, $a0, 1
-; ASM-NEXT:	xori	$a0, $a0, 1
-; ASM-NEXT:	move	$v0, $a0
-; ASM-NEXT:	jr	$ra
-
-; DIS-LABEL:00000000 <test_01>:
-; DIS-NEXT:   0:	24840001 	addiu	a0,a0,1
-; DIS-NEXT:   4:	30840001 	andi	a0,a0,0x1
-; DIS-NEXT:   8:	34840001 	ori	a0,a0,0x1
-; DIS-NEXT:   c:	38840001 	xori	a0,a0,0x1
-; DIS-NEXT:  10:	00801021 	move	v0,a0
-; DIS-NEXT:  14:	03e00008 	jr	ra
-; DIS-NEXT:  18:	00000000 	nop
-
-; IASM-LABEL: test_01:
-; IASM-LABEL: .Ltest_01$__0:
-; IASM-NEXT:	.byte 0x1
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x84
-; IASM-NEXT:	.byte 0x24
-; IASM-NEXT:	.byte 0x1
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x84
-; IASM-NEXT:	.byte 0x30
-; IASM-NEXT:	.byte 0x1
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x84
-; IASM-NEXT:	.byte 0x34
-; IASM-NEXT:	.byte 0x1
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x84
-; IASM-NEXT:	.byte 0x38
-; IASM-NEXT:	.byte 0x21
-; IASM-NEXT:	.byte 0x10
-; IASM-NEXT:	.byte 0x80
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x8
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0xe0
-; IASM-NEXT:	.byte 0x3
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-
-define internal i32 @test_02(i32 %a) {
-  %cmp = icmp eq i32 %a, 9
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: test_02:
-; ASM-NEXT: .Ltest_02$__0:
-; ASM-NEXT:	# $zero = def.pseudo
-; ASM-NEXT:	addiu	$v0, $zero, 9
-; ASM-NEXT:	xor	$a0, $a0, $v0
-; ASM-NEXT:	sltiu	$a0, $a0, 1
-; ASM-NEXT:	andi	$a0, $a0, 1
-; ASM-NEXT:	move	$v0, $a0
-; ASM-NEXT:	jr	$ra
-
-; DIS-LABEL:00000020 <test_02>:
-; DIS-NEXT:   20:	24020009 	li	v0,9
-; DIS-NEXT:   24:	00822026 	xor	a0,a0,v0
-; DIS-NEXT:   28:	2c840001 	sltiu	a0,a0,1
-; DIS-NEXT:   2c:	30840001 	andi	a0,a0,0x1
-; DIS-NEXT:   30:	00801021 	move	v0,a0
-; DIS-NEXT:   34:	03e00008 	jr	ra
-; DIS-NEXT:   38:	00000000 	nop
-
-; IASM-LABEL: test_02:
-; IASM-LABEL: .Ltest_02$__0:
-; IASM-NEXT:	.byte 0x9
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x2
-; IASM-NEXT:	.byte 0x24
-; IASM-NEXT:	.byte 0x26
-; IASM-NEXT:	.byte 0x20
-; IASM-NEXT:	.byte 0x82
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x1
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x84
-; IASM-NEXT:	.byte 0x2c
-; IASM-NEXT:	.byte 0x1
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x84
-; IASM-NEXT:	.byte 0x30
-; IASM-NEXT:	.byte 0x21
-; IASM-NEXT:	.byte 0x10
-; IASM-NEXT:	.byte 0x80
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x8
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0xe0
-; IASM-NEXT:	.byte 0x3
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-
-define internal i32 @ashrImm(i32 %val, i32 %shift) {
-entry:
-  %result = ashr i32 %val, %shift
-  ret i32 %result
-}
-
-; ASM-LABEL: ashrImm:
-; ASM-NEXT: .LashrImm$entry:
-; ASM-NEXT: 	srav	$a0, $a0, $a1
-; ASM-NEXT: 	move	$v0, $a0
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: <ashrImm>:
-; DIS-NEXT:  00a42007 	srav	a0,a0,a1
-; DIS-NEXT:  00801021 	move	v0,a0
-; DIS-NEXT:  03e00008 	jr	ra
-
-; IASM-LABEL: ashrImm:
-; IASM-NEXT: .LashrImm$entry:
-; IASM-NEXT:	.byte 0x7
-; IASM-NEXT:	.byte 0x20
-; IASM-NEXT:	.byte 0xa4
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x21
-; IASM-NEXT:	.byte 0x10
-; IASM-NEXT:	.byte 0x80
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x8
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0xe0
-; IASM-NEXT:	.byte 0x3
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
diff --git a/third_party/subzero/tests_lit/assembler/mips32/encoding_test_arith_fp.ll b/third_party/subzero/tests_lit/assembler/mips32/encoding_test_arith_fp.ll
deleted file mode 100644
index 4e2ea84..0000000
--- a/third_party/subzero/tests_lit/assembler/mips32/encoding_test_arith_fp.ll
+++ /dev/null
@@ -1,545 +0,0 @@
-; Test encoding of MIPS32 floating point arithmetic instructions
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=mips32 --args -O2 \
-; RUN:   --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=mips32 --assemble --disassemble \
-; RUN:   --args -O2 --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=mips32 --args -O2 \
-; RUN:   --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=mips32 --assemble --disassemble \
-; RUN:   --args -O2 --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-declare float @llvm.fabs.f32(float)
-declare double @llvm.fabs.f64(double)
-declare float @llvm.sqrt.f32(float)
-declare double @llvm.sqrt.f64(double)
-
-define internal float @encAbsFloat(float %a) {
-entry:
-  %c = call float @llvm.fabs.f32(float %a)
-  ret float %c
-}
-
-; ASM-LABEL: encAbsFloat
-; ASM-NEXT: .LencAbsFloat$entry:
-; ASM-NEXT: 	abs.s	$f12, $f12
-; ASM-NEXT: 	mov.s	$f0, $f12
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000000 <encAbsFloat>:
-; DIS-NEXT:     0:	46006305 	abs.s	$f12,$f12
-; DIS-NEXT:     4:	46006006 	mov.s	$f0,$f12
-; DIS-NEXT:     8:	03e00008 	jr	ra
-; DIS-NEXT:     c:	00000000 	nop
-
-; IASM-LABEL: encAbsFloat:
-; IASM-NEXT: .LencAbsFloat$entry:
-; IASM-NEXT: 	.byte 0x5
-; IASM-NEXT: 	.byte 0x63
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x6
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-
-define internal double @encAbsDouble(double %a) {
-entry:
-  %c = call double @llvm.fabs.f64(double %a)
-  ret double %c
-}
-
-; ASM-LABEL: encAbsDouble:
-; ASM-NEXT: .LencAbsDouble$entry:
-; ASM-NEXT: 	abs.d	$f12, $f12
-; ASM-NEXT: 	mov.d	$f0, $f12
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000010 <encAbsDouble>:
-; DIS-NEXT:     10:	46206305 	abs.d	$f12,$f12
-; DIS-NEXT:     14:	46206006 	mov.d	$f0,$f12
-; DIS-NEXT:     18:	03e00008 	jr	ra
-; DIS-NEXT:     1c:	00000000 	nop
-
-; IASM-LABEL: encAbsDouble:
-; IASM-NEXT: .LencAbsDouble$entry:
-; IASM-NEXT: 	.byte 0x5
-; IASM-NEXT: 	.byte 0x63
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x6
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-
-define internal float @encAddFloat(float %a, float %b) {
-entry:
-  %c = fadd float %a, %b
-  ret float %c
-}
-
-; ASM-LABEL: encAddFloat
-; ASM-NEXT: .LencAddFloat$entry:
-; ASM-NEXT:	add.s	$f12, $f12, $f14
-; ASM-NEXT:	mov.s	$f0, $f12
-; ASM-NEXT:	jr	$ra
-
-; DIS-LABEL: 00000020 <encAddFloat>:
-; DIS-NEXT:    20:	460e6300 	add.s	$f12,$f12,$f14
-; DIS-NEXT:    24:	46006006 	mov.s	$f0,$f12
-; DIS-NEXT:    28:	03e00008 	jr	ra
-; DIS-NEXT:    2c:	00000000 	nop
-
-; IASM-LABEL: encAddFloat:
-; IASM-NEXT: .LencAddFloat$entry:
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x63
-; IASM-NEXT: 	.byte 0xe
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x6
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-
-define internal double @encAddDouble(double %a, double %b) {
-entry:
-  %c = fadd double %a, %b
-  ret double %c
-}
-
-; ASM-LABEL: encAddDouble
-; ASM-NEXT: .LencAddDouble$entry:
-; ASM-NEXT:	add.d	$f12, $f12, $f14
-; ASM-NEXT:	mov.d	$f0, $f12
-; ASM-NEXT:	jr	$ra
-
-; DIS-LABEL: 00000030 <encAddDouble>:
-; DIS-NEXT:    30:	462e6300 	add.d	$f12,$f12,$f14
-; DIS-NEXT:    34:	46206006 	mov.d	$f0,$f12
-; DIS-NEXT:    38:	03e00008 	jr	ra
-; DIS-NEXT:    3c:	00000000 	nop
-
-; IASM-LABEL: encAddDouble:
-; IASM-NEXT: .LencAddDouble$entry:
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x63
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x6
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-
-define internal float @encDivFloat(float %a, float %b) {
-entry:
-  %c = fdiv float %a, %b
-  ret float %c
-}
-
-; ASM-LABEL: encDivFloat
-; ASM-NEXT: .LencDivFloat$entry:
-; ASM-NEXT:	div.s	$f12, $f12, $f14
-; ASM-NEXT:	mov.s	$f0, $f12
-; ASM-NEXT:	jr	$ra
-
-; DIS-LABEL: 00000040 <encDivFloat>:
-; DIS-NEXT:    40:	460e6303 	div.s	$f12,$f12,$f14
-; DIS-NEXT:    44:	46006006 	mov.s	$f0,$f12
-; DIS-NEXT:    48:	03e00008 	jr	ra
-; DIS-NEXT:    4c:	00000000 	nop
-
-; IASM-LABEL: encDivFloat:
-; IASM-NEXT: .LencDivFloat$entry:
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x63
-; IASM-NEXT: 	.byte 0xe
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x6
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-
-define internal double @encDivDouble(double %a, double %b) {
-entry:
-  %c = fdiv double %a, %b
-  ret double %c
-}
-
-; ASM-LABEL: encDivDouble
-; ASM-NEXT: .LencDivDouble$entry:
-; ASM-NEXT:	div.d	$f12, $f12, $f14
-; ASM-NEXT:	mov.d	$f0, $f12
-; ASM-NEXT:	jr	$ra
-
-; DIS-LABEL: 00000050 <encDivDouble>:
-; DIS-NEXT:    50:	462e6303 	div.d	$f12,$f12,$f14
-; DIS-NEXT:    54:	46206006 	mov.d	$f0,$f12
-; DIS-NEXT:    58:	03e00008 	jr	ra
-; DIS-NEXT:    5c:	00000000 	nop
-
-; IASM-LABEL: encDivDouble:
-; IASM-NEXT: .LencDivDouble$entry:
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x63
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x6
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-
-define internal float @encMulFloat(float %a, float %b) {
-entry:
-  %c = fmul float %a, %b
-  ret float %c
-}
-
-; ASM-LABEL: encMulFloat
-; ASM-NEXT: .LencMulFloat$entry:
-; ASM-NEXT:	mul.s	$f12, $f12, $f14
-; ASM-NEXT:	mov.s	$f0, $f12
-; ASM-NEXT:	jr	$ra
-
-; DIS-LABEL: 00000060 <encMulFloat>:
-; DIS-NEXT:    60:	460e6302 	mul.s	$f12,$f12,$f14
-; DIS-NEXT:    64:	46006006 	mov.s	$f0,$f12
-; DIS-NEXT:    68:	03e00008 	jr	ra
-; DIS-NEXT:    6c:	00000000 	nop
-
-; IASM-LABEL: encMulFloat:
-; IASM-NEXT: .LencMulFloat$entry:
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x63
-; IASM-NEXT: 	.byte 0xe
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x6
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-
-define internal double @encMulDouble(double %a, double %b) {
-entry:
-  %c = fmul double %a, %b
-  ret double %c
-}
-
-; ASM-LABEL: encMulDouble
-; ASM-NEXT: .LencMulDouble$entry:
-; ASM-NEXT:	mul.d	$f12, $f12, $f14
-; ASM-NEXT:	mov.d	$f0, $f12
-; ASM-NEXT:	jr	$ra
-
-; DIS-LABEL: 00000070 <encMulDouble>:
-; DIS-NEXT:    70:	462e6302 	mul.d	$f12,$f12,$f14
-; DIS-NEXT:    74:	46206006 	mov.d	$f0,$f12
-; DIS-NEXT:    78:	03e00008 	jr	ra
-; DIS-NEXT:    7c:	00000000 	nop
-
-; IASM-LABEL: encMulDouble:
-; IASM-NEXT: .LencMulDouble$entry:
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x63
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x6
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-
-define internal float @encSqrtFloat(float %a) {
-entry:
-  %c = call float @llvm.sqrt.f32(float %a)
-  ret float %c
-}
-
-; ASM-LABEL: encSqrtFloat
-; ASM-NEXT: .LencSqrtFloat$entry:
-; ASM-NEXT:	sqrt.s	$f12, $f12
-; ASM-NEXT:	mov.s	$f0, $f12
-; ASM-NEXT:	jr	$ra
-
-; DIS-LABEL: 00000080 <encSqrtFloat>:
-; DIS-NEXT:    80:	46006304 	sqrt.s	$f12,$f12
-; DIS-NEXT:    84:	46006006 	mov.s	$f0,$f12
-; DIS-NEXT:    88:	03e00008 	jr	ra
-; DIS-NEXT:    8c:	00000000 	nop
-
-; IASM-LABEL: encSqrtFloat:
-; IASM-NEXT: .LencSqrtFloat$entry:
-; IASM-NEXT: 	.byte 0x4
-; IASM-NEXT: 	.byte 0x63
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x6
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-
-define internal double @encSqrtDouble(double %a) {
-entry:
-  %c = call double @llvm.sqrt.f64(double %a)
-  ret double %c
-}
-
-; ASM-LABEL: encSqrtDouble
-; ASM-NEXT: .LencSqrtDouble$entry:
-; ASM-NEXT:	sqrt.d	$f12, $f12
-; ASM-NEXT:	mov.d	$f0, $f12
-; ASM-NEXT:	jr	$ra
-
-; DIS-LABEL: 00000090 <encSqrtDouble>:
-; DIS-NEXT:    90:	46206304 	sqrt.d	$f12,$f12
-; DIS-NEXT:    94:	46206006 	mov.d	$f0,$f12
-; DIS-NEXT:    98:	03e00008 	jr	ra
-; DIS-NEXT:    9c:	00000000 	nop
-
-; IASM-LABEL: encSqrtDouble:
-; IASM-NEXT: .LencSqrtDouble$entry:
-; IASM-NEXT: 	.byte 0x4
-; IASM-NEXT: 	.byte 0x63
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x6
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-
-define internal float @encSubFloat(float %a, float %b) {
-entry:
-  %c = fsub float %a, %b
-  ret float %c
-}
-
-; ASM-LABEL: encSubFloat
-; ASM-NEXT: .LencSubFloat$entry:
-; ASM-NEXT:	sub.s	$f12, $f12, $f14
-; ASM-NEXT:	mov.s	$f0, $f12
-; ASM-NEXT:	jr	$ra
-
-; DIS-LABEL: 000000a0 <encSubFloat>:
-; DIS-NEXT:    a0:	460e6301 	sub.s	$f12,$f12,$f14
-; DIS-NEXT:    a4:	46006006 	mov.s	$f0,$f12
-; DIS-NEXT:    a8:	03e00008 	jr	ra
-; DIS-NEXT:    ac:	00000000 	nop
-
-; IASM-LABEL: encSubFloat:
-; IASM-NEXT: .LencSubFloat$entry:
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x63
-; IASM-NEXT: 	.byte 0xe
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x6
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-
-define internal double @encSubDouble(double %a, double %b) {
-entry:
-  %c = fsub double %a, %b
-  ret double %c
-}
-
-; ASM-LABEL: encSubDouble
-; ASM-NEXT: .LencSubDouble$entry:
-; ASM-NEXT:	sub.d	$f12, $f12, $f14
-; ASM-NEXT:	mov.d	$f0, $f12
-; ASM-NEXT:	jr	$ra
-
-; DIS-LABEL: 000000b0 <encSubDouble>:
-; DIS-NEXT:    b0:	462e6301 	sub.d	$f12,$f12,$f14
-; DIS-NEXT:    b4:	46206006 	mov.d	$f0,$f12
-; DIS-NEXT:    b8:	03e00008 	jr	ra
-; DIS-NEXT:    bc:	00000000 	nop
-
-; IASM-LABEL: encSubDouble:
-; IASM-NEXT: .LencSubDouble$entry:
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x63
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x6
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x20
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-
-define internal i64 @cast_d2ll_const() {
-entry:
-  %v0 = bitcast double 0x12345678901234 to i64
-  ret i64 %v0
-}
-; ASM-LABEL: cast_d2ll_const
-; ASM-LABEL: .Lcast_d2ll_const$entry:
-; ASM:	lui $[[REG:.*]], %hi({{.*}})
-; ASM-NEXT:	ldc1 $[[FREG:.*]], %lo({{.*}})($[[REG]])
-
-; DIS-LABEL: <cast_d2ll_const>:
-; DIS:  3c020000  lui v0,0x0
-; DIS-NEXT:  d4400000  ldc1 $f0,0(v0)
-
-; IASM-LABEL: cast_d2ll_const:
-; IASM-LABEL: .Lcast_d2ll_const$entry:
-; IASM-NEXT:	.byte 0xf0
-; IASM-NEXT:	.byte 0xff
-; IASM-NEXT:	.byte 0xbd
-; IASM-NEXT:	.byte 0x27
-; IASM-NEXT:	.word 0x3c020000 # R_MIPS_HI16 [[LAB:.*]]
-; IASM-NEXT:	.word 0xd4400000 # R_MIPS_LO16 [[LAB]]
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0xa1
-; IASM-NEXT:	.byte 0xe7
-; IASM-NEXT:	.byte 0x4
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0xa0
-; IASM-NEXT:	.byte 0xe7
-; IASM-NEXT:	.byte 0x4
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0xa2
-; IASM-NEXT:	.byte 0x8f
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0xa3
-; IASM-NEXT:	.byte 0x8f
-; IASM-NEXT:	.byte 0x10
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0xbd
-; IASM-NEXT:	.byte 0x27
-; IASM-NEXT:	.byte 0x8
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0xe0
-; IASM-NEXT:	.byte 0x3
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x34
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x34
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-
-declare void @bar(i32 %a1, i32 %a2)
-define internal void @Call() {
-  call void @bar(i32 1, i32 2)
-  ret void
-}
-; ASM-LABEL: Call
-; ASM: jal	bar
-
-; DIS-LABEL: 000000f0 <Call>:
-; DIS: 100:	0c000000  jal     0
-
-; IASM-LABEL: Call:
-; IASM:	.word 0xc000000 # R_MIPS_26 bar
diff --git a/third_party/subzero/tests_lit/assembler/mips32/encoding_test_branch.ll b/third_party/subzero/tests_lit/assembler/mips32/encoding_test_branch.ll
deleted file mode 100644
index 36c0611..0000000
--- a/third_party/subzero/tests_lit/assembler/mips32/encoding_test_branch.ll
+++ /dev/null
@@ -1,255 +0,0 @@
-; Test encoding of MIPS32 branch instructions
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=mips32 --args -O2 \
-; RUN:   --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=mips32 --assemble --disassemble \
-; RUN:   --args -O2 --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=mips32 --args -O2 \
-; RUN:   --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=mips32 --assemble --disassemble \
-; RUN:   --args -O2 --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal void @test_01(i32 %a) {
-  %cmp = icmp eq i32 %a, 1
-  br i1 %cmp, label %then, label %else
-then:
-  br label %end
-else:
-  br label %end
-end:
-  ret void
-}
-
-; ASM-LABEL: test_01:
-; ASM-LABEL: .Ltest_01$__0:
-; ASM-NEXT:	# $zero = def.pseudo
-; ASM-NEXT:	addiu	$v0, $zero, 1
-; ASM-NEXT:	bne	$a0, $v0, .Ltest_01$end
-; ASM-LABEL: .Ltest_01$end:
-; ASM-NEXT:	jr	$ra
-; ASM-LABEL: .Ltest_01$then:
-; ASM-LABEL: .Ltest_01$else:
-
-; DIS-LABEL:00000000 <test_01>:
-; DIS-NEXT:   0:   24020001	li	v0,1
-; DIS-NEXT:   4:   14820001	bne	a0,v0,c <.Ltest_01$end>
-; DIS-NEXT:   8:   00000000	nop
-; DIS-LABEL:0000000c <.Ltest_01$end>:
-; DIS-NEXT:   c:   03e00008	jr	ra
-; DIS-NEXT:  10:   00000000	nop
-
-; IASM-LABEL: test_01:
-; IASM-LABEL: .Ltest_01$__0:
-; IASM-NEXT:	.byte 0x1
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x2
-; IASM-NEXT:	.byte 0x24
-; IASM-NEXT:	.byte 0x1
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x82
-; IASM-NEXT:	.byte 0x14
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-LABEL: .Ltest_01$end:
-; IASM-NEXT:	.byte 0x8
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0xe0
-; IASM-NEXT:	.byte 0x3
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-LABEL: .Ltest_01$then:
-; IASM-LABEL: .Ltest_01$else:
-
-define internal void @test_02(i32 %a) {
-  %cmp = icmp ne i32 %a, 2
-  br i1 %cmp, label %then, label %else
-then:
-  br label %end
-else:
-  br label %end
-end:
-  ret void
-}
-
-; ASM-LABEL: test_02:
-; ASM-LABEL: .Ltest_02$__0:
-; ASM-NEXT:	# $zero = def.pseudo
-; ASM-NEXT:	addiu	$v0, $zero, 2
-; ASM-NEXT:	beq	$a0, $v0, .Ltest_02$end
-; ASM-LABEL: .Ltest_02$end:
-; ASM-NEXT:	jr	$ra
-; ASM-LABEL: .Ltest_02$then:
-; ASM-LABEL: .Ltest_02$else:
-
-; DIS-LABEL:00000020 <test_02>:
-; DIS-NEXT:  20:   24020002	li	v0,2
-; DIS-NEXT:  24:   10820001	beq	a0,v0,2c <.Ltest_02$end>
-; DIS-NEXT:  28:   00000000	nop
-; DIS-LABEL:0000002c <.Ltest_02$end>:
-; DIS-NEXT:  2c:   03e00008	jr	ra
-; DIS-NEXT:  30:   00000000	nop
-
-; IASM-LABEL: test_02:
-; IASM-LABEL: .Ltest_02$__0:
-; IASM-NEXT:	.byte 0x2
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x2
-; IASM-NEXT:	.byte 0x24
-; IASM-NEXT:	.byte 0x1
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x82
-; IASM-NEXT:	.byte 0x10
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-LABEL: .Ltest_02$end:
-; IASM-NEXT:	.byte 0x8
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0xe0
-; IASM-NEXT:	.byte 0x3
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-LABEL: .Ltest_02$then:
-; IASM-LABEL: .Ltest_02$else:
-
-define internal void @test_03(i32 %a) {
-  %cmp = icmp ugt i32 %a, 3
-  br i1 %cmp, label %then, label %else
-then:
-  br label %end
-else:
-  br label %end
-end:
-  ret void
-}
-
-; ASM-LABEL: test_03:
-; ASM-LABEL: .Ltest_03$__0:
-; ASM-NEXT:	# $zero = def.pseudo
-; ASM-NEXT:	addiu	$v0, $zero, 3
-; ASM-NEXT:	sltu	$v0, $v0, $a0
-; ASM-NEXT:	beqz	$v0, .Ltest_03$end
-; ASM-LABEL: .Ltest_03$end:
-; ASM-NEXT:	jr	$ra
-; ASM-LABEL: .Ltest_03$then:
-; ASM-LABEL: .Ltest_03$else:
-
-; DIS-LABEL:00000040 <test_03>:
-; DIS-NEXT:  40:   24020003	li	v0,3
-; DIS-NEXT:  44:   0044102b	sltu	v0,v0,a0
-; DIS-NEXT:  48:   10400001	beqz	v0,50 <.Ltest_03$end>
-; DIS-NEXT:  4c:   00000000	nop
-; DIS-LABEL:00000050 <.Ltest_03$end>:
-; DIS-NEXT:  50:   03e00008	jr	ra
-; DIS-NEXT:  54:   00000000	nop
-
-; IASM-LABEL: test_03:
-; IASM-LABEL: .Ltest_03$__0:
-; IASM-NEXT:	.byte 0x3
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x2
-; IASM-NEXT:	.byte 0x24
-; IASM-NEXT:	.byte 0x2b
-; IASM-NEXT:	.byte 0x10
-; IASM-NEXT:	.byte 0x44
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x1
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x40
-; IASM-NEXT:	.byte 0x10
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-LABEL: .Ltest_03$end:
-; IASM-NEXT:	.byte 0x8
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0xe0
-; IASM-NEXT:	.byte 0x3
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-LABEL: .Ltest_03$then:
-; IASM-LABEL: .Ltest_03$else:
-
-define internal void @test_04(i32 %a) {
-  %cmp = icmp uge i32 %a, 4
-  br i1 %cmp, label %then, label %else
-then:
-  br label %end
-else:
-  br label %end
-end:
-  ret void
-}
-
-; ASM-LABEL: test_04:
-; ASM-LABEL: .Ltest_04$__0:
-; ASM-NEXT:	# $zero = def.pseudo
-; ASM-NEXT:	addiu	$v0, $zero, 4
-; ASM-NEXT:	sltu	$a0, $a0, $v0
-; ASM-NEXT:	bnez	$a0, .Ltest_04$end
-; ASM-LABEL: .Ltest_04$end:
-; ASM-NEXT:	jr	$ra
-; ASM-LABEL: .Ltest_04$then:
-; ASM-LABEL: .Ltest_04$else:
-
-; DIS-LABEL:00000060 <test_04>:
-; DIS-NEXT:  60:   24020004	li	v0,4
-; DIS-NEXT:  64:   0082202b	sltu	a0,a0,v0
-; DIS-NEXT:  68:   14800001	bnez	a0,70 <.Ltest_04$end>
-; DIS-NEXT:  6c:   00000000	nop
-; DIS-LABEL:00000070 <.Ltest_04$end>:
-; DIS-NEXT:  70:   03e00008	jr	ra
-; DIS-NEXT:  74:   00000000	nop
-
-; IASM-LABEL: test_04:
-; IASM-LABEL: .Ltest_04$__0:
-; IASM-NEXT:	.byte 0x4
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x2
-; IASM-NEXT:	.byte 0x24
-; IASM-NEXT:	.byte 0x2b
-; IASM-NEXT:	.byte 0x20
-; IASM-NEXT:	.byte 0x82
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x1
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x80
-; IASM-NEXT:	.byte 0x14
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-LABEL: .Ltest_04$end:
-; IASM-NEXT:	.byte 0x8
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0xe0
-; IASM-NEXT:	.byte 0x3
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-NEXT:	.byte 0x0
-; IASM-LABEL: .Ltest_04$then:
-; IASM-LABEL: .Ltest_04$else:
diff --git a/third_party/subzero/tests_lit/assembler/mips32/encoding_test_fcmp.ll b/third_party/subzero/tests_lit/assembler/mips32/encoding_test_fcmp.ll
deleted file mode 100644
index 4a2bc81..0000000
--- a/third_party/subzero/tests_lit/assembler/mips32/encoding_test_fcmp.ll
+++ /dev/null
@@ -1,1415 +0,0 @@
-; Test encoding of MIPS32 floating point comparison
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=mips32 --args -O2 \
-; RUN:   --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=mips32 --assemble --disassemble \
-; RUN:   --args -O2 --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=mips32 --args -O2 \
-; RUN:   --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=mips32 --assemble --disassemble \
-; RUN:   --args -O2 --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal i32 @fcmpFalseFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp false float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpFalseFloat:
-; ASM-NEXT: .LfcmpFalseFloat$entry:
-; ASM: 	addiu	$v0, $zero, 0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000000 <fcmpFalseFloat>:
-; DIS-NEXT:    0:	24020000 	li	v0,0
-; DIS-NEXT:    4:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:    8:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpFalseFloat:
-; IASM-NEXT: .LfcmpFalseFloat$entry:
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpFalseDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp false double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpFalseDouble:
-; ASM-NEXT: .LfcmpFalseDouble$entry:
-; ASM: 	addiu	$v0, $zero, 0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000010 <fcmpFalseDouble>:
-; DIS-NEXT:   10:	24020000 	li	v0,0
-; DIS-NEXT:   14:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:   18:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpFalseDouble:
-; IASM-NEXT: .LfcmpFalseDouble$entry:
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpOeqFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp oeq float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpOeqFloat
-; ASM-NEXT: .LfcmpOeqFloat$entry:
-; ASM: 	c.eq.s	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movf	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000020 <fcmpOeqFloat>:
-; DIS-NEXT:   20:	460e6032 	c.eq.s	$f12,$f14
-; DIS-NEXT:   24:	24020001 	li	v0,1
-; DIS-NEXT:   28:	00001001 	movf	v0,zero,$fcc0
-; DIS-NEXT:   2c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:   30:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpOeqFloat:
-; IASM-NEXT: .LfcmpOeqFloat$entry:
-; IASM-NEXT: 	.byte 0x32
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0xe
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpOeqDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp oeq double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpOeqDouble
-; ASM-NEXT: .LfcmpOeqDouble$entry:
-; ASM: 	c.eq.d	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movf	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000040 <fcmpOeqDouble>:
-; DIS-NEXT:   40:	462e6032 	c.eq.d	$f12,$f14
-; DIS-NEXT:   44:	24020001 	li	v0,1
-; DIS-NEXT:   48:	00001001 	movf	v0,zero,$fcc0
-; DIS-NEXT:   4c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:   50:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpOeqDouble:
-; IASM-NEXT: .LfcmpOeqDouble$entry:
-; IASM-NEXT: 	.byte 0x32
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpOgtFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp ogt float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpOgtFloat
-; ASM-NEXT: .LfcmpOgtFloat$entry:
-; ASM: 	c.ule.s	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movt	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000060 <fcmpOgtFloat>:
-; DIS-NEXT:   60:	460e6037 	c.ule.s	$f12,$f14
-; DIS-NEXT:   64:	24020001 	li	v0,1
-; DIS-NEXT:   68:	00011001 	movt	v0,zero,$fcc0
-; DIS-NEXT:   6c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:   70:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpOgtFloat:
-; IASM-NEXT: .LfcmpOgtFloat$entry:
-; IASM-NEXT: 	.byte 0x37
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0xe
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpOgtDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp ogt double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpOgtDouble
-; ASM-NEXT: .LfcmpOgtDouble$entry:
-; ASM: 	c.ule.d	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movt	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000080 <fcmpOgtDouble>:
-; DIS-NEXT:   80:	462e6037 	c.ule.d	$f12,$f14
-; DIS-NEXT:   84:	24020001 	li	v0,1
-; DIS-NEXT:   88:	00011001 	movt	v0,zero,$fcc0
-; DIS-NEXT:   8c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:   90:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpOgtDouble:
-; IASM-NEXT: .LfcmpOgtDouble$entry:
-; IASM-NEXT: 	.byte 0x37
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpOgeFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp oge float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpOgeFloat
-; ASM-NEXT: .LfcmpOgeFloat$entry:
-; ASM: 	c.ult.s	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movt	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 000000a0 <fcmpOgeFloat>:
-; DIS-NEXT:   a0:	460e6035 	c.ult.s	$f12,$f14
-; DIS-NEXT:   a4:	24020001 	li	v0,1
-; DIS-NEXT:   a8:	00011001 	movt	v0,zero,$fcc0
-; DIS-NEXT:   ac:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:   b0:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpOgeFloat:
-; IASM-NEXT: .LfcmpOgeFloat$entry:
-; IASM-NEXT: 	.byte 0x35
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0xe
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpOgeDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp oge double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpOgeDouble
-; ASM-NEXT: .LfcmpOgeDouble$entry:
-; ASM: 	c.ult.d	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movt	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 000000c0 <fcmpOgeDouble>:
-; DIS-NEXT:   c0:	462e6035 	c.ult.d	$f12,$f14
-; DIS-NEXT:   c4:	24020001 	li	v0,1
-; DIS-NEXT:   c8:	00011001 	movt	v0,zero,$fcc0
-; DIS-NEXT:   cc:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:   d0:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpOgeDouble:
-; IASM-NEXT: .LfcmpOgeDouble$entry:
-; IASM-NEXT: 	.byte 0x35
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpOltFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp olt float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpOltFloat
-; ASM-NEXT: .LfcmpOltFloat$entry:
-; ASM: 	c.olt.s	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movf	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 000000e0 <fcmpOltFloat>:
-; DIS-NEXT:   e0:	460e6034 	c.olt.s	$f12,$f14
-; DIS-NEXT:   e4:	24020001 	li	v0,1
-; DIS-NEXT:   e8:	00001001 	movf	v0,zero,$fcc0
-; DIS-NEXT:   ec:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:   f0:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpOltFloat:
-; IASM-NEXT: .LfcmpOltFloat$entry:
-; IASM-NEXT: 	.byte 0x34
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0xe
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpOltDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp olt double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpOltDouble
-; ASM-NEXT: .LfcmpOltDouble$entry:
-; ASM: 	c.olt.d	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movf	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000100 <fcmpOltDouble>:
-; DIS-NEXT:  100:	462e6034 	c.olt.d	$f12,$f14
-; DIS-NEXT:  104:	24020001 	li	v0,1
-; DIS-NEXT:  108:	00001001 	movf	v0,zero,$fcc0
-; DIS-NEXT:  10c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  110:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpOltDouble:
-; IASM-NEXT: .LfcmpOltDouble$entry:
-; IASM-NEXT: 	.byte 0x34
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpOleFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp ole float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpOleFloat
-; ASM-NEXT: .LfcmpOleFloat$entry:
-; ASM: 	c.ole.s	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movf	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000120 <fcmpOleFloat>:
-; DIS-NEXT:  120:	460e6036 	c.ole.s	$f12,$f14
-; DIS-NEXT:  124:	24020001 	li	v0,1
-; DIS-NEXT:  128:	00001001 	movf	v0,zero,$fcc0
-; DIS-NEXT:  12c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  130:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpOleFloat:
-; IASM-NEXT: .LfcmpOleFloat$entry:
-; IASM-NEXT: 	.byte 0x36
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0xe
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpOleDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp ole double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpOleDouble
-; ASM-NEXT: .LfcmpOleDouble$entry:
-; ASM: 	c.ole.d	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movf	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000140 <fcmpOleDouble>:
-; DIS-NEXT:  140:	462e6036 	c.ole.d	$f12,$f14
-; DIS-NEXT:  144:	24020001 	li	v0,1
-; DIS-NEXT:  148:	00001001 	movf	v0,zero,$fcc0
-; DIS-NEXT:  14c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  150:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpOleDouble:
-; IASM-NEXT: .LfcmpOleDouble$entry:
-; IASM-NEXT: 	.byte 0x36
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpOneFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp one float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpOneFloat
-; ASM-NEXT: .LfcmpOneFloat$entry:
-; ASM: 	c.ueq.s	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movt	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000160 <fcmpOneFloat>:
-; DIS-NEXT:  160:	460e6033 	c.ueq.s	$f12,$f14
-; DIS-NEXT:  164:	24020001 	li	v0,1
-; DIS-NEXT:  168:	00011001 	movt	v0,zero,$fcc0
-; DIS-NEXT:  16c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  170:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpOneFloat:
-; IASM-NEXT: .LfcmpOneFloat$entry:
-; IASM-NEXT: 	.byte 0x33
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0xe
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpOneDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp one double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpOneDouble
-; ASM-NEXT: .LfcmpOneDouble$entry:
-; ASM: 	c.ueq.d	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movt	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000180 <fcmpOneDouble>:
-; DIS-NEXT:  180:	462e6033 	c.ueq.d	$f12,$f14
-; DIS-NEXT:  184:	24020001 	li	v0,1
-; DIS-NEXT:  188:	00011001 	movt	v0,zero,$fcc0
-; DIS-NEXT:  18c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  190:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpOneDouble:
-; IASM-NEXT: .LfcmpOneDouble$entry:
-; IASM-NEXT: 	.byte 0x33
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpOrdFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp ord float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpOrdFloat:
-; ASM-NEXT: .LfcmpOrdFloat$entry:
-; ASM: 	c.un.s	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movt	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 000001a0 <fcmpOrdFloat>:
-; DIS-NEXT:  1a0:	460e6031 	c.un.s	$f12,$f14
-; DIS-NEXT:  1a4:	24020001 	li	v0,1
-; DIS-NEXT:  1a8:	00011001 	movt	v0,zero,$fcc0
-; DIS-NEXT:  1ac:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  1b0:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpOrdFloat:
-; IASM-NEXT: .LfcmpOrdFloat$entry:
-; IASM-NEXT: 	.byte 0x31
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0xe
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpOrdDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp ord double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpOrdDouble:
-; ASM-NEXT: .LfcmpOrdDouble$entry:
-; ASM: 	c.un.d	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movt	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 000001c0 <fcmpOrdDouble>:
-; DIS-NEXT:  1c0:	462e6031 	c.un.d	$f12,$f14
-; DIS-NEXT:  1c4:	24020001 	li	v0,1
-; DIS-NEXT:  1c8:	00011001 	movt	v0,zero,$fcc0
-; DIS-NEXT:  1cc:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  1d0:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpOrdDouble:
-; IASM-NEXT: .LfcmpOrdDouble$entry:
-; IASM-NEXT: 	.byte 0x31
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpUeqFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp ueq float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpUeqFloat
-; ASM-NEXT: .LfcmpUeqFloat$entry:
-; ASM: 	c.ueq.s	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movf	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 000001e0 <fcmpUeqFloat>:
-; DIS-NEXT:  1e0:	460e6033 	c.ueq.s	$f12,$f14
-; DIS-NEXT:  1e4:	24020001 	li	v0,1
-; DIS-NEXT:  1e8:	00001001 	movf	v0,zero,$fcc0
-; DIS-NEXT:  1ec:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  1f0:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpUeqFloat:
-; IASM-NEXT: .LfcmpUeqFloat$entry:
-; IASM-NEXT: 	.byte 0x33
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0xe
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpUeqDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp ueq double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpUeqDouble
-; ASM-NEXT: .LfcmpUeqDouble$entry:
-; ASM: 	c.ueq.d	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movf	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000200 <fcmpUeqDouble>:
-; DIS-NEXT:  200:	462e6033 	c.ueq.d	$f12,$f14
-; DIS-NEXT:  204:	24020001 	li	v0,1
-; DIS-NEXT:  208:	00001001 	movf	v0,zero,$fcc0
-; DIS-NEXT:  20c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  210:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpUeqDouble:
-; IASM-NEXT: .LfcmpUeqDouble$entry:
-; IASM-NEXT: 	.byte 0x33
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpUgtFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp ugt float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpUgtFloat
-; ASM-NEXT: .LfcmpUgtFloat$entry:
-; ASM: 	c.ole.s	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movt	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000220 <fcmpUgtFloat>:
-; DIS-NEXT:  220:	460e6036 	c.ole.s	$f12,$f14
-; DIS-NEXT:  224:	24020001 	li	v0,1
-; DIS-NEXT:  228:	00011001 	movt	v0,zero,$fcc0
-; DIS-NEXT:  22c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  230:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpUgtFloat:
-; IASM-NEXT: .LfcmpUgtFloat$entry:
-; IASM-NEXT: 	.byte 0x36
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0xe
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpUgtDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp ugt double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpUgtDouble
-; ASM-NEXT: .LfcmpUgtDouble$entry:
-; ASM: 	c.ole.d	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movt	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000240 <fcmpUgtDouble>:
-; DIS-NEXT:  240:	462e6036 	c.ole.d	$f12,$f14
-; DIS-NEXT:  244:	24020001 	li	v0,1
-; DIS-NEXT:  248:	00011001 	movt	v0,zero,$fcc0
-; DIS-NEXT:  24c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  250:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpUgtDouble:
-; IASM-NEXT: .LfcmpUgtDouble$entry:
-; IASM-NEXT: 	.byte 0x36
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpUgeFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp uge float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpUgeFloat
-; ASM-NEXT: .LfcmpUgeFloat$entry:
-; ASM: 	c.olt.s	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movt	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000260 <fcmpUgeFloat>:
-; DIS-NEXT:  260:	460e6034 	c.olt.s	$f12,$f14
-; DIS-NEXT:  264:	24020001 	li	v0,1
-; DIS-NEXT:  268:	00011001 	movt	v0,zero,$fcc0
-; DIS-NEXT:  26c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  270:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpUgeFloat:
-; IASM-NEXT: .LfcmpUgeFloat$entry:
-; IASM-NEXT: 	.byte 0x34
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0xe
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpUgeDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp uge double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpUgeDouble
-; ASM-NEXT: .LfcmpUgeDouble$entry:
-; ASM: 	c.olt.d	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movt	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000280 <fcmpUgeDouble>:
-; DIS-NEXT:  280:	462e6034 	c.olt.d	$f12,$f14
-; DIS-NEXT:  284:	24020001 	li	v0,1
-; DIS-NEXT:  288:	00011001 	movt	v0,zero,$fcc0
-; DIS-NEXT:  28c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  290:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpUgeDouble:
-; IASM-NEXT: .LfcmpUgeDouble$entry:
-; IASM-NEXT: 	.byte 0x34
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpUltFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp ult float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpUltFloat
-; ASM-NEXT: .LfcmpUltFloat$entry:
-; ASM: 	c.ult.s	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movf	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 000002a0 <fcmpUltFloat>:
-; DIS-NEXT:  2a0:	460e6035 	c.ult.s	$f12,$f14
-; DIS-NEXT:  2a4:	24020001 	li	v0,1
-; DIS-NEXT:  2a8:	00001001 	movf	v0,zero,$fcc0
-; DIS-NEXT:  2ac:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  2b0:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpUltFloat:
-; IASM-NEXT: .LfcmpUltFloat$entry:
-; IASM-NEXT: 	.byte 0x35
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0xe
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpUltDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp ult double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpUltDouble
-; ASM-NEXT: .LfcmpUltDouble$entry:
-; ASM: 	c.ult.d	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movf	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 000002c0 <fcmpUltDouble>:
-; DIS-NEXT:  2c0:	462e6035 	c.ult.d	$f12,$f14
-; DIS-NEXT:  2c4:	24020001 	li	v0,1
-; DIS-NEXT:  2c8:	00001001 	movf	v0,zero,$fcc0
-; DIS-NEXT:  2cc:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  2d0:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpUltDouble:
-; IASM-NEXT: .LfcmpUltDouble$entry:
-; IASM-NEXT: 	.byte 0x35
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpUleFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp ule float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpUleFloat
-; ASM-NEXT: .LfcmpUleFloat$entry:
-; ASM: 	c.ule.s	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movf	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 000002e0 <fcmpUleFloat>:
-; DIS-NEXT:  2e0:	460e6037 	c.ule.s	$f12,$f14
-; DIS-NEXT:  2e4:	24020001 	li	v0,1
-; DIS-NEXT:  2e8:	00001001 	movf	v0,zero,$fcc0
-; DIS-NEXT:  2ec:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  2f0:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpUleFloat:
-; IASM-NEXT: .LfcmpUleFloat$entry:
-; IASM-NEXT: 	.byte 0x37
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0xe
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpUleDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp ule double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpUleDouble
-; ASM-NEXT: .LfcmpUleDouble$entry:
-; ASM: 	c.ule.d	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movf	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000300 <fcmpUleDouble>:
-; DIS-NEXT:  300:	462e6037 	c.ule.d	$f12,$f14
-; DIS-NEXT:  304:	24020001 	li	v0,1
-; DIS-NEXT:  308:	00001001 	movf	v0,zero,$fcc0
-; DIS-NEXT:  30c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  310:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpUleDouble:
-; IASM-NEXT: .LfcmpUleDouble$entry:
-; IASM-NEXT: 	.byte 0x37
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpUneFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp une float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpUneFloat
-; ASM-NEXT: .LfcmpUneFloat$entry:
-; ASM: 	c.eq.s	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movt	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000320 <fcmpUneFloat>:
-; DIS-NEXT:  320:	460e6032 	c.eq.s	$f12,$f14
-; DIS-NEXT:  324:	24020001 	li	v0,1
-; DIS-NEXT:  328:	00011001 	movt	v0,zero,$fcc0
-; DIS-NEXT:  32c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  330:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpUneFloat:
-; IASM-NEXT: .LfcmpUneFloat$entry:
-; IASM-NEXT: 	.byte 0x32
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0xe
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpUneDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp une double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpUneDouble
-; ASM-NEXT: .LfcmpUneDouble$entry:
-; ASM: 	c.eq.d	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movt	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000340 <fcmpUneDouble>:
-; DIS-NEXT:  340:	462e6032 	c.eq.d	$f12,$f14
-; DIS-NEXT:  344:	24020001 	li	v0,1
-; DIS-NEXT:  348:	00011001 	movt	v0,zero,$fcc0
-; DIS-NEXT:  34c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  350:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpUneDouble:
-; IASM-NEXT: .LfcmpUneDouble$entry:
-; IASM-NEXT: 	.byte 0x32
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpUnoFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp uno float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpUnoFloat
-; ASM-NEXT: .LfcmpUnoFloat$entry:
-; ASM: 	c.un.s	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movf	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000360 <fcmpUnoFloat>:
-; DIS-NEXT:  360:	460e6031 	c.un.s	$f12,$f14
-; DIS-NEXT:  364:	24020001 	li	v0,1
-; DIS-NEXT:  368:	00001001 	movf	v0,zero,$fcc0
-; DIS-NEXT:  36c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  370:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpUnoFloat:
-; IASM-NEXT: .LfcmpUnoFloat$entry:
-; IASM-NEXT: 	.byte 0x31
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0xe
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpUnoDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp uno double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpUnoDouble
-; ASM-NEXT: .LfcmpUnoDouble$entry:
-; ASM: 	c.un.d	$f12, $f14
-; ASM: 	addiu	$v0, $zero, 1
-; ASM: 	movf	$v0, $zero, $fcc0
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 00000380 <fcmpUnoDouble>:
-; DIS-NEXT:  380:	462e6031 	c.un.d	$f12,$f14
-; DIS-NEXT:  384:	24020001 	li	v0,1
-; DIS-NEXT:  388:	00001001 	movf	v0,zero,$fcc0
-; DIS-NEXT:  38c:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  390:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpUnoDouble:
-; IASM-NEXT: .LfcmpUnoDouble$entry:
-; IASM-NEXT: 	.byte 0x31
-; IASM-NEXT: 	.byte 0x60
-; IASM-NEXT: 	.byte 0x2e
-; IASM-NEXT: 	.byte 0x46
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x10
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpTrueFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp true float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpTrueFloat
-; ASM-NEXT: .LfcmpTrueFloat$entry:
-; ASM: 	addiu	$v0, $zero, 1
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 000003a0 <fcmpTrueFloat>:
-; DIS-NEXT:  3a0:	24020001 	li	v0,1
-; DIS-NEXT:  3a4:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  3a8:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpTrueFloat:
-; IASM-NEXT: .LfcmpTrueFloat$entry:
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
-
-define internal i32 @fcmpTrueDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp true double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-
-; ASM-LABEL: fcmpTrueDouble
-; ASM-NEXT: .LfcmpTrueDouble$entry:
-; ASM: 	addiu	$v0, $zero, 1
-; ASM-NEXT: 	andi	$v0, $v0, 1
-; ASM-NEXT: 	jr	$ra
-
-; DIS-LABEL: 000003b0 <fcmpTrueDouble>:
-; DIS-NEXT:  3b0:	24020001 	li	v0,1
-; DIS-NEXT:  3b4:	30420001 	andi	v0,v0,0x1
-; DIS-NEXT:  3b8:	03e00008 	jr	ra
-
-; IASM-LABEL: fcmpTrueDouble:
-; IASM-NEXT: .LfcmpTrueDouble$entry:
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x2
-; IASM-NEXT: 	.byte 0x24
-; IASM-NEXT: 	.byte 0x1
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x42
-; IASM-NEXT: 	.byte 0x30
-; IASM-NEXT: 	.byte 0x8
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0xe0
-; IASM-NEXT: 	.byte 0x3
diff --git a/third_party/subzero/tests_lit/assembler/mips32/encoding_trap.ll b/third_party/subzero/tests_lit/assembler/mips32/encoding_trap.ll
deleted file mode 100644
index a65e6a3..0000000
--- a/third_party/subzero/tests_lit/assembler/mips32/encoding_trap.ll
+++ /dev/null
@@ -1,41 +0,0 @@
-; Test encoding of MIPS32 floating point arithmetic instructions
-
-; REQUIRES: allow_dump
-
-; Compile using standalone assembler.
-; RUN: %p2i --filetype=asm -i %s --target=mips32 --args -O2 \
-; RUN:   --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=ASM
-
-; Show bytes in assembled standalone code.
-; RUN: %p2i --filetype=asm -i %s --target=mips32 --assemble --disassemble \
-; RUN:   --args -O2 --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-; Compile using integrated assembler.
-; RUN: %p2i --filetype=iasm -i %s --target=mips32 --args -O2 \
-; RUN:   --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=IASM
-
-; Show bytes in assembled integrated code.
-; RUN: %p2i --filetype=iasm -i %s --target=mips32 --assemble --disassemble \
-; RUN:   --args -O2 --allow-externally-defined-symbols \
-; RUN:   | FileCheck %s --check-prefix=DIS
-
-define internal void @encTrap() {
-  unreachable
-}
-
-; ASM-LABEL: encTrap
-; ASM-NEXT: .LencTrap$__0:
-; ASM: 	teq	$zero, $zero, 0
-
-; DIS-LABEL: 00000000 <encTrap>:
-; DIS-NEXT:    0:	00000034 	teq	zero,zero
-
-; IASM-LABEL: encTrap:
-; IASM-NEXT: .LencTrap$__0:
-; IASM-NEXT: 	.byte 0x34
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
-; IASM-NEXT: 	.byte 0x0
diff --git a/third_party/subzero/tests_lit/assembler/x86/immediate_encodings.ll b/third_party/subzero/tests_lit/assembler/x86/immediate_encodings.ll
deleted file mode 100644
index 5a35285..0000000
--- a/third_party/subzero/tests_lit/assembler/x86/immediate_encodings.ll
+++ /dev/null
@@ -1,390 +0,0 @@
-; Tests various aspects of x86 immediate encoding. Some encodings are shorter.
-; For example, the encoding is shorter for 8-bit immediates or when using EAX.
-; This assumes that EAX is chosen as the first free register in O2 mode.
-
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 | FileCheck %s
-
-define internal i32 @testXor8Imm8(i32 %arg) {
-entry:
-  %arg_i8 = trunc i32 %arg to i8
-  %result_i8 = xor i8 %arg_i8, 127
-  %result = zext i8 %result_i8 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testXor8Imm8
-; CHECK: 34 7f   xor al
-
-define internal i32 @testXor8Imm8Neg(i32 %arg) {
-entry:
-  %arg_i8 = trunc i32 %arg to i8
-  %result_i8 = xor i8 %arg_i8, -128
-  %result = zext i8 %result_i8 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testXor8Imm8Neg
-; CHECK: 34 80   xor al
-
-define internal i32 @testXor8Imm8NotEAX(i32 %arg, i32 %arg2, i32 %arg3) {
-entry:
-  %arg_i8 = trunc i32 %arg to i8
-  %arg2_i8 = trunc i32 %arg2 to i8
-  %arg3_i8 = trunc i32 %arg3 to i8
-  %x1 = xor i8 %arg_i8, 127
-  %x2 = xor i8 %arg2_i8, 127
-  %x3 = xor i8 %arg3_i8, 127
-  %x4 = add i8 %x1, %x2
-  %x5 = add i8 %x4, %x3
-  %result = zext i8 %x5 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testXor8Imm8NotEAX
-; CHECK: 80 f{{[1-3]}} 7f xor {{[^a]}}l
-
-define internal i32 @testXor16Imm8(i32 %arg) {
-entry:
-  %arg_i16 = trunc i32 %arg to i16
-  %result_i16 = xor i16 %arg_i16, 127
-  %result = zext i16 %result_i16 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testXor16Imm8
-; CHECK: 66 83 f0 7f  xor ax
-
-define internal i32 @testXor16Imm8Neg(i32 %arg) {
-entry:
-  %arg_i16 = trunc i32 %arg to i16
-  %result_i16 = xor i16 %arg_i16, -128
-  %result = zext i16 %result_i16 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testXor16Imm8Neg
-; CHECK: 66 83 f0 80  xor ax
-
-define internal i32 @testXor16Imm16Eax(i32 %arg) {
-entry:
-  %arg_i16 = trunc i32 %arg to i16
-  %tmp = xor i16 %arg_i16, 1024
-  %result_i16 = add i16 %tmp, 1
-  %result = zext i16 %result_i16 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testXor16Imm16Eax
-; CHECK: 66 35 00 04  xor ax
-; CHECK-NEXT: add ax,0x1
-
-define internal i32 @testXor16Imm16NegEax(i32 %arg) {
-entry:
-  %arg_i16 = trunc i32 %arg to i16
-  %tmp = xor i16 %arg_i16, -256
-  %result_i16 = add i16 %tmp, 1
-  %result = zext i16 %result_i16 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testXor16Imm16NegEax
-; CHECK: 66 35 00 ff  xor ax
-; CHECK-NEXT: add ax,0x1
-
-define internal i32 @testXor16Imm16NotEAX(i32 %arg_i32, i32 %arg2_i32, i32 %arg3_i32) {
-entry:
-  %arg = trunc i32 %arg_i32 to i16
-  %arg2 = trunc i32 %arg2_i32 to i16
-  %arg3 = trunc i32 %arg3_i32 to i16
-  %x = xor i16 %arg, 32767
-  %x2 = xor i16 %arg2, 32767
-  %x3 = xor i16 %arg3, 32767
-  %add1 = add i16 %x, %x2
-  %add2 = add i16 %add1, %x3
-  %result = zext i16 %add2 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testXor16Imm16NotEAX
-; CHECK: 66 81 f{{[1-3]}} ff 7f  xor {{[^a]}}x
-; CHECK-NEXT: 66 81 f{{[1-3]}} ff 7f  xor {{[^a]}}x
-
-define internal i32 @testXor32Imm8(i32 %arg) {
-entry:
-  %result = xor i32 %arg, 127
-  ret i32 %result
-}
-; CHECK-LABEL: testXor32Imm8
-; CHECK: 83 f0 7f   xor eax
-
-define internal i32 @testXor32Imm8Neg(i32 %arg) {
-entry:
-  %result = xor i32 %arg, -128
-  ret i32 %result
-}
-; CHECK-LABEL: testXor32Imm8Neg
-; CHECK: 83 f0 80   xor eax
-
-define internal i32 @testXor32Imm32Eax(i32 %arg) {
-entry:
-  %result = xor i32 %arg, 16777216
-  ret i32 %result
-}
-; CHECK-LABEL: testXor32Imm32Eax
-; CHECK: 35 00 00 00 01   xor eax
-
-define internal i32 @testXor32Imm32NegEax(i32 %arg) {
-entry:
-  %result = xor i32 %arg, -256
-  ret i32 %result
-}
-; CHECK-LABEL: testXor32Imm32NegEax
-; CHECK: 35 00 ff ff ff   xor eax
-
-define internal i32 @testXor32Imm32NotEAX(i32 %arg, i32 %arg2, i32 %arg3) {
-entry:
-  %x = xor i32 %arg, 32767
-  %x2 = xor i32 %arg2, 32767
-  %x3 = xor i32 %arg3, 32767
-  %add1 = add i32 %x, %x2
-  %add2 = add i32 %add1, %x3
-  ret i32 %add2
-}
-; CHECK-LABEL: testXor32Imm32NotEAX
-; CHECK: 81 f{{[1-3]}} ff 7f 00 00   xor e{{[^a]}}x,
-
-; Should be similar for add, sub, etc., so sample a few.
-
-define internal i32 @testAdd8Imm8(i32 %arg) {
-entry:
-  %arg_i8 = trunc i32 %arg to i8
-  %result_i8 = add i8 %arg_i8, 126
-  %result = zext i8 %result_i8 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testAdd8Imm8
-; CHECK: 04 7e   add al
-
-define internal i32 @testSub8Imm8(i32 %arg) {
-entry:
-  %arg_i8 = trunc i32 %arg to i8
-  %result_i8 = sub i8 %arg_i8, 125
-  %result = zext i8 %result_i8 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testSub8Imm8
-; CHECK: 2c 7d  sub al
-
-; imul has some shorter 8-bit immediate encodings.
-; It also has a shorter encoding for eax, but we don't do that yet.
-
-define internal i32 @testMul16Imm8(i32 %arg) {
-entry:
-  %arg_i16 = trunc i32 %arg to i16
-  %tmp = mul i16 %arg_i16, 99
-  %result_i16 = add i16 %tmp, 1
-  %result = zext i16 %result_i16 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testMul16Imm8
-; CHECK: 66 6b c0 63  imul ax,ax
-; CHECK-NEXT: add ax,0x1
-
-define internal i32 @testMul16Imm8Neg(i32 %arg) {
-entry:
-  %arg_i16 = trunc i32 %arg to i16
-  %tmp = mul i16 %arg_i16, -111
-  %result_i16 = add i16 %tmp, 1
-  %result = zext i16 %result_i16 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testMul16Imm8Neg
-; CHECK: 66 6b c0 91  imul ax,ax
-; CHECK-NEXT: add ax,0x1
-
-define internal i32 @testMul16Imm16(i32 %arg) {
-entry:
-  %arg_i16 = trunc i32 %arg to i16
-  %tmp = mul i16 %arg_i16, 1025
-  %result_i16 = add i16 %tmp, 1
-  %result = zext i16 %result_i16 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testMul16Imm16
-; CHECK: 66 69 c0 01 04  imul ax,ax
-; CHECK-NEXT: add ax,0x1
-
-define internal i32 @testMul16Imm16Neg(i32 %arg) {
-entry:
-  %arg_i16 = trunc i32 %arg to i16
-  %tmp = mul i16 %arg_i16, -255
-  %result_i16 = add i16 %tmp, 1
-  %result = zext i16 %result_i16 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testMul16Imm16Neg
-; CHECK: 66 69 c0 01 ff  imul ax,ax,0xff01
-; CHECK-NEXT: add ax,0x1
-
-define internal i32 @testMul32Imm8(i32 %arg) {
-entry:
-  %result = mul i32 %arg, 99
-  ret i32 %result
-}
-; CHECK-LABEL: testMul32Imm8
-; CHECK: 6b c0 63  imul eax,eax
-
-define internal i32 @testMul32Imm8Neg(i32 %arg) {
-entry:
-  %result = mul i32 %arg, -111
-  ret i32 %result
-}
-; CHECK-LABEL: testMul32Imm8Neg
-; CHECK: 6b c0 91  imul eax,eax
-
-define internal i32 @testMul32Imm16(i32 %arg) {
-entry:
-  %result = mul i32 %arg, 1025
-  ret i32 %result
-}
-; CHECK-LABEL: testMul32Imm16
-; CHECK: 69 c0 01 04 00 00  imul eax,eax
-
-define internal i32 @testMul32Imm16Neg(i32 %arg) {
-entry:
-  %result = mul i32 %arg, -255
-  ret i32 %result
-}
-; CHECK-LABEL: testMul32Imm16Neg
-; CHECK: 69 c0 01 ff ff ff  imul eax,eax,0xffffff01
-
-define internal i32 @testMul32Imm32ThreeAddress(i32 %a) {
-entry:
-  %mul = mul i32 232, %a
-  %add = add i32 %mul, %a
-  ret i32 %add
-}
-; CHECK-LABEL: testMul32Imm32ThreeAddress
-; CHECK: 69 c8 e8 00 00 00  imul ecx,eax,0xe8
-
-define internal i32 @testMul32Mem32Imm32ThreeAddress(i32 %addr_arg) {
-entry:
-  %__1 = inttoptr i32 %addr_arg to i32*
-  %a = load i32, i32* %__1, align 1
-  %mul = mul i32 232, %a
-  ret i32 %mul
-}
-; CHECK-LABEL: testMul32Mem32Imm32ThreeAddress
-; CHECK: 69 00 e8 00 00 00  imul eax,DWORD PTR [eax],0xe8
-
-define internal i32 @testMul32Imm8ThreeAddress(i32 %a) {
-entry:
-  %mul = mul i32 127, %a
-  %add = add i32 %mul, %a
-  ret i32 %add
-}
-; CHECK-LABEL: testMul32Imm8ThreeAddress
-; CHECK: 6b c8 7f imul ecx,eax,0x7f
-
-define internal i32 @testMul32Mem32Imm8ThreeAddress(i32 %addr_arg) {
-entry:
-  %__1 = inttoptr i32 %addr_arg to i32*
-  %a = load i32, i32* %__1, align 1
-  %mul = mul i32 127, %a
-  ret i32 %mul
-}
-; CHECK-LABEL: testMul32Mem32Imm8ThreeAddress
-; CHECK: 6b 00 7f imul eax,DWORD PTR [eax],0x7f
-
-define internal i32 @testMul16Imm16ThreeAddress(i32 %a) {
-entry:
-  %arg_i16 = trunc i32 %a to i16
-  %mul = mul i16 232, %arg_i16
-  %add = add i16 %mul, %arg_i16
-  %result = zext i16 %add to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testMul16Imm16ThreeAddress
-; CHECK: 66 69 c8 e8 00 imul cx,ax,0xe8
-
-define internal i32 @testMul16Mem16Imm16ThreeAddress(i32 %addr_arg) {
-entry:
-  %__1 = inttoptr i32 %addr_arg to i16*
-  %a = load i16, i16* %__1, align 1
-  %mul = mul i16 232, %a
-  %result = zext i16 %mul to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testMul16Mem16Imm16ThreeAddress
-; CHECK: 66 69 00 e8 00 imul ax,WORD PTR [eax],0xe8
-
-define internal i32 @testMul16Imm8ThreeAddress(i32 %a) {
-entry:
-  %arg_i16 = trunc i32 %a to i16
-  %mul = mul i16 127, %arg_i16
-  %add = add i16 %mul, %arg_i16
-  %result = zext i16 %add to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testMul16Imm8ThreeAddress
-; CHECK: 66 6b c8 7f imul cx,ax,0x7f
-
-define internal i32 @testMul16Mem16Imm8ThreeAddress(i32 %addr_arg) {
-entry:
-  %__1 = inttoptr i32 %addr_arg to i16*
-  %a = load i16, i16* %__1, align 1
-  %mul = mul i16 127, %a
-  %result = zext i16 %mul to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testMul16Mem16Imm8ThreeAddress
-; CHECK: 66 6b 00 7f imul ax,WORD PTR [eax],0x7f
-
-; The GPR shift instructions either allow an 8-bit immediate or
-; have a special encoding for "1".
-define internal i32 @testShl16Imm8(i32 %arg) {
-entry:
-  %arg_i16 = trunc i32 %arg to i16
-  %tmp = shl i16 %arg_i16, 13
-  %result = zext i16 %tmp to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testShl16Imm8
-; CHECK: 66 c1 e0 0d shl ax,0xd
-
-define internal i32 @testShl16Imm1(i32 %arg) {
-entry:
-  %arg_i16 = trunc i32 %arg to i16
-  %tmp = shl i16 %arg_i16, 1
-  %result = zext i16 %tmp to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testShl16Imm1
-; CHECK: 66 d1 e0 shl ax
-
-; Currently the "test" instruction is used for 64-bit shifts, and
-; for ctlz 64-bit, so we use those to test the "test" instruction.
-; One optimization for "test": the "test" instruction is essentially a
-; bitwise AND that doesn't modify the two source operands, so for immediates
-; under 8-bits and registers with 8-bit variants we can use the shorter form.
-
-define internal i64 @test_via_shl64Bit(i64 %a, i64 %b) {
-entry:
-  %shl = shl i64 %a, %b
-  ret i64 %shl
-}
-; CHECK-LABEL: test_via_shl64Bit
-; CHECK: 0f a5 c2  shld edx,eax,cl
-; CHECK: d3 e0     shl eax,cl
-; CHECK: f6 c1 20  test cl,0x20
-
-; Test a few register encodings of "test".
-declare i64 @llvm.ctlz.i64(i64, i1)
-
-define internal i64 @test_via_ctlz_64(i64 %x, i64 %y, i64 %z, i64 %w) {
-entry:
-  %r = call i64 @llvm.ctlz.i64(i64 %x, i1 false)
-  %r2 = call i64 @llvm.ctlz.i64(i64 %y, i1 false)
-  %r3 = call i64 @llvm.ctlz.i64(i64 %z, i1 false)
-  %r4 = call i64 @llvm.ctlz.i64(i64 %w, i1 false)
-  %res1 = add i64 %r, %r2
-  %res2 = add i64 %r3, %r4
-  %res = add i64 %res1, %res2
-  ret i64 %res
-}
-; CHECK-LABEL: test_via_ctlz_64
-; CHECK-DAG: 85 c0 test eax,eax
-; CHECK-DAG: 85 db test ebx,ebx
-; CHECK-DAG: 85 f6 test esi,esi
diff --git a/third_party/subzero/tests_lit/assembler/x86/jump_encodings.ll b/third_party/subzero/tests_lit/assembler/x86/jump_encodings.ll
deleted file mode 100644
index e7d444e..0000000
--- a/third_party/subzero/tests_lit/assembler/x86/jump_encodings.ll
+++ /dev/null
@@ -1,203 +0,0 @@
-; Tests various aspects of x86 branch encodings (near vs far,
-; forward vs backward, using CFG labels, or local labels).
-
-; Use -ffunction-sections so that the offsets reset for each function.
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \
-; RUN:   -ffunction-sections | FileCheck %s
-
-; Use atomic ops as filler, which shouldn't get optimized out.
-declare void @llvm.nacl.atomic.store.i32(i32, i32*, i32)
-declare i32 @llvm.nacl.atomic.load.i32(i32*, i32)
-declare i32 @llvm.nacl.atomic.rmw.i32(i32, i32*, i32, i32)
-
-define internal void @test_near_backward(i32 %iptr, i32 %val) {
-entry:
-  br label %next
-next:
-  %ptr = inttoptr i32 %iptr to i32*
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  br label %next2
-next2:
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  %cmp = icmp ult i32 %val, 1
-  br i1 %cmp, label %next2, label %next
-}
-
-; CHECK-LABEL: test_near_backward
-; CHECK:      8: {{.*}}  mov DWORD PTR
-; CHECK-NEXT: a: {{.*}}  mfence
-; CHECK-NEXT: d: {{.*}}  mov DWORD PTR
-; CHECK-NEXT: f: {{.*}}  mfence
-; CHECK-NEXT: 12: {{.*}} cmp
-; CHECK-NEXT: 15: 72 f6 jb d
-; CHECK-NEXT: 17: eb ef jmp 8
-
-; Test one of the backward branches being too large for 8 bits
-; and one being just okay.
-define internal void @test_far_backward1(i32 %iptr, i32 %val) {
-entry:
-  br label %next
-next:
-  %ptr = inttoptr i32 %iptr to i32*
-  %tmp = call i32 @llvm.nacl.atomic.load.i32(i32* %ptr, i32 6)
-  br label %next2
-next2:
-  call void @llvm.nacl.atomic.store.i32(i32 %tmp, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  %cmp = icmp ugt i32 %val, 0
-  br i1 %cmp, label %next2, label %next
-}
-
-; CHECK-LABEL: test_far_backward1
-; CHECK:      8: {{.*}}  mov {{.*}},DWORD PTR [e{{[^s]}}
-; CHECK-NEXT: a: {{.*}}  mov DWORD PTR
-; CHECK-NEXT: c: {{.*}}  mfence
-; CHECK: 85: 77 83 ja a
-; CHECK-NEXT: 87: e9 7c ff ff ff jmp 8
-
-; Same as test_far_backward1, but with the conditional branch being
-; the one that is too far.
-define internal void @test_far_backward2(i32 %iptr, i32 %val) {
-entry:
-  br label %next
-next:
-  %ptr = inttoptr i32 %iptr to i32*
-  %tmp = call i32 @llvm.nacl.atomic.load.i32(i32* %ptr, i32 6)
-  %tmp2 = call i32 @llvm.nacl.atomic.load.i32(i32* %ptr, i32 6)
-  %tmp3 = call i32 @llvm.nacl.atomic.load.i32(i32* %ptr, i32 6)
-  %tmp4 = call i32 @llvm.nacl.atomic.load.i32(i32* %ptr, i32 6)
-  %tmp5 = call i32 @llvm.nacl.atomic.load.i32(i32* %ptr, i32 6)
-  br label %next2
-next2:
-  call void @llvm.nacl.atomic.store.i32(i32 %tmp, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %tmp2, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %tmp3, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %tmp4, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %tmp5, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  %cmp = icmp sle i32 %val, 0
-  br i1 %cmp, label %next, label %next2
-}
-
-; CHECK-LABEL: test_far_backward2
-; CHECK:      c:  {{.*}}  mov {{.*}},DWORD PTR [e{{[^s]}}
-; CHECK:      14: {{.*}}  mov {{.*}},DWORD PTR
-; CHECK-NEXT: 16: {{.*}}  mov DWORD PTR
-; CHECK-NEXT: 18: {{.*}}  mfence
-; CHECK: 8c: 0f 8e 7a ff ff ff jle c
-; CHECK-NEXT: 92: eb 82 jmp 16
-
-define internal void @test_near_forward(i32 %iptr, i32 %val) {
-entry:
-  br label %next1
-next1:
-  %ptr = inttoptr i32 %iptr to i32*
-  %cmp = icmp ult i32 %val, 1
-  br i1 %cmp, label %next3, label %next2
-next2:
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  br label %next3
-next3:
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  br label %next1
-}
-; Note: forward branches for non-local labels in Subzero currently use the fully
-; relaxed form (4-byte offset) to avoid needing a relaxation pass.  When we use
-; llvm-mc, it performs the relaxation pass and uses a 1-byte offset.
-; CHECK-LABEL: test_near_forward
-; CHECK:      [[BACKLABEL:[0-9a-f]+]]: {{.*}} cmp
-; CHECK-NEXT: {{.*}} jb [[FORWARDLABEL:[0-9a-f]+]]
-; CHECK-NEXT: {{.*}} mov DWORD PTR
-; CHECK-NEXT: {{.*}} mfence
-; CHECK-NEXT: [[FORWARDLABEL]]: {{.*}} mov DWORD PTR
-; CHECK:      {{.*}} jmp [[BACKLABEL]]
-
-
-; Unlike forward branches to cfg nodes, "local" forward branches
-; always use a 1 byte displacement.
-; Check local forward branches, followed by a near backward branch
-; to make sure that the instruction size accounting for the forward
-; branches are correct, by the time the backward branch is hit.
-; A 64-bit compare happens to use local forward branches.
-define internal void @test_local_forward_then_back(i64 %val64, i32 %iptr,
-                                                   i32 %val) {
-entry:
-  br label %next
-next:
-  %ptr = inttoptr i32 %iptr to i32*
-  call void @llvm.nacl.atomic.store.i32(i32 %val, i32* %ptr, i32 6)
-  br label %next2
-next2:
-  %cmp = icmp ult i64 %val64, 1
-  br i1 %cmp, label %next, label %next2
-}
-; CHECK-LABEL: test_local_forward_then_back
-; CHECK:      {{.*}} mov DWORD PTR
-; CHECK-NEXT: {{.*}} mfence
-; CHECK-NEXT: [[LABEL:[0-9a-f]+]]: {{.*}} cmp
-; CHECK-NEXT: {{.*}} jb
-; CHECK-NEXT: {{.*}} ja
-; CHECK-NEXT: {{.*}} cmp
-; CHECK-NEXT: {{.*}} jb
-; CHECK-NEXT: {{.*}} jmp [[LABEL]]
-
-
-; Test that backward local branches also work and are small.
-; Some of the atomic instructions use a cmpxchg loop.
-define internal void @test_local_backward(i64 %val64, i32 %iptr, i32 %val) {
-entry:
-  br label %next
-next:
-  %ptr = inttoptr i32 %iptr to i32*
-  %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 5, i32* %ptr, i32 %val, i32 6)
-  br label %next2
-next2:
-  %success = icmp eq i32 1, %a
-  br i1 %success, label %next, label %next2
-}
-; CHECK-LABEL: test_local_backward
-; CHECK:       9: {{.*}} mov {{.*}},DWORD
-; CHECK:       b: {{.*}} mov
-; CHECK-NEXT:  d: {{.*}} xor
-; CHECK-NEXT:  f: {{.*}} lock cmpxchg
-; CHECK-NEXT: 13: 75 f6 jne b
-; CHECK:      1c: 74 eb je 9
diff --git a/third_party/subzero/tests_lit/assembler/x86/opcode_register_encodings.ll b/third_party/subzero/tests_lit/assembler/x86/opcode_register_encodings.ll
deleted file mode 100644
index f0a9006..0000000
--- a/third_party/subzero/tests_lit/assembler/x86/opcode_register_encodings.ll
+++ /dev/null
@@ -1,307 +0,0 @@
-; Tests various aspects of x86 opcode encodings. E.g., some opcodes like
-; those for pmull vary more wildly depending on operand size (rather than
-; follow a usual pattern).
-
-; RUN: %p2i --filetype=obj --disassemble --sandbox -i %s --args -O2 \
-; RUN:  -mattr=sse4.1 -split-local-vars=0 | FileCheck %s
-
-define internal <8 x i16> @test_mul_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
-entry:
-  %res = mul <8 x i16> %arg0, %arg1
-  ret <8 x i16> %res
-; CHECK-LABEL: test_mul_v8i16
-; CHECK: 66 0f d5 c1 pmullw xmm0,xmm1
-}
-
-; Test register and address mode encoding.
-define internal <8 x i16> @test_mul_v8i16_more_regs(
-     <8 x i1> %cond, <8 x i16> %arg0, <8 x i16> %arg1, <8 x i16> %arg2,
-     <8 x i16> %arg3, <8 x i16> %arg4, <8 x i16> %arg5, <8 x i16> %arg6,
-     <8 x i16> %arg7, <8 x i16> %arg8) {
-entry:
-  %res1 = sub <8 x i16> %arg0, %arg1
-  %res2 = sub <8 x i16> %arg0, %arg2
-  %res3 = sub <8 x i16> %arg0, %arg3
-  %res4 = sub <8 x i16> %arg0, %arg4
-  %res5 = sub <8 x i16> %arg0, %arg5
-  %res6 = sub <8 x i16> %arg0, %arg6
-  %res7 = sub <8 x i16> %arg0, %arg7
-  %res8 = sub <8 x i16> %arg0, %arg8
-  %res_acc1 = select <8 x i1> %cond, <8 x i16> %res1, <8 x i16> %res2
-  %res_acc2 = select <8 x i1> %cond, <8 x i16> %res3, <8 x i16> %res4
-  %res_acc3 = select <8 x i1> %cond, <8 x i16> %res5, <8 x i16> %res6
-  %res_acc4 = select <8 x i1> %cond, <8 x i16> %res7, <8 x i16> %res8
-  %res_acc1_3 = select <8 x i1> %cond, <8 x i16> %res_acc1, <8 x i16> %res_acc3
-  %res_acc2_4 = select <8 x i1> %cond, <8 x i16> %res_acc2, <8 x i16> %res_acc4
-  %res = select <8 x i1> %cond, <8 x i16> %res_acc1_3, <8 x i16> %res_acc2_4
-  ret <8 x i16> %res
-; CHECK-LABEL: test_mul_v8i16_more_regs
-; CHECK-DAG: psubw xmm0,{{xmm[0-7]|xmmword ptr\[esp}}
-; CHECK-DAG: psubw xmm0,{{xmm[0-7]|xmmword ptr\[esp}}
-; CHECK-DAG: psubw xmm0,{{xmm[0-7]|xmmword ptr\[esp}}
-; CHECK-DAG: psubw xmm0,{{xmm[0-7]|xmmword ptr\[esp}}
-; CHECK-DAG: psubw xmm0,{{xmm[0-7]|xmmword ptr\[esp}}
-; CHECK-DAG: psubw xmm0,{{xmm[0-7]|xmmword ptr\[esp}}
-; CHECK-DAG: psubw xmm0,XMMWORD PTR [esp
-; CHECK-DAG: psubw xmm1,XMMWORD PTR [esp
-}
-
-define internal <4 x i32> @test_mul_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
-entry:
-  %res = mul <4 x i32> %arg0, %arg1
-  ret <4 x i32> %res
-; CHECK-LABEL: test_mul_v4i32
-; CHECK: 66 0f 38 40 c1  pmulld  xmm0,xmm1
-}
-
-define internal <4 x i32> @test_mul_v4i32_more_regs(
-    <4 x i1> %cond, <4 x i32> %arg0, <4 x i32> %arg1, <4 x i32> %arg2,
-    <4 x i32> %arg3, <4 x i32> %arg4, <4 x i32> %arg5, <4 x i32> %arg6,
-    <4 x i32> %arg7, <4 x i32> %arg8) {
-entry:
-  %res1 = sub <4 x i32> %arg0, %arg1
-  %res2 = sub <4 x i32> %arg0, %arg2
-  %res3 = sub <4 x i32> %arg0, %arg3
-  %res4 = sub <4 x i32> %arg0, %arg4
-  %res5 = sub <4 x i32> %arg0, %arg5
-  %res6 = sub <4 x i32> %arg0, %arg6
-  %res7 = sub <4 x i32> %arg0, %arg7
-  %res8 = sub <4 x i32> %arg0, %arg8
-  %res_acc1 = select <4 x i1> %cond, <4 x i32> %res1, <4 x i32> %res2
-  %res_acc2 = select <4 x i1> %cond, <4 x i32> %res3, <4 x i32> %res4
-  %res_acc3 = select <4 x i1> %cond, <4 x i32> %res5, <4 x i32> %res6
-  %res_acc4 = select <4 x i1> %cond, <4 x i32> %res7, <4 x i32> %res8
-  %res_acc1_3 = select <4 x i1> %cond, <4 x i32> %res_acc1, <4 x i32> %res_acc3
-  %res_acc2_4 = select <4 x i1> %cond, <4 x i32> %res_acc2, <4 x i32> %res_acc4
-  %res = select <4 x i1> %cond, <4 x i32> %res_acc1_3, <4 x i32> %res_acc2_4
-  ret <4 x i32> %res
-; CHECK-LABEL: test_mul_v4i32_more_regs
-; CHECK-DAG: psubd xmm0,{{xmm[0-7]|xmmword ptr\[esp}}
-; CHECK-DAG: psubd xmm0,{{xmm[0-7]|xmmword ptr\[esp}}
-; CHECK-DAG: psubd xmm0,{{xmm[0-7]|xmmword ptr\[esp}}
-; CHECK-DAG: psubd xmm0,{{xmm[0-7]|xmmword ptr\[esp}}
-; CHECK-DAG: psubd xmm0,{{xmm[0-7]|xmmword ptr\[esp}}
-; CHECK-DAG: psubd xmm0,{{xmm[0-7]|xmmword ptr\[esp}}
-; CHECK-DAG: psubd xmm0,XMMWORD PTR [esp
-; CHECK-DAG: psubd xmm1,XMMWORD PTR [esp
-}
-
-; Test movq, which is used by atomic stores.
-declare void @llvm.nacl.atomic.store.i64(i64, i64*, i32)
-
-define internal void @test_atomic_store_64(i32 %iptr, i32 %iptr2,
-                                           i32 %iptr3, i64 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %ptr2 = inttoptr i32 %iptr2 to i64*
-  %ptr3 = inttoptr i32 %iptr3 to i64*
-  call void @llvm.nacl.atomic.store.i64(i64 %v, i64* %ptr2, i32 6)
-  call void @llvm.nacl.atomic.store.i64(i64 1234567891024, i64* %ptr, i32 6)
-  call void @llvm.nacl.atomic.store.i64(i64 %v, i64* %ptr3, i32 6)
-  ret void
-}
-; CHECK-LABEL: test_atomic_store_64
-; CHECK-DAG: f3 0f 7e 04 24    movq xmm0,QWORD PTR [esp]
-; CHECK-DAG: f3 0f 7e 44 24 08 movq xmm0,QWORD PTR [esp
-; CHECK-DAG: 66 0f d6 0{{.*}}  movq QWORD PTR [e{{.*}}],xmm0
-
-; Test "movups" via vector stores and loads.
-define internal void @store_v16xI8(i32 %addr, i32 %addr2, i32 %addr3,
-                                   <16 x i8> %v) {
-  %addr_v16xI8 = inttoptr i32 %addr to <16 x i8>*
-  %addr2_v16xI8 = inttoptr i32 %addr2 to <16 x i8>*
-  %addr3_v16xI8 = inttoptr i32 %addr3 to <16 x i8>*
-  store <16 x i8> %v, <16 x i8>* %addr2_v16xI8, align 1
-  store <16 x i8> %v, <16 x i8>* %addr_v16xI8, align 1
-  store <16 x i8> %v, <16 x i8>* %addr3_v16xI8, align 1
-  ret void
-}
-; CHECK-LABEL: store_v16xI8
-; CHECK: 0f 11 0{{.*}} movups XMMWORD PTR [e{{.*}}],xmm0
-
-define internal <16 x i8> @load_v16xI8(i32 %addr, i32 %addr2, i32 %addr3) {
-  %addr_v16xI8 = inttoptr i32 %addr to <16 x i8>*
-  %addr2_v16xI8 = inttoptr i32 %addr2 to <16 x i8>*
-  %addr3_v16xI8 = inttoptr i32 %addr3 to <16 x i8>*
-  %res1 = load <16 x i8>, <16 x i8>* %addr2_v16xI8, align 1
-  %res2 = load <16 x i8>, <16 x i8>* %addr_v16xI8, align 1
-  %res3 = load <16 x i8>, <16 x i8>* %addr3_v16xI8, align 1
-  %res12 = add <16 x i8> %res1, %res2
-  %res123 = add <16 x i8> %res12, %res3
-  ret <16 x i8> %res123
-}
-; CHECK-LABEL: load_v16xI8
-; CHECK: 0f 10 0{{.*}} movups xmm0,XMMWORD PTR [e{{.*}}]
-
-; Test segment override prefix. This happens w/ nacl.read.tp.
-declare i8* @llvm.nacl.read.tp()
-
-; Also test more address complex operands via address-mode-optimization.
-define internal i32 @test_nacl_read_tp_more_addressing() {
-entry:
-  %ptr = call i8* @llvm.nacl.read.tp()
-  %__1 = ptrtoint i8* %ptr to i32
-  %x = add i32 %__1, %__1
-  %__3 = inttoptr i32 %x to i32*
-  %v = load i32, i32* %__3, align 1
-  %v_add = add i32 %v, 1
-
-  %ptr2 = call i8* @llvm.nacl.read.tp()
-  %__6 = ptrtoint i8* %ptr2 to i32
-  %y = add i32 %__6, -128
-  %__8 = inttoptr i32 %y to i32*
-  %v_add2 = add i32 %v, 4
-  store i32 %v_add2, i32* %__8, align 1
-
-  %z = add i32 %__6, 256
-  %__9 = inttoptr i32 %z to i32*
-  %v_add3 = add i32 %v, 91
-  store i32 %v_add2, i32* %__9, align 1
-
-  ret i32 %v
-}
-; CHECK-LABEL: test_nacl_read_tp_more_addressing
-; CHECK: mov eax,{{(DWORD PTR )?}}gs:0x0
-; CHECK: 8b 04 00              mov eax,DWORD PTR [eax+eax*1]
-; CHECK: 65 8b 0d 00 00 00 00  mov ecx,DWORD PTR gs:0x0
-; CHECK: 89 51 80              mov DWORD PTR [ecx-0x80],edx
-; CHECK: 89 91 00 01 00 00     mov DWORD PTR [ecx+0x100],edx
-
-; The 16-bit pinsrw/pextrw (SSE2) are quite different from
-; the pinsr{b,d}/pextr{b,d} (SSE4.1).
-
-define internal <4 x i32> @test_pinsrd(<4 x i32> %vec, i32 %elt1, i32 %elt2,
-                                       i32 %elt3, i32 %elt4) {
-entry:
-  %elt12 = add i32 %elt1, %elt2
-  %elt34 = add i32 %elt3, %elt4
-  %res1 = insertelement <4 x i32> %vec, i32 %elt12, i32 1
-  %res2 = insertelement <4 x i32> %res1, i32 %elt34, i32 2
-  %res3 = insertelement <4 x i32> %res2, i32 %elt1, i32 3
-  ret <4 x i32> %res3
-}
-; CHECK-LABEL: test_pinsrd
-; CHECK-DAG: 66 0f 3a 22 c{{.*}} 01 pinsrd xmm0,e{{.*}}
-; CHECK-DAG: 66 0f 3a 22 c{{.*}} 02 pinsrd xmm0,e{{.*}}
-; CHECK-DAG: 66 0f 3a 22 c{{.*}} 03 pinsrd xmm0,e{{.*}}
-
-define internal <16 x i8> @test_pinsrb(<16 x i8> %vec, i32 %elt1_w, i32 %elt2_w,
-                                       i32 %elt3_w, i32 %elt4_w) {
-entry:
-  %elt1 = trunc i32 %elt1_w to i8
-  %elt2 = trunc i32 %elt2_w to i8
-  %elt3 = trunc i32 %elt3_w to i8
-  %elt4 = trunc i32 %elt4_w to i8
-  %elt12 = add i8 %elt1, %elt2
-  %elt34 = add i8 %elt3, %elt4
-  %res1 = insertelement <16 x i8> %vec, i8 %elt12, i32 1
-  %res2 = insertelement <16 x i8> %res1, i8 %elt34, i32 7
-  %res3 = insertelement <16 x i8> %res2, i8 %elt1, i32 15
-  ret <16 x i8> %res3
-}
-; CHECK-LABEL: test_pinsrb
-; CHECK-DAG: 66 0f 3a 20 c{{.*}} 01 pinsrb xmm0,e{{.*}}
-; CHECK-DAG: 66 0f 3a 20 c{{.*}} 07 pinsrb xmm0,e{{.*}}
-; CHECK-DAG: 66 0f 3a 20 c{{.*}} 0f pinsrb xmm0,e{{.*}}
-
-define internal <8 x i16> @test_pinsrw(<8 x i16> %vec, i32 %elt1_w, i32 %elt2_w,
-                                       i32 %elt3_w, i32 %elt4_w) {
-entry:
-  %elt1 = trunc i32 %elt1_w to i16
-  %elt2 = trunc i32 %elt2_w to i16
-  %elt3 = trunc i32 %elt3_w to i16
-  %elt4 = trunc i32 %elt4_w to i16
-  %elt12 = add i16 %elt1, %elt2
-  %elt34 = add i16 %elt3, %elt4
-  %res1 = insertelement <8 x i16> %vec, i16 %elt12, i32 1
-  %res2 = insertelement <8 x i16> %res1, i16 %elt34, i32 4
-  %res3 = insertelement <8 x i16> %res2, i16 %elt1, i32 7
-  ret <8 x i16> %res3
-}
-; CHECK-LABEL: test_pinsrw
-; CHECK-DAG: 66 0f c4 c{{.*}} 01 pinsrw xmm0,e{{.*}}
-; CHECK-DAG: 66 0f c4 c{{.*}} 04 pinsrw xmm0,e{{.*}}
-; CHECK-DAG: 66 0f c4 c{{.*}} 07 pinsrw xmm0,e{{.*}}
-
-define internal i32 @test_pextrd(i32 %c, <4 x i32> %vec1, <4 x i32> %vec2,
-                                 <4 x i32> %vec3, <4 x i32> %vec4) {
-entry:
-  switch i32 %c, label %three [i32 0, label %zero
-                               i32 1, label %one
-                               i32 2, label %two]
-zero:
-  %res0 = extractelement <4 x i32> %vec1, i32 0
-  ret i32 %res0
-one:
-  %res1 = extractelement <4 x i32> %vec2, i32 1
-  ret i32 %res1
-two:
-  %res2 = extractelement <4 x i32> %vec3, i32 2
-  ret i32 %res2
-three:
-  %res3 = extractelement <4 x i32> %vec4, i32 3
-  ret i32 %res3
-}
-; CHECK-LABEL: test_pextrd
-; CHECK-DAG: 66 0f 3a 16 c0 00 pextrd eax,xmm0
-; CHECK-DAG: 66 0f 3a 16 c8 01 pextrd eax,xmm1
-; CHECK-DAG: 66 0f 3a 16 d0 02 pextrd eax,xmm2
-; CHECK-DAG: 66 0f 3a 16 d8 03 pextrd eax,xmm3
-
-define internal i32 @test_pextrb(i32 %c, <16 x i8> %vec1, <16 x i8> %vec2,
-                                 <16 x i8> %vec3, <16 x i8> %vec4) {
-entry:
-  switch i32 %c, label %three [i32 0, label %zero
-                               i32 1, label %one
-                               i32 2, label %two]
-zero:
-  %res0 = extractelement <16 x i8> %vec1, i32 0
-  %res0_ext = zext i8 %res0 to i32
-  ret i32 %res0_ext
-one:
-  %res1 = extractelement <16 x i8> %vec2, i32 6
-  %res1_ext = zext i8 %res1 to i32
-  ret i32 %res1_ext
-two:
-  %res2 = extractelement <16 x i8> %vec3, i32 12
-  %res2_ext = zext i8 %res2 to i32
-  ret i32 %res2_ext
-three:
-  %res3 = extractelement <16 x i8> %vec4, i32 15
-  %res3_ext = zext i8 %res3 to i32
-  ret i32 %res3_ext
-}
-; CHECK-LABEL: test_pextrb
-; CHECK-DAG: 66 0f 3a 14 c0 00 pextrb eax,xmm0
-; CHECK-DAG: 66 0f 3a 14 c8 06 pextrb eax,xmm1
-; CHECK-DAG: 66 0f 3a 14 d0 0c pextrb eax,xmm2
-; CHECK-DAG: 66 0f 3a 14 d8 0f pextrb eax,xmm3
-
-define internal i32 @test_pextrw(i32 %c, <8 x i16> %vec1, <8 x i16> %vec2,
-                                 <8 x i16> %vec3, <8 x i16> %vec4) {
-entry:
-  switch i32 %c, label %three [i32 0, label %zero
-                               i32 1, label %one
-                               i32 2, label %two]
-zero:
-  %res0 = extractelement <8 x i16> %vec1, i32 0
-  %res0_ext = zext i16 %res0 to i32
-  ret i32 %res0_ext
-one:
-  %res1 = extractelement <8 x i16> %vec2, i32 2
-  %res1_ext = zext i16 %res1 to i32
-  ret i32 %res1_ext
-two:
-  %res2 = extractelement <8 x i16> %vec3, i32 5
-  %res2_ext = zext i16 %res2 to i32
-  ret i32 %res2_ext
-three:
-  %res3 = extractelement <8 x i16> %vec4, i32 7
-  %res3_ext = zext i16 %res3 to i32
-  ret i32 %res3_ext
-}
-; CHECK-LABEL: test_pextrw
-; CHECK-DAG: 66 0f c5 c0 00 pextrw eax,xmm0
-; CHECK-DAG: 66 0f c5 c1 02 pextrw eax,xmm1
-; CHECK-DAG: 66 0f c5 c2 05 pextrw eax,xmm2
-; CHECK-DAG: 66 0f c5 c3 07 pextrw eax,xmm3
diff --git a/third_party/subzero/tests_lit/assembler/x86/sandboxing.ll b/third_party/subzero/tests_lit/assembler/x86/sandboxing.ll
deleted file mode 100644
index 97a44d1..0000000
--- a/third_party/subzero/tests_lit/assembler/x86/sandboxing.ll
+++ /dev/null
@@ -1,332 +0,0 @@
-; Tests basics and corner cases of x86-32 sandboxing, using -Om1 in
-; the hope that the output will remain stable.  When packing bundles,
-; we try to limit to a few instructions with well known sizes and
-; minimal use of registers and stack slots in the lowering sequence.
-
-; XFAIL: filtype=asm
-; RUN: %p2i -i %s --sandbox --filetype=obj --disassemble --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   -ffunction-sections | FileCheck %s
-
-; RUN: %p2i -i %s --sandbox --filetype=obj --disassemble --target=x8664 \
-; RUN:   --args -Om1 -allow-externally-defined-symbols  \
-; RUN:   -ffunction-sections | FileCheck %s --check-prefix X8664
-
-declare void @call_target()
-@global_byte = internal global [1 x i8] zeroinitializer
-@global_short = internal global [2 x i8] zeroinitializer
-@global_int = internal global [4 x i8] zeroinitializer
-
-; A direct call sequence uses the right mask and register-call sequence.
-define internal void @test_direct_call() {
-entry:
-  call void @call_target()
-  ret void
-}
-; CHECK-LABEL: test_direct_call
-; CHECK: nop
-; CHECK: 1b: {{.*}} call 1c
-; CHECK-NEXT: 20:
-; X8664-LABEL: test_direct_call
-; X8664: push {{.*}} R_X86_64_32S test_direct_call+{{.*}}20
-; X8664: jmp {{.*}} call_target
-
-; An indirect call sequence uses the right mask and register-call sequence.
-define internal void @test_indirect_call(i32 %target) {
-entry:
-  %__1 = inttoptr i32 %target to void ()*
-  call void %__1()
-  ret void
-}
-; CHECK-LABEL: test_indirect_call
-; CHECK: mov [[REG:.*]],DWORD PTR [esp
-; CHECK-NEXT: nop
-; CHECK: 1b: {{.*}} and [[REG]],0xffffffe0
-; CHECK-NEXT: call [[REG]]
-; CHECk-NEXT: 20:
-; X8664-LABEL: test_indirect_call
-; X8664: push {{.*}} R_X86_64_32S test_indirect_call+{{.*}}20
-; X8664: {{.*}} and e[[REG:..]],0xffffffe0
-; X8664: add r[[REG]],r15
-; X8664: jmp r[[REG]]
-
-; A return sequence uses the right pop / mask / jmp sequence.
-define internal void @test_ret() {
-entry:
-  ret void
-}
-; CHECK-LABEL: test_ret
-; CHECK: pop ecx
-; CHECK-NEXT: and ecx,0xffffffe0
-; CHECK-NEXT: jmp ecx
-; X8664-LABEL: test_ret
-; X8664: pop rcx
-; X8664: and ecx,0xffffffe0
-; X8664: add rcx,r15
-; X8664: jmp rcx
-
-; A perfectly packed bundle should not have nops at the end.
-define internal void @packed_bundle() {
-entry:
-  call void @call_target()
-  ; bundle boundary
-  %addr_byte = bitcast [1 x i8]* @global_byte to i8*
-  %addr_short = bitcast [2 x i8]* @global_short to i16*
-  store i8 0, i8* %addr_byte, align 1      ; 7-byte instruction
-  store i16 0, i16* %addr_short, align 1   ; 9-byte instruction
-  store i8 0, i8* %addr_byte, align 1      ; 7-byte instruction
-  store i16 0, i16* %addr_short, align 1   ; 9-byte instruction
-  ; bundle boundary
-  store i8 0, i8* %addr_byte, align 1      ; 7-byte instruction
-  store i16 0, i16* %addr_short, align 1   ; 9-byte instruction
-  ret void
-}
-; CHECK-LABEL: packed_bundle
-; CHECK: call
-; CHECK-NEXT: 20: {{.*}} mov BYTE PTR
-; CHECK-NEXT: 27: {{.*}} mov WORD PTR
-; CHECK-NEXT: 30: {{.*}} mov BYTE PTR
-; CHECK-NEXT: 37: {{.*}} mov WORD PTR
-; CHECK-NEXT: 40: {{.*}} mov BYTE PTR
-; CHECK-NEXT: 47: {{.*}} mov WORD PTR
-
-; An imperfectly packed bundle should have one or more nops at the end.
-define internal void @nonpacked_bundle() {
-entry:
-  call void @call_target()
-  ; bundle boundary
-  %addr_short = bitcast [2 x i8]* @global_short to i16*
-  store i16 0, i16* %addr_short, align 1   ; 9-byte instruction
-  store i16 0, i16* %addr_short, align 1   ; 9-byte instruction
-  store i16 0, i16* %addr_short, align 1   ; 9-byte instruction
-  ; nop padding
-  ; bundle boundary
-  store i16 0, i16* %addr_short, align 1   ; 9-byte instruction
-  ret void
-}
-; CHECK-LABEL: nonpacked_bundle
-; CHECK: call
-; CHECK-NEXT: 20: {{.*}} mov WORD PTR
-; CHECK-NEXT: 29: {{.*}} mov WORD PTR
-; CHECK-NEXT: 32: {{.*}} mov WORD PTR
-; CHECK-NEXT: 3b: {{.*}} nop
-; CHECK: 40: {{.*}} mov WORD PTR
-
-; A zero-byte instruction (e.g. local label definition) at a bundle
-; boundary should not trigger nop padding.
-define internal void @label_at_boundary(i32 %arg, float %farg1, float %farg2) {
-entry:
-  %argi8 = trunc i32 %arg to i8
-  call void @call_target()
-  ; bundle boundary
-  %addr_short = bitcast [2 x i8]* @global_short to i16*
-  %addr_int = bitcast [4 x i8]* @global_int to i32*
-  store i32 0, i32* %addr_int, align 1           ; 10-byte instruction
-  %blah = select i1 true, i8 %argi8, i8 %argi8   ; 22-byte lowering sequence
-  ; label is here
-  store i16 0, i16* %addr_short, align 1         ; 9-byte instruction
-  ret void
-}
-; CHECK-LABEL: label_at_boundary
-; CHECK: call
-; We rely on a particular 7-instruction 22-byte Om1 lowering sequence
-; for select.
-; CHECK-NEXT: 20: {{.*}} mov DWORD PTR
-; CHECK-NEXT: 2a: {{.*}} mov {{.*}},0x1
-; CHECK-NEXT: 2c: {{.*}} cmp {{.*}},0x0
-; CHECK-NEXT: 2e: {{.*}} mov {{.*}},BYTE PTR
-; CHECK-NEXT: 32: {{.*}} mov BYTE PTR
-; CHECK-NEXT: 36: {{.*}} jne 40
-; CHECK-NEXT: 38: {{.*}} mov {{.*}},BYTE PTR
-; CHECK-NEXT: 3c: {{.*}} mov BYTE PTR
-; CHECK-NEXT: 40: {{.*}} mov WORD PTR
-
-; Bundle lock without padding.
-define internal void @bundle_lock_without_padding() {
-entry:
-  %addr_short = bitcast [2 x i8]* @global_short to i16*
-  store i16 0, i16* %addr_short, align 1   ; 9-byte instruction
-  ret void
-}
-; CHECK-LABEL: bundle_lock_without_padding
-; CHECK: mov WORD PTR
-; CHECK-NEXT: pop ecx
-; CHECK-NEXT: and ecx,0xffffffe0
-; CHECK-NEXT: jmp ecx
-
-; Bundle lock with padding.
-define internal void @bundle_lock_with_padding() {
-entry:
-  call void @call_target()
-  ; bundle boundary
-  %addr_byte = bitcast [1 x i8]* @global_byte to i8*
-  %addr_short = bitcast [2 x i8]* @global_short to i16*
-  store i8 0, i8* %addr_byte, align 1      ; 7-byte instruction
-  store i16 0, i16* %addr_short, align 1   ; 9-byte instruction
-  store i16 0, i16* %addr_short, align 1   ; 9-byte instruction
-  ret void
-  ; 3 bytes to restore stack pointer
-  ; 1 byte to pop ecx
-  ; bundle_lock
-  ; 3 bytes to mask ecx
-  ; This is now 32 bytes from the beginning of the bundle, so
-  ; a 3-byte nop will need to be emitted before the bundle_lock.
-  ; 2 bytes to jump to ecx
-  ; bundle_unlock
-}
-; CHECK-LABEL: bundle_lock_with_padding
-; CHECK: call
-; CHECK-NEXT: 20: {{.*}} mov BYTE PTR
-; CHECK-NEXT: 27: {{.*}} mov WORD PTR
-; CHECK-NEXT: 30: {{.*}} mov WORD PTR
-; CHECK-NEXT: 39: {{.*}} add esp,
-; CHECK-NEXT: 3c: {{.*}} pop ecx
-; CHECK-NEXT: 3d: {{.*}} nop
-; CHECK-NEXT: 40: {{.*}} and ecx,0xffffffe0
-; CHECK-NEXT: 43: {{.*}} jmp ecx
-
-; Bundle lock align_to_end without any padding.
-define internal void @bundle_lock_align_to_end_padding_0() {
-entry:
-  call void @call_target()
-  ; bundle boundary
-  %addr_short = bitcast [2 x i8]* @global_short to i16*
-  store i16 0, i16* %addr_short, align 1   ; 9-byte instruction
-  store i16 0, i16* %addr_short, align 1   ; 9-byte instruction
-  store i16 0, i16* %addr_short, align 1   ; 9-byte instruction
-  call void @call_target()                 ; 5-byte instruction
-  ret void
-}
-; CHECK-LABEL: bundle_lock_align_to_end_padding_0
-; CHECK: call
-; CHECK-NEXT: 20: {{.*}} mov WORD PTR
-; CHECK-NEXT: 29: {{.*}} mov WORD PTR
-; CHECK-NEXT: 32: {{.*}} mov WORD PTR
-; CHECK-NEXT: 3b: {{.*}} call
-
-; Bundle lock align_to_end with one bunch of padding.
-define internal void @bundle_lock_align_to_end_padding_1() {
-entry:
-  call void @call_target()
-  ; bundle boundary
-  %addr_byte = bitcast [1 x i8]* @global_byte to i8*
-  store i8 0, i8* %addr_byte, align 1      ; 7-byte instruction
-  store i8 0, i8* %addr_byte, align 1      ; 7-byte instruction
-  store i8 0, i8* %addr_byte, align 1      ; 7-byte instruction
-  call void @call_target()                 ; 5-byte instruction
-  ret void
-}
-; CHECK-LABEL: bundle_lock_align_to_end_padding_1
-; CHECK: call
-; CHECK-NEXT: 20: {{.*}} mov BYTE PTR
-; CHECK-NEXT: 27: {{.*}} mov BYTE PTR
-; CHECK-NEXT: 2e: {{.*}} mov BYTE PTR
-; CHECK-NEXT: 35: {{.*}} nop
-; CHECK: 3b: {{.*}} call
-
-; Bundle lock align_to_end with two bunches of padding.
-define internal void @bundle_lock_align_to_end_padding_2(i32 %target) {
-entry:
-  call void @call_target()
-  ; bundle boundary
-  %addr_byte = bitcast [1 x i8]* @global_byte to i8*
-  %addr_short = bitcast [2 x i8]* @global_short to i16*
-  %__1 = inttoptr i32 %target to void ()*
-  store i8 0, i8* %addr_byte, align 1      ; 7-byte instruction
-  store i16 0, i16* %addr_short, align 1   ; 9-byte instruction
-  store i16 0, i16* %addr_short, align 1   ; 9-byte instruction
-  call void %__1()
-  ; 4 bytes to load %target into a register
-  ; bundle_lock align_to_end
-  ; 3 bytes to mask the register
-  ; This is now 32 bytes from the beginning of the bundle, so
-  ; a 3-byte nop will need to be emitted before the bundle_lock,
-  ; followed by a 27-byte nop before the mask/jump.
-  ; 2 bytes to jump to the register
-  ; bundle_unlock
-  ret void
-}
-; CHECK-LABEL: bundle_lock_align_to_end_padding_2
-; CHECK: call
-; CHECK-NEXT: 20: {{.*}} mov BYTE PTR
-; CHECK-NEXT: 27: {{.*}} mov WORD PTR
-; CHECK-NEXT: 30: {{.*}} mov WORD PTR
-; CHECK-NEXT: 39: {{.*}} mov [[REG:.*]],DWORD PTR [esp
-; CHECK-NEXT: 3d: {{.*}} nop
-; CHECK: 40: {{.*}} nop
-; CHECK: 5b: {{.*}} and [[REG]],0xffffffe0
-; CHECK-NEXT: 5e: {{.*}} call [[REG]]
-
-; Tests the pad_to_end bundle alignment with no padding bytes needed.
-define internal void @bundle_lock_pad_to_end_padding_0(i32 %arg0, i32 %arg1,
-                                                       i32 %arg3, i32 %arg4,
-                                                       i32 %arg5, i32 %arg6) {
-  call void @call_target()
-  ; bundle boundary
-  %x = add i32 %arg5, %arg6  ; 12 bytes
-  %y = trunc i32 %x to i16   ; 10 bytes
-  call void @call_target()   ; 10 bytes
-  ; bundle boundary
-  ret void
-}
-; X8664: 56: {{.*}} push {{.*}} R_X86_64_32S bundle_lock_pad_to_end_padding_0+{{.*}}60
-; X8664: 5b: {{.*}} jmp {{.*}} call_target
-; X8664: 60: {{.*}} add
-
-; Tests the pad_to_end bundle alignment with 11 padding bytes needed, and some
-; instructions before the call.
-define internal void @bundle_lock_pad_to_end_padding_11(i32 %arg0, i32 %arg1,
-                                                        i32 %arg3, i32 %arg4,
-                                                        i32 %arg5, i32 %arg6) {
-  call void @call_target()
-  ; bundle boundary
-  %x = add i32 %arg5, %arg6  ; 11 bytes
-  call void @call_target()   ; 10 bytes
-                             ; 11 bytes of nop
-  ; bundle boundary
-  ret void
-}
-; X8664: 4b: {{.*}} push {{.*}} R_X86_64_32S bundle_lock_pad_to_end_padding_11+{{.*}}60
-; X8664: 50: {{.*}} jmp {{.*}} call_target
-; X8664: 55: {{.*}} nop
-; X8664: 5d: {{.*}} nop
-; X8664: 60: {{.*}} add
-
-; Tests the pad_to_end bundle alignment with 22 padding bytes needed, and no
-; instructions before the call.
-define internal void @bundle_lock_pad_to_end_padding_22(i32 %arg0, i32 %arg1,
-                                                        i32 %arg3, i32 %arg4,
-                                                        i32 %arg5, i32 %arg6) {
-  call void @call_target()
-  ; bundle boundary
-  call void @call_target()   ; 10 bytes
-                             ; 22 bytes of nop
-  ; bundle boundary
-  ret void
-}
-; X8664: 40: {{.*}} push {{.*}} R_X86_64_32S bundle_lock_pad_to_end_padding_22+{{.*}}60
-; X8664: 45: {{.*}} jmp {{.*}} call_target
-; X8664: 4a: {{.*}} nop
-; X8664: 52: {{.*}} nop
-; X8664: 5a: {{.*}} nop
-; X8664: 60: {{.*}} add
-
-; Stack adjustment state during an argument push sequence gets
-; properly checkpointed and restored during the two passes, as
-; observed by the stack adjustment for accessing stack-allocated
-; variables.
-define internal void @checkpoint_restore_stack_adjustment(i32 %arg) {
-entry:
-  call void @call_target()
-  ; bundle boundary
-  call void @checkpoint_restore_stack_adjustment(i32 %arg)
-  ret void
-}
-; CHECK-LABEL: checkpoint_restore_stack_adjustment
-; CHECK: sub esp,0x1c
-; CHECK: call
-; The address of %arg should be [esp+0x20], not [esp+0x30].
-; CHECK-NEXT: mov [[REG:.*]],DWORD PTR [esp+0x20]
-; CHECK-NEXT: mov DWORD PTR [esp],[[REG]]
-; CHECK: call
-; CHECK: add esp,0x1c
diff --git a/third_party/subzero/tests_lit/lit.cfg b/third_party/subzero/tests_lit/lit.cfg
deleted file mode 100644
index 1b94bd3..0000000
--- a/third_party/subzero/tests_lit/lit.cfg
+++ /dev/null
@@ -1,143 +0,0 @@
-# -*- Python -*-
-# Taken from utils/lit/tests in the LLVM tree and hacked together to support
-# our tests.
-#
-# Note: This configuration has simple commands to run Subzero's translator.
-# They have the form %X2i (i.e. %p2i, %l2i, and %lc2i) where X is defined
-# as follows:
-#
-#   p : Run Subzero's translator, building ICE from PNaCl bitcode directly.
-#   l : Run Subzero's translator, converting the .ll file to a PNaCl bitcode
-#       file, reading in the bitcode file and generating LLVM IR, and
-#       then convert LLVM IR to ICE IR.
-#   lc : Run Subzero's translator, directly parsing the .ll file into LLVM IR,
-#        and then convert it to ICE IR.
-#
-# These commands can be used in RUN lines by FileCheck. If the Subzero
-# build being tested lacks any required attributes (e.g., the ability
-# to parse .ll files), the command will simply return successfully,
-# generating no output. This allows translation tests to be able to
-# conditionally test the translator, based on the translator built.
-#
-# This conditional handling of translation introduces potential problems
-# when the output is piped to another command on a RUN line. Executables
-# like FileCheck expect non-empty input.
-#
-# To handle the problem that the pipe is conditional, any command that
-# doesn't accept empty input should be prefixed by a corresponding
-# %ifX (i.e. %p2i, %ifl, or %ifpc). Note: %p2i should always work, and
-# hence %ifp is not necessary (i.e. it is a nop).
-#
-# If you need to check other build attributes (other than the
-# existence of %l2i and %lc2i), you can use the %if command (which is
-# a short hand for using pydir/ifatts.py).
-
-import os
-import re
-import sys
-
-import lit.formats
-
-sys.path.insert(0, 'pydir')
-from utils import FindBaseNaCl, shellcmd
-
-# name: The name of this test suite.
-config.name = 'subzero'
-
-# testFormat: The test format to use to interpret tests.
-config.test_format = lit.formats.ShTest()
-
-# suffixes: A list of file extensions to treat as test files.
-config.suffixes = ['.ll', '.test']
-
-# test_source_root: The root path where tests are located.
-config.test_source_root = os.path.dirname(__file__)
-config.test_exec_root = config.test_source_root
-config.target_triple = '(unused)'
-
-src_root = os.path.join(FindBaseNaCl(), 'toolchain_build/src/subzero')
-bin_root = src_root
-config.substitutions.append(('%{src_root}', src_root))
-config.substitutions.append(('%{python}', sys.executable))
-
-pydir = os.path.join(bin_root, 'pydir')
-
-# Finding PNaCl binary tools. Tools used in the tests must be listed in the
-# pnaclbintools list.
-pnaclbinpath = os.path.abspath(os.environ.get('PNACL_BIN_PATH'))
-
-# Define the location of the pnacl-sz tool.
-pnacl_sz_tool = os.path.join(bin_root, 'pnacl-sz')
-pnacl_sz_atts = shellcmd(' '.join([pnacl_sz_tool, '--build-atts']),
-                        echo=False).split()
-
-# Add build attributes of pnacl-sz tool to the set of available features.
-config.available_features.update(pnacl_sz_atts)
-
-def if_cond_flag(Value):
-  return '--cond=true' if Value else '--cond=false'
-
-# shell conditional commands.
-if_atts = [os.path.join(pydir, 'if.py')]
-if_atts_cmd = if_atts + ['--have=' + att for att in pnacl_sz_atts]
-ifl2i_atts_cmd = if_atts + [if_cond_flag('allow_llvm_ir' in pnacl_sz_atts),
-                            '--command']
-iflc2i_atts_cmd = if_atts + [if_cond_flag('allow_llvm_ir_as_input'
-                                          in pnacl_sz_atts), '--command']
-
-# Base command for running pnacl-sz
-pnacl_sz_cmd = [os.path.join(pydir, 'run-pnacl-sz.py'),
-                '--echo-cmd',
-                '--pnacl-sz', pnacl_sz_tool,
-                '--pnacl-bin-path', pnaclbinpath]
-if 'FORCEASM' in lit_config.params:
-  pnacl_sz_cmd += ['--forceasm']
-
-# Run commands only if corresponding build attributes apply, including
-# for each compiler setup.
-config.substitutions.append(('%ifp', ' '))
-config.substitutions.append(('%iflc', ' '.join(iflc2i_atts_cmd)))
-config.substitutions.append(('%ifl', ' '.join(ifl2i_atts_cmd)))
-config.substitutions.append(('%if', ' '.join(if_atts_cmd)))
-
-# Translate LLVM source for each compiler setup.
-config.substitutions.append(('%p2i', ' '.join(pnacl_sz_cmd)))
-config.substitutions.append(('%l2i', ' '.join(ifl2i_atts_cmd + pnacl_sz_cmd
-                                              + ['--llvm'])))
-config.substitutions.append(('%lc2i', ' '.join(iflc2i_atts_cmd + pnacl_sz_cmd
-                                               + ['--llvm-source'])))
-
-config.substitutions.append(('%pnacl_sz', pnacl_sz_tool))
-
-pnaclbintools = [r'\b' + x + r'\b' for x in
-                 ['FileCheck',
-                  'llvm-as',
-                  'llvm-mc',
-                  'llvm-readobj',
-                  'not',
-                  'pnacl-bcdis',
-                  'pnacl-bcfuzz',
-                  'pnacl-freeze']]
-
-for tool in pnaclbintools:
-  # The re.sub() line is adapted from one of LLVM's lit.cfg files.
-  # Extract the tool name from the pattern.  This relies on the tool
-  # name being surrounded by \b word match operators.  If the
-  # pattern starts with "| ", include it in the string to be
-  # substituted.
-  substitution = re.sub(r"^(\\)?((\| )?)\W+b([0-9A-Za-z-_]+)\\b\W*$",
-                        r"\2" + pnaclbinpath + "/" + r"\4",
-                        tool)
-  config.substitutions.append((tool, substitution))
-
-# Add a feature to detect the Python version.
-config.available_features.add("python%d.%d" % (sys.version_info[0],
-                                               sys.version_info[1]))
-
-# Debugging output
-def dbg(s):
-  print '[DBG] %s' % s
-
-dbg('bin_root = %s' % bin_root)
-dbg('pnaclbinpath = %s' % pnaclbinpath)
-dbg("Build attributes = %s" % pnacl_sz_atts)
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/64bit.pnacl.ll b/third_party/subzero/tests_lit/llvm2ice_tests/64bit.pnacl.ll
deleted file mode 100644
index 55f6832..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/64bit.pnacl.ll
+++ /dev/null
@@ -1,2544 +0,0 @@
-; This tries to be a comprehensive test of i64 operations, in
-; particular the patterns for lowering i64 operations into constituent
-; i32 operations on x86-32.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -Om1 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 --command FileCheck --check-prefix=OPTM1 %s
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 --check-prefix ARM32-O2 %s
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj --disassemble --target arm32 \
-; RUN:   -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 --check-prefix ARM32-OM1 %s
-
-; TODO: Switch to --filetype=obj when possible.
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 --check-prefix MIPS32-O2 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 --check-prefix MIPS32-OM1 %s
-
-@__init_array_start = internal constant [0 x i8] zeroinitializer, align 4
-@__fini_array_start = internal constant [0 x i8] zeroinitializer, align 4
-@__tls_template_start = internal constant [0 x i8] zeroinitializer, align 8
-@__tls_template_alignment = internal constant [4 x i8] c"\01\00\00\00", align 4
-
-define internal i32 @ignore64BitArg(i64 %a, i32 %b, i64 %c) {
-entry:
-  ret i32 %b
-}
-
-; MIPS32-LABEL: ignore64BitArg
-; MIPS32-O2: move v0,a2
-; MIPS32-OM1: sw a2,[[MEM:.*]]
-; MIPS32-OM1: lw v0,[[MEM]]
-
-define internal i32 @pass64BitArg(i64 %a, i64 %b, i64 %c, i64 %d, i64 %e, i64 %f) {
-entry:
-  %call = call i32 @ignore64BitArgNoInline(i64 %a, i32 123, i64 %b)
-  %call1 = call i32 @ignore64BitArgNoInline(i64 %c, i32 123, i64 %d)
-  %call2 = call i32 @ignore64BitArgNoInline(i64 %e, i32 123, i64 %f)
-  %add = add i32 %call1, %call
-  %add3 = add i32 %add, %call2
-  ret i32 %add3
-}
-; CHECK-LABEL: pass64BitArg
-; CHECK:      sub     esp
-; CHECK:      mov     DWORD PTR [esp+0x4]
-; CHECK:      mov     DWORD PTR [esp]
-; CHECK:      mov     DWORD PTR [esp+0x8],0x7b
-; CHECK:      mov     DWORD PTR [esp+0x10]
-; CHECK:      mov     DWORD PTR [esp+0xc]
-; CHECK:      call {{.*}} R_{{.*}}    ignore64BitArgNoInline
-; CHECK:      mov     DWORD PTR [esp+0x4]
-; CHECK:      mov     DWORD PTR [esp]
-; CHECK:      mov     DWORD PTR [esp+0x8],0x7b
-; CHECK:      mov     DWORD PTR [esp+0x10]
-; CHECK:      mov     DWORD PTR [esp+0xc]
-; CHECK:      call {{.*}} R_{{.*}}    ignore64BitArgNoInline
-; CHECK:      mov     DWORD PTR [esp+0x4]
-; CHECK:      mov     DWORD PTR [esp]
-; CHECK:      mov     DWORD PTR [esp+0x8],0x7b
-; CHECK:      mov     DWORD PTR [esp+0x10]
-; CHECK:      mov     DWORD PTR [esp+0xc]
-; CHECK:      call {{.*}} R_{{.*}}    ignore64BitArgNoInline
-;
-; OPTM1-LABEL: pass64BitArg
-; OPTM1:      sub     esp
-; OPTM1:      mov     DWORD PTR [esp+0x4]
-; OPTM1:      mov     DWORD PTR [esp]
-; OPTM1:      mov     DWORD PTR [esp+0x8],0x7b
-; OPTM1:      mov     DWORD PTR [esp+0x10]
-; OPTM1:      mov     DWORD PTR [esp+0xc]
-; OPTM1:      call {{.*}} R_{{.*}}    ignore64BitArgNoInline
-; OPTM1:      mov     DWORD PTR [esp+0x4]
-; OPTM1:      mov     DWORD PTR [esp]
-; OPTM1:      mov     DWORD PTR [esp+0x8],0x7b
-; OPTM1:      mov     DWORD PTR [esp+0x10]
-; OPTM1:      mov     DWORD PTR [esp+0xc]
-; OPTM1:      call {{.*}} R_{{.*}}    ignore64BitArgNoInline
-; OPTM1:      mov     DWORD PTR [esp+0x4]
-; OPTM1:      mov     DWORD PTR [esp]
-; OPTM1:      mov     DWORD PTR [esp+0x8],0x7b
-; OPTM1:      mov     DWORD PTR [esp+0x10]
-; OPTM1:      mov     DWORD PTR [esp+0xc]
-; OPTM1:      call {{.*}} R_{{.*}}    ignore64BitArgNoInline
-
-; ARM32-LABEL: pass64BitArg
-; ARM32:      str     {{.*}}, [sp]
-; ARM32:      mov     r2, #123
-; ARM32:      bl      {{.*}} ignore64BitArgNoInline
-; ARM32:      str     {{.*}}, [sp]
-; ARM32:      {{mov|ldr}} r0
-; ARM32:      {{mov|ldr}} r1
-; ARM32:      mov     r2, #123
-; ARM32:      bl      {{.*}} ignore64BitArgNoInline
-; ARM32:      str     {{.*}}, [sp]
-; ARM32:      {{mov|ldr}} r0
-; ARM32:      {{mov|ldr}} r1
-; ARM32:      mov     r2, #123
-; ARM32:      bl      {{.*}} ignore64BitArgNoInline
-
-; MIPS32-LABEL: pass64BitArg
-; MIPS32-O2: 	sw	a3,{{.*}}(sp)
-; MIPS32-O2: 	sw	a2,{{.*}}(sp)
-; MIPS32-O2: 	li	a2,123
-; MIPS32-O2: 	jal	{{.*}}	ignore64BitArgNoInline
-; MIPS32-O2: 	nop
-; MIPS32-O2: 	move	s0,v0
-; MIPS32-O2: 	sw	s3,{{.*}}(sp)
-; MIPS32-O2: 	sw	s2,{{.*}}(sp)
-; MIPS32-O2: 	lw	a0,{{.*}}(sp)
-; MIPS32-O2: 	move	a1,s1
-; MIPS32-O2: 	li	a2,123
-; MIPS32-O2: 	jal	{{.*}}	ignore64BitArgNoInline
-; MIPS32-O2: 	nop
-; MIPS32-O2: 	move	s1,v0
-; MIPS32-O2: 	sw	s7,{{.*}}(sp)
-; MIPS32-O2: 	sw	s6,{{.*}}(sp)
-; MIPS32-O2: 	move	a0,s4
-; MIPS32-O2: 	move	a1,s5
-; MIPS32-O2: 	li	a2,123
-; MIPS32-O2: 	jal	{{.*}}	ignore64BitArgNoInline
-; MIPS32-O2: 	nop
-
-
-declare i32 @ignore64BitArgNoInline(i64, i32, i64)
-
-define internal i32 @pass64BitConstArg(i64 %a, i64 %b) {
-entry:
-  %call = call i32 @ignore64BitArgNoInline(i64 %b, i32 123, i64 -2401053092306725256)
-  ret i32 %call
-}
-; CHECK-LABEL: pass64BitConstArg
-; CHECK:      sub     esp
-; CHECK:      mov     DWORD PTR [esp+0x4]
-; CHECK-NEXT: mov     DWORD PTR [esp]
-; CHECK-NEXT: mov     DWORD PTR [esp+0x8],0x7b
-; Bundle padding might be added (so not using -NEXT).
-; CHECK:      mov     DWORD PTR [esp+0x10],0xdeadbeef
-; CHECK-NEXT: mov     DWORD PTR [esp+0xc],0x12345678
-; Bundle padding will push the call down.
-; CHECK-NOT:  mov
-; CHECK:      call {{.*}} R_{{.*}}    ignore64BitArgNoInline
-;
-; OPTM1-LABEL: pass64BitConstArg
-; OPTM1:      sub     esp
-; OPTM1:      mov     DWORD PTR [esp+0x4]
-; OPTM1:      mov     DWORD PTR [esp]
-; OPTM1-NEXT: mov     DWORD PTR [esp+0x8],0x7b
-; Bundle padding might be added (so not using -NEXT).
-; OPTM1:      mov     DWORD PTR [esp+0x10],0xdeadbeef
-; OPTM1-NEXT: mov     DWORD PTR [esp+0xc],0x12345678
-; OPTM1-NOT:  mov
-; OPTM1:      call {{.*}} R_{{.*}}    ignore64BitArgNoInline
-
-; ARM32-LABEL: pass64BitConstArg
-; ARM32:      movw    [[REG1:r.*]], {{.*}} ; 0xbeef
-; ARM32:      movt    [[REG1]], {{.*}}     ; 0xdead
-; ARM32:      movw    [[REG2:r.*]], {{.*}} ; 0x5678
-; ARM32:      movt    [[REG2]], {{.*}}     ; 0x1234
-; ARM32:      str     [[REG1]], [sp, #4]
-; ARM32:      str     [[REG2]], [sp]
-; ARM32:      {{mov|ldr}} r0
-; ARM32:      {{mov|ldr}} r1
-; ARM32:      mov     r2, #123
-; ARM32:      bl      {{.*}} ignore64BitArgNoInline
-
-; MIPS32-LABEL: pass64BitConstArg
-; MIPS32-O2: 	lui	[[REG:.*]],0xdead
-; MIPS32-O2: 	ori	[[REG1:.*]],[[REG]],0xbeef
-; MIPS32-O2: 	lui	[[REG:.*]],0x1234
-; MIPS32-O2: 	ori	[[REG2:.*]],[[REG]],0x5678
-; MIPS32-O2: 	sw	[[REG1]],{{.*}}(sp)
-; MIPS32-O2: 	sw	[[REG2]],{{.*}}(sp)
-; MIPS32-O2: 	move	a0,a2
-; MIPS32-O2: 	move	a1,a3
-; MIPS32-O2: 	li	a2,123
-; MIPS32-O2: 	jal	{{.*}}	ignore64BitArgNoInline
-
-define internal i32 @pass64BitUndefArg() {
-entry:
-  %call = call i32 @ignore64BitArgNoInline(i64 0, i32 123, i64 undef)
-  ret i32 %call
-}
-; CHECK-LABEL: pass64BitUndefArg
-; CHECK: sub esp
-; CHECK: mov DWORD PTR{{.*}},0x7b
-; CHECK: mov DWORD PTR{{.*}},0x0
-; CHECK: call {{.*}} R_{{.*}} ignore64BitArgNoInline
-; OPTM1-LABEL: pass64BitUndefArg
-; OPTM1: sub esp
-; OPTM1: mov DWORD PTR{{.*}},0x7b
-; OPTM1: mov DWORD PTR{{.*}},0x0
-; OPTM1: call {{.*}} R_{{.*}} ignore64BitArgNoInline
-; ARM32-LABEL: pass64BitUndefArg
-; ARM32: sub sp
-; ARM32: mov {{.*}}, #0
-; ARM32: str
-; ARM32: mov {{.*}}, #123
-; ARM32: bl {{.*}} ignore64BitArgNoInline
-
-; MIPS32-LABEL: pass64BitUndefArg
-; MIPS32: jr  ra
-
-define internal i64 @return64BitArg(i64 %padding, i64 %a) {
-entry:
-  ret i64 %a
-}
-; CHECK-LABEL: return64BitArg
-; CHECK: mov     {{.*}},DWORD PTR [esp+0xc]
-; CHECK: mov     {{.*}},DWORD PTR [esp+0x10]
-;
-; OPTM1-LABEL: return64BitArg
-; OPTM1: mov     {{.*}},DWORD PTR [esp+0xc]
-; OPTM1: mov     {{.*}},DWORD PTR [esp+0x10]
-
-; ARM32-LABEL: return64BitArg
-; ARM32: mov {{.*}}, r2
-; ARM32: mov {{.*}}, r3
-; ARM32: bx lr
-
-; MIPS32-LABEL; return64BitArg
-; MIPS32-O2: move v0,a2
-; MIPS32-O2: move v1,a3
-; MIPS32-OM1: move [[T1:.*]],a2
-; MIPS32-OM1: sw [[T1]],[[MEM1:.*]]
-; MIPS32-OM1: move [[T2:.*]],a3
-; MIPS32-OM1: sw [[T2]],[[MEM2:.*]]
-; MIPS32-OM1: lw v0,[[MEM1]]
-; MIPS32-OM1: lw v1,[[MEM2]]
-; MIPS32: jr ra
-
-define internal i64 @return64BitConst() {
-entry:
-  ret i64 -2401053092306725256
-}
-; CHECK-LABEL: return64BitConst
-; CHECK: mov     eax,0x12345678
-; CHECK: mov     edx,0xdeadbeef
-;
-; OPTM1-LABEL: return64BitConst
-; OPTM1: mov     eax,0x12345678
-; OPTM1: mov     edx,0xdeadbeef
-
-; ARM32-LABEL: return64BitConst
-; ARM32: movw r0, #22136 ; 0x5678
-; ARM32: movt r0, #4660  ; 0x1234
-; ARM32: movw r1, #48879 ; 0xbeef
-; ARM32: movt r1, #57005 ; 0xdead
-
-; MIPS32-LABEL: return64BitConst
-; MIPS32: lui v0,0x1234
-; MIPS32: ori v0,v0,0x5678
-; MIPS32: lui v1,0xdead
-; MIPS32: ori v1,v1,0xbeef
-; MIPS32: jr ra
-
-define internal i64 @add64BitSigned(i64 %a, i64 %b) {
-entry:
-  %add = add i64 %b, %a
-  ret i64 %add
-}
-; CHECK-LABEL: add64BitSigned
-; CHECK: add
-; CHECK: adc
-;
-; OPTM1-LABEL: add64BitSigned
-; OPTM1: add
-; OPTM1: adc
-
-; ARM32-LABEL: add64BitSigned
-; ARM32: adds
-; ARM32: adc
-
-; MIPS32-LABEL: add64BitSigned
-; MIPS32: addu
-; MIPS32: sltu
-; MIPS32: addu
-; MIPS32: addu
-
-define internal i64 @add64BitUnsigned(i64 %a, i64 %b) {
-entry:
-  %add = add i64 %b, %a
-  ret i64 %add
-}
-; CHECK-LABEL: add64BitUnsigned
-; CHECK: add
-; CHECK: adc
-;
-; OPTM1-LABEL: add64BitUnsigned
-; OPTM1: add
-; OPTM1: adc
-
-; ARM32-LABEL: add64BitUnsigned
-; ARM32: adds
-; ARM32: adc
-
-; MIPS32-LABEL: add64BitUnsigned
-; MIPS32: addu
-; MIPS32: sltu
-; MIPS32: addu
-; MIPS32: addu
-
-define internal i64 @sub64BitSigned(i64 %a, i64 %b) {
-entry:
-  %sub = sub i64 %a, %b
-  ret i64 %sub
-}
-; CHECK-LABEL: sub64BitSigned
-; CHECK: sub
-; CHECK: sbb
-;
-; OPTM1-LABEL: sub64BitSigned
-; OPTM1: sub
-; OPTM1: sbb
-
-; ARM32-LABEL: sub64BitSigned
-; ARM32: subs
-; ARM32: sbc
-
-; MIPS32-LABEL: sub64BitSigned
-; MIPS32: subu
-; MIPS32: sltu
-; MIPS32: addu
-; MIPS32: subu
-
-define internal i64 @sub64BitUnsigned(i64 %a, i64 %b) {
-entry:
-  %sub = sub i64 %a, %b
-  ret i64 %sub
-}
-; CHECK-LABEL: sub64BitUnsigned
-; CHECK: sub
-; CHECK: sbb
-;
-; OPTM1-LABEL: sub64BitUnsigned
-; OPTM1: sub
-; OPTM1: sbb
-
-; ARM32-LABEL: sub64BitUnsigned
-; ARM32: subs
-; ARM32: sbc
-
-; MIPS32-LABEL: sub64BitUnsigned
-; MIPS32: subu
-; MIPS32: sltu
-; MIPS32: addu
-; MIPS32: subu
-
-define internal i64 @mul64BitSigned(i64 %a, i64 %b) {
-entry:
-  %mul = mul i64 %b, %a
-  ret i64 %mul
-}
-; CHECK-LABEL: mul64BitSigned
-; CHECK: imul
-; CHECK: mul
-; CHECK: add
-; CHECK: imul
-; CHECK: add
-;
-; OPTM1-LABEL: mul64BitSigned
-; OPTM1: imul
-; OPTM1: mul
-; OPTM1: add
-; OPTM1: imul
-; OPTM1: add
-
-; ARM32-LABEL: mul64BitSigned
-; ARM32: mul
-; ARM32: mla
-; ARM32: umull
-; ARM32: add
-
-; MIPS32-LABEL: mul64BitSigned
-; MIPS32: multu
-; MIPS32: mflo
-; MIPS32: mfhi
-; MIPS32: mul
-; MIPS32: mul
-; MIPS32: addu
-; MIPS32: addu
-
-define internal i64 @mul64BitUnsigned(i64 %a, i64 %b) {
-entry:
-  %mul = mul i64 %b, %a
-  ret i64 %mul
-}
-; CHECK-LABEL: mul64BitUnsigned
-; CHECK: imul
-; CHECK: mul
-; CHECK: add
-; CHECK: imul
-; CHECK: add
-;
-; OPTM1-LABEL: mul64BitUnsigned
-; OPTM1: imul
-; OPTM1: mul
-; OPTM1: add
-; OPTM1: imul
-; OPTM1: add
-
-; ARM32-LABEL: mul64BitUnsigned
-; ARM32: mul
-; ARM32: mla
-; ARM32: umull
-; ARM32: add
-
-; MIPS32-LABEL: mul64BitUnsigned
-; MIPS32: multu
-; MIPS32: mflo
-; MIPS32: mfhi
-; MIPS32: mul
-; MIPS32: mul
-; MIPS32: addu
-; MIPS32: addu
-
-define internal i64 @div64BitSigned(i64 %a, i64 %b) {
-entry:
-  %div = sdiv i64 %a, %b
-  ret i64 %div
-}
-; CHECK-LABEL: div64BitSigned
-; CHECK: call {{.*}} R_{{.*}}    __divdi3
-
-; OPTM1-LABEL: div64BitSigned
-; OPTM1: call {{.*}} R_{{.*}}    __divdi3
-;
-; ARM32-LABEL: div64BitSigned
-; ARM32: orrs {{r.*}}, {{r.*}}
-; ARM32: bne
-; ARM32: bl {{.*}} __divdi3
-
-; MIPS32-LABEL: div64BitSigned
-; MIPS32: jal {{.*}} __divdi3
-
-define internal i64 @div64BitSignedConst(i64 %a) {
-entry:
-  %div = sdiv i64 %a, 12345678901234
-  ret i64 %div
-}
-; CHECK-LABEL: div64BitSignedConst
-; CHECK: mov     DWORD PTR [esp+0xc],0xb3a
-; CHECK: mov     DWORD PTR [esp+0x8],0x73ce2ff2
-; CHECK: call {{.*}} R_{{.*}}    __divdi3
-;
-; OPTM1-LABEL: div64BitSignedConst
-; OPTM1: mov     DWORD PTR [esp+0xc],0xb3a
-; OPTM1: mov     DWORD PTR [esp+0x8],0x73ce2ff2
-; OPTM1: call {{.*}} R_{{.*}}    __divdi3
-;
-; ARM32-LABEL: div64BitSignedConst
-; For a constant, we should be able to optimize-out the divide by zero check.
-; ARM32-NOT: orrs
-; ARM32: movw {{.*}} ; 0x2ff2
-; ARM32: movt {{.*}} ; 0x73ce
-; ARM32: movw {{.*}} ; 0xb3a
-; ARM32: bl {{.*}} __divdi3
-
-; MIPS32-LABEL: div64BitSignedConst
-; MIPS32: jal {{.*}} __divdi3
-
-define internal i64 @div64BitUnsigned(i64 %a, i64 %b) {
-entry:
-  %div = udiv i64 %a, %b
-  ret i64 %div
-}
-; CHECK-LABEL: div64BitUnsigned
-; CHECK: call {{.*}} R_{{.*}}    __udivdi3
-;
-; OPTM1-LABEL: div64BitUnsigned
-; OPTM1: call {{.*}} R_{{.*}}    __udivdi3
-;
-; ARM32-LABEL: div64BitUnsigned
-; ARM32: orrs {{r.*}}, {{r.*}}
-; ARM32: bne
-; ARM32: bl {{.*}} __udivdi3
-
-; MIPS32-LABEL: div64BitUnsigned
-; MIPS32: jal {{.*}} __udivdi3
-
-define internal i64 @rem64BitSigned(i64 %a, i64 %b) {
-entry:
-  %rem = srem i64 %a, %b
-  ret i64 %rem
-}
-; CHECK-LABEL: rem64BitSigned
-; CHECK: call {{.*}} R_{{.*}}    __moddi3
-;
-; OPTM1-LABEL: rem64BitSigned
-; OPTM1: call {{.*}} R_{{.*}}    __moddi3
-;
-; ARM32-LABEL: rem64BitSigned
-; ARM32: orrs {{r.*}}, {{r.*}}
-; ARM32: bne
-; ARM32: bl {{.*}} __moddi3
-
-; MIPS32-LABEL: rem64BitSigned
-; MIPS32: jal {{.*}} __moddi3
-
-define internal i64 @rem64BitUnsigned(i64 %a, i64 %b) {
-entry:
-  %rem = urem i64 %a, %b
-  ret i64 %rem
-}
-; CHECK-LABEL: rem64BitUnsigned
-; CHECK: call {{.*}} R_{{.*}}    __umoddi3
-;
-; OPTM1-LABEL: rem64BitUnsigned
-; OPTM1: call {{.*}} R_{{.*}}    __umoddi3
-;
-; ARM32-LABEL: rem64BitUnsigned
-; ARM32: orrs {{r.*}}, {{r.*}}
-; ARM32: bne
-; ARM32: bl {{.*}} __umoddi3
-
-; MIPS32-LABEL: rem64BitUnsigned
-; MIPS32: jal {{.*}} __umoddi3
-
-define internal i64 @shl64BitSigned(i64 %a, i64 %b) {
-entry:
-  %shl = shl i64 %a, %b
-  ret i64 %shl
-}
-; CHECK-LABEL: shl64BitSigned
-; CHECK: shld
-; CHECK: shl e
-; CHECK: test {{.*}},0x20
-; CHECK: je
-;
-; OPTM1-LABEL: shl64BitSigned
-; OPTM1: shld
-; OPTM1: shl e
-; OPTM1: test {{.*}},0x20
-; OPTM1: je
-
-; ARM32-LABEL: shl64BitSigned
-; ARM32: rsb     [[T0:r[0-9]+]], r2, #32
-; ARM32: lsr     [[T1:r[0-9]+]], r0, [[T0]]
-; ARM32: orr     [[T2:r[0-9]+]], [[T1]], r1, lsl r2
-; ARM32: sub     [[T3:r[0-9]+]], r2, #32
-; ARM32: cmp     [[T3]], #0
-; ARM32: lslge   [[T2]], r0, [[T3]]
-; ARM32: lsl     r{{[0-9]+}}, r0, r2
-
-; MIPS32-LABEL: shl64BitSigned
-; MIPS32: sllv	[[T1:.*]],[[A_HI:.*]],[[B_LO:.*]]
-; MIPS32: nor	[[T2:.*]],[[B_LO]],zero
-; MIPS32: srl	[[T3:.*]],[[A_LO:.*]],0x1
-; MIPS32: srlv	[[T4:.*]],[[T3]],[[T2]]
-; MIPS32: or	[[T_HI:.*]],[[T1]],[[T4]]
-; MIPS32: sllv	[[T_LO:.*]],[[A_LO]],[[B_LO]]
-; MIPS32: move	[[T1_LO:.*]],[[T_LO]]
-; MIPS32: andi	[[T5:.*]],[[B_LO]],0x20
-; MIPS32: movn	[[T_HI]],[[T_LO]],[[T5]]
-; MIPS32: movn	[[T1_LO]],zero,[[T5]]
-; MIPS32-O2: move	v1,[[T_HI]]
-; MIPS32-OM1: sw	[[T_HI]],[[MEM:.*]]
-; MIPS32-OM1: lw        v1,[[MEM]]
-
-define internal i32 @shl64BitSignedTrunc(i64 %a, i64 %b) {
-entry:
-  %shl = shl i64 %a, %b
-  %result = trunc i64 %shl to i32
-  ret i32 %result
-}
-; CHECK-LABEL: shl64BitSignedTrunc
-; CHECK: mov
-; CHECK: shl e
-; CHECK: test {{.*}},0x20
-; CHECK: je
-;
-; OPTM1-LABEL: shl64BitSignedTrunc
-; OPTM1: shld
-; OPTM1: shl e
-; OPTM1: test {{.*}},0x20
-; OPTM1: je
-
-; ARM32-LABEL: shl64BitSignedTrunc
-; ARM32: lsl r
-
-; MIPS32-LABEL: shl64BitSignedTrunc
-; MIPS32-O2: 	sllv
-; MIPS32-O2: 	andi	{{.*}},0x20
-; MIPS32-O2: 	movn
-
-define internal i64 @shl64BitUnsigned(i64 %a, i64 %b) {
-entry:
-  %shl = shl i64 %a, %b
-  ret i64 %shl
-}
-; CHECK-LABEL: shl64BitUnsigned
-; CHECK: shld
-; CHECK: shl e
-; CHECK: test {{.*}},0x20
-; CHECK: je
-;
-; OPTM1-LABEL: shl64BitUnsigned
-; OPTM1: shld
-; OPTM1: shl e
-; OPTM1: test {{.*}},0x20
-; OPTM1: je
-
-; ARM32-LABEL: shl64BitUnsigned
-; ARM32: rsb
-; ARM32: lsr
-; ARM32: orr
-; ARM32: sub
-; ARM32: cmp
-; ARM32: lslge
-; ARM32: lsl
-
-; MIPS32-LABEL: shl64BitUnsigned
-; MIPS32: sllv  [[T1:.*]],[[A_HI:.*]],[[B_LO:.*]]
-; MIPS32: nor   [[T2:.*]],[[B_LO]],zero
-; MIPS32: srl   [[T3:.*]],[[A_LO:.*]],0x1
-; MIPS32: srlv  [[T4:.*]],[[T3]],[[T2]]
-; MIPS32: or    [[T_HI:.*]],[[T1]],[[T4]]
-; MIPS32: sllv  [[T_LO:.*]],[[A_LO]],[[B_LO]]
-; MIPS32: move  [[T1_LO:.*]],[[T_LO]]
-; MIPS32: andi  [[T5:.*]],[[B_LO]],0x20
-; MIPS32: movn  [[T_HI]],[[T_LO]],[[T5]]
-; MIPS32: movn  [[T1_LO]],zero,[[T5]]
-; MIPS32-O2: move       v1,[[T_HI]]
-; MIPS32-OM1: sw        [[T_HI]],[[MEM:.*]]
-; MIPS32-OM1: lw        v1,[[MEM]]
-
-define internal i64 @shr64BitSigned(i64 %a, i64 %b) {
-entry:
-  %shr = ashr i64 %a, %b
-  ret i64 %shr
-}
-; CHECK-LABEL: shr64BitSigned
-; CHECK: shrd
-; CHECK: sar
-; CHECK: test {{.*}},0x20
-; CHECK: je
-; CHECK: sar {{.*}},0x1f
-;
-; OPTM1-LABEL: shr64BitSigned
-; OPTM1: shrd
-; OPTM1: sar
-; OPTM1: test {{.*}},0x20
-; OPTM1: je
-; OPTM1: sar {{.*}},0x1f
-
-; ARM32-LABEL: shr64BitSigned
-; ARM32: lsr     [[T0:r[0-9]+]], r{{[0-9]+}}, r{{[0-9]+}}
-; ARM32: rsb     [[T1:r[0-9]+]], r{{[0-9]+}}, #32
-; ARM32: orr     r{{[0-9]+}}, [[T0]], r{{[0-9]+}}, lsl [[T1]]
-; ARM32: sub     [[T2:r[0-9]+]], r{{[0-9]+}}, #32
-; ARM32: cmp     [[T2]], #0
-; ARM32: asrge   r{{[0-9]+}}, r{{[0-9]+}}, [[T2]]
-; ARM32: asr     r{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}}
-
-; MIPS32-LABEL: shr64BitSigned
-; MIPS32: srlv	[[T1:.*]],[[A_LO:.*]],[[B_LO:.*]]
-; MIPS32: nor	[[T2:.*]],[[B_LO]],zero
-; MIPS32: sll	[[T3:.*]],[[A_HI:.*]],0x1
-; MIPS32: sllv	[[T4:.*]],[[T3]],[[T2]]
-; MIPS32: or	[[T_LO:.*]],[[T1]],[[T4]]
-; MIPS32: srav	[[T_HI:.*]],[[A_HI]],[[B_LO]]
-; MIPS32: move	[[T_HI1:.*]],[[T_HI]]
-; MIPS32: andi	[[T5:.*]],[[B_LO]],0x20
-; MIPS32: movn	[[T_LO1:.*]],[[T_HI]],[[T5]]
-; MIPS32: sra	[[T6:.*]],[[A_HI]],0x1f
-; MIPS32: movn	[[T_HI1]],[[T6]],[[T5]]
-
-define internal i32 @shr64BitSignedTrunc(i64 %a, i64 %b) {
-entry:
-  %shr = ashr i64 %a, %b
-  %result = trunc i64 %shr to i32
-  ret i32 %result
-}
-; CHECK-LABEL: shr64BitSignedTrunc
-; CHECK: shrd
-; CHECK: sar
-; CHECK: test {{.*}},0x20
-; CHECK: je
-;
-; OPTM1-LABEL: shr64BitSignedTrunc
-; OPTM1: shrd
-; OPTM1: sar
-; OPTM1: test {{.*}},0x20
-; OPTM1: je
-; OPTM1: sar {{.*}},0x1f
-
-; ARM32-LABEL: shr64BitSignedTrunc
-; ARM32: lsr
-; ARM32: rsb
-; ARM32: orr
-; ARM32: sub
-; ARM32: cmp
-; ARM32: asrge
-
-; MIPS32-LABEL: shr64BitSignedTrunc
-; MIPS32-O2: 	srlv
-; MIPS32-O2: 	nor
-; MIPS32-O2: 	sll
-; MIPS32-O2: 	sllv
-; MIPS32-O2: 	or
-; MIPS32-O2: 	srav
-; MIPS32-O2: 	andi	{{.*}},0x20
-; MIPS32-O2: 	movn
-
-define internal i64 @shr64BitUnsigned(i64 %a, i64 %b) {
-entry:
-  %shr = lshr i64 %a, %b
-  ret i64 %shr
-}
-; CHECK-LABEL: shr64BitUnsigned
-; CHECK: shrd
-; CHECK: shr
-; CHECK: test {{.*}},0x20
-; CHECK: je
-;
-; OPTM1-LABEL: shr64BitUnsigned
-; OPTM1: shrd
-; OPTM1: shr
-; OPTM1: test {{.*}},0x20
-; OPTM1: je
-
-; ARM32-LABEL: shr64BitUnsigned
-; ARM32: lsr
-; ARM32: rsb
-; ARM32: orr
-; ARM32: sub
-; ARM32: cmp
-; ARM32: lsrge
-; ARM32: lsr
-
-; MIPS32-LABEL: shr64BitUnsigned
-; MIPS32: srlv  [[T1:.*]],[[A_LO:.*]],[[B_LO:.*]]
-; MIPS32: nor   [[T2:.*]],[[B_LO]],zero
-; MIPS32: sll   [[T3:.*]],[[A_HI:.*]],0x1
-; MIPS32: sllv  [[T4:.*]],[[T3]],[[T2]]
-; MIPS32: or    [[T_LO:.*]],[[T1]],[[T4]]
-; MIPS32: srlv  [[T_HI:.*]],[[A_HI]],[[B_LO]]
-; MIPS32: move  [[T_HI1:.*]],[[T_HI]]
-; MIPS32: andi  [[T5:.*]],[[B_LO]],0x20
-; MIPS32: movn  [[T_LO1:.*]],[[T_HI]],[[T5]]
-; MIPS32: movn  [[T_HI1]],zero,[[T5]]
-
-define internal i32 @shr64BitUnsignedTrunc(i64 %a, i64 %b) {
-entry:
-  %shr = lshr i64 %a, %b
-  %result = trunc i64 %shr to i32
-  ret i32 %result
-}
-; CHECK-LABEL: shr64BitUnsignedTrunc
-; CHECK: shrd
-; CHECK: shr
-; CHECK: test {{.*}},0x20
-; CHECK: je
-;
-; OPTM1-LABEL: shr64BitUnsignedTrunc
-; OPTM1: shrd
-; OPTM1: shr
-; OPTM1: test {{.*}},0x20
-; OPTM1: je
-
-; ARM32-LABEL: shr64BitUnsignedTrunc
-; ARM32: lsr
-; ARM32: rsb
-; ARM32: orr
-; ARM32: sub
-; ARM32: cmp
-; ARM32: lsrge
-
-; MIPS32-LABEL: shr64BitUnsignedTrunc
-; MIPS32-O2: 	srlv
-; MIPS32-O2: 	nor
-; MIPS32-O2: 	sll
-; MIPS32-O2: 	sllv
-; MIPS32-O2: 	or
-; MIPS32-O2: 	srlv
-; MIPS32-O2: 	andi
-; MIPS32-O2: 	movn
-
-define internal i64 @and64BitSigned(i64 %a, i64 %b) {
-entry:
-  %and = and i64 %b, %a
-  ret i64 %and
-}
-; CHECK-LABEL: and64BitSigned
-; CHECK: and
-; CHECK: and
-;
-; OPTM1-LABEL: and64BitSigned
-; OPTM1: and
-; OPTM1: and
-
-; ARM32-LABEL: and64BitSigned
-; ARM32: and
-; ARM32: and
-
-; MIPS32-LABEL: and64BitSigned
-; MIPS32: and
-; MIPS32: and
-
-define internal i64 @and64BitUnsigned(i64 %a, i64 %b) {
-entry:
-  %and = and i64 %b, %a
-  ret i64 %and
-}
-; CHECK-LABEL: and64BitUnsigned
-; CHECK: and
-; CHECK: and
-;
-; OPTM1-LABEL: and64BitUnsigned
-; OPTM1: and
-; OPTM1: and
-
-; ARM32-LABEL: and64BitUnsigned
-; ARM32: and
-; ARM32: and
-
-; MIPS32-LABEL: and64BitUnsigned
-; MIPS32: and
-; MIPS32: and
-
-define internal i64 @or64BitSigned(i64 %a, i64 %b) {
-entry:
-  %or = or i64 %b, %a
-  ret i64 %or
-}
-; CHECK-LABEL: or64BitSigned
-; CHECK: or
-; CHECK: or
-;
-; OPTM1-LABEL: or64BitSigned
-; OPTM1: or
-; OPTM1: or
-
-; ARM32-LABEL: or64BitSigned
-; ARM32: orr
-; ARM32: orr
-
-; MIPS32-LABEL: or64BitSigned
-; MIPS32: or
-; MIPS32: or
-
-define internal i64 @or64BitUnsigned(i64 %a, i64 %b) {
-entry:
-  %or = or i64 %b, %a
-  ret i64 %or
-}
-; CHECK-LABEL: or64BitUnsigned
-; CHECK: or
-; CHECK: or
-;
-; OPTM1-LABEL: or64BitUnsigned
-; OPTM1: or
-; OPTM1: or
-
-; ARM32-LABEL: or64BitUnsigned
-; ARM32: orr
-; ARM32: orr
-
-; MIPS32-LABEL: or64BitUnsigned
-; MIPS32: or
-; MIPS32: or
-
-define internal i64 @xor64BitSigned(i64 %a, i64 %b) {
-entry:
-  %xor = xor i64 %b, %a
-  ret i64 %xor
-}
-; CHECK-LABEL: xor64BitSigned
-; CHECK: xor
-; CHECK: xor
-;
-; OPTM1-LABEL: xor64BitSigned
-; OPTM1: xor
-; OPTM1: xor
-
-; ARM32-LABEL: xor64BitSigned
-; ARM32: eor
-; ARM32: eor
-
-; MIPS32-LABEL: xor64BitSigned
-; MIPS32: xor
-; MIPS32: xor
-
-define internal i64 @xor64BitUnsigned(i64 %a, i64 %b) {
-entry:
-  %xor = xor i64 %b, %a
-  ret i64 %xor
-}
-; CHECK-LABEL: xor64BitUnsigned
-; CHECK: xor
-; CHECK: xor
-;
-; OPTM1-LABEL: xor64BitUnsigned
-; OPTM1: xor
-; OPTM1: xor
-
-; ARM32-LABEL: xor64BitUnsigned
-; ARM32: eor
-; ARM32: eor
-
-; MIPS32-LABEL: xor64BitUnsigned
-; MIPS32: xor
-; MIPS32: xor
-
-define internal i32 @trunc64To32Signed(i64 %padding, i64 %a) {
-entry:
-  %conv = trunc i64 %a to i32
-  ret i32 %conv
-}
-; CHECK-LABEL: trunc64To32Signed
-; CHECK: mov     eax,DWORD PTR [esp+0xc]
-;
-; OPTM1-LABEL: trunc64To32Signed
-; OPTM1: mov     eax,DWORD PTR [esp+
-
-; ARM32-LABEL: trunc64To32Signed
-; ARM32: mov r0, r2
-
-; MIPS32-LABEL: trunc64To32Signed
-; MIPS32: move v0,a2
-
-define internal i32 @trunc64To16Signed(i64 %a) {
-entry:
-  %conv = trunc i64 %a to i16
-  %conv.ret_ext = sext i16 %conv to i32
-  ret i32 %conv.ret_ext
-}
-; CHECK-LABEL: trunc64To16Signed
-; CHECK:      mov     eax,DWORD PTR [esp+0x4]
-; CHECK-NEXT: movsx  eax,ax
-;
-; OPTM1-LABEL: trunc64To16Signed
-; OPTM1:      mov     ax,WORD PTR [esp+
-; OPTM1: movsx  eax,
-
-; ARM32-LABEL: trunc64To16Signed
-; ARM32: sxth r0, r0
-
-; MIPS32-LABEL: trunc64To16Signed
-; MIPS32-O2: sll [[T1:.*]],a0,0x10
-; MIPS32-O2: sra [[T2:.*]],[[T1]],0x10
-; MIPS32-O2: move v0,[[T2]]
-; MIPS32-OM1: sll [[T1:.*]],{{.*}},0x10
-; MIPS32-OM1: sra [[T2:.*]],[[T1]],0x10
-; MIPS32-OM1: sw [[T2]],[[MEM:.*]]
-; MIPS32-OM1: lw v0,[[MEM]]
-
-define internal i32 @trunc64To8Signed(i64 %a) {
-entry:
-  %conv = trunc i64 %a to i8
-  %conv.ret_ext = sext i8 %conv to i32
-  ret i32 %conv.ret_ext
-}
-; CHECK-LABEL: trunc64To8Signed
-; CHECK:      mov     eax,DWORD PTR [esp+0x4]
-; CHECK-NEXT: movsx  eax,al
-;
-; OPTM1-LABEL: trunc64To8Signed
-; OPTM1:      mov     eax,DWORD PTR [esp+
-; OPTM1: movsx  eax,
-
-; ARM32-LABEL: trunc64To8Signed
-; ARM32: sxtb r0, r0
-
-; MIPS32-LABEL: trunc64To8Signed
-; MIPS32-O2: sll [[T1:.*]],a0,0x18
-; MIPS32-O2: sra [[T2:.*]],[[T1]],0x18
-; MIPS32-O2: move v0,[[T2]]
-; MIPS32-OM1: sll [[T1:.*]],{{.*}},0x18
-; MIPS32-OM1: sra [[T2:.*]],[[T1]],0x18
-; MIPS32-OM1: sw [[T2]],[[MEM:.*]]
-; MIPS32-OM1: lw v0,[[MEM]]
-
-define internal i32 @trunc64To32SignedConst() {
-entry:
-  %conv = trunc i64 12345678901234 to i32
-  ret i32 %conv
-}
-; CHECK-LABEL: trunc64To32SignedConst
-; CHECK: mov eax,0x73ce2ff2
-;
-; OPTM1-LABEL: trunc64To32SignedConst
-; OPTM1: mov eax,0x73ce2ff2
-
-; ARM32-LABEL: trunc64To32SignedConst
-; ARM32: movw r0, #12274 ; 0x2ff2
-; ARM32: movt r0, #29646 ; 0x73ce
-
-; MIPS32-LABEL: trunc64To32SignedConst
-; MIPS32: lui v0,0x73ce
-; MIPS32: ori v0,v0,0x2ff2
-
-define internal i32 @trunc64To16SignedConst() {
-entry:
-  %conv = trunc i64 12345678901234 to i16
-  %conv.ret_ext = sext i16 %conv to i32
-  ret i32 %conv.ret_ext
-}
-; CHECK-LABEL: trunc64To16SignedConst
-; CHECK: mov eax,0x73ce2ff2
-; CHECK: movsx eax,ax
-;
-; OPTM1-LABEL: trunc64To16SignedConst
-; OPTM1: mov eax,0x73ce2ff2
-; OPTM1: movsx eax,
-
-; ARM32-LABEL: trunc64To16SignedConst
-; ARM32: movw r0, #12274 ; 0x2ff2
-; ARM32: movt r0, #29646 ; 0x73ce
-; ARM32: sxth r0, r0
-
-; MIPS32-LABEL: trunc64To16SignedConst
-; MIPS32: lui v0,0x73ce
-; MIPS32: ori v0,v0,0x2ff2
-; MIPS32: sll v0,v0,0x10
-; MIPS32: sra v0,v0,0x10
-
-define internal i32 @trunc64To32Unsigned(i64 %padding, i64 %a) {
-entry:
-  %conv = trunc i64 %a to i32
-  ret i32 %conv
-}
-; CHECK-LABEL: trunc64To32Unsigned
-; CHECK: mov     eax,DWORD PTR [esp+0xc]
-;
-; OPTM1-LABEL: trunc64To32Unsigned
-; OPTM1: mov     eax,DWORD PTR [esp+
-
-; ARM32-LABEL: trunc64To32Unsigned
-; ARM32: mov r0, r2
-
-; MIPS32-LABEL: trunc64To32Unsigned
-; MIPS32: move v0,a2
-
-define internal i32 @trunc64To16Unsigned(i64 %a) {
-entry:
-  %conv = trunc i64 %a to i16
-  %conv.ret_ext = zext i16 %conv to i32
-  ret i32 %conv.ret_ext
-}
-; CHECK-LABEL: trunc64To16Unsigned
-; CHECK:      mov     eax,DWORD PTR [esp+0x4]
-; CHECK-NEXT: movzx  eax,ax
-;
-; OPTM1-LABEL: trunc64To16Unsigned
-; OPTM1:      mov     ax,WORD PTR [esp+
-; OPTM1: movzx  eax,
-
-; ARM32-LABEL: trunc64To16Unsigned
-; ARM32: uxth
-
-; MIPS32-LABEL: trunc64To16Unsigned
-; MIPS32-O2: andi [[T1:.*]],a0,0xffff
-; MIPS32-O2: move v0,[[T1]]
-; MIPS32-OM1: andi [[T1:.*]],{{.*}},0xffff
-; MIPS32-OM1: sw [[T1]],[[MEM:.*]]
-; MIPS32-OM1: lw v0,[[MEM]]
-
-define internal i32 @trunc64To8Unsigned(i64 %a) {
-entry:
-  %conv = trunc i64 %a to i8
-  %conv.ret_ext = zext i8 %conv to i32
-  ret i32 %conv.ret_ext
-}
-; CHECK-LABEL: trunc64To8Unsigned
-; CHECK:      mov     eax,DWORD PTR [esp+0x4]
-; CHECK-NEXT: movzx  eax,al
-;
-; OPTM1-LABEL: trunc64To8Unsigned
-; OPTM1: mov    eax,DWORD PTR [esp+
-; OPTM1: movzx  eax,
-
-; ARM32-LABEL: trunc64To8Unsigned
-; ARM32: uxtb
-
-; MIPS32-LABEL: trunc64To8Unsigned
-; MIPS32-O2: andi [[T1:.*]],a0,0xff
-; MIPS32-O2: move v0,[[T1]]
-; MIPS32-OM1: andi [[T1:.*]],{{.*}},0xff
-; MIPS32-OM1: sw [[T1]],[[MEM:.*]]
-; MIPS32-OM1: lw v0,[[MEM]]
-
-define internal i32 @trunc64To1(i64 %a) {
-entry:
-;  %tobool = icmp ne i64 %a, 0
-  %tobool = trunc i64 %a to i1
-  %tobool.ret_ext = zext i1 %tobool to i32
-  ret i32 %tobool.ret_ext
-}
-; CHECK-LABEL: trunc64To1
-; CHECK:      mov     eax,DWORD PTR [esp+0x4]
-; CHECK:      and     al,0x1
-; CHECK-NOT:  and     eax,0x1
-;
-; OPTM1-LABEL: trunc64To1
-; OPTM1:      mov     eax,DWORD PTR [esp+
-; OPTM1:      and     al,0x1
-; OPTM1-NOT:  and     eax,0x1
-
-; ARM32-LABEL: trunc64To1
-; ARM32-OM1: and r0, r0, #1
-; ARM32-O2: and r0, r0, #1
-
-; MIPS32-LABEL: trunc64To1
-; MIPS32-O2: andi [[T1:.*]],a0,0x1
-; MIPS32-O2: move v0,[[T1]]
-; MIPS32-OM1: andi [[T1:.*]],{{.*}},0x1
-; MIPS32-OM1: sw [[T1]],[[MEM:.*]]
-; MIPS32-OM1: lw v0,[[MEM]]
-
-define internal i64 @sext32To64(i32 %a) {
-entry:
-  %conv = sext i32 %a to i64
-  ret i64 %conv
-}
-; CHECK-LABEL: sext32To64
-; CHECK: mov
-; CHECK: sar {{.*}},0x1f
-;
-; OPTM1-LABEL: sext32To64
-; OPTM1: mov
-; OPTM1: sar {{.*}},0x1f
-
-; ARM32-LABEL: sext32To64
-; ARM32: asr {{.*}}, #31
-
-; MIPS32-LABEL: sext32To64
-; MIPS32: sra [[T_HI:.*]],[[T_LO:.*]],0x1f
-; MIPS32-O2: move v1,[[T_HI]]
-; MIPS32-O2: move v0,[[T_LO]]
-; MIPS32-OM1: sw [[T_HI]],[[MEM_HI:.*]]
-; MIPS32-OM1: sw [[T_LO]],[[MEM_LO:.*]]
-; MIPS32-OM1: lw v0,[[MEM_LO]]
-; MIPS32-OM1: lw v1,[[MEM_HI]]
-
-define internal i64 @sext16To64(i32 %a) {
-entry:
-  %a.arg_trunc = trunc i32 %a to i16
-  %conv = sext i16 %a.arg_trunc to i64
-  ret i64 %conv
-}
-; CHECK-LABEL: sext16To64
-; CHECK: movsx
-; CHECK: sar {{.*}},0x1f
-;
-; OPTM1-LABEL: sext16To64
-; OPTM1: movsx
-; OPTM1: sar {{.*}},0x1f
-
-; ARM32-LABEL: sext16To64
-; ARM32: sxth
-; ARM32: asr {{.*}}, #31
-
-; MIPS32-LABEL: sext16To64
-; MIPS32: sll [[T1_LO:.*]],{{.*}},0x10
-; MIPS32: sra [[T2_LO:.*]],[[T1_LO]],0x10
-; MIPS32: sra [[T_HI:.*]],[[T2_LO]],0x1f
-; MIPS32-O2: move v1,[[T_HI]]
-; MIPS32-O2: move v0,[[T2_LO]]
-; MIPS32-OM1: sw [[T_HI]],[[MEM_HI:.*]]
-; MIPS32-OM1: sw [[T2_LO]],[[MEM_LO:.*]]
-; MIPS32-OM1: lw v0,[[MEM_LO]]
-; MIPS32-OM1: lw v1,[[MEM_HI]]
-
-
-define internal i64 @sext8To64(i32 %a) {
-entry:
-  %a.arg_trunc = trunc i32 %a to i8
-  %conv = sext i8 %a.arg_trunc to i64
-  ret i64 %conv
-}
-; CHECK-LABEL: sext8To64
-; CHECK: movsx
-; CHECK: sar {{.*}},0x1f
-;
-; OPTM1-LABEL: sext8To64
-; OPTM1: movsx
-; OPTM1: sar {{.*}},0x1f
-
-; ARM32-LABEL: sext8To64
-; ARM32: sxtb
-; ARM32: asr {{.*}}, #31
-
-; MIPS32-LABEL: sext8To64
-; MIPS32: sll [[T1_LO:.*]],{{.*}},0x18
-; MIPS32: sra [[T2_LO:.*]],[[T1_LO]],0x18
-; MIPS32: sra [[T_HI:.*]],[[T2_LO]],0x1f
-; MIPS32-O2: move v1,[[T_HI]]
-; MIPS32-O2: move v0,[[T2_LO]]
-; MIPS32-OM1: sw [[T_HI]],[[MEM_HI:.*]]
-; MIPS32-OM1: sw [[T2_LO]],[[MEM_LO:.*]]
-; MIPS32-OM1: lw v0,[[MEM_LO]]
-; MIPS32-OM1: lw v1,[[MEM_HI]]
-
-define internal i64 @sext1To64(i32 %a) {
-entry:
-  %a.arg_trunc = trunc i32 %a to i1
-  %conv = sext i1 %a.arg_trunc to i64
-  ret i64 %conv
-}
-; CHECK-LABEL: sext1To64
-; CHECK: mov
-; CHECK: shl {{.*}},0x1f
-; CHECK: sar {{.*}},0x1f
-;
-; OPTM1-LABEL: sext1To64
-; OPTM1: mov
-; OPTM1: shl {{.*}},0x1f
-; OPTM1: sar {{.*}},0x1f
-
-; ARM32-LABEL: sext1To64
-; ARM32: mov {{.*}}, #0
-; ARM32: tst {{.*}}, #1
-; ARM32: mvn {{.*}}, #0
-; ARM32: movne
-
-; MIPS32-LABEL: sext1To64
-; MIPS32: sll [[T1:.*]],{{.*}},0x1f
-; MIPS32: sra [[T2:.*]],[[T1]],0x1f
-; MIPS32-O2: move v1,[[T2]]
-; MIPS32-O2: move v0,[[T2]]
-; MIPS32-OM1: sw [[T2]],[[MEM_HI:.*]]
-; MIPS32-OM1: sw [[T2]],[[MEM_LO:.*]]
-; MIPS32-OM1: lw v0,[[MEM_LO]]
-; MIPS32-OM1: lw v1,[[MEM_HI]]
-
-define internal i64 @zext32To64(i32 %a) {
-entry:
-  %conv = zext i32 %a to i64
-  ret i64 %conv
-}
-; CHECK-LABEL: zext32To64
-; CHECK: mov
-; CHECK: mov {{.*}},0x0
-;
-; OPTM1-LABEL: zext32To64
-; OPTM1: mov
-; OPTM1: mov {{.*}},0x0
-
-; ARM32-LABEL: zext32To64
-; ARM32: mov {{.*}}, #0
-
-; MIPS32-LABEL: zext32To64
-; MIPS32: li [[T1:.*]],0
-; MIPS32-O2: move v1,[[T1]]
-; MIPS32-O2: move v0,a0
-; MIPS32-OM1: sw [[T1]],[[MEM_HI:.*]]
-; MIPS32-OM1: lw v1,[[MEM_HI]]
-
-define internal i64 @zext16To64(i32 %a) {
-entry:
-  %a.arg_trunc = trunc i32 %a to i16
-  %conv = zext i16 %a.arg_trunc to i64
-  ret i64 %conv
-}
-; CHECK-LABEL: zext16To64
-; CHECK: movzx
-; CHECK: mov {{.*}},0x0
-;
-; OPTM1-LABEL: zext16To64
-; OPTM1: movzx
-; OPTM1: mov {{.*}},0x0
-
-; ARM32-LABEL: zext16To64
-; ARM32: uxth
-; ARM32: mov {{.*}}, #0
-
-; MIPS32-LABEL: zext16To64
-; MIPS32: andi [[T_LO:.*]],{{.*}},0xffff
-; MIPS32: li [[T_HI:.*]],0
-; MIPS32-O2: move v1,[[T_HI]]
-; MIPS32-O2: move v0,[[T_LO]]
-; MIPS32-OM1: sw [[T_HI]],[[MEM_HI:.*]]
-; MIPS32-OM1: lw v1,[[MEM_HI]]
-
-define internal i64 @zext8To64(i32 %a) {
-entry:
-  %a.arg_trunc = trunc i32 %a to i8
-  %conv = zext i8 %a.arg_trunc to i64
-  ret i64 %conv
-}
-; CHECK-LABEL: zext8To64
-; CHECK: movzx
-; CHECK: mov {{.*}},0x0
-;
-; OPTM1-LABEL: zext8To64
-; OPTM1: movzx
-; OPTM1: mov {{.*}},0x0
-
-; ARM32-LABEL: zext8To64
-; ARM32: uxtb
-; ARM32: mov {{.*}}, #0
-
-; MIPS32-LABEL: zext8To64
-; MIPS32: andi [[T_LO:.*]],{{.*}},0xff
-; MIPS32: li [[T_HI:.*]],0
-; MIPS32-O2: move v1,[[T_HI]]
-; MIPS32-O2: move v0,[[T_LO]]
-; MIPS32-OM1: sw [[T_HI]],[[MEM_HI:.*]]
-; MIPS32-OM1: lw v1,[[MEM_HI]]
-
-define internal i64 @zext1To64(i32 %a) {
-entry:
-  %a.arg_trunc = trunc i32 %a to i1
-  %conv = zext i1 %a.arg_trunc to i64
-  ret i64 %conv
-}
-; CHECK-LABEL: zext1To64
-; CHECK: and {{.*}},0x1
-; CHECK: mov {{.*}},0x0
-;
-; OPTM1-LABEL: zext1To64
-; OPTM1: and {{.*}},0x1
-; OPTM1: mov {{.*}},0x0
-
-; ARM32-LABEL: zext1To64
-; ARM32: and {{.*}}, #1
-; ARM32: mov {{.*}}, #0
-; ARM32: bx
-
-; MIPS32-LABEL: zext1To64
-; MIPS32: andi [[T_LO:.*]],{{.*}},0x1
-; MIPS32: li [[T_HI:.*]],0
-; MIPS32-O2: move v1,[[T_HI]]
-; MIPS32-O2: move v0,[[T_LO]]
-; MIPS32-OM1: sw [[T_HI]],[[MEM_HI:.*]]
-; MIPS32-OM1: lw v1,[[MEM_HI]]
-
-define internal void @icmpEq64(i64 %a, i64 %b, i64 %c, i64 %d) {
-entry:
-  %cmp = icmp eq i64 %a, %b
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  %cmp1 = icmp eq i64 %c, %d
-  br i1 %cmp1, label %if.then2, label %if.end3
-
-if.then2:                                         ; preds = %if.end
-  call void @func()
-  br label %if.end3
-
-if.end3:                                          ; preds = %if.then2, %if.end
-  ret void
-}
-; CHECK-LABEL: icmpEq64
-; CHECK: cmp {{.*}}
-; CHECK-NEXT: jne {{.*}}
-; CHECK-NEXT: cmp {{.*}}
-; CHECK-NEXT: jne {{.*}}
-; CHECK-NEXT: call {{.*}}
-; CHECK: cmp {{.*}}
-; CHECK-NEXT: jne {{.*}}
-; CHECK-NEXT: cmp {{.*}}
-; CHECK-NEXT: jne {{.*}}
-; CHECK-NEXT: call {{.*}}
-;
-; OPTM1-LABEL: icmpEq64
-; OPTM1: mov [[RESULT:.*]],0x1
-; OPTM1-NEXT: cmp {{.*}}
-; OPTM1-NEXT: jne {{.*}}
-; OPTM1-NEXT: cmp {{.*}}
-; OPTM1-NEXT: je {{.*}}
-; OPTM1-NEXT: mov [[RESULT]],0x0
-; OPTM1-NEXT: cmp [[RESULT]],0x0
-; OPTM1-NEXT: jne
-; OPTM1-NEXT: jmp
-; OPTM1-NEXT: call
-; OPTM1: mov [[RESULT:.*]],0x1
-; OPTM1-NEXT: cmp {{.*}}
-; OPTM1-NEXT: jne {{.*}}
-; OPTM1-NEXT: cmp {{.*}}
-; OPTM1-NEXT: je {{.*}}
-; OPTM1-NEXT: mov [[RESULT]],0x0
-; OPTM1-NEXT: cmp [[RESULT]],0x0
-; OPTM1-NEXT: jne
-; OPTM1-NEXT: jmp
-; OPTM1-NEXT: call
-
-; ARM32-LABEL: icmpEq64
-; ARM32: cmp
-; ARM32: cmpeq
-; ARM32-OM1: tst
-; ARM32: bne
-; ARM32: bl {{.*}} <func>
-; ARM32: cmp
-; ARM32: cmpeq
-; ARM32-OM1: tst
-; ARM32: bne
-; ARM32: bl {{.*}} <func>
-; ARM32: bx
-
-; MIPS32-LABEL: icmpEq64
-; MIPS32: xor [[T1:.*]],{{.*}},{{.*}}
-; MIPS32: xor [[T2:.*]],{{.*}},{{.*}}
-; MIPS32: or [[T3:.*]],[[T1]],[[T2]]
-; MIPS32-O2: bnez [[T3]],{{.*}}
-; MIPS32-OM1: sltiu [[T4:.*]],[[T3]],1
-; MIPS32-OM1: sw [[T4]],[[MEM:.*]]
-; MIPS32-OM1: lb [[T5:.*]],[[MEM]]
-; MIPS32-OM1: beqz [[T5]],{{.*}}
-; MIPS32-OM1: b {{.*}}
-; MIPS32: jal {{.*}}
-; MIPS32-OM1: b {{.*}}
-; MIPS32: xor [[T1:.*]],{{.*}},{{.*}}
-; MIPS32: xor [[T2:.*]],{{.*}},{{.*}}
-; MIPS32: or [[T3:.*]],[[T1]],[[T2]]
-; MIPS32-O2: bnez [[T3]],{{.*}}
-; MIPS32-OM1: sltiu [[T4:.*]],[[T3]],1
-; MIPS32-OM1: sw [[T4]],[[MEM:.*]]
-; MIPS32-OM1: lb [[T5:.*]],[[MEM]]
-; MIPS32-OM1: beqz [[T5]],{{.*}}
-; MIPS32-OM1: b {{.*}}
-; MIPS32: jal {{.*}}
-; MIPS32-OM1: b {{.*}}
-
-declare void @func()
-
-define internal void @icmpNe64(i64 %a, i64 %b, i64 %c, i64 %d) {
-entry:
-  %cmp = icmp ne i64 %a, %b
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  %cmp1 = icmp ne i64 %c, %d
-  br i1 %cmp1, label %if.then2, label %if.end3
-
-if.then2:                                         ; preds = %if.end
-  call void @func()
-  br label %if.end3
-
-if.end3:                                          ; preds = %if.end, %if.then2
-  ret void
-}
-; CHECK-LABEL: icmpNe64
-; CHECK: cmp {{.*}}
-; CHECK-NEXT: jne {{.*}}
-; CHECK-NEXT: cmp {{.*}}
-; CHECK-NEXT: je {{.*}}
-; CHECK-NEXT: call {{.*}}
-; CHECK: cmp {{.*}}
-; CHECK-NEXT: jne {{.*}}
-; CHECK-NEXT: cmp {{.*}}
-; CHECK-NEXT: je {{.*}}
-; CHECK-NEXT: call {{.*}}
-;
-; OPTM1-LABEL: icmpNe64
-; OPTM1: mov [[RESULT:.*]],0x1
-; OPTM1-NEXT: cmp {{.*}}
-; OPTM1-NEXT: jne {{.*}}
-; OPTM1-NEXT: cmp {{.*}}
-; OPTM1-NEXT: jne {{.*}}
-; OPTM1-NEXT: mov [[RESULT:.*]],0x0
-; OPTM1-NEXT: cmp [[RESULT]],0x0
-; OPTM1-NEXT: jne {{.*}}
-; OPTM1-NEXT: jmp {{.*}}
-; OPTM1-NEXT: call
-; OPTM1: mov [[RESULT:.*]],0x1
-; OPTM1-NEXT: cmp {{.*}}
-; OPTM1-NEXT: jne {{.*}}
-; OPTM1-NEXT: cmp {{.*}}
-; OPTM1-NEXT: jne {{.*}}
-; OPTM1-NEXT: mov [[RESULT:.*]],0x0
-; OPTM1-NEXT: cmp [[RESULT]],0x0
-; OPTM1-NEXT: jne {{.*}}
-; OPTM1-NEXT: jmp {{.*}}
-; OPTM1-NEXT: call
-
-; ARM32-LABEL: icmpNe64
-; ARM32: cmp
-; ARM32: cmpeq
-; ARM32-OM1: tst
-; ARM32-OM1: bne
-; ARM32-O2: beq
-; ARM32: bl {{.*}} <func>
-; ARM32: cmp
-; ARM32: cmpeq
-; ARM32-OM1: tst
-; ARM32-OM1: bne
-; ARM32-O2: beq
-; ARM32: bl
-
-; MIPS32-LABEL: icmpNe64
-; MIPS32: xor [[T1:.*]],{{.*}},{{.*}}
-; MIPS32: xor [[T2:.*]],{{.*}},{{.*}}
-; MIPS32: or [[T3:.*]],[[T1]],[[T2]]
-; MIPS32-O2: beqz [[T3]],{{.*}}
-; MIPS32-OM1: sltu [[T4:.*]],zero,[[T3]]
-; MIPS32-OM1: sw [[T4]],[[MEM:.*]]
-; MIPS32-OM1: lb [[T5:.*]],[[MEM]]
-; MIPS32-OM1: beqz [[T5]],{{.*}}
-; MIPS32-OM1: b {{.*}}
-; MIPS32: jal {{.*}}
-; MIPS32-OM1: b {{.*}}
-; MIPS32: xor [[T1:.*]],{{.*}},{{.*}}
-; MIPS32: xor [[T2:.*]],{{.*}},{{.*}}
-; MIPS32: or [[T3:.*]],[[T1]],[[T2]]
-; MIPS32-O2: beqz [[T3]],{{.*}}
-; MIPS32-OM1: sltu [[T4:.*]],zero,[[T3]]
-; MIPS32-OM1: sw [[T4]],[[MEM:.*]]
-; MIPS32-OM1: lb [[T5:.*]],[[MEM]]
-; MIPS32-OM1: beqz [[T5]],{{.*}}
-; MIPS32-OM1: b {{.*}}
-; MIPS32: jal {{.*}}
-; MIPS32-OM1: b {{.*}}
-
-define internal void @icmpGt64(i64 %a, i64 %b, i64 %c, i64 %d) {
-entry:
-  %cmp = icmp ugt i64 %a, %b
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  %cmp1 = icmp sgt i64 %c, %d
-  br i1 %cmp1, label %if.then2, label %if.end3
-
-if.then2:                                         ; preds = %if.end
-  call void @func()
-  br label %if.end3
-
-if.end3:                                          ; preds = %if.then2, %if.end
-  ret void
-}
-; CHECK-LABEL: icmpGt64
-; CHECK: ja
-; CHECK: jb
-; CHECK: jbe
-; CHECK: call
-; CHECK: jg
-; CHECK: jl
-; CHECK: jbe
-; CHECK: call
-;
-; OPTM1-LABEL: icmpGt64
-; OPTM1: ja
-; OPTM1: jb
-; OPTM1: ja
-; OPTM1: call
-; OPTM1: jg
-; OPTM1: jl
-; OPTM1: ja
-; OPTM1: call
-
-; ARM32-LABEL: icmpGt64
-; ARM32: cmp
-; ARM32: cmpeq
-; ARM32-OM1: tst
-; ARM32-OM1: bne
-; ARM32-O2: bls
-; ARM32: bl
-; ARM32: cmp
-; ARM32: sbcs
-; ARM32-OM1: tst
-; ARM32-OM1: bne
-; ARM32-O2: bge
-; ARM32: bl
-
-; MIPS32-LABEL: icmpGt64
-; MIPS32: xor [[T1:.*]],[[A_HI:.*]],[[B_HI:.*]]
-; MIPS32-O2: sltu [[T2:.*]],[[B_HI]],[[A_HI]]
-; MIPS32-O2: xori [[T3:.*]],[[T2]],0x1
-; MIPS32-O2: sltu [[T4:.*]],{{.*}},{{.*}}
-; MIPS32-O2: xori [[T5:.*]],[[T4]],0x1
-; MIPS32-OM1: sltu [[T3:.*]],[[B_HI]],[[A_HI]]
-; MIPS32-OM1: sltu [[T5:.*]],{{.*}},{{.*}}
-; MIPS32: movz [[T3]],[[T5]],[[T1]]
-; MIPS32-O2: bnez [[T3]],{{.*}}
-; MIPS32-OM1: sw [[T3]],[[MEM:.*]]
-; MIPS32-OM1: lb [[T6:.*]],[[MEM]]
-; MIPS32-OM1: beqz [[T6]],{{.*}}
-; MIPS32-OM1: b {{.*}}
-; MIPS32: jal {{.*}}
-; MIPS32-OM1: b {{.*}}
-; MIPS32: xor [[T1:.*]],[[A_HI:.*]],[[B_HI:.*]]
-; MIPS32-O2: slt [[T2:.*]],[[B_HI]],[[A_HI]]
-; MIPS32-O2: xori [[T3:.*]],[[T2]],0x1
-; MIPS32-O2: sltu [[T4:.*]],{{.*}},{{.*}}
-; MIPS32-O2: xori [[T5:.*]],[[T4]],0x1
-; MIPS32-OM1: slt [[T3:.*]],[[B_HI]],[[A_HI]]
-; MIPS32-OM1: sltu [[T5:.*]],{{.*}},{{.*}}
-; MIPS32: movz [[T3]],[[T5]],[[T1]]
-; MIPS32-O2: bnez [[T3]],{{.*}}
-; MIPS32-OM1: sw [[T3]],[[MEM:.*]]
-; MIPS32-OM1: lb [[T6:.*]],[[MEM]]
-; MIPS32-OM1: beqz [[T6]],{{.*}}
-; MIPS32-OM1: b {{.*}}
-; MIPS32: jal {{.*}}
-; MIPS32-OM1: b {{.*}}
-
-define internal void @icmpGe64(i64 %a, i64 %b, i64 %c, i64 %d) {
-entry:
-  %cmp = icmp uge i64 %a, %b
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  %cmp1 = icmp sge i64 %c, %d
-  br i1 %cmp1, label %if.then2, label %if.end3
-
-if.then2:                                         ; preds = %if.end
-  call void @func()
-  br label %if.end3
-
-if.end3:                                          ; preds = %if.end, %if.then2
-  ret void
-}
-; CHECK-LABEL: icmpGe64
-; CHECK: ja
-; CHECK: jb
-; CHECK: jb
-; CHECK: call
-; CHECK: jg
-; CHECK: jl
-; CHECK: jb
-; CHECK: call
-;
-; OPTM1-LABEL: icmpGe64
-; OPTM1: ja
-; OPTM1: jb
-; OPTM1: jae
-; OPTM1: call
-; OPTM1: jg
-; OPTM1: jl
-; OPTM1: jae
-; OPTM1: call
-
-; ARM32-LABEL: icmpGe64
-; ARM32: cmp
-; ARM32: cmpeq
-; ARM32-OM1: tst
-; ARM32-OM1: bne
-; ARM32-O2: bcc
-; ARM32: bl
-; ARM32: cmp
-; ARM32: sbcs
-; ARM32-OM1: tst
-; ARM32-OM1: bne
-; ARM32-O2: blt
-; ARM32: bl
-
-; MIPS32-LABEL: icmpGe64
-; MIPS32: xor [[T1:.*]],[[A_HI:.*]],[[B_HI:.*]]
-; MIPS32-OM1: sltu [[T2:.*]],[[A_HI]],[[B_HI]]
-; MIPS32-OM1: xori [[T3:.*]],[[T2]],0x1
-; MIPS32-OM1: sltu [[T4:.*]],{{.*}},{{.*}}
-; MIPS32-OM1: xori [[T5:.*]],[[T4]],0x1
-; MIPS32-O2: sltu [[T3:.*]],[[A_HI]],[[B_HI]]
-; MIPS32-O2: sltu [[T5:.*]],{{.*}},{{.*}}
-; MIPS32: movz [[T3]],[[T5]],[[T1]]
-; MIPS32-O2: bnez [[T3]],{{.*}}
-; MIPS32-OM1: sw [[T3]],[[MEM:.*]]
-; MIPS32-OM1: lb [[T6:.*]],[[MEM]]
-; MIPS32-OM1: beqz [[T6]],{{.*}}
-; MIPS32-OM1: b {{.*}}
-; MIPS32: jal {{.*}}
-; MIPS32-OM1: b {{.*}}
-; MIPS32: xor [[T1:.*]],[[A_HI:.*]],[[B_HI:.*]]
-; MIPS32-OM1: slt [[T2:.*]],[[A_HI]],[[B_HI]]
-; MIPS32-OM1: xori [[T3:.*]],[[T2]],0x1
-; MIPS32-OM1: sltu [[T4:.*]],{{.*}},{{.*}}
-; MIPS32-OM1: xori [[T5:.*]],[[T4]],0x1
-; MIPS32-O2: slt [[T3:.*]],[[A_HI]],[[B_HI]]
-; MIPS32-O2: sltu [[T5:.*]],{{.*}},{{.*}}
-; MIPS32: movz [[T3]],[[T5]],[[T1]]
-; MIPS32-O2: bnez [[T3]],{{.*}}
-; MIPS32-OM1: sw [[T3]],[[MEM:.*]]
-; MIPS32-OM1: lb [[T6:.*]],[[MEM]]
-; MIPS32-OM1: beqz [[T6]],{{.*}}
-; MIPS32-OM1: b {{.*}}
-; MIPS32: jal {{.*}}
-; MIPS32-OM1: b {{.*}}
-
-define internal void @icmpLt64(i64 %a, i64 %b, i64 %c, i64 %d) {
-entry:
-  %cmp = icmp ult i64 %a, %b
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  %cmp1 = icmp slt i64 %c, %d
-  br i1 %cmp1, label %if.then2, label %if.end3
-
-if.then2:                                         ; preds = %if.end
-  call void @func()
-  br label %if.end3
-
-if.end3:                                          ; preds = %if.then2, %if.end
-  ret void
-}
-; CHECK-LABEL: icmpLt64
-; CHECK: jb
-; CHECK: ja
-; CHECK: jae
-; CHECK: call
-; CHECK: jl
-; CHECK: jg
-; CHECK: jae
-; CHECK: call
-;
-; OPTM1-LABEL: icmpLt64
-; OPTM1: jb
-; OPTM1: ja
-; OPTM1: jb
-; OPTM1: call
-; OPTM1: jl
-; OPTM1: jg
-; OPTM1: jb
-; OPTM1: call
-
-; ARM32-LABEL: icmpLt64
-; ARM32: cmp
-; ARM32: cmpeq
-; ARM32-OM1: tst
-; ARM32-OM1: bne
-; ARM32-O2: bcs
-; ARM32: bl
-; ARM32: cmp
-; ARM32: sbcs
-; ARM32-OM1: tst
-; ARM32-OM1: bne
-; ARM32-O2: bge
-; ARM32: bl
-
-; MIPS32-LABEL: icmpLt64
-; MIPS32: xor [[T1:.*]],[[A_HI:.*]],[[B_HI:.*]]
-; MIPS32-O2: sltu [[T2:.*]],[[A_HI]],[[B_HI]]
-; MIPS32-O2: xori [[T3:.*]],[[T2]],0x1
-; MIPS32-O2: sltu [[T4:.*]],{{.*}},{{.*}}
-; MIPS32-O2: xori [[T5:.*]],[[T4]],0x1
-; MIPS32-OM1: sltu [[T3:.*]],[[A_HI]],[[B_HI]]
-; MIPS32-OM1: sltu [[T5:.*]],{{.*}},{{.*}}
-; MIPS32: movz [[T3]],[[T5]],[[T1]]
-; MIPS32-O2: bnez [[T3]],{{.*}}
-; MIPS32-OM1: sw [[T3]],[[MEM:.*]]
-; MIPS32-OM1: lb [[T6:.*]],[[MEM]]
-; MIPS32-OM1: beqz [[T6]],{{.*}}
-; MIPS32-OM1: b {{.*}}
-; MIPS32: jal {{.*}}
-; MIPS32-OM1: b {{.*}}
-; MIPS32: xor [[T1:.*]],[[A_HI:.*]],[[B_HI:.*]]
-; MIPS32-O2: slt [[T2:.*]],[[A_HI]],[[B_HI]]
-; MIPS32-O2: xori [[T3:.*]],[[T2]],0x1
-; MIPS32-O2: sltu [[T4:.*]],{{.*}},{{.*}}
-; MIPS32-O2: xori [[T5:.*]],[[T4]],0x1
-; MIPS32-OM1: slt [[T3:.*]],[[A_HI]],[[B_HI]]
-; MIPS32-OM1: sltu [[T5:.*]],{{.*}},{{.*}}
-; MIPS32: movz [[T3]],[[T5]],[[T1]]
-; MIPS32-O2: bnez [[T3]],{{.*}}
-; MIPS32-OM1: sw [[T3]],[[MEM:.*]]
-; MIPS32-OM1: lb [[T6:.*]],[[MEM]]
-; MIPS32-OM1: beqz [[T6]],{{.*}}
-; MIPS32-OM1: b {{.*}}
-; MIPS32: jal {{.*}}
-; MIPS32-OM1: b {{.*}}
-
-define internal void @icmpLe64(i64 %a, i64 %b, i64 %c, i64 %d) {
-entry:
-  %cmp = icmp ule i64 %a, %b
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  %cmp1 = icmp sle i64 %c, %d
-  br i1 %cmp1, label %if.then2, label %if.end3
-
-if.then2:                                         ; preds = %if.end
-  call void @func()
-  br label %if.end3
-
-if.end3:                                          ; preds = %if.end, %if.then2
-  ret void
-}
-; CHECK-LABEL: icmpLe64
-; CHECK: jb
-; CHECK: ja
-; CHECK: ja
-; CHECK: call
-; CHECK: jl
-; CHECK: jg
-; CHECK: ja
-; CHECK: call
-;
-; OPTM1-LABEL: icmpLe64
-; OPTM1: jb
-; OPTM1: ja
-; OPTM1: jbe
-; OPTM1: call
-; OPTM1: jl
-; OPTM1: jg
-; OPTM1: jbe
-; OPTM1: call
-
-; ARM32-LABEL: icmpLe64
-; ARM32: cmp
-; ARM32: cmpeq
-; ARM32-OM1: tst
-; ARM32-OM1: bne
-; ARM32-O2: bhi
-; ARM32: bl
-; ARM32: cmp
-; ARM32: sbcs
-; ARM32-OM1: tst
-; ARM32-OM1: bne
-; ARM32-O2: blt
-; ARM32: bl
-
-; MIPS32-LABEL: icmpLe64
-; MIPS32: xor [[T1:.*]],[[A_HI:.*]],[[B_HI:.*]]
-; MIPS32-OM1: sltu [[T2:.*]],[[B_HI]],[[A_HI]]
-; MIPS32-OM1: xori [[T3:.*]],[[T2]],0x1
-; MIPS32-OM1: sltu [[T4:.*]],{{.*}},{{.*}}
-; MIPS32-OM1: xori [[T5:.*]],[[T4]],0x1
-; MIPS32-O2: sltu [[T3:.*]],[[B_HI]],[[A_HI]]
-; MIPS32-O2: sltu [[T5:.*]],{{.*}},{{.*}}
-; MIPS32: movz [[T3]],[[T5]],[[T1]]
-; MIPS32-O2: bnez [[T3]],{{.*}}
-; MIPS32-OM1: sw [[T3]],[[MEM:.*]]
-; MIPS32-OM1: lb [[T6:.*]],[[MEM]]
-; MIPS32-OM1: beqz [[T6]],{{.*}}
-; MIPS32-OM1: b {{.*}}
-; MIPS32: jal {{.*}}
-; MIPS32-OM1: b {{.*}}
-; MIPS32: xor [[T1:.*]],[[A_HI:.*]],[[B_HI:.*]]
-; MIPS32-OM1: slt [[T2:.*]],[[B_HI]],[[A_HI]]
-; MIPS32-OM1: xori [[T3:.*]],[[T2]],0x1
-; MIPS32-OM1: sltu [[T4:.*]],{{.*}},{{.*}}
-; MIPS32-OM1: xori [[T5:.*]],[[T4]],0x1
-; MIPS32-O2: slt [[T3:.*]],[[B_HI]],[[A_HI]]
-; MIPS32-O2: sltu [[T5:.*]],{{.*}},{{.*}}
-; MIPS32: movz [[T3]],[[T5]],[[T1]]
-; MIPS32-O2: bnez [[T3]],{{.*}}
-; MIPS32-OM1: sw [[T3]],[[MEM:.*]]
-; MIPS32-OM1: lb [[T6:.*]],[[MEM]]
-; MIPS32-OM1: beqz [[T6]],{{.*}}
-; MIPS32-OM1: b {{.*}}
-; MIPS32: jal {{.*}}
-; MIPS32-OM1: b {{.*}}
-
-define internal i32 @icmpEq64Bool(i64 %a, i64 %b) {
-entry:
-  %cmp = icmp eq i64 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: icmpEq64Bool
-; CHECK: jne
-; CHECK: je
-;
-; OPTM1-LABEL: icmpEq64Bool
-; OPTM1: jne
-; OPTM1: je
-
-; ARM32-LABEL: icmpEq64Bool
-; ARM32: mov
-; ARM32: moveq
-
-; MIPS32-LABEL: icmpEq64Bool
-; MIPS32: xor	[[T1:.*]],{{.*}},{{.*}}
-; MIPS32: xor	[[T2:.*]],{{.*}},{{.*}}
-; MIPS32: or	[[T3:.*]],[[T1]],[[T2]]
-; MIPS32: sltiu	{{.*}},[[T3]],1
-
-define internal i32 @icmpNe64Bool(i64 %a, i64 %b) {
-entry:
-  %cmp = icmp ne i64 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: icmpNe64Bool
-; CHECK: jne
-; CHECK: jne
-;
-; OPTM1-LABEL: icmpNe64Bool
-; OPTM1: jne
-; OPTM1: jne
-
-; ARM32-LABEL: icmpNe64Bool
-; ARM32: mov
-; ARM32: movne
-
-; MIPS32-LABEL: icmpNe64Bool
-; MIPS32: xor   [[T1:.*]],{{.*}},{{.*}}
-; MIPS32: xor   [[T2:.*]],{{.*}},{{.*}}
-; MIPS32: or    [[T3:.*]],[[T1]],[[T2]]
-; MIPS32: sltu {{.*}},zero,[[T3]]
-
-define internal i32 @icmpSgt64Bool(i64 %a, i64 %b) {
-entry:
-  %cmp = icmp sgt i64 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: icmpSgt64Bool
-; CHECK: cmp
-; CHECK: jg
-; CHECK: jl
-; CHECK: cmp
-; CHECK: ja
-;
-; OPTM1-LABEL: icmpSgt64Bool
-; OPTM1: cmp
-; OPTM1: jg
-; OPTM1: jl
-; OPTM1: cmp
-; OPTM1: ja
-
-; ARM32-LABEL: icmpSgt64Bool
-; ARM32: mov
-; ARM32: cmp
-; ARM32: sbcs
-; ARM32: movlt
-
-; MIPS32-LABEL: icmpSgt64Bool
-; MIPS32: xor	[[T1:.*]],[[A_HI:.*]],[[B_HI:.*]]
-; MIPS32: slt	[[T2:.*]],{{.*}},{{.*}}
-; MIPS32: sltu	[[T3:.*]],{{.*}},{{.*}}
-; MIPS32: movz	[[T2]],[[T3]],[[T1]]
-; MIPS32-O2: move	{{.*}},[[T2]]
-; MIPS32-OM1: sw	[[T2]],[[MEM:.*]]
-; MIPS32-OM1: lb	{{.*}},[[MEM]]
-
-define internal i32 @icmpUgt64Bool(i64 %a, i64 %b) {
-entry:
-  %cmp = icmp ugt i64 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: icmpUgt64Bool
-; CHECK: cmp
-; CHECK: ja
-; CHECK: jb
-; CHECK: cmp
-; CHECK: ja
-;
-; OPTM1-LABEL: icmpUgt64Bool
-; OPTM1: cmp
-; OPTM1: ja
-; OPTM1: jb
-; OPTM1: cmp
-; OPTM1: ja
-
-; ARM32-LABEL: icmpUgt64Bool
-; ARM32: mov
-; ARM32: cmp
-; ARM32: cmpeq
-; ARM32: movhi
-
-; MIPS32-LABEL: icmpUgt64Bool
-; MIPS32: xor	[[T1:.*]],[[A_HI:.*]],[[B_HI:.*]]
-; MIPS32: sltu	[[T2:.*]],[[B_HI]],[[A_HI]]
-; MIPS32: sltu	[[T3:.*]],{{.*}},{{.*}}
-; MIPS32: movz	[[T2]],[[T3]],[[T1]]
-; MIPS32-O2: move	{{.*}},[[T2]]
-; MIPS32-OM1: sw	[[T2]],[[MEM:.*]]
-; MIPS32-OM1: lb	{{.*}},[[MEM]]
-
-define internal i32 @icmpSge64Bool(i64 %a, i64 %b) {
-entry:
-  %cmp = icmp sge i64 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: icmpSge64Bool
-; CHECK: cmp
-; CHECK: jg
-; CHECK: jl
-; CHECK: cmp
-; CHECK: jae
-;
-; OPTM1-LABEL: icmpSge64Bool
-; OPTM1: cmp
-; OPTM1: jg
-; OPTM1: jl
-; OPTM1: cmp
-; OPTM1: jae
-
-; ARM32-LABEL: icmpSge64Bool
-; ARM32: mov
-; ARM32: cmp
-; ARM32: sbcs
-; ARM32: movge
-
-; MIPS32-LABEL: icmpSge64Bool
-; MIPS32: xor	[[T1:.*]],[[A_HI:.*]],[[B_HI:.*]]
-; MIPS32: slt	[[T2:.*]],[[A_HI]],[[B_HI]]
-; MIPS32: xori	[[T3:.*]],[[T2]],0x1
-; MIPS32: sltu	[[T4:.*]],{{.*}},{{.*}}
-; MIPS32: xori	[[T5:.*]],[[T4]],0x1
-; MIPS32: movz	[[T6:.*]],[[T5]],[[T1]]
-; MIPS32-O2: move       {{.*}},[[T3]]
-; MIPS32-OM1: sw        [[T3]],[[MEM:.*]]
-; MIPS32-OM1: lb        {{.*}},[[MEM]]
-
-define internal i32 @icmpUge64Bool(i64 %a, i64 %b) {
-entry:
-  %cmp = icmp uge i64 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: icmpUge64Bool
-; CHECK: cmp
-; CHECK: ja
-; CHECK: jb
-; CHECK: cmp
-; CHECK: jae
-;
-; OPTM1-LABEL: icmpUge64Bool
-; OPTM1: cmp
-; OPTM1: ja
-; OPTM1: jb
-; OPTM1: cmp
-; OPTM1: jae
-
-; ARM32-LABEL: icmpUge64Bool
-; ARM32: mov
-; ARM32: cmp
-; ARM32: cmpeq
-; ARM32: movcs
-
-; MIPS32-LABEL: icmpUge64Bool
-; MIPS32: xor	[[T1:.*]],[[A_HI:.*]],[[B_HI:.*]]
-; MIPS32: sltu	[[T2:.*]],[[A_HI]],[[B_HI]]
-; MIPS32: xori	[[T3:.*]],[[T2]],0x1
-; MIPS32: sltu	[[T4:.*]],{{.*}},{{.*}}
-; MIPS32: xori	[[T5:.*]],[[T4]],0x1
-; MIPS32: movz	[[T6:.*]],[[T5]],[[T1]]
-; MIPS32-O2: move	{{.*}},[[T3]]
-; MIPS32-OM1: sw	[[T3]],[[MEM:.*]]
-; MIPS32-OM1: lb	{{.*}},[[MEM]]
-
-define internal i32 @icmpSlt64Bool(i64 %a, i64 %b) {
-entry:
-  %cmp = icmp slt i64 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: icmpSlt64Bool
-; CHECK: cmp
-; CHECK: jl
-; CHECK: jg
-; CHECK: cmp
-; CHECK: jb
-;
-; OPTM1-LABEL: icmpSlt64Bool
-; OPTM1: cmp
-; OPTM1: jl
-; OPTM1: jg
-; OPTM1: cmp
-; OPTM1: jb
-
-; ARM32-LABEL: icmpSlt64Bool
-; ARM32: mov
-; ARM32: cmp
-; ARM32: sbcs
-; ARM32: movlt
-
-; MIPS32-LABEL: icmpSlt64Bool
-; MIPS32: xor	[[T1:.*]],[[A_HI:.*]],[[B_HI:.*]]
-; MIPS32: slt	[[T2:.*]],[[A_HI]],[[B_HI]]
-; MIPS32: sltu	[[T3:.*]],{{.*}},{{.*}}
-; MIPS32: movz	[[T2:.*]],[[T3]],[[T1]]
-; MIPS32-O2: move	{{.*}},[[T2]]
-; MIPS32-OM1: sw	[[T2]],[[MEM:.*]]
-; MIPS32-OM1: lb	{{.*}},[[MEM]]
-
-define internal i32 @icmpUlt64Bool(i64 %a, i64 %b) {
-entry:
-  %cmp = icmp ult i64 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: icmpUlt64Bool
-; CHECK: cmp
-; CHECK: jb
-; CHECK: ja
-; CHECK: cmp
-; CHECK: jb
-;
-; OPTM1-LABEL: icmpUlt64Bool
-; OPTM1: cmp
-; OPTM1: jb
-; OPTM1: ja
-; OPTM1: cmp
-; OPTM1: jb
-
-; ARM32-LABEL: icmpUlt64Bool
-; ARM32: mov
-; ARM32: cmp
-; ARM32: cmpeq
-; ARM32: movcc
-
-; MIPS32-LABEL: icmpUlt64Bool
-; MIPS32: xor	[[T1:.*]],[[A_HI:.*]],[[B_HI:.*]]
-; MIPS32: sltu	[[T2:.*]],[[A_HI]],[[B_HI]]
-; MIPS32: sltu	[[T3:.*]],{{.*}},{{.*}}
-; MIPS32: movz	[[T2:.*]],[[T3]],[[T1]]
-; MIPS32-O2: move	{{.*}},[[T2]]
-; MIPS32-OM1: sw	[[T2]],[[MEM:.*]]
-; MIPS32-OM1: lb	{{.*}},[[MEM]]
-
-define internal i32 @icmpSle64Bool(i64 %a, i64 %b) {
-entry:
-  %cmp = icmp sle i64 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: icmpSle64Bool
-; CHECK: cmp
-; CHECK: jl
-; CHECK: jg
-; CHECK: cmp
-; CHECK: jbe
-;
-; OPTM1-LABEL: icmpSle64Bool
-; OPTM1: cmp
-; OPTM1: jl
-; OPTM1: jg
-; OPTM1: cmp
-; OPTM1: jbe
-
-; ARM32-LABEL: icmpSle64Bool
-; ARM32: mov
-; ARM32: cmp
-; ARM32: sbcs
-; ARM32: movge
-
-; MIPS32-LABEL: icmpSle64Bool
-; MIPS32: xor	[[T1:.*]],[[A_HI:.*]],[[B_HI:.*]]
-; MIPS32: slt	[[T2:.*]],[[B_HI]],[[A_HI]]
-; MIPS32: xori	[[T3:.*]],[[T2]],0x1
-; MIPS32: sltu	[[T4:.*]],{{.*}},{{.*}}
-; MIPS32: xori	[[T5:.*]],[[T4]],0x1
-; MIPS32: movz	[[T6:.*]],[[T5]],[[T1]]
-; MIPS32-O2: move	{{.*}},[[T3]]
-; MIPS32-OM1: sw	[[T3]],[[MEM:.*]]
-; MIPS32-OM1: lb	{{.*}},[[MEM]]
-
-define internal i32 @icmpUle64Bool(i64 %a, i64 %b) {
-entry:
-  %cmp = icmp ule i64 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: icmpUle64Bool
-; CHECK: cmp
-; CHECK: jb
-; CHECK: ja
-; CHECK: cmp
-; CHECK: jbe
-;
-; OPTM1-LABEL: icmpUle64Bool
-; OPTM1: cmp
-; OPTM1: jb
-; OPTM1: ja
-; OPTM1: cmp
-; OPTM1: jbe
-
-; ARM32-LABEL: icmpUle64Bool
-; ARM32: mov
-; ARM32: cmp
-; ARM32: cmpeq
-; ARM32: movls
-
-; MIPS32-LABEL: icmpUle64Bool
-; MIPS32: xor	[[T1:.*]],[[A_HI:.*]],[[B_HI:.*]]
-; MIPS32: sltu	[[T2:.*]],[[B_HI]],[[A_HI]]
-; MIPS32: xori	[[T3:.*]],[[T2]],0x1
-; MIPS32: sltu	[[T4:.*]],{{.*}},{{.*}}
-; MIPS32: xori	[[T5:.*]],[[T4]],0x1
-; MIPS32: movz	[[T6:.*]],[[T5]],[[T1]]
-; MIPS32-O2: move	{{.*}},[[T3]]
-; MIPS32-OM1: sw	[[T3]],[[MEM:.*]]
-; MIPS32-OM1: lb	{{.*}},[[MEM]]
-
-define internal i64 @load64(i32 %a) {
-entry:
-  %__1 = inttoptr i32 %a to i64*
-  %v0 = load i64, i64* %__1, align 1
-  ret i64 %v0
-}
-; CHECK-LABEL: load64
-; CHECK: mov e[[REGISTER:[a-z]+]],DWORD PTR [esp+0x4]
-; CHECK-NEXT: mov {{.*}},DWORD PTR [e[[REGISTER]]]
-; CHECK-NEXT: mov {{.*}},DWORD PTR [e[[REGISTER]]+0x4]
-;
-; OPTM1-LABEL: load64
-; OPTM1: mov e{{..}},DWORD PTR [e{{..}}]
-; OPTM1: mov e{{..}},DWORD PTR [e{{..}}+0x4]
-
-; ARM32-LABEL: load64
-; ARM32: ldr r{{.*}}, [r[[REG:.*]]]
-; ARM32: ldr r{{.*}}, [r[[REG]], #4]
-
-; MIPS32-LABEL: load64
-; MIPS32-O2: 	lw	{{.*}},0([[REG:.*]])
-; MIPS32-O2: 	lw	[[REG]],4([[REG]])
-
-define internal void @store64(i32 %a, i64 %value) {
-entry:
-  %__2 = inttoptr i32 %a to i64*
-  store i64 %value, i64* %__2, align 1
-  ret void
-}
-; CHECK-LABEL: store64
-; CHECK: mov e[[REGISTER:[a-z]+]],DWORD PTR [esp+0x4]
-; CHECK: mov DWORD PTR [e[[REGISTER]]+0x4],
-; CHECK: mov DWORD PTR [e[[REGISTER]]],
-;
-; OPTM1-LABEL: store64
-; OPTM1: mov DWORD PTR [e[[REGISTER:[a-z]+]]+0x4],
-; OPTM1: mov DWORD PTR [e[[REGISTER]]],
-
-; ARM32-LABEL: store64
-; ARM32: str r{{.*}}, [r[[REG:.*]], #4]
-; ARM32: str r{{.*}}, [r[[REG]]]
-
-; MIPS32-LABEL: store64
-; MIPS32-O2: 	sw	{{.*}},4([[REG:.*]])
-; MIPS32-O2: 	sw	{{.*}},0([[REG]])
-
-define internal void @store64Const(i32 %a) {
-entry:
-  %__1 = inttoptr i32 %a to i64*
-  store i64 -2401053092306725256, i64* %__1, align 1
-  ret void
-}
-; CHECK-LABEL: store64Const
-; CHECK: mov e[[REGISTER:[a-z]+]],DWORD PTR [esp+0x4]
-; CHECK: mov DWORD PTR [e[[REGISTER]]+0x4],0xdeadbeef
-; CHECK: mov DWORD PTR [e[[REGISTER]]],0x12345678
-;
-; OPTM1-LABEL: store64Const
-; OPTM1: mov DWORD PTR [e[[REGISTER:[a-z]+]]+0x4],0xdeadbeef
-; OPTM1: mov DWORD PTR [e[[REGISTER]]],0x12345678
-
-; ARM32-LABEL: store64Const
-; ARM32: movw [[REG1:.*]], #48879 ; 0xbeef
-; ARM32: movt [[REG1:.*]], #57005 ; 0xdead
-; ARM32: movw [[REG2:.*]], #22136 ; 0x5678
-; ARM32: movt [[REG2:.*]], #4660  ; 0x1234
-; ARM32: str [[REG1]], [r[[REG:.*]], #4]
-; ARM32: str [[REG2]], [r[[REG]]]
-
-; MIPS32-LABEL: store64Const
-; MIPS32-O2: 	lui	[[REG1:.*]],0xdead
-; MIPS32-O2: 	ori	[[REG1:.*]],[[REG1]],0xbeef
-; MIPS32-O2: 	lui	[[REG2:.*]],0x1234
-; MIPS32-O2: 	ori	[[REG2:.*]],[[REG2]],0x5678
-; MIPS32-O2: 	sw	[[REG1]],4([[REG:.*]])
-; MIPS32-O2: 	sw	[[REG2]],0([[REG]])
-
-define internal i64 @select64VarVar(i64 %a, i64 %b) {
-entry:
-  %cmp = icmp ult i64 %a, %b
-  %cond = select i1 %cmp, i64 %a, i64 %b
-  ret i64 %cond
-}
-; CHECK-LABEL: select64VarVar
-; CHECK: mov
-; CHECK: mov
-; CHECK: cmp
-; CHECK: jb
-; CHECK: ja
-; CHECK: cmp
-; CHECK: jb
-; CHECK: mov
-; CHECK: mov
-;
-; OPTM1-LABEL: select64VarVar
-; OPTM1: cmp
-; OPTM1: jb
-; OPTM1: ja
-; OPTM1: cmp
-; OPTM1: jb
-; OPTM1: cmp
-; OPTM1: cmovne
-
-; ARM32-LABEL: select64VarVar
-; ARM32: cmp
-; ARM32: cmpeq
-; ARM32-OM1: tst
-; ARM32-OM1: movne
-; ARM32-O2: movcc
-; ARM32-OM1: movne
-; ARM32-O2: movcc
-
-; MIPS32-LABEL: select64VarVar
-; MIPS32: movn
-; MIPS32: movn
-
-define internal i64 @select64VarConst(i64 %a, i64 %b) {
-entry:
-  %cmp = icmp ult i64 %a, %b
-  %cond = select i1 %cmp, i64 %a, i64 -2401053092306725256
-  ret i64 %cond
-}
-; CHECK-LABEL: select64VarConst
-; CHECK: mov
-; CHECK: mov
-; CHECK: cmp
-; CHECK: jb
-; CHECK: ja
-; CHECK: cmp
-; CHECK: jb
-; CHECK: mov
-; CHECK: mov
-;
-; OPTM1-LABEL: select64VarConst
-; OPTM1: cmp
-; OPTM1: jb
-; OPTM1: ja
-; OPTM1: cmp
-; OPTM1: jb
-; OPTM1: cmp
-; OPTM1: cmovne
-
-; ARM32-LABEL: select64VarConst
-; ARM32: mov
-; ARM32: mov
-; ARM32: cmp
-; ARM32: cmpeq
-; ARM32-OM1: tst
-; ARM32-OM1: movne
-; ARM32-O2: movcc
-; ARM32-OM1: movne
-; ARM32-O2: movcc
-; ARM32-O2: mov
-; ARM32-O2: mov
-
-; MIPS32-LABEL: select64VarConst
-; MIPS32: movn
-; MIPS32: movn
-
-define internal i64 @select64ConstVar(i64 %a, i64 %b) {
-entry:
-  %cmp = icmp ult i64 %a, %b
-  %cond = select i1 %cmp, i64 -2401053092306725256, i64 %b
-  ret i64 %cond
-}
-; CHECK-LABEL: select64ConstVar
-; CHECK: mov
-; CHECK: mov
-; CHECK: cmp
-; CHECK: jb
-; CHECK: ja
-; CHECK: cmp
-; CHECK: jb
-; CHECK: mov
-; CHECK: mov
-;
-; OPTM1-LABEL: select64ConstVar
-; OPTM1: cmp
-; OPTM1: jb
-; OPTM1: ja
-; OPTM1: cmp
-; OPTM1: jb
-; OPTM1: cmp
-; OPTM1: cmove
-
-; ARM32-LABEL: select64ConstVar
-; ARM32: cmp
-; ARM32: cmpeq
-; ARM32-OM1: tst
-; ARM32: movw
-; ARM32: movt
-; ARM32-OM1: movne
-; ARM32-O2: movcc
-; ARM32: movw
-; ARM32: movt
-; ARM32-OM1: movne
-; ARM32-O2: movcc
-
-; MIPS32-LABEL: select64ConstVar
-; MIPS32: movn
-; MIPS32: movn
-
-define internal void @icmpEq64Imm() {
-entry:
-  %cmp = icmp eq i64 123, 234
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  %cmp1 = icmp eq i64 345, 456
-  br i1 %cmp1, label %if.then2, label %if.end3
-
-if.then2:                                         ; preds = %if.end
-  call void @func()
-  br label %if.end3
-
-if.end3:                                          ; preds = %if.then2, %if.end
-  ret void
-}
-; The following checks are not strictly necessary since one of the RUN
-; lines actually runs the output through the assembler.
-; CHECK-LABEL: icmpEq64Imm
-; CHECK-NOT: cmp 0x{{[0-9a-f]+}},
-; OPTM1-LABEL: icmpEq64Imm
-; OPTM1-LABEL-NOT: cmp 0x{{[0-9a-f]+}},
-; ARM32-LABEL: icmpEq64Imm
-; ARM32-NOT: cmp #{{[0-9a-f]+}},
-
-define internal void @icmpLt64Imm() {
-entry:
-  %cmp = icmp ult i64 123, 234
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  %cmp1 = icmp slt i64 345, 456
-  br i1 %cmp1, label %if.then2, label %if.end3
-
-if.then2:                                         ; preds = %if.end
-  call void @func()
-  br label %if.end3
-
-if.end3:                                          ; preds = %if.then2, %if.end
-  ret void
-}
-; The following checks are not strictly necessary since one of the RUN
-; lines actually runs the output through the assembler.
-; CHECK-LABEL: icmpLt64Imm
-; CHECK-NOT: cmp 0x{{[0-9a-f]+}},
-; OPTM1-LABEL: icmpLt64Imm
-; OPTM1-NOT: cmp 0x{{[0-9a-f]+}},
-; ARM32-LABEL: icmpLt64Imm
-; ARM32-NOT: cmp #{{[0-9a-f]+}},
-
-define internal i64 @phi64Imm(i32 %x, i64 %y, i64 %z) {
-entry:
-  %cond = icmp eq i32 %x, 88
-  br i1 %cond, label %branch1, label %branch2
-branch1:
-  %tmp = add i64 %y, %z
-  br label %branch2
-
-branch2:
-  %merge = phi i64 [ %tmp, %branch1 ], [ 20014547621496, %entry ]
-  ret i64 %merge
-}
-; CHECK-LABEL: phi64Imm
-; CHECK: mov {{.*}},0x5678
-; CHECK: mov {{.*}},0x1234
-; OPTM1-LABEL: phi64Imm
-; OPTM1: mov {{.*}},0x5678
-; OPTM1: mov {{.*}},0x1234
-; ARM32-LABEL: phi64Imm
-; ARM32: movw {{.*}}, #22136 ; 0x5678
-; ARM32: movw {{.*}}, #4660  ; 0x1234
-
-define internal i64 @phi64Undef(i32 %x, i64 %y, i64 %z) {
-entry:
-  %cond = icmp eq i32 %x, 88
-  br i1 %cond, label %branch1, label %branch2
-branch1:
-  %tmp = add i64 %y, %z
-  br label %branch2
-
-branch2:
-  %merge = phi i64 [ %tmp, %branch1 ], [ undef, %entry ]
-  ret i64 %merge
-}
-
-; CHECK-LABEL: phi64Undef
-; CHECK: mov {{.*}},0x0
-; CHECK: mov {{.*}},0x0
-; OPTM1-LABEL: phi64Undef
-; OPTM1: mov {{.*}},0x0
-; OPTM1: mov {{.*}},0x0
-; ARM32-LABEL: phi64Undef
-; ARM32: mov {{.*}} #0
-; ARM32: mov {{.*}} #0
-
-define internal i32 @addOneToUpperAfterShift(i64 %value) {
-  %a = add i64 %value, 1
-  %s = lshr i64 %a, 40
-  %t = trunc i64 %s to i32
-  %r = add i32 %t, 1
-  ret i32 %r
-; ARM32-LABEL: addOneToUpperAfterShift
-; ARM32: adds
-; ARM32: adc
-; ARM32: lsr
-; ARM32: add
-}
-
-define internal i32 @subOneToUpperAfterShift(i64 %value) {
-  %a = sub i64 %value, 1
-  %s = lshr i64 %a, 40
-  %t = trunc i64 %s to i32
-  %r = sub i32 %t, 1
-  ret i32 %r
-; ARM32-LABEL: subOneToUpperAfterShift
-; ARM32: subs
-; ARM32: sbc
-; ARM32: lsr
-; ARM32: sub
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/8bit.pnacl.ll b/third_party/subzero/tests_lit/llvm2ice_tests/8bit.pnacl.ll
deleted file mode 100644
index fcc939f..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/8bit.pnacl.ll
+++ /dev/null
@@ -1,626 +0,0 @@
-; This tries to be a comprehensive test of i8 operations.
-
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s
-
-; The following tests i8 srem/urem lowering on x86-64, specifically that the %ah
-; result gets copied into %al/%bl/%cl/%dl before moved into its final register.
-; This extra copy is forced by excluding al/bl/cl/dl by default (-reg-exclude),
-; but allowing them to be used if absolutely necessary (-reg-reserve).
-
-; RUN: %p2i --target=x8664 --filetype=obj --disassemble -i %s --args -O2 \
-; RUN:   -reg-exclude=al,bl,cl,dl -reg-reserve \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s --check-prefix=REM
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:   mips32 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-declare void @useInt(i32 %x)
-
-define internal i32 @add8Bit(i32 %a, i32 %b) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %b_8 = trunc i32 %b to i8
-  %add = add i8 %b_8, %a_8
-  %ret = zext i8 %add to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: add8Bit
-; CHECK: add {{[abcd]l}}
-; MIPS32-LABEL: add8Bit
-; MIPS32: 	addu
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	move
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @add8BitConst(i32 %a) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %add = add i8 %a_8, 123
-  %ret = zext i8 %add to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: add8BitConst
-; CHECK: add {{[abcd]l}}
-; MIPS32-LABEL: add8BitConst
-; MIPS32: 	addiu
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	move
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @sub8Bit(i32 %a, i32 %b) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %b_8 = trunc i32 %b to i8
-  %sub = sub i8 %b_8, %a_8
-  %ret = zext i8 %sub to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: sub8Bit
-; CHECK: sub {{[abcd]l}}
-; MIPS32-LABEL: sub8Bit
-; MIPS32: 	subu
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	move
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @sub8BitConst(i32 %a) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %sub = sub i8 %a_8, 123
-  %ret = zext i8 %sub to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: sub8BitConst
-; CHECK: sub {{[abcd]l}}
-; MIPS32-LABEL: sub8BitConst
-; MIPS32: 	addiu   {{.*}},-123
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	move
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @mul8Bit(i32 %a, i32 %b) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %b_8 = trunc i32 %b to i8
-  %mul = mul i8 %b_8, %a_8
-  %ret = zext i8 %mul to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: mul8Bit
-; CHECK: mul {{[abcd]l|BYTE PTR}}
-; MIPS32-LABEL: mul8Bit
-; MIPS32: 	mul
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	move
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @mul8BitConst(i32 %a) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %mul = mul i8 %a_8, 56
-  %ret = zext i8 %mul to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: mul8BitConst
-; 8-bit imul only accepts r/m, not imm
-; CHECK: mov {{.*}},0x38
-; CHECK: mul {{[abcd]l|BYTE PTR}}
-; MIPS32-LABEL: mul8BitConst
-; MIPS32: 	li
-; MIPS32: 	mul
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	move
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @udiv8Bit(i32 %a, i32 %b) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %b_8 = trunc i32 %b to i8
-  %udiv = udiv i8 %b_8, %a_8
-  %ret = zext i8 %udiv to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: udiv8Bit
-; CHECK: div {{[abcd]l|BYTE PTR}}
-; MIPS32-LABEL: udiv8Bit
-; MIPS32: 	divu
-; MIPS32: 	teq
-; MIPS32: 	mflo
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @udiv8BitConst(i32 %a) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %udiv = udiv i8 %a_8, 123
-  %ret = zext i8 %udiv to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: udiv8BitConst
-; CHECK: div {{[abcd]l|BYTE PTR}}
-; MIPS32-LABEL: udiv8BitConst
-; MIPS32: 	li
-; MIPS32: 	divu
-; MIPS32: 	teq
-; MIPS32: 	mflo
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @urem8Bit(i32 %a, i32 %b) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %b_8 = trunc i32 %b to i8
-  %urem = urem i8 %b_8, %a_8
-  %ret = zext i8 %urem to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: urem8Bit
-; CHECK: div {{[abcd]l|BYTE PTR}}
-; REM-LABEL: urem8Bit
-; REM: div
-; REM-NEXT: mov {{[abcd]}}l,ah
-; MIPS32-LABEL: urem8Bit
-; MIPS32: 	divu
-; MIPS32: 	teq
-; MIPS32: 	mfhi
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @urem8BitConst(i32 %a) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %urem = urem i8 %a_8, 123
-  %ret = zext i8 %urem to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: urem8BitConst
-; CHECK: div {{[abcd]l|BYTE PTR}}
-; REM-LABEL: urem8BitConst
-; MIPS32-LABEL: urem8BitConst
-; MIPS32: 	li
-; MIPS32: 	divu
-; MIPS32: 	teq
-; MIPS32: 	mfhi
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-
-define internal i32 @sdiv8Bit(i32 %a, i32 %b) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %b_8 = trunc i32 %b to i8
-  %sdiv = sdiv i8 %b_8, %a_8
-  %ret = zext i8 %sdiv to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: sdiv8Bit
-; CHECK: idiv {{[abcd]l|BYTE PTR}}
-; MIPS32-LABEL: sdiv8Bit
-; MIPS32: 	div
-; MIPS32: 	teq
-; MIPS32: 	mflo
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @sdiv8BitConst(i32 %a) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %sdiv = sdiv i8 %a_8, 123
-  %ret = zext i8 %sdiv to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: sdiv8BitConst
-; CHECK: idiv {{[abcd]l|BYTE PTR}}
-; MIPS32-LABEL: sdiv8BitConst
-; MIPS32: 	li
-; MIPS32: 	div
-; MIPS32: 	teq
-; MIPS32: 	mflo
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @srem8Bit(i32 %a, i32 %b) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %b_8 = trunc i32 %b to i8
-  %srem = srem i8 %b_8, %a_8
-  %ret = zext i8 %srem to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: srem8Bit
-; CHECK: idiv {{[abcd]l|BYTE PTR}}
-; REM-LABEL: srem8Bit
-; REM: idiv
-; REM-NEXT: mov {{[abcd]}}l,ah
-; MIPS32-LABEL: srem8Bit
-; MIPS32: 	div
-; MIPS32: 	teq
-; MIPS32: 	mfhi
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @srem8BitConst(i32 %a) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %srem = srem i8 %a_8, 123
-  %ret = zext i8 %srem to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: srem8BitConst
-; CHECK: idiv {{[abcd]l|BYTE PTR}}
-; REM-LABEL: srem8BitConst
-; MIPS32-LABEL: srem8BitConst
-; MIPS32: 	li
-; MIPS32: 	div
-; MIPS32: 	teq
-; MIPS32: 	mfhi
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @shl8Bit(i32 %a, i32 %b) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %b_8 = trunc i32 %b to i8
-  %shl = shl i8 %b_8, %a_8
-  %ret = zext i8 %shl to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: shl8Bit
-; CHECK: shl {{[abd]l|BYTE PTR}},cl
-; MIPS32-LABEL: shl8Bit
-; MIPS32: 	sllv
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	move
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @shl8BitConst(i32 %a, i32 %b) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %shl = shl i8 %a_8, 6
-  %ret = zext i8 %shl to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: shl8BitConst
-; CHECK: shl {{[abcd]l|BYTE PTR}},0x6
-; MIPS32-LABEL: shl8BitConst
-; MIPS32: 	sll
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	move
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @lshr8Bit(i32 %a, i32 %b) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %b_8 = trunc i32 %b to i8
-  %lshr = lshr i8 %b_8, %a_8
-  %ret = zext i8 %lshr to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: lshr8Bit
-; CHECK: shr {{[abd]l|BYTE PTR}},cl
-; MIPS32-LABEL: lshr8Bit
-; MIPS32: 	srlv
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	move
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @lshr8BitConst(i32 %a, i32 %b) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %lshr = lshr i8 %a_8, 6
-  %ret = zext i8 %lshr to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: lshr8BitConst
-; CHECK: shr {{[abcd]l|BYTE PTR}},0x6
-; MIPS32-LABEL: lshr8BitConst
-; MIPS32: 	srl
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	move
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @ashr8Bit(i32 %a, i32 %b) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %b_8 = trunc i32 %b to i8
-  %ashr = ashr i8 %b_8, %a_8
-  %ret = zext i8 %ashr to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: ashr8Bit
-; CHECK: sar {{[abd]l|BYTE PTR}},cl
-; MIPS32-LABEL: ashr8Bit
-; MIPS32: 	sra
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	move
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @ashr8BitConst(i32 %a, i32 %b) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %ashr = ashr i8 %a_8, 6
-  %ret = zext i8 %ashr to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: ashr8BitConst
-; CHECK: sar {{[abcd]l|BYTE PTR}},0x6
-; MIPS32-LABEL: ashr8BitConst
-; MIPS32: 	sra
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	move
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @icmp8Bit(i32 %a, i32 %b) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %b_8 = trunc i32 %b to i8
-  %icmp = icmp ne i8 %b_8, %a_8
-  %ret = zext i1 %icmp to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: icmp8Bit
-; CHECK: cmp {{[abcd]l|BYTE PTR}}
-; MIPS32-LABEL: icmp8Bit
-; MIPS32: 	sll	{{.*}},0x18
-; MIPS32: 	sll	{{.*}},0x18
-; MIPS32: 	xor
-; MIPS32: 	sltu
-; MIPS32: 	andi	{{.*}},0x1
-; MIPS32: 	move
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @icmp8BitConst(i32 %a) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %icmp = icmp ne i8 %a_8, 123
-  %ret = zext i1 %icmp to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: icmp8BitConst
-; CHECK: cmp {{[abcd]l|BYTE PTR}}
-; MIPS32-LABEL: icmp8BitConst
-; MIPS32: 	li
-; MIPS32: 	sll	{{.*}},0x18
-; MIPS32: 	sll	{{.*}},0x18
-; MIPS32: 	xor
-; MIPS32: 	sltu
-; MIPS32: 	andi	{{.*}},0x1
-; MIPS32: 	move
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @icmp8BitConstSwapped(i32 %a) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %icmp = icmp ne i8 123, %a_8
-  %ret = zext i1 %icmp to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: icmp8BitConstSwapped
-; CHECK: cmp {{[abcd]l|BYTE PTR}}
-; MIPS32-LABEL: icmp8BitConstSwapped
-; MIPS32: 	li
-; MIPS32: 	sll	{{.*}},0x18
-; MIPS32: 	sll	{{.*}},0x18
-; MIPS32: 	xor	v0,v0,a0
-; MIPS32: 	sltu
-; MIPS32: 	andi	{{.*}},0x1
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @icmp8BitMem(i32 %a, i32 %b_iptr) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %bptr = inttoptr i32 %b_iptr to i8*
-  %b_8 = load i8, i8* %bptr, align 1
-  %icmp = icmp ne i8 %b_8, %a_8
-  %ret = zext i1 %icmp to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: icmp8BitMem
-; CHECK: cmp {{[abcd]l|BYTE PTR}}
-; MIPS32-LABEL: icmp8BitMem
-; MIPS32: 	lb
-; MIPS32: 	sll	{{.*}},0x18
-; MIPS32: 	sll	{{.*}},0x18
-; MIPS32: 	xor
-; MIPS32: 	sltu
-; MIPS32: 	andi	{{.*}},0x1
-; MIPS32: 	move
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @icmp8BitMemSwapped(i32 %a, i32 %b_iptr) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %bptr = inttoptr i32 %b_iptr to i8*
-  %b_8 = load i8, i8* %bptr, align 1
-  %icmp = icmp ne i8 %a_8, %b_8
-  %ret = zext i1 %icmp to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: icmp8BitMemSwapped
-; CHECK: cmp {{[abcd]l|BYTE PTR}}
-; MIPS32-LABEL: icmp8BitMemSwapped
-; MIPS32: 	lb
-; MIPS32: 	sll	{{.*}},0x18
-; MIPS32: 	sll	{{.*}},0x18
-; MIPS32: 	xor
-; MIPS32: 	sltu
-; MIPS32: 	andi	{{.*}},0x1
-; MIPS32: 	move
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @selectI8Var(i32 %a, i32 %b) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %b_8 = trunc i32 %b to i8
-  %cmp = icmp slt i8 %a_8, %b_8
-  %ret = select i1 %cmp, i8 %a_8, i8 %b_8
-  %ret_ext = zext i8 %ret to i32
-  ; Create a "fake" use of %cmp to prevent O2 bool folding.
-  %d1 = zext i1 %cmp to i32
-  call void @useInt(i32 %d1)
-  ret i32 %ret_ext
-}
-; CHECK-LABEL: selectI8Var
-; CHECK: cmp
-; CHECK: setl
-; CHECK: mov {{[a-d]l}}
-; MIPS32-LABEL: selectI8Var
-; MIPS32: 	addiu
-; MIPS32: 	sw
-; MIPS32: 	sw
-; MIPS32: 	move
-; MIPS32: 	move
-; MIPS32: 	sll	{{.*}},0x18
-; MIPS32: 	sll	{{.*}},0x18
-; MIPS32: 	slt
-; MIPS32: 	move
-; MIPS32: 	movn
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	move
-; MIPS32: 	andi	{{.*}},0x1
-; MIPS32: 	move
-; MIPS32: 	jal
-; MIPS32: 	nop
-; MIPS32: 	move
-; MIPS32: 	lw
-; MIPS32: 	lw
-; MIPS32: 	addiu
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define internal i32 @testPhi8(i32 %arg, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, i32 %arg6, i32 %arg7, i32 %arg8, i32 %arg9, i32 %arg10) {
-entry:
-  %trunc = trunc i32 %arg to i8
-  %trunc2 = trunc i32 %arg2 to i8
-  %trunc3 = trunc i32 %arg3 to i8
-  %trunc4 = trunc i32 %arg4 to i8
-  %trunc5 = trunc i32 %arg5 to i8
-  %cmp1 = icmp sgt i32 %arg, 0
-  br i1 %cmp1, label %next, label %target
-next:
-  %trunc6_16 = trunc i32 %arg6 to i16
-  %trunc7_16 = trunc i32 %arg7 to i16
-  %trunc8_16 = trunc i32 %arg8 to i16
-  %trunc9 = trunc i32 %arg9 to i8
-  %trunc10 = trunc i32 %arg10 to i8
-  %trunc7_8 = trunc i16 %trunc7_16 to i8
-  %trunc6_8 = trunc i16 %trunc6_16 to i8
-  %trunc8_8 = trunc i16 %trunc8_16 to i8
-  br label %target
-target:
-  %merge1 = phi i1 [ %cmp1, %entry ], [ false, %next ]
-  %merge2 = phi i8 [ %trunc, %entry ], [ %trunc6_8, %next ]
-  %merge3 = phi i8 [ %trunc2, %entry ], [ %trunc7_8, %next ]
-  %merge5 = phi i8 [ %trunc4, %entry ], [ %trunc9, %next ]
-  %merge6 = phi i8 [ %trunc5, %entry ], [ %trunc10, %next ]
-  %merge4 = phi i8 [ %trunc3, %entry ], [ %trunc8_8, %next ]
-  %res1 = select i1 %merge1, i8 %merge2, i8 %merge3
-  %res2 = select i1 %merge1, i8 %merge4, i8 %merge5
-  %res1_2 = select i1 %merge1, i8 %res1, i8 %res2
-  %res123 = select i1 %merge1, i8 %merge6, i8 %res1_2
-  %result = zext i8 %res123 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testPhi8
-; This assumes there will be some copy from an 8-bit register / stack slot.
-; CHECK-DAG: mov {{.*}},{{[a-d]}}l
-; CHECK-DAG: mov {{.*}},BYTE PTR
-; CHECK-DAG: mov BYTE PTR {{.*}}
-
-@global8 = internal global [1 x i8] c"\01", align 4
-
-define i32 @load_i8(i32 %addr_arg) {
-entry:
-  %addr = inttoptr i32 %addr_arg to i8*
-  %ret = load i8, i8* %addr, align 1
-  %ret2 = sub i8 %ret, 0
-  %ret_ext = zext i8 %ret2 to i32
-  ret i32 %ret_ext
-}
-; CHECK-LABEL: load_i8
-; CHECK: mov {{[a-d]l}},BYTE PTR
-; MIPS32-LABEL: load_i8
-; MIPS32: 	lb
-; MIPS32: 	addiu	{{.*}},0
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	move
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define i32 @load_i8_global(i32 %addr_arg) {
-entry:
-  %addr = bitcast [1 x i8]* @global8 to i8*
-  %ret = load i8, i8* %addr, align 1
-  %ret2 = sub i8 %ret, 0
-  %ret_ext = zext i8 %ret2 to i32
-  ret i32 %ret_ext
-}
-; CHECK-LABEL: load_i8_global
-; CHECK: mov {{[a-d]l}},{{(BYTE PTR)?}}
-; MIPS32-LABEL: load_i8_global
-; MIPS32: 	lui
-; MIPS32: 	addiu
-; MIPS32: 	lb
-; MIPS32: 	addiu	{{.*}},0
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define void @store_i8(i32 %addr_arg, i32 %val) {
-entry:
-  %val_trunc = trunc i32 %val to i8
-  %addr = inttoptr i32 %addr_arg to i8*
-  store i8 %val_trunc, i8* %addr, align 1
-  ret void
-}
-; CHECK-LABEL: store_i8
-; CHECK: mov BYTE PTR {{.*}},{{[a-d]l}}
-; MIPS32-LABEL: store_i8
-; MIPS32: 	sb
-; MIPS32: 	jr
-; MIPS32: 	nop
-
-define void @store_i8_const(i32 %addr_arg) {
-entry:
-  %addr = inttoptr i32 %addr_arg to i8*
-  store i8 123, i8* %addr, align 1
-  ret void
-}
-; CHECK-LABEL: store_i8_const
-; CHECK: mov BYTE PTR {{.*}},0x7b
-; MIPS32-LABEL: store_i8_const
-; MIPS32: 	li
-; MIPS32: 	sb
-; MIPS32: 	jr
-; MIPS32: 	nop
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/Input/no-terminator-inst.tbc b/third_party/subzero/tests_lit/llvm2ice_tests/Input/no-terminator-inst.tbc
deleted file mode 100644
index 112c372..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/Input/no-terminator-inst.tbc
+++ /dev/null
@@ -1,31 +0,0 @@
-65535,8,2;
-1,1;
-65535,17,2;
-1,4;
-7,32;
-2;
-21,0,0,0;
-7,1;
-65534;
-8,2,0,0,0;
-65535,19,2;
-5,0;
-65534;
-65535,14,2;
-1,0,102,105,98;
-65534;
-65535,12,2;
-1,3;
-65535,11,2;
-1,0;
-4,2;
-65534;
-28,2,1,36;
-11,1,2,1;
-10,2;
-2,3,2,1;
-34,0,5,1;
-2,1,5,0;
-65534;
-5534;
-65534;
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/Input/phi-invalid.tbc b/third_party/subzero/tests_lit/llvm2ice_tests/Input/phi-invalid.tbc
deleted file mode 100644
index bb9d59e..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/Input/phi-invalid.tbc
+++ /dev/null
@@ -1,55 +0,0 @@
-65535,8,2;
-1,1;
-65535,17,2;
-1,5;
-7,32;
-2;
-7,1;
-21,0,1;
-21,0,1,0;
-65534;
-8,3,0,0,0;
-8,4,0,0,0;
-65535,19,2;
-5,0;
-65534;
-65535,14,2;
-1,0,76,111,111,112,67,97,114,114,105,101,100,68,101,112;
-1,1,66,97,99,107,66,114,97,110,99,104;
-65534;
-65535,12,2;
-1,2;
-65535,11,2;
-1,0;
-4,2;
-4,4;
-65534;
-2,2,1,0;
-11,1;
-43,6,0;
-16,0,2,0,3,0;
-2,1,4,0;
-11,1;
-65534;
-65535,12,2;
-1,7;
-65535,11,2;
-1,2;
-4,3;
-65534;
-11,4;
-43,7,0;
-2,2,4294967293,0;
-11,6;
-43,8,0;
-2,3,4294967293,0;
-11,6;
-2,4,4294967295,0;
-11,6;
-2,5,5,0;
-11,1,5,5;
-2,1,6,0;
-11,2,3,6;
-10;
-65534;
-65534;
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/abi-atomics.ll b/third_party/subzero/tests_lit/llvm2ice_tests/abi-atomics.ll
deleted file mode 100644
index 1ab1397..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/abi-atomics.ll
+++ /dev/null
@@ -1,536 +0,0 @@
-; This file is copied/adapted from llvm/test/NaCl/PNaClABI/abi-atomics.ll .
-; TODO(stichnot): Find a way to share the file to avoid divergence.
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --args --verbose none --exit-success -threads=0 2>&1 \
-; RUN:   | FileCheck %s
-
-declare i8 @llvm.nacl.atomic.load.i8(i8*, i32)
-declare i16 @llvm.nacl.atomic.load.i16(i16*, i32)
-declare i32 @llvm.nacl.atomic.load.i32(i32*, i32)
-declare i64 @llvm.nacl.atomic.load.i64(i64*, i32)
-declare void @llvm.nacl.atomic.store.i8(i8, i8*, i32)
-declare void @llvm.nacl.atomic.store.i16(i16, i16*, i32)
-declare void @llvm.nacl.atomic.store.i32(i32, i32*, i32)
-declare void @llvm.nacl.atomic.store.i64(i64, i64*, i32)
-declare i8 @llvm.nacl.atomic.rmw.i8(i32, i8*, i8, i32)
-declare i16 @llvm.nacl.atomic.rmw.i16(i32, i16*, i16, i32)
-declare i32 @llvm.nacl.atomic.rmw.i32(i32, i32*, i32, i32)
-declare i64 @llvm.nacl.atomic.rmw.i64(i32, i64*, i64, i32)
-declare i8 @llvm.nacl.atomic.cmpxchg.i8(i8*, i8, i8, i32, i32)
-declare i16 @llvm.nacl.atomic.cmpxchg.i16(i16*, i16, i16, i32, i32)
-declare i32 @llvm.nacl.atomic.cmpxchg.i32(i32*, i32, i32, i32, i32)
-declare i64 @llvm.nacl.atomic.cmpxchg.i64(i64*, i64, i64, i32, i32)
-declare void @llvm.nacl.atomic.fence(i32)
-declare void @llvm.nacl.atomic.fence.all()
-declare i1 @llvm.nacl.atomic.is.lock.free(i32, i8*)
-
-
-; Load
-
-define internal i32 @test_load_invalid_7() {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.load.i32(i32* %ptr, i32 7)
-  ret i32 %1
-}
-; CHECK: test_load_invalid_7: Unexpected memory ordering for AtomicLoad
-
-define internal i32 @test_load_invalid_0() {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.load.i32(i32* %ptr, i32 0)
-  ret i32 %1
-}
-; CHECK: test_load_invalid_0: Unexpected memory ordering for AtomicLoad
-
-define internal i32 @test_load_seqcst() {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.load.i32(i32* %ptr, i32 6)
-  ret i32 %1
-}
-; CHECK-LABEL: test_load_seqcst
-
-define internal i32 @test_load_acqrel() {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.load.i32(i32* %ptr, i32 5)
-  ret i32 %1
-}
-; CHECK: test_load_acqrel: Unexpected memory ordering for AtomicLoad
-
-define internal i32 @test_load_release() {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.load.i32(i32* %ptr, i32 4)
-  ret i32 %1
-}
-; CHECK: test_load_release: Unexpected memory ordering for AtomicLoad
-
-define internal i32 @test_load_acquire() {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.load.i32(i32* %ptr, i32 3)
-  ret i32 %1
-}
-; CHECK-LABEL: test_load_acquire
-
-define internal i32 @test_load_consume() {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.load.i32(i32* %ptr, i32 2)
-  ret i32 %1
-}
-; CHECK: test_load_consume: Unexpected memory ordering for AtomicLoad
-
-define internal i32 @test_load_relaxed() {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.load.i32(i32* %ptr, i32 1)
-  ret i32 %1
-}
-; CHECK: test_load_relaxed: Unexpected memory ordering for AtomicLoad
-
-
-; Store
-
-define internal void @test_store_invalid_7() {
-  %ptr = inttoptr i32 undef to i32*
-  call void @llvm.nacl.atomic.store.i32(i32 undef, i32* %ptr, i32 7)
-  ret void
-}
-; CHECK: test_store_invalid_7: Unexpected memory ordering for AtomicStore
-
-define internal void @test_store_invalid_0() {
-  %ptr = inttoptr i32 undef to i32*
-  call void @llvm.nacl.atomic.store.i32(i32 undef, i32* %ptr, i32 0)
-  ret void
-}
-; CHECK: test_store_invalid_0: Unexpected memory ordering for AtomicStore
-
-define internal void @test_store_seqcst() {
-  %ptr = inttoptr i32 undef to i32*
-  call void @llvm.nacl.atomic.store.i32(i32 undef, i32* %ptr, i32 6)
-  ret void
-}
-; CHECK-LABEL: test_store_seqcst
-
-define internal void @test_store_acqrel() {
-  %ptr = inttoptr i32 undef to i32*
-  call void @llvm.nacl.atomic.store.i32(i32 undef, i32* %ptr, i32 5)
-  ret void
-}
-; CHECK: test_store_acqrel: Unexpected memory ordering for AtomicStore
-
-define internal void @test_store_release() {
-  %ptr = inttoptr i32 undef to i32*
-  call void @llvm.nacl.atomic.store.i32(i32 undef, i32* %ptr, i32 4)
-  ret void
-}
-; CHECK-LABEL: test_store_release
-
-define internal void @test_store_acquire() {
-  %ptr = inttoptr i32 undef to i32*
-  call void @llvm.nacl.atomic.store.i32(i32 undef, i32* %ptr, i32 3)
-  ret void
-}
-; CHECK: test_store_acquire: Unexpected memory ordering for AtomicStore
-
-define internal void @test_store_consume() {
-  %ptr = inttoptr i32 undef to i32*
-  call void @llvm.nacl.atomic.store.i32(i32 undef, i32* %ptr, i32 2)
-  ret void
-}
-; CHECK: test_store_consume: Unexpected memory ordering for AtomicStore
-
-define internal void @test_store_relaxed() {
-  %ptr = inttoptr i32 undef to i32*
-  call void @llvm.nacl.atomic.store.i32(i32 undef, i32* %ptr, i32 1)
-  ret void
-}
-; CHECK: test_store_relaxed: Unexpected memory ordering for AtomicStore
-
-
-; rmw
-
-define internal i32 @test_rmw_invalid_7() {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.rmw.i32(i32 1, i32* %ptr, i32 0, i32 7)
-  ret i32 %1
-}
-; CHECK: test_rmw_invalid_7: Unexpected memory ordering for AtomicRMW
-
-define internal i32 @test_rmw_invalid_0() {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.rmw.i32(i32 1, i32* %ptr, i32 0, i32 0)
-  ret i32 %1
-}
-; CHECK: test_rmw_invalid_0: Unexpected memory ordering for AtomicRMW
-
-define internal i32 @test_rmw_seqcst() {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.rmw.i32(i32 1, i32* %ptr, i32 0, i32 6)
-  ret i32 %1
-}
-; CHECK-LABEL: test_rmw_seqcst
-
-define internal i32 @test_rmw_acqrel() {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.rmw.i32(i32 1, i32* %ptr, i32 0, i32 5)
-  ret i32 %1
-}
-; CHECK-LABEL: test_rmw_acqrel
-
-define internal i32 @test_rmw_release() {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.rmw.i32(i32 1, i32* %ptr, i32 0, i32 4)
-  ret i32 %1
-}
-; CHECK-LABEL: test_rmw_release
-
-define internal i32 @test_rmw_acquire() {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.rmw.i32(i32 1, i32* %ptr, i32 0, i32 3)
-  ret i32 %1
-}
-; CHECK-LABEL: test_rmw_acquire
-
-define internal i32 @test_rmw_consume() {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.rmw.i32(i32 1, i32* %ptr, i32 0, i32 2)
-  ret i32 %1
-}
-; CHECK: test_rmw_consume: Unexpected memory ordering for AtomicRMW
-
-define internal i32 @test_rmw_relaxed() {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.rmw.i32(i32 1, i32* %ptr, i32 0, i32 1)
-  ret i32 %1
-}
-; CHECK: test_rmw_relaxed: Unexpected memory ordering for AtomicRMW
-
-
-; cmpxchg
-
-define internal i32 @test_cmpxchg_invalid_7(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 7, i32 7)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_invalid_7: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_invalid_0(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 0, i32 0)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_invalid_0: Unexpected memory ordering for AtomicCmpxchg
-
-; seq_cst
-
-define internal i32 @test_cmpxchg_seqcst_seqcst(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 6, i32 6)
-  ret i32 %1
-}
-; CHECK-LABEL: test_cmpxchg_seqcst_seqcst
-
-define internal i32 @test_cmpxchg_seqcst_acqrel(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 6, i32 5)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_seqcst_acqrel: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_seqcst_release(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 6, i32 4)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_seqcst_release: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_seqcst_acquire(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 6, i32 3)
-  ret i32 %1
-}
-; CHECK-LABEL: test_cmpxchg_seqcst_acquire
-
-define internal i32 @test_cmpxchg_seqcst_consume(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 6, i32 2)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_seqcst_consume: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_seqcst_relaxed(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 6, i32 1)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_seqcst_relaxed: Unexpected memory ordering for AtomicCmpxchg
-
-; acq_rel
-
-define internal i32 @test_cmpxchg_acqrel_seqcst(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 5, i32 6)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_acqrel_seqcst: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_acqrel_acqrel(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 5, i32 5)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_acqrel_acqrel: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_acqrel_release(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 5, i32 4)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_acqrel_release: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_acqrel_acquire(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 5, i32 3)
-  ret i32 %1
-}
-; CHECK-LABEL: test_cmpxchg_acqrel_acquire
-
-define internal i32 @test_cmpxchg_acqrel_consume(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 5, i32 2)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_acqrel_consume: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_acqrel_relaxed(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 5, i32 1)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_acqrel_relaxed: Unexpected memory ordering for AtomicCmpxchg
-
-; release
-
-define internal i32 @test_cmpxchg_release_seqcst(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 4, i32 6)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_release_seqcst: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_release_acqrel(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 4, i32 5)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_release_acqrel: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_release_release(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 4, i32 4)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_release_release: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_release_acquire(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 4, i32 3)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_release_acquire: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_release_consume(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 4, i32 2)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_release_consume: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_release_relaxed(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 4, i32 1)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_release_relaxed: Unexpected memory ordering for AtomicCmpxchg
-
-; acquire
-
-define internal i32 @test_cmpxchg_acquire_seqcst(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 3, i32 6)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_acquire_seqcst: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_acquire_acqrel(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 3, i32 5)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_acquire_acqrel: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_acquire_release(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 3, i32 4)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_acquire_release: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_acquire_acquire(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 3, i32 3)
-  ret i32 %1
-}
-; CHECK-LABEL: test_cmpxchg_acquire_acquire
-
-define internal i32 @test_cmpxchg_acquire_consume(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 3, i32 2)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_acquire_consume: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_acquire_relaxed(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 3, i32 1)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_acquire_relaxed: Unexpected memory ordering for AtomicCmpxchg
-
-; consume
-
-define internal i32 @test_cmpxchg_consume_seqcst(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 2, i32 6)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_consume_seqcst: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_consume_acqrel(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 2, i32 5)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_consume_acqrel: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_consume_release(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 2, i32 4)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_consume_release: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_consume_acquire(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 2, i32 3)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_consume_acquire: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_consume_consume(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 2, i32 2)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_consume_consume: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_consume_relaxed(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 2, i32 1)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_consume_relaxed: Unexpected memory ordering for AtomicCmpxchg
-
-; relaxed
-
-define internal i32 @test_cmpxchg_relaxed_seqcst(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 1, i32 6)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_relaxed_seqcst: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_relaxed_acqrel(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 1, i32 5)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_relaxed_acqrel: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_relaxed_release(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 1, i32 4)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_relaxed_release: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_relaxed_acquire(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 1, i32 3)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_relaxed_acquire: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_relaxed_consume(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 1, i32 2)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_relaxed_consume: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @test_cmpxchg_relaxed_relaxed(i32 %oldval, i32 %newval) {
-  %ptr = inttoptr i32 undef to i32*
-  %1 = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %oldval, i32 %newval, i32 1, i32 1)
-  ret i32 %1
-}
-; CHECK: test_cmpxchg_relaxed_relaxed: Unexpected memory ordering for AtomicCmpxchg
-
-
-; fence
-
-define internal void @test_fence_invalid_7() {
-  call void @llvm.nacl.atomic.fence(i32 7)
-  ret void
-}
-; CHECK: test_fence_invalid_7: Unexpected memory ordering for AtomicFence
-
-define internal void @test_fence_invalid_0() {
-  call void @llvm.nacl.atomic.fence(i32 0)
-  ret void
-}
-; CHECK: test_fence_invalid_0: Unexpected memory ordering for AtomicFence
-
-define internal void @test_fence_seqcst() {
-  call void @llvm.nacl.atomic.fence(i32 6)
-  ret void
-}
-; CHECK-LABEL: test_fence_seqcst
-
-define internal void @test_fence_acqrel() {
-  call void @llvm.nacl.atomic.fence(i32 5)
-  ret void
-}
-; CHECK-LABEL: test_fence_acqrel
-
-define internal void @test_fence_acquire() {
-  call void @llvm.nacl.atomic.fence(i32 4)
-  ret void
-}
-; CHECK-LABEL: test_fence_acquire
-
-define internal void @test_fence_release() {
-  call void @llvm.nacl.atomic.fence(i32 3)
-  ret void
-}
-; CHECK-LABEL: test_fence_release
-
-define internal void @test_fence_consume() {
-  call void @llvm.nacl.atomic.fence(i32 2)
-  ret void
-}
-; CHECK: test_fence_consume: Unexpected memory ordering for AtomicFence
-
-define internal void @test_fence_relaxed() {
-  call void @llvm.nacl.atomic.fence(i32 1)
-  ret void
-}
-; CHECK: test_fence_relaxed: Unexpected memory ordering for AtomicFence
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/addr-opt-multi-def-var.ll b/third_party/subzero/tests_lit/llvm2ice_tests/addr-opt-multi-def-var.ll
deleted file mode 100644
index 401359a..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/addr-opt-multi-def-var.ll
+++ /dev/null
@@ -1,69 +0,0 @@
-; This is distilled from a real function that led to a bug in the
-; address mode optimization code.  It followed assignment chains
-; through non-SSA temporaries created from Phi instruction lowering.
-;
-; This test depends to some degree on the stability of "--verbose
-; addropt" output format.
-
-; REQUIRES: target_X8632
-; REQUIRES: allow_dump
-; RUN: %p2i -i %s --args -O2 --verbose addropt \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s
-
-declare i32 @_calloc_r(i32, i32, i32)
-
-define internal i32 @_Balloc(i32 %ptr, i32 %k) {
-entry:
-  %gep = add i32 %ptr, 76
-  %gep.asptr = inttoptr i32 %gep to i32*
-  %0 = load i32, i32* %gep.asptr, align 1
-  %cmp = icmp eq i32 %0, 0
-  br i1 %cmp, label %if.then, label %if.end5
-
-if.then:                                          ; preds = %entry
-  %call = tail call i32 @_calloc_r(i32 %ptr, i32 4, i32 33)
-  %gep.asptr2 = inttoptr i32 %gep to i32*
-  store i32 %call, i32* %gep.asptr2, align 1
-  %cmp3 = icmp eq i32 %call, 0
-  br i1 %cmp3, label %return, label %if.end5
-
-if.end5:                                          ; preds = %if.then, %entry
-  %1 = phi i32 [ %call, %if.then ], [ %0, %entry ]
-  %gep_array = mul i32 %k, 4
-  %gep2 = add i32 %1, %gep_array
-  %gep2.asptr = inttoptr i32 %gep2 to i32*
-  %2 = load i32, i32* %gep2.asptr, align 1
-; The above load instruction is a good target for address mode
-; optimization.  Correct analysis would lead to dump output like:
-;   Starting computeAddressOpt for instruction:
-;     [ 15]  %__13 = load i32, i32* %gep2.asptr, align 1
-;   Instruction: [ 14]  %gep2.asptr = i32 %gep2
-;     results in Base=%gep2, Index=<null>, Shift=0, Offset=0
-;   Instruction: [ 13]  %gep2 = add i32 %__9, %gep_array
-;     results in Base=%__9, Index=%gep_array, Shift=0, Offset=0
-;   Instruction: [ 18]  %__9 = i32 %__9_phi
-;     results in Base=%__9_phi, Index=%gep_array, Shift=0, Offset=0
-;   Instruction: [ 12]  %gep_array = mul i32 %k, 4
-;     results in Base=%__9_phi, Index=%k, Shift=2, Offset=0
-;
-; Incorrect, overly-aggressive analysis would lead to output like:
-;   Starting computeAddressOpt for instruction:
-;     [ 15]  %__13 = load i32, i32* %gep2.asptr, align 1
-;   Instruction: [ 14]  %gep2.asptr = i32 %gep2
-;     results in Base=%gep2, Index=<null>, Shift=0, Offset=0
-;   Instruction: [ 13]  %gep2 = add i32 %__9, %gep_array
-;     results in Base=%__9, Index=%gep_array, Shift=0, Offset=0
-;   Instruction: [ 18]  %__9 = i32 %__9_phi
-;     results in Base=%__9_phi, Index=%gep_array, Shift=0, Offset=0
-;   Instruction: [ 19]  %__9_phi = i32 %__4
-;     results in Base=%__4, Index=%gep_array, Shift=0, Offset=0
-;   Instruction: [ 12]  %gep_array = mul i32 %k, 4
-;     results in Base=%__4, Index=%k, Shift=2, Offset=0
-;
-; CHECK-NOT: results in Base=%__4,
-;
-  ret i32 %2
-
-return:                                           ; preds = %if.then
-  ret i32 0
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/address-mode-global.ll b/third_party/subzero/tests_lit/llvm2ice_tests/address-mode-global.ll
deleted file mode 100644
index a592648..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/address-mode-global.ll
+++ /dev/null
@@ -1,35 +0,0 @@
-; This file checks support for address mode optimization.
-
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s
-
-@bytes = internal global [1024 x i8] zeroinitializer
-
-define internal i32 @load_global_direct() {
-entry:
-  %base = ptrtoint [1024 x i8]* @bytes to i32
-  %addr_lo.int = add i32 0, %base
-  %addr_hi.int = add i32 4, %base
-  %addr_lo.ptr = inttoptr i32 %addr_lo.int to i32*
-  %addr_hi.ptr = inttoptr i32 %addr_hi.int to i32*
-  %addr_lo.load = load i32, i32* %addr_lo.ptr, align 1
-  %addr_hi.load = load i32, i32* %addr_hi.ptr, align 1
-  %result = add i32 %addr_lo.load, %addr_hi.load
-  ret i32 %result
-; CHECK-LABEL: load_global_direct
-; CHECK-NEXT: mov eax,{{(DWORD PTR )?}}ds:0x0{{.*}}{{bytes|.bss}}
-; CHECK-NEXT: add eax,DWORD PTR ds:0x4{{.*}}{{bytes|.bss}}
-}
-
-define internal i32 @load_global_indexed(i32 %arg) {
-entry:
-  %offset = shl i32 %arg, 3
-  %base = ptrtoint [1024 x i8]* @bytes to i32
-  %addr.int = add i32 %offset, %base
-  %addr.ptr = inttoptr i32 %addr.int to i32*
-  %addr.load = load i32, i32* %addr.ptr, align 1
-  ret i32 %addr.load
-; CHECK-LABEL: load_global_indexed
-; CHECK-NEXT: mov eax,DWORD PTR [esp+0x4]
-; CHECK-NEXT: mov eax,DWORD PTR [eax*8+0x0]
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/address-mode-opt.ll b/third_party/subzero/tests_lit/llvm2ice_tests/address-mode-opt.ll
deleted file mode 100644
index fd15998..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/address-mode-opt.ll
+++ /dev/null
@@ -1,206 +0,0 @@
-; This file checks support for address mode optimization.
-
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 -mattr=sse4.1 \
-; RUN:   -allow-externally-defined-symbols | FileCheck --check-prefix=SSE41 %s
-
-define internal float @load_arg_plus_200000(float* %arg) {
-entry:
-  %arg.int = ptrtoint float* %arg to i32
-  %addr.int = add i32 %arg.int, 200000
-  %addr.ptr = inttoptr i32 %addr.int to float*
-  %addr.load = load float, float* %addr.ptr, align 4
-  ret float %addr.load
-; CHECK-LABEL: load_arg_plus_200000
-; CHECK: movss xmm0,DWORD PTR [eax+0x30d40]
-}
-
-define internal float @load_200000_plus_arg(float* %arg) {
-entry:
-  %arg.int = ptrtoint float* %arg to i32
-  %addr.int = add i32 200000, %arg.int
-  %addr.ptr = inttoptr i32 %addr.int to float*
-  %addr.load = load float, float* %addr.ptr, align 4
-  ret float %addr.load
-; CHECK-LABEL: load_200000_plus_arg
-; CHECK: movss xmm0,DWORD PTR [eax+0x30d40]
-}
-
-define internal float @load_arg_minus_200000(float* %arg) {
-entry:
-  %arg.int = ptrtoint float* %arg to i32
-  %addr.int = sub i32 %arg.int, 200000
-  %addr.ptr = inttoptr i32 %addr.int to float*
-  %addr.load = load float, float* %addr.ptr, align 4
-  ret float %addr.load
-; CHECK-LABEL: load_arg_minus_200000
-; CHECK: movss xmm0,DWORD PTR [eax-0x30d40]
-}
-
-define internal float @load_200000_minus_arg(float* %arg) {
-entry:
-  %arg.int = ptrtoint float* %arg to i32
-  %addr.int = sub i32 200000, %arg.int
-  %addr.ptr = inttoptr i32 %addr.int to float*
-  %addr.load = load float, float* %addr.ptr, align 4
-  ret float %addr.load
-; CHECK-LABEL: load_200000_minus_arg
-; CHECK: movss xmm0,DWORD PTR [e{{..}}]
-}
-
-define internal <8 x i16> @load_mul_v8i16_mem(<8 x i16> %arg0, i32 %arg1_iptr) {
-entry:
-  %addr_sub = sub i32 %arg1_iptr, 200000
-  %addr_ptr = inttoptr i32 %addr_sub to <8 x i16>*
-  %arg1 = load <8 x i16>, <8 x i16>* %addr_ptr, align 2
-  %res_vec = mul <8 x i16> %arg0, %arg1
-  ret <8 x i16> %res_vec
-; Address mode optimization is generally unsafe for SSE vector instructions.
-; CHECK-LABEL: load_mul_v8i16_mem
-; CHECK-NOT: pmullw xmm{{.*}},XMMWORD PTR [e{{..}}-0x30d40]
-}
-
-define internal <4 x i32> @load_mul_v4i32_mem(<4 x i32> %arg0, i32 %arg1_iptr) {
-entry:
-  %addr_sub = sub i32 %arg1_iptr, 200000
-  %addr_ptr = inttoptr i32 %addr_sub to <4 x i32>*
-  %arg1 = load <4 x i32>, <4 x i32>* %addr_ptr, align 4
-  %res = mul <4 x i32> %arg0, %arg1
-  ret <4 x i32> %res
-; Address mode optimization is generally unsafe for SSE vector instructions.
-; CHECK-LABEL: load_mul_v4i32_mem
-; CHECK-NOT: pmuludq xmm{{.*}},XMMWORD PTR [e{{..}}-0x30d40]
-; CHECK: pmuludq
-;
-; SSE41-LABEL: load_mul_v4i32_mem
-; SSE41-NOT: pmulld xmm{{.*}},XMMWORD PTR [e{{..}}-0x30d40]
-}
-
-define internal float @address_mode_opt_chaining(float* %arg) {
-entry:
-  %arg.int = ptrtoint float* %arg to i32
-  %addr1.int = add i32 12, %arg.int
-  %addr2.int = sub i32 %addr1.int, 4
-  %addr2.ptr = inttoptr i32 %addr2.int to float*
-  %addr2.load = load float, float* %addr2.ptr, align 4
-  ret float %addr2.load
-; CHECK-LABEL: address_mode_opt_chaining
-; CHECK: movss xmm0,DWORD PTR [eax+0x8]
-}
-
-define internal float @address_mode_opt_chaining_overflow(float* %arg) {
-entry:
-  %arg.int = ptrtoint float* %arg to i32
-  %addr1.int = add i32 2147483640, %arg.int
-  %addr2.int = add i32 %addr1.int, 2147483643
-  %addr2.ptr = inttoptr i32 %addr2.int to float*
-  %addr2.load = load float, float* %addr2.ptr, align 4
-  ret float %addr2.load
-; CHECK-LABEL: address_mode_opt_chaining_overflow
-; CHECK: 0x7ffffff8
-; CHECK: movss xmm0,DWORD PTR [{{.*}}+0x7ffffffb]
-}
-
-define internal float @address_mode_opt_chaining_overflow_sub(float* %arg) {
-entry:
-  %arg.int = ptrtoint float* %arg to i32
-  %addr1.int = sub i32 %arg.int, 2147483640
-  %addr2.int = sub i32 %addr1.int, 2147483643
-  %addr2.ptr = inttoptr i32 %addr2.int to float*
-  %addr2.load = load float, float* %addr2.ptr, align 4
-  ret float %addr2.load
-; CHECK-LABEL: address_mode_opt_chaining_overflow_sub
-; CHECK: 0x7ffffff8
-; CHECK: movss xmm0,DWORD PTR [{{.*}}-0x7ffffffb]
-}
-
-define internal float @address_mode_opt_chaining_no_overflow(float* %arg) {
-entry:
-  %arg.int = ptrtoint float* %arg to i32
-  %addr1.int = sub i32 %arg.int, 2147483640
-  %addr2.int = add i32 %addr1.int, 2147483643
-  %addr2.ptr = inttoptr i32 %addr2.int to float*
-  %addr2.load = load float, float* %addr2.ptr, align 4
-  ret float %addr2.load
-; CHECK-LABEL: address_mode_opt_chaining_no_overflow
-; CHECK: movss xmm0,DWORD PTR [{{.*}}+0x3]
-}
-
-define internal float @address_mode_opt_add_pos_min_int(float* %arg) {
-entry:
-  %arg.int = ptrtoint float* %arg to i32
-  %addr1.int = add i32 %arg.int, 2147483648
-  %addr1.ptr = inttoptr i32 %addr1.int to float*
-  %addr1.load = load float, float* %addr1.ptr, align 4
-  ret float %addr1.load
-; CHECK-LABEL: address_mode_opt_add_pos_min_int
-; CHECK: movss xmm0,DWORD PTR [{{.*}}-0x80000000]
-}
-
-define internal float @address_mode_opt_sub_min_int(float* %arg) {
-entry:
-  %arg.int = ptrtoint float* %arg to i32
-  %addr1.int = sub i32 %arg.int, 2147483648
-  %addr1.ptr = inttoptr i32 %addr1.int to float*
-  %addr1.load = load float, float* %addr1.ptr, align 4
-  ret float %addr1.load
-; CHECK-LABEL: address_mode_opt_sub_min_int
-; CHECK: movss xmm0,DWORD PTR [{{.*}}-0x80000000]
-}
-
-define internal float @load_1_or__2_shl_arg(float* %arg) {
-entry:
-  %arg.int = ptrtoint float* %arg to i32
-  %shl1 = shl i32 %arg.int, 2
-  %addr.int = or i32 1, %shl1
-  %addr.ptr = inttoptr i32 %addr.int to float*
-  %addr.load = load float, float* %addr.ptr, align 4
-  ret float %addr.load
-; CHECK-LABEL: load_1_or__2_shl_arg
-; CHECK-NOT: or
-; CHECK: movss xmm{{[0-9]+}},DWORD PTR [{{e..}}*4+0x1]
-}
-
-define internal float @or_add_boundary_check_1(float* %arg) {
-entry:
-  %arg.int = ptrtoint float* %arg to i32
-  %shl1 = shl i32 %arg.int, 2
-  %addr.int = or i32 5, %shl1
-  %addr.ptr = inttoptr i32 %addr.int to float*
-  %addr.load = load float, float* %addr.ptr, align 4
-  ret float %addr.load
-; CHECK-LABEL: or_add_boundary_check_1
-; CHECK: or
-; CHECK-NOT: movss xmm{{[0-9]+}},DWORD PTR [{{e..}}*4+0x5]
-}
-
-define internal float @or_add_boundary_check_2(float* %arg) {
-entry:
-  %arg.int = ptrtoint float* %arg to i32
-  %shl1 = shl i32 %arg.int, 2
-  %addr.int = or i32 -1, %shl1
-  %addr.ptr = inttoptr i32 %addr.int to float*
-  %addr.load = load float, float* %addr.ptr, align 4
-  ret float %addr.load
-; CHECK-LABEL: or_add_boundary_check_2
-; CHECK: or
-; CHECK-NOT: movss xmm{{[0-9]+}},DWORD PTR [{{e..}}*4+0xFFFF]
-}
-
-define internal void @invert_icmp(i32* %arg1, i32* %arg2) {
-entry:
-  %addr.other = load i32, i32* %arg2, align 1
-  br label %next
-next:
-  %addr.load = load i32, i32* %arg1, align 1
-  %cond = icmp slt i32 %addr.load, %addr.other
-  br i1 %cond, label %if.then, label %if.else
-if.then:
-  ret void
-if.else:
-  ret void
-; CHECK-LABEL: invert_icmp
-; CHECK: cmp {{e..}},DWORD PTR [{{e..}}]
-; CHECK: jle
-}
\ No newline at end of file
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/adv-switch-opt.ll b/third_party/subzero/tests_lit/llvm2ice_tests/adv-switch-opt.ll
deleted file mode 100644
index 60aa1ab..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/adv-switch-opt.ll
+++ /dev/null
@@ -1,321 +0,0 @@
-; This tests the advanced lowering of switch statements. The advanced lowering
-; uses jump tables, range tests and binary search.
-
-; RUN: %p2i -i %s --target=x8632 --filetype=obj --disassemble --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=CHECK --check-prefix=X8632
-; RUN: %p2i -i %s --target=x8664 --filetype=obj --disassemble --args -O2 \
-; RUN:   | FileCheck %s --check-prefix=CHECK --check-prefix=X8664
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:   mips32 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-; Dense but non-continuous ranges should be converted into a jump table.
-define internal i32 @testJumpTable(i32 %a) {
-entry:
-  switch i32 %a, label %sw.default [
-    i32 91, label %sw.default
-    i32 92, label %sw.bb1
-    i32 93, label %sw.default
-    i32 99, label %sw.bb1
-    i32 98, label %sw.default
-    i32 96, label %sw.bb1
-    i32 97, label %sw.epilog
-  ]
-
-sw.default:
-  %add = add i32 %a, 27
-  br label %sw.epilog
-
-sw.bb1:
-  %tmp = add i32 %a, 16
-  br label %sw.epilog
-
-sw.epilog:
-  %result.1 = phi i32 [ %add, %sw.default ], [ %tmp, %sw.bb1 ], [ 17, %entry ]
-  ret i32 %result.1
-}
-; CHECK-LABEL: testJumpTable
-; CHECK: sub [[IND:[^,]+]],0x5b
-; CHECK-NEXT: cmp [[IND]],0x8
-; CHECK-NEXT: ja
-; X8632-NEXT: mov [[TARGET:.*]],DWORD PTR {{\[}}[[IND]]*4+0x0] {{[0-9a-f]+}}: R_386_32 .{{.*}}testJumpTable$jumptable
-; X8632-NEXT: jmp [[TARGET]]
-; X8664-NEXT: mov {{.}}[[TARGET:.*]],DWORD PTR {{\[}}[[IND]]*4+0x0] {{[0-9a-f]+}}: R_X86_64_32S .{{.*}}testJumpTable$jumptable
-; X8664-NEXT: jmp {{.}}[[TARGET]]
-; Note: x86-32 may do "mov eax, [...]; jmp eax", whereas x86-64 may do
-; "mov eax, [...]; jmp rax", so we assume the all characters except the first
-; one in the register name will match.
-
-; MIPS32-LABEL: testJumpTable
-; MIPS32: 	move	[[REG1:.*]],{{.*}}
-; MIPS32: 	li	[[REG2:.*]],91
-; MIPS32: 	beq	[[REG1]],[[REG2]],6c <.LtestJumpTable$sw.default>
-; MIPS32: 	nop
-; MIPS32: 	li	[[REG2:.*]],92
-; MIPS32: 	beq	[[REG1]],[[REG2]],78 <.LtestJumpTable$sw.bb1>
-; MIPS32: 	nop
-; MIPS32: 	li	[[REG2:.*]],93
-; MIPS32: 	beq	[[REG1]],[[REG2]],6c <.LtestJumpTable$sw.default>
-; MIPS32: 	nop
-; MIPS32: 	li	[[REG2:.*]],99
-; MIPS32: 	beq	[[REG1]],[[REG2]],78 <.LtestJumpTable$sw.bb1>
-; MIPS32: 	nop
-; MIPS32: 	li	[[REG2:.*]],98
-; MIPS32: 	beq	[[REG1]],[[REG2]],6c <.LtestJumpTable$sw.default>
-; MIPS32: 	nop
-; MIPS32: 	li	[[REG2:.*]],96
-; MIPS32: 	beq	[[REG1]],[[REG2]],78 <.LtestJumpTable$sw.bb1>
-; MIPS32: 	nop
-; MIPS32: 	li	[[REG2:.*]],97
-; MIPS32: 	beq	[[REG1]],[[REG2]],60 <.LtestJumpTable$split_entry_sw.epilog_0>
-; MIPS32: 	nop
-; MIPS32: 	b	6c <.LtestJumpTable$sw.default>
-; MIPS32: 	nop
-
-; Continuous ranges which map to the same target should be grouped and
-; efficiently tested.
-define internal i32 @testRangeTest() {
-entry:
-  switch i32 10, label %sw.default [
-    i32 0, label %sw.epilog
-    i32 1, label %sw.epilog
-    i32 2, label %sw.epilog
-    i32 3, label %sw.epilog
-    i32 10, label %sw.bb1
-    i32 11, label %sw.bb1
-    i32 12, label %sw.bb1
-    i32 13, label %sw.bb1
-  ]
-
-sw.default:
-  br label %sw.epilog
-
-sw.bb1:
-  br label %sw.epilog
-
-sw.epilog:
-  %result.1 = phi i32 [ 23, %sw.default ], [ 42, %sw.bb1 ], [ 17, %entry ], [ 17, %entry ], [ 17, %entry ], [ 17, %entry ]
-  ret i32 %result.1
-}
-; CHECK-LABEL: testRangeTest
-; CHECK: cmp {{.*}},0x3
-; CHECK-NEXT: jbe
-; CHECK: sub [[REG:[^,]*]],0xa
-; CHECK-NEXT: cmp [[REG]],0x3
-; CHECK-NEXT: jbe
-; CHECK-NEXT: jmp
-
-; MIPS32-LABEL: testRangeTest
-; MIPS32: 	li	[[REG1:.*]],10
-; MIPS32: 	li	[[REG2:.*]],0
-; MIPS32: 	beq	[[REG1]],[[REG2]],114 <.LtestRangeTest$split_entry_sw.epilog_0>
-; MIPS32: 	nop
-; MIPS32: 	li	[[REG2:.*]],1
-; MIPS32: 	beq	[[REG1]],[[REG2]],114 <.LtestRangeTest$split_entry_sw.epilog_0>
-; MIPS32: 	nop
-; MIPS32: 	li	[[REG2:.*]],2
-; MIPS32: 	beq	[[REG1]],[[REG2]],114 <.LtestRangeTest$split_entry_sw.epilog_0>
-; MIPS32: 	nop
-; MIPS32: 	li	[[REG2:.*]],3
-; MIPS32: 	beq	[[REG1]],[[REG2]],114 <.LtestRangeTest$split_entry_sw.epilog_0>
-; MIPS32: 	nop
-; MIPS32: 	li	[[REG2:.*]],10
-; MIPS32: 	beq	[[REG1]],[[REG2]],fc <.LtestRangeTest$split_sw.bb1_sw.epilog_2>
-; MIPS32: 	nop
-; MIPS32: 	li	[[REG2:.*]],11
-; MIPS32: 	beq	[[REG1]],[[REG2]],fc <.LtestRangeTest$split_sw.bb1_sw.epilog_2>
-; MIPS32: 	nop
-; MIPS32: 	li	[[REG2:.*]],12
-; MIPS32: 	beq	[[REG1]],[[REG2]],fc <.LtestRangeTest$split_sw.bb1_sw.epilog_2>
-; MIPS32: 	nop
-; MIPS32: 	li	[[REG2:.*]],13
-; MIPS32: 	beq	[[REG1]],[[REG2]],fc <.LtestRangeTest$split_sw.bb1_sw.epilog_2>
-; MIPS32: 	nop
-; MIPS32: 	b	108 <.LtestRangeTest$split_sw.default_sw.epilog_1>
-; MIPS32: 	nop
-
-; Sparse cases should be searched with a binary search.
-define internal i32 @testBinarySearch() {
-entry:
-  switch i32 10, label %sw.default [
-    i32 0, label %sw.epilog
-    i32 10, label %sw.epilog
-    i32 20, label %sw.bb1
-    i32 30, label %sw.bb1
-  ]
-
-sw.default:
-  br label %sw.epilog
-
-sw.bb1:
-  br label %sw.epilog
-
-sw.epilog:
-  %result.1 = phi i32 [ 23, %sw.default ], [ 42, %sw.bb1 ], [ 17, %entry ], [ 17, %entry ]
-  ret i32 %result.1
-}
-; CHECK-LABEL: testBinarySearch
-; CHECK: cmp {{.*}},0x14
-; CHECK-NEXT: jb
-; CHECK-NEXT: je
-; CHECK-NEXT: cmp {{.*}},0x1e
-; CHECK-NEXT: je
-; CHECK-NEXT: jmp
-; CHECK-NEXT: cmp {{.*}},0x0
-; CHECK-NEXT: je
-; CHECK-NEXT: cmp {{.*}},0xa
-; CHECK-NEXT: je
-; CHECK-NEXT: jmp
-
-; MIPS32-LABEL: testBinarySearch
-; MIPS32: 	li	[[REG1:.*]],10
-; MIPS32: 	li	[[REG2:.*]],0
-; MIPS32: 	beq	[[REG1]],[[REG2]],174 <.LtestBinarySearch$split_entry_sw.epilog_0>
-; MIPS32: 	nop
-; MIPS32: 	li	[[REG2:.*]],10
-; MIPS32: 	beq	[[REG1]],[[REG2]],174 <.LtestBinarySearch$split_entry_sw.epilog_0>
-; MIPS32: 	nop
-; MIPS32: 	li	[[REG2:.*]],20
-; MIPS32: 	beq	[[REG1]],[[REG2]],15c <.LtestBinarySearch$split_sw.bb1_sw.epilog_2>
-; MIPS32: 	nop
-; MIPS32: 	li	[[REG2:.*]],30
-; MIPS32: 	beq	[[REG1]],[[REG2]],15c <.LtestBinarySearch$split_sw.bb1_sw.epilog_2>
-; MIPS32: 	nop
-; MIPS32: 	b	168 <.LtestBinarySearch$split_sw.default_sw.epilog_1>
-; MIPS32: 	nop
-
-; 64-bit switches where the cases are all 32-bit values should be reduced to a
-; 32-bit switch after checking the top byte is 0.
-define internal i32 @testSwitchSmall64(i64 %a) {
-entry:
-  switch i64 %a, label %sw.default [
-    i64 123, label %return
-    i64 234, label %sw.bb1
-    i64 345, label %sw.bb2
-    i64 456, label %sw.bb3
-  ]
-
-sw.bb1:
-  br label %return
-
-sw.bb2:
-  br label %return
-
-sw.bb3:
-  br label %return
-
-sw.default:
-  br label %return
-
-return:
-  %retval.0 = phi i32 [ 5, %sw.default ], [ 4, %sw.bb3 ], [ 3, %sw.bb2 ], [ 2, %sw.bb1 ], [ 1, %entry ]
-  ret i32 %retval.0
-}
-; CHECK-LABEL: testSwitchSmall64
-; X8632: cmp {{.*}},0x0
-; X8632-NEXT: jne
-; X8632-NEXT: cmp {{.*}},0x159
-; X8632-NEXT: jb
-; X8632-NEXT: je
-; X8632-NEXT: cmp {{.*}},0x1c8
-; X8632-NEXT: je
-; X8632-NEXT: jmp
-; X8632-NEXT: cmp {{.*}},0x7b
-; X8632-NEXT: je
-; X8632-NEXT: cmp {{.*}},0xea
-; X8632-NEXT: je
-
-; MIPS32-LABEL: testSwitchSmall64
-; MIPS32: 	li	[[REG:.*]],0
-; MIPS32: 	bne	{{.*}},[[REG]],198 <.LtestSwitchSmall64$local$__0>
-; MIPS32: 	nop
-; MIPS32: 	li	[[REG:.*]],123
-; MIPS32: 	beq	{{.*}},[[REG]],210 <.LtestSwitchSmall64$split_entry_return_0>
-; MIPS32: 	nop
-
-; Test for correct 64-bit lowering.
-; TODO(ascull): this should generate better code like the 32-bit version
-define internal i32 @testSwitch64(i64 %a) {
-entry:
-  switch i64 %a, label %sw.default [
-    i64 123, label %return
-    i64 234, label %sw.bb1
-    i64 345, label %sw.bb2
-    i64 78187493520, label %sw.bb3
-  ]
-
-sw.bb1:
-  br label %return
-
-sw.bb2:
-  br label %return
-
-sw.bb3:
-  br label %return
-
-sw.default:
-  br label %return
-
-return:
-  %retval.0 = phi i32 [ 5, %sw.default ], [ 4, %sw.bb3 ], [ 3, %sw.bb2 ], [ 2, %sw.bb1 ], [ 1, %entry ]
-  ret i32 %retval.0
-}
-; CHECK-LABEL: testSwitch64
-; X8632: cmp {{.*}},0x7b
-; X8632-NEXT: jne
-; X8632-NEXT: cmp {{.*}},0x0
-; X8632-NEXT: je
-; X8632: cmp {{.*}},0xea
-; X8632-NEXT: jne
-; X8632-NEXT: cmp {{.*}},0x0
-; X8632-NEXT: je
-; X8632: cmp {{.*}},0x159
-; X8632-NEXT: jne
-; X8632-NEXT: cmp {{.*}},0x0
-; X8632-NEXT: je
-; X8632: cmp {{.*}},0x34567890
-; X8632-NEXT: jne
-; X8632-NEXT: cmp {{.*}},0x12
-; X8632-NEXT: je
-
-; MIPS32-LABEL: testSwitch64
-; MIPS32: 	li	[[REG:.*]],0
-; MIPS32: 	bne	{{.*}},[[REG]],238 <.LtestSwitch64$local$__0>
-; MIPS32: 	nop
-; MIPS32: 	li	[[REG:.*]],123
-; MIPS32: 	beq	{{.*}},[[REG]],2b4 <.LtestSwitch64$split_entry_return_0>
-; MIPS32: 	nop
-
-; Test for correct 64-bit jump table with UINT64_MAX as one of the values.
-define internal i32 @testJumpTable64(i64 %a) {
-entry:
-  switch i64 %a, label %sw.default [
-    i64 -6, label %return
-    i64 -4, label %sw.bb1
-    i64 -3, label %sw.bb2
-    i64 -1, label %sw.bb3
-  ]
-
-sw.bb1:
-  br label %return
-
-sw.bb2:
-  br label %return
-
-sw.bb3:
-  br label %return
-
-sw.default:
-  br label %return
-
-return:
-  %retval.0 = phi i32 [ 5, %sw.default ], [ 4, %sw.bb3 ], [ 3, %sw.bb2 ], [ 2, %sw.bb1 ], [ 1, %entry ]
-  ret i32 %retval.0
-}
-
-; TODO(ascull): this should generate a jump table. For now, just make sure it
-; doesn't crash the compiler.
-; CHECK-LABEL: testJumpTable64
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/align-spill-locations.ll b/third_party/subzero/tests_lit/llvm2ice_tests/align-spill-locations.ll
deleted file mode 100644
index 8649973..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/align-spill-locations.ll
+++ /dev/null
@@ -1,93 +0,0 @@
-; This checks to ensure that Subzero aligns spill slots.
-
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s
-
-; The location of the stack slot for a variable is inferred from the
-; return sequence.
-
-; In this file, "global" refers to a variable with a live range across
-; multiple basic blocks (not an LLVM global variable) and "local"
-; refers to a variable that is live in only a single basic block.
-
-define internal <4 x i32> @align_global_vector(i32 %arg) {
-entry:
-  %vec.global = insertelement <4 x i32> undef, i32 %arg, i32 0
-  br label %block
-block:
-  call void @ForceXmmSpills()
-  ret <4 x i32> %vec.global
-; CHECK-LABEL: align_global_vector
-; CHECK: movups xmm0,XMMWORD PTR [esp]
-; CHECK-NEXT: add esp,0x1c
-; CHECK-NEXT: ret
-}
-
-define internal <4 x i32> @align_local_vector(i32 %arg) {
-entry:
-  br label %block
-block:
-  %vec.local = insertelement <4 x i32> undef, i32 %arg, i32 0
-  call void @ForceXmmSpills()
-  ret <4 x i32> %vec.local
-; CHECK-LABEL: align_local_vector
-; CHECK: movups xmm0,XMMWORD PTR [esp]
-; CHECK-NEXT: add esp,0x1c
-; CHECK-NEXT: ret
-}
-
-declare void @ForceXmmSpills()
-
-define internal <4 x i32> @align_global_vector_ebp_based(i32 %arg) {
-entry:
-  br label %eblock  ; Disable alloca optimization
-eblock:
-  %alloc = alloca i8, i32 1, align 1
-  %vec.global = insertelement <4 x i32> undef, i32 %arg, i32 0
-  br label %block
-block:
-  call void @ForceXmmSpillsAndUseAlloca(i8* %alloc)
-  ret <4 x i32> %vec.global
-; CHECK-LABEL: align_global_vector_ebp_based
-; CHECK: movups xmm0,XMMWORD PTR [ebp-0x18]
-; CHECK-NEXT: mov esp,ebp
-; CHECK-NEXT: pop ebp
-; CHECK: ret
-}
-
-define internal <4 x i32> @align_local_vector_ebp_based(i32 %arg) {
-entry:
-  br label %eblock  ; Disable alloca optimization
-eblock:
-  %alloc = alloca i8, i32 1, align 1
-  %vec.local = insertelement <4 x i32> undef, i32 %arg, i32 0
-  call void @ForceXmmSpillsAndUseAlloca(i8* %alloc)
-  ret <4 x i32> %vec.local
-; CHECK-LABEL: align_local_vector_ebp_based
-; CHECK: movups xmm0,XMMWORD PTR [ebp-0x18]
-; CHECK-NEXT: mov esp,ebp
-; CHECK-NEXT: pop ebp
-; CHECK: ret
-}
-
-define internal <4 x i32> @align_local_vector_and_global_float(i32 %arg) {
-entry:
-  %float.global = sitofp i32 %arg to float
-  call void @ForceXmmSpillsAndUseFloat(float %float.global)
-  br label %block
-block:
-  %vec.local = insertelement <4 x i32> undef, i32 undef, i32 0
-  call void @ForceXmmSpillsAndUseFloat(float %float.global)
-  ret <4 x i32> %vec.local
-; CHECK-LABEL: align_local_vector_and_global_float
-; CHECK: cvtsi2ss xmm0,eax
-; CHECK-NEXT: movss DWORD PTR [esp+{{0x1c|0x2c}}],xmm0
-; CHECK: movups xmm0,XMMWORD PTR [{{esp\+0x10|esp\+0x20}}]
-; CHECK-NEXT: add esp,0x3c
-; CHECK-NEXT: ret
-}
-
-declare void @ForceXmmSpillsAndUseAlloca(i8*)
-declare void @ForceXmmSpillsAndUseFloat(float)
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/alloc.ll b/third_party/subzero/tests_lit/llvm2ice_tests/alloc.ll
deleted file mode 100644
index 64b3513..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/alloc.ll
+++ /dev/null
@@ -1,404 +0,0 @@
-; This is a basic test of the alloca instruction.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -Om1 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 --command FileCheck \
-; RUN:   --check-prefix CHECK-OPTM1 %s
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 --check-prefix=ARM-OPT2 %s
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 --check-prefix=ARM-OPTM1 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 --check-prefix=MIPS32-OPT2 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 --check-prefix=MIPS32-OPTM1 %s
-
-define internal void @fixed_416_align_16(i32 %n) {
-entry:
-  %array = alloca i8, i32 416, align 16
-  %__2 = ptrtoint i8* %array to i32
-  call void @f1(i32 %__2)
-  ret void
-}
-; CHECK-LABEL: fixed_416_align_16
-; CHECK:      sub     esp,0x1bc
-; CHECK:      lea     eax,[esp+0x10]
-; CHECK:      mov     DWORD PTR [esp],eax
-; CHECK:      call {{.*}} R_{{.*}}    f1
-
-; CHECK-OPTM1-LABEL: fixed_416_align_16
-; CHECK-OPTM1:      sub     esp,0x18
-; CHECK-OPTM1:      sub     esp,0x1a0
-; CHECK-OPTM1:      mov     DWORD PTR [esp],eax
-; CHECK-OPTM1:      call {{.*}} R_{{.*}}    f1
-
-; ARM32-LABEL: fixed_416_align_16
-; ARM32-OPT2:  sub sp, sp, #428
-; ARM32-OPTM1: sub sp, sp, #416
-; ARM32:       bl {{.*}} R_{{.*}}    f1
-
-; MIPS32-LABEL: fixed_416_align_16
-; MIPS32-OPT2: addiu sp,sp,-448
-; MIPS32-OPT2: addiu a0,sp,16
-; MIPS32-OPTM1: addiu sp,sp,-464
-; MIPS32-OPTM1: addiu [[REG:.*]],sp,16
-; MIPS32-OPTM1: sw [[REG]],{{.*}}
-; MIPS32-OPTM1: lw a0,{{.*}}
-; MIPS32: jal {{.*}} R_{{.*}} f1
-
-define internal void @fixed_416_align_32(i32 %n) {
-entry:
-  %array = alloca i8, i32 400, align 32
-  %__2 = ptrtoint i8* %array to i32
-  call void @f1(i32 %__2)
-  ret void
-}
-; CHECK-LABEL: fixed_416_align_32
-; CHECK:      push    ebp
-; CHECK-NEXT: mov     ebp,esp
-; CHECK:      sub     esp,0x1d8
-; CHECK:      and     esp,0xffffffe0
-; CHECK:      lea     eax,[esp+0x10]
-; CHECK:      mov     DWORD PTR [esp],eax
-; CHECK:      call {{.*}} R_{{.*}}    f1
-
-; ARM32-LABEL: fixed_416_align_32
-; ARM32-OPT2:  sub sp, sp, #424
-; ARM32-OPTM1: sub sp, sp, #416
-; ARM32:       bic sp, sp, #31
-; ARM32:       bl {{.*}} R_{{.*}}    f1
-
-; MIPS32-LABEL: fixed_416_align_32
-; MIPS32-OPT2: addiu sp,sp,-448
-; MIPS32-OPT2: addiu a0,sp,16
-; MIPS32-OPTM1: addiu sp,sp,-464
-; MIPS32-OPTM1: addiu [[REG:.*]],sp,32
-; MIPS32-OPTM1: sw [[REG]],{{.*}}
-; MIPS32-OPTM1: lw a0,{{.*}}
-; MIPS32: jal {{.*}} R_{{.*}} f1
-
-; Show that the amount to allocate will be rounded up.
-define internal void @fixed_351_align_16(i32 %n) {
-entry:
-  %array = alloca i8, i32 351, align 16
-  %__2 = ptrtoint i8* %array to i32
-  call void @f1(i32 %__2)
-  ret void
-}
-; CHECK-LABEL: fixed_351_align_16
-; CHECK:      sub     esp,0x17c
-; CHECK:      lea     eax,[esp+0x10]
-; CHECK:      mov     DWORD PTR [esp],eax
-; CHECK:      call {{.*}} R_{{.*}}    f1
-
-; CHECK-OPTM1-LABEL: fixed_351_align_16
-; CHECK-OPTM1:      sub     esp,0x18
-; CHECK-OPTM1:      sub     esp,0x160
-; CHECK-OPTM1:      mov     DWORD PTR [esp],eax
-; CHECK-OPTM1:      call {{.*}} R_{{.*}}    f1
-
-; ARM32-LABEL: fixed_351_align_16
-; ARM32-OPT2:  sub sp, sp, #364
-; ARM32-OPTM1: sub sp, sp, #352
-; ARM32:       bl {{.*}} R_{{.*}}    f1
-
-; MIPS32-LABEL: fixed_351_align_16
-; MIPS32-OPT2: addiu sp,sp,-384
-; MIPS32-OPT2: addiu a0,sp,16
-; MIPS32-OPTM1: addiu sp,sp,-400
-; MIPS32-OPTM1: addiu [[REG:.*]],sp,16
-; MIPS32-OPTM1: sw [[REG]],{{.*}}
-; MIPS32-OPTM1: lw a0,{{.*}}
-; MIPS32: jal {{.*}} R_{{.*}} f1
-
-define internal void @fixed_351_align_32(i32 %n) {
-entry:
-  %array = alloca i8, i32 351, align 32
-  %__2 = ptrtoint i8* %array to i32
-  call void @f1(i32 %__2)
-  ret void
-}
-; CHECK-LABEL: fixed_351_align_32
-; CHECK:      push    ebp
-; CHECK-NEXT: mov     ebp,esp
-; CHECK:      sub     esp,0x198
-; CHECK:      and     esp,0xffffffe0
-; CHECK:      lea     eax,[esp+0x10]
-; CHECK:      mov     DWORD PTR [esp],eax
-; CHECK:      call {{.*}} R_{{.*}}    f1
-
-; ARM32-LABEL: fixed_351_align_32
-; ARM32-OPT2:  sub sp, sp, #360
-; ARM32-OPTM1: sub sp, sp, #352
-; ARM32:       bic sp, sp, #31
-; ARM32:       bl {{.*}} R_{{.*}}    f1
-
-; MIPS32-LABEL: fixed_351_align_32
-; MIPS32-OPT2: addiu sp,sp,-384
-; MIPS32-OPT2: addiu a0,sp,16
-; MIPS32-OPTM1: addiu sp,sp,-400
-; MIPS32-OPTM1: addiu [[REG:.*]],sp,32
-; MIPS32-OPTM1: sw [[REG]],{{.*}}
-; MIPS32-OPTM1: lw a0,{{.*}}
-; MIPS32: jal {{.*}} R_{{.*}} f1
-
-declare void @f1(i32 %ignored)
-
-declare void @f2(i32 %ignored)
-
-define internal void @variable_n_align_16(i32 %n) {
-entry:
-  %array = alloca i8, i32 %n, align 16
-  %__2 = ptrtoint i8* %array to i32
-  call void @f2(i32 %__2)
-  ret void
-}
-; CHECK-LABEL: variable_n_align_16
-; CHECK:      sub     esp,0x18
-; CHECK:      mov     eax,DWORD PTR [ebp+0x8]
-; CHECK:      add     eax,0xf
-; CHECK:      and     eax,0xfffffff0
-; CHECK:      sub     esp,eax
-; CHECK:      lea     eax,[esp+0x10]
-; CHECK:      mov     DWORD PTR [esp],eax
-; CHECK:      call {{.*}} R_{{.*}}    f2
-
-; ARM32-LABEL: variable_n_align_16
-; ARM32:      add r0, r0, #15
-; ARM32:      bic r0, r0, #15
-; ARM32:      sub sp, sp, r0
-; ARM32:      bl {{.*}} R_{{.*}}    f2
-
-; MIPS32-LABEL: variable_n_align_16
-; MIPS32: addiu	[[REG:.*]],{{.*}},15
-; MIPS32: li	[[REG1:.*]],-16
-; MIPS32: and	[[REG2:.*]],[[REG]],[[REG1]]
-; MIPS32: subu	[[REG3:.*]],sp,[[REG2:.*]]
-; MIPS32: li	[[REG4:.*]],-16
-; MIPS32: and	{{.*}},[[REG3]],[[REG4]]
-; MIPS32: addiu	sp,sp,-16
-; MIPS32: jal	{{.*}} R_{{.*}} f2
-; MIPS32: addiu	sp,sp,16
-
-define internal void @variable_n_align_32(i32 %n) {
-entry:
-  %array = alloca i8, i32 %n, align 32
-  %__2 = ptrtoint i8* %array to i32
-  call void @f2(i32 %__2)
-  ret void
-}
-; In -O2, the order of the CHECK-DAG lines in the output is switched.
-; CHECK-LABEL: variable_n_align_32
-; CHECK:      push    ebp
-; CHECK:      mov     ebp,esp
-; CHECK:      sub     esp,0x18
-; CHECK-DAG:  and     esp,0xffffffe0
-; CHECK-DAG:  mov     eax,DWORD PTR [ebp+0x8]
-; CHECK:      add     eax,0x1f
-; CHECK:      and     eax,0xffffffe0
-; CHECK:      sub     esp,eax
-; CHECK:      lea     eax,[esp+0x10]
-; CHECK:      mov     DWORD PTR [esp],eax
-; CHECK:      call {{.*}} R_{{.*}}    f2
-; CHECK:      mov     esp,ebp
-; CHECK:      pop     ebp
-
-; ARM32-LABEL: variable_n_align_32
-; ARM32:      push {fp, lr}
-; ARM32:      mov fp, sp
-; ARM32:      bic sp, sp, #31
-; ARM32:      add r0, r0, #31
-; ARM32:      bic r0, r0, #31
-; ARM32:      sub sp, sp, r0
-; ARM32:      bl {{.*}} R_{{.*}}    f2
-; ARM32:      mov sp, fp
-; ARM32:      pop {fp, lr}
-
-; MIPS32-LABEL: variable_n_align_32
-; MIPS32: addiu	[[REG:.*]],{{.*}},15
-; MIPS32: li 	[[REG1:.*]],-16
-; MIPS32: and 	[[REG2:.*]],[[REG]],[[REG1]]
-; MIPS32: subu 	[[REG3:.*]],sp,[[REG2]]
-; MIPS32: li 	[[REG4:.*]],-32
-; MIPS32: and 	{{.*}},[[REG3]],[[REG4]]
-; MIPS32: addiu	sp,sp,-16
-; MIPS32: jal 	{{.*}} R_{{.*}} f2
-; MIPS32: addiu	sp,sp,16
-
-; Test alloca with default (0) alignment.
-define internal void @align0(i32 %n) {
-entry:
-  %array = alloca i8, i32 %n
-  %__2 = ptrtoint i8* %array to i32
-  call void @f2(i32 %__2)
-  ret void
-}
-; CHECK-LABEL: align0
-; CHECK: add [[REG:.*]],0xf
-; CHECK: and [[REG]],0xfffffff0
-; CHECK: sub esp,[[REG]]
-
-; ARM32-LABEL: align0
-; ARM32: add r0, r0, #15
-; ARM32: bic r0, r0, #15
-; ARM32: sub sp, sp, r0
-
-; MIPS32-LABEL: align0
-; MIPS32: addiu	[[REG:.*]],{{.*}},15
-; MIPS32: li	[[REG1:.*]],-16
-; MIPS32: and	[[REG2:.*]],[[REG]],[[REG1]]
-; MIPS32: subu	{{.*}},sp,[[REG2]]
-; MIPS32: addiu	sp,sp,-16
-; MIPS32: jal	{{.*}} R_{{.*}} f2
-; MIPS32: addiu	sp,sp,16
-
-; Test a large alignment where a mask might not fit in an immediate
-; field of an instruction for some architectures.
-define internal void @align1MB(i32 %n) {
-entry:
-  %array = alloca i8, i32 %n, align 1048576
-  %__2 = ptrtoint i8* %array to i32
-  call void @f2(i32 %__2)
-  ret void
-}
-; CHECK-LABEL: align1MB
-; CHECK: push ebp
-; CHECK-NEXT: mov ebp,esp
-; CHECK: and esp,0xfff00000
-; CHECK: add [[REG:.*]],0xfffff
-; CHECK: and [[REG]],0xfff00000
-; CHECK: sub esp,[[REG]]
-
-; ARM32-LABEL: align1MB
-; ARM32: movw [[REG:.*]], #0
-; ARM32: movt [[REG]], #65520 ; 0xfff0
-; ARM32: and sp, sp, [[REG]]
-; ARM32: movw [[REG2:.*]], #65535 ; 0xffff
-; ARM32: movt [[REG2]], #15
-; ARM32: add r0, r0, [[REG2]]
-; ARM32: movw [[REG3:.*]], #0
-; ARM32: movt [[REG3]], #65520 ; 0xfff0
-; ARM32: and r0, r0, [[REG3]]
-; ARM32: sub sp, sp, r0
-
-; MIPS32-LABEL: align1MB
-; MIPS32: addiu	[[REG:.*]],{{.*}},15
-; MIPS32: li	[[REG1:.*]],-16
-; MIPS32: and	[[REG2:.*]],[[REG]],[[REG1]]
-; MIPS32: subu	[[REG3:.*]],sp,[[REG2]]
-; MIPS32: lui	[[REG4:.*]],0xfff0
-; MIPS32: and	{{.*}},[[REG3]],[[REG4]]
-; MIPS32: addiu	sp,sp,-16
-; MIPS32: jal   {{.*}} R_{{.*}} f2
-; MIPS32: addiu	sp,sp,16
-
-; Test a large alignment where a mask might still fit in an immediate
-; field of an instruction for some architectures.
-define internal void @align512MB(i32 %n) {
-entry:
-  %array = alloca i8, i32 %n, align 536870912
-  %__2 = ptrtoint i8* %array to i32
-  call void @f2(i32 %__2)
-  ret void
-}
-; CHECK-LABEL: align512MB
-; CHECK: push ebp
-; CHECK-NEXT: mov ebp,esp
-; CHECK: and esp,0xe0000000
-; CHECK: add [[REG:.*]],0x1fffffff
-; CHECK: and [[REG]],0xe0000000
-; CHECK: sub esp,[[REG]]
-
-; ARM32-LABEL: align512MB
-; ARM32: and sp, sp, #-536870912 ; 0xe0000000
-; ARM32: mvn [[REG:.*]], #-536870912 ; 0xe0000000
-; ARM32: add r0, r0, [[REG]]
-; ARM32: and r0, r0, #-536870912 ; 0xe0000000
-; ARM32: sub sp, sp, r0
-
-; MIPS32-LABEL: align512MB
-; MIPS32: addiu	[[REG:.*]],{{.*}},15
-; MIPS32: li	[[REG2:.*]],-16
-; MIPS32: and	[[REG3:.*]],[[REG]],[[REG2]]
-; MIPS32: subu	[[REG4:.*]],sp,[[REG3]]
-; MIPS32: lui	[[REG5:.*]],0xe000
-; MIPS32: and	{{.*}},[[REG4]],[[REG5]]
-; MIPS32: addiu	sp,sp,-16
-; MIPS32: jal	{{.*}} R_{{.*}} f2
-; MIPS32: addiu	sp,sp,16
-
-; Test that a simple alloca sequence doesn't trigger a frame pointer.
-define internal void @fixed_no_frameptr(i32 %arg) {
-entry:
-  %a1 = alloca i8, i32 8, align 4
-  %a2 = alloca i8, i32 12, align 4
-  %a3 = alloca i8, i32 16, align 4
-  %p1 = bitcast i8* %a1 to i32*
-  %p2 = bitcast i8* %a2 to i32*
-  %p3 = bitcast i8* %a3 to i32*
-  store i32 %arg, i32* %p1, align 1
-  store i32 %arg, i32* %p2, align 1
-  store i32 %arg, i32* %p3, align 1
-  ret void
-}
-; CHECK-LABEL: fixed_no_frameptr
-; CHECK-NOT:      mov     ebp,esp
-
-; Test that a simple alloca sequence with at least one large alignment does
-; trigger a frame pointer.
-define internal void @fixed_bigalign_with_frameptr(i32 %arg) {
-entry:
-  %a1 = alloca i8, i32 8, align 4
-  %a2 = alloca i8, i32 12, align 4
-  %a3 = alloca i8, i32 16, align 64
-  %p1 = bitcast i8* %a1 to i32*
-  %p2 = bitcast i8* %a2 to i32*
-  %p3 = bitcast i8* %a3 to i32*
-  store i32 %arg, i32* %p1, align 1
-  store i32 %arg, i32* %p2, align 1
-  store i32 %arg, i32* %p3, align 1
-  ret void
-}
-; CHECK-LABEL: fixed_bigalign_with_frameptr
-; CHECK:      mov     ebp,esp
-
-; Test that a more complex alloca sequence does trigger a frame pointer.
-define internal void @var_with_frameptr(i32 %arg) {
-entry:
-  %a1 = alloca i8, i32 8, align 4
-  %a2 = alloca i8, i32 12, align 4
-  %a3 = alloca i8, i32 %arg, align 4
-  %p1 = bitcast i8* %a1 to i32*
-  %p2 = bitcast i8* %a2 to i32*
-  %p3 = bitcast i8* %a3 to i32*
-  store i32 %arg, i32* %p1, align 1
-  store i32 %arg, i32* %p2, align 1
-  store i32 %arg, i32* %p3, align 1
-  ret void
-}
-; CHECK-LABEL: var_with_frameptr
-; CHECK:      mov     ebp,esp
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/arith-opt.ll b/third_party/subzero/tests_lit/llvm2ice_tests/arith-opt.ll
deleted file mode 100644
index e0cb0db..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/arith-opt.ll
+++ /dev/null
@@ -1,121 +0,0 @@
-; This is a very early test that just checks the representation of i32
-; arithmetic instructions.  No assembly tests are done.
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --filetype=asm --args --verbose inst -threads=0 \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s
-
-define internal i32 @Add(i32 %a, i32 %b) {
-; CHECK: define internal i32 @Add
-entry:
-  %add = add i32 %b, %a
-; CHECK: add
-  tail call void @Use(i32 %add)
-; CHECK: call Use
-  ret i32 %add
-}
-
-declare void @Use(i32)
-
-define internal i32 @And(i32 %a, i32 %b) {
-; CHECK: define internal i32 @And
-entry:
-  %and = and i32 %b, %a
-; CHECK: and
-  tail call void @Use(i32 %and)
-; CHECK: call Use
-  ret i32 %and
-}
-
-define internal i32 @Or(i32 %a, i32 %b) {
-; CHECK: define internal i32 @Or
-entry:
-  %or = or i32 %b, %a
-; CHECK: or
-  tail call void @Use(i32 %or)
-; CHECK: call Use
-  ret i32 %or
-}
-
-define internal i32 @Xor(i32 %a, i32 %b) {
-; CHECK: define internal i32 @Xor
-entry:
-  %xor = xor i32 %b, %a
-; CHECK: xor
-  tail call void @Use(i32 %xor)
-; CHECK: call Use
-  ret i32 %xor
-}
-
-define internal i32 @Sub(i32 %a, i32 %b) {
-; CHECK: define internal i32 @Sub
-entry:
-  %sub = sub i32 %a, %b
-; CHECK: sub
-  tail call void @Use(i32 %sub)
-; CHECK: call Use
-  ret i32 %sub
-}
-
-define internal i32 @Mul(i32 %a, i32 %b) {
-; CHECK: define internal i32 @Mul
-entry:
-  %mul = mul i32 %b, %a
-; CHECK: imul
-  tail call void @Use(i32 %mul)
-; CHECK: call Use
-  ret i32 %mul
-}
-
-define internal i32 @Sdiv(i32 %a, i32 %b) {
-; CHECK: define internal i32 @Sdiv
-entry:
-  %div = sdiv i32 %a, %b
-; CHECK: cdq
-; CHECK: idiv
-  tail call void @Use(i32 %div)
-; CHECK: call Use
-  ret i32 %div
-}
-
-define internal i32 @Srem(i32 %a, i32 %b) {
-; CHECK: define internal i32 @Srem
-entry:
-  %rem = srem i32 %a, %b
-; CHECK: cdq
-; CHECK: idiv
-  tail call void @Use(i32 %rem)
-; CHECK: call Use
-  ret i32 %rem
-}
-
-define internal i32 @Udiv(i32 %a, i32 %b) {
-; CHECK: define internal i32 @Udiv
-entry:
-  %div = udiv i32 %a, %b
-; CHECK: div
-  tail call void @Use(i32 %div)
-; CHECK: call Use
-  ret i32 %div
-}
-
-define internal i32 @Urem(i32 %a, i32 %b) {
-; CHECK: define internal i32 @Urem
-entry:
-  %rem = urem i32 %a, %b
-; CHECK: div
-  tail call void @Use(i32 %rem)
-; CHECK: call Use
-  ret i32 %rem
-}
-
-; Check for a valid addressing mode in the x86-32 mul instruction when
-; the second source operand is an immediate.
-define internal i64 @MulImm() {
-entry:
-  %mul = mul i64 3, 4
-  ret i64 %mul
-}
-; CHECK-LABEL: MulImm
-; CHECK-NOT: mul {{[0-9]+}}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/arith.ll b/third_party/subzero/tests_lit/llvm2ice_tests/arith.ll
deleted file mode 100644
index 72c459d..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/arith.ll
+++ /dev/null
@@ -1,310 +0,0 @@
-; Assembly test for simple arithmetic operations.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj --disassemble --target arm32 \
-; RUN:   -i %s --args -O2 \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 --check-prefix ARM-OPT2 %s
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj --disassemble --target arm32 \
-; RUN:   -i %s --args -O2 --mattr=hwdiv-arm \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32HWDIV %s
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj --disassemble --target arm32 \
-; RUN:   -i %s --args -Om1 \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 --check-prefix ARM32-OPTM1 %s
-;
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target mips32\
-; RUN:   -i %s --args -O2 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target mips32\
-; RUN:   -i %s --args -Om1 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-define internal i32 @Add(i32 %a, i32 %b) {
-entry:
-  %add = add i32 %b, %a
-  ret i32 %add
-}
-; CHECK-LABEL: Add
-; CHECK: add e
-; ARM32-LABEL: Add
-; ARM32: add r
-; MIPS32-LABEL: Add
-; MIPS32: add
-
-define internal i32 @And(i32 %a, i32 %b) {
-entry:
-  %and = and i32 %b, %a
-  ret i32 %and
-}
-; CHECK-LABEL: And
-; CHECK: and e
-; ARM32-LABEL: And
-; ARM32: and r
-; MIPS32-LABEL: And
-; MIPS32: and
-
-define internal i32 @Or(i32 %a, i32 %b) {
-entry:
-  %or = or i32 %b, %a
-  ret i32 %or
-}
-; CHECK-LABEL: Or
-; CHECK: or e
-; ARM32-LABEL: Or
-; ARM32: orr r
-; MIPS32-LABEL: Or
-; MIPS32: or
-
-define internal i32 @Xor(i32 %a, i32 %b) {
-entry:
-  %xor = xor i32 %b, %a
-  ret i32 %xor
-}
-; CHECK-LABEL: Xor
-; CHECK: xor e
-; ARM32-LABEL: Xor
-; ARM32: eor r
-; MIPS32-LABEL: Xor
-; MIPS32: xor
-
-define internal i32 @Sub(i32 %a, i32 %b) {
-entry:
-  %sub = sub i32 %a, %b
-  ret i32 %sub
-}
-; CHECK-LABEL: Sub
-; CHECK: sub e
-; ARM32-LABEL: Sub
-; ARM32: sub r
-; MIPS32-LABEL: Sub
-; MIPS32: sub
-
-define internal i32 @Mul(i32 %a, i32 %b) {
-entry:
-  %mul = mul i32 %b, %a
-  ret i32 %mul
-}
-; CHECK-LABEL: Mul
-; CHECK: imul e
-; ARM32-LABEL: Mul
-; ARM32: mul r
-; MIPS32-LABEL: Mul
-; MIPS32: mul
-
-; Check for a valid ARM mul instruction where operands have to be registers.
-; On the other hand x86-32 does allow an immediate.
-define internal i32 @MulImm(i32 %a, i32 %b) {
-entry:
-  %mul = mul i32 %a, 99
-  ret i32 %mul
-}
-; CHECK-LABEL: MulImm
-; CHECK: imul e{{.*}},e{{.*}},0x63
-; ARM32-LABEL: MulImm
-; ARM32-OPTM1: mov {{.*}}, #99
-; ARM32-OPTM1: mul r{{.*}}, r{{.*}}, r{{.*}}
-; ARM32-OPT2: rsb [[T:r[0-9]+]], [[S:r[0-9]+]], [[S]], lsl #2
-; ARM32-OPT2-DAG: add [[T]], [[T]], [[S]], lsl #7
-; ARM32-OPT2-DAG: sub [[T]], [[T]], [[S]], lsl #5
-; MIPS32-LABEL: MulImm
-; MIPS32: mul
-
-; Check for a valid addressing mode in the x86-32 mul instruction when
-; the second source operand is an immediate.
-define internal i64 @MulImm64(i64 %a) {
-entry:
-  %mul = mul i64 %a, 99
-  ret i64 %mul
-}
-; NOTE: the lowering is currently a bit inefficient for small 64-bit constants.
-; The top bits of the immediate are 0, but the instructions modeling that
-; multiply by 0 are not eliminated (see expanded 64-bit ARM lowering).
-; CHECK-LABEL: MulImm64
-; CHECK: mov {{.*}},0x63
-; CHECK: mov {{.*}},0x0
-; CHECK-NOT: mul {{[0-9]+}}
-;
-; ARM32-LABEL: MulImm64
-; ARM32: mov {{.*}}, #99
-; ARM32: mov {{.*}}, #0
-; ARM32: mul r
-; ARM32: mla r
-; ARM32: umull r
-; ARM32: add r
-
-; MIPS32-LABEL: MulImm64
-
-define internal i32 @Sdiv(i32 %a, i32 %b) {
-entry:
-  %div = sdiv i32 %a, %b
-  ret i32 %div
-}
-; CHECK-LABEL: Sdiv
-; CHECK: cdq
-; CHECK: idiv e
-;
-; ARM32-LABEL: Sdiv
-; ARM32: tst [[DENOM:r.*]], [[DENOM]]
-; ARM32: bne
-; The following instruction is ".word 0xe7fedef0 = udf #60896 ; 0xede0".
-; ARM32: e7fedef0
-; ARM32: bl {{.*}} __divsi3
-; ARM32HWDIV-LABEL: Sdiv
-; ARM32HWDIV: tst
-; ARM32HWDIV: bne
-; ARM32HWDIV: sdiv
-
-; MIPS32-LABEL: Sdiv
-; MIPS32: div zero,{{.*}},[[REG:.*]]
-; MIPS32: teq [[REG]],zero,0x7
-; MIPS32: mflo
-
-define internal i32 @SdivConst(i32 %a) {
-entry:
-  %div = sdiv i32 %a, 219
-  ret i32 %div
-}
-; CHECK-LABEL: SdivConst
-; CHECK: cdq
-; CHECK: idiv e
-;
-; ARM32-LABEL: SdivConst
-; ARM32-NOT: tst
-; ARM32: bl {{.*}} __divsi3
-; ARM32HWDIV-LABEL: SdivConst
-; ARM32HWDIV-NOT: tst
-; ARM32HWDIV: sdiv
-
-; MIPS32-LABEL: SdivConst
-; MIPS32: div zero,{{.*}},[[REG:.*]]
-; MIPS32: teq [[REG]],zero,0x7
-; MIPS32: mflo
-
-define internal i32 @Srem(i32 %a, i32 %b) {
-entry:
-  %rem = srem i32 %a, %b
-  ret i32 %rem
-}
-; CHECK-LABEL: Srem
-; CHECK: cdq
-; CHECK: idiv e
-;
-; ARM32-LABEL: Srem
-; ARM32: tst [[DENOM:r.*]], [[DENOM]]
-; ARM32: bne
-; ARM32: bl {{.*}} __modsi3
-; ARM32HWDIV-LABEL: Srem
-; ARM32HWDIV: tst
-; ARM32HWDIV: bne
-; ARM32HWDIV: sdiv
-; ARM32HWDIV: mls
-
-; MIPS32-LABEL: Srem
-; MIPS32: div zero,{{.*}},[[REG:.*]]
-; MIPS32: teq [[REG]],zero,0x7
-; MIPS32: mfhi
-
-define internal i32 @Udiv(i32 %a, i32 %b) {
-entry:
-  %div = udiv i32 %a, %b
-  ret i32 %div
-}
-; CHECK-LABEL: Udiv
-; CHECK: div e
-;
-; ARM32-LABEL: Udiv
-; ARM32: tst [[DENOM:r.*]], [[DENOM]]
-; ARM32: bne
-; ARM32: bl {{.*}} __udivsi3
-; ARM32HWDIV-LABEL: Udiv
-; ARM32HWDIV: tst
-; ARM32HWDIV: bne
-; ARM32HWDIV: udiv
-
-; MIPS32-LABEL: Udiv
-; MIPS32: divu zero,{{.*}},[[REG:.*]]
-; MIPS32: teq [[REG]],zero,0x7
-; MIPS32: mflo
-
-define internal i32 @Urem(i32 %a, i32 %b) {
-entry:
-  %rem = urem i32 %a, %b
-  ret i32 %rem
-}
-; CHECK-LABEL: Urem
-; CHECK: div e
-;
-; ARM32-LABEL: Urem
-; ARM32: tst [[DENOM:r.*]], [[DENOM]]
-; ARM32: bne
-; ARM32: bl {{.*}} __umodsi3
-; ARM32HWDIV-LABEL: Urem
-; ARM32HWDIV: tst
-; ARM32HWDIV: bne
-; ARM32HWDIV: udiv
-; ARM32HWDIV: mls
-
-; MIPS32-LABEL: Urem
-; MIPS32: divu zero,{{.*}},[[REG:.*]]
-; MIPS32: teq [[REG]],zero,0x7
-; MIPS32: mfhi
-
-; The following tests check that shift instructions don't try to use a
-; ConstantRelocatable as an immediate operand.
-
-@G = internal global [4 x i8] zeroinitializer, align 4
-
-define internal i32 @ShlReloc(i32 %a) {
-entry:
-  %opnd = ptrtoint [4 x i8]* @G to i32
-  %result = shl i32 %a, %opnd
-  ret i32 %result
-}
-; CHECK-LABEL: ShlReloc
-; CHECK: shl {{.*}},cl
-
-; MIPS32-LABEL: ShlReloc
-; MIPS32: lui [[REG:.*]],{{.*}} R_MIPS_HI16 G
-; MIPS32: addiu [[REG]],[[REG]],{{.*}} R_MIPS_LO16 G
-; MIPS32: sllv {{.*}},{{.*}},[[REG]]
-
-define internal i32 @LshrReloc(i32 %a) {
-entry:
-  %opnd = ptrtoint [4 x i8]* @G to i32
-  %result = lshr i32 %a, %opnd
-  ret i32 %result
-}
-; CHECK-LABEL: LshrReloc
-; CHECK: shr {{.*}},cl
-
-; MIPS32-LABEL: LshrReloc
-; MIPS32: lui [[REG:.*]],{{.*}} R_MIPS_HI16 G
-; MIPS32: addiu [[REG]],[[REG]],{{.*}} R_MIPS_LO16 G
-; MIPS32: srlv {{.*}},{{.*}},[[REG]]
-
-define internal i32 @AshrReloc(i32 %a) {
-entry:
-  %opnd = ptrtoint [4 x i8]* @G to i32
-  %result = ashr i32 %a, %opnd
-  ret i32 %result
-}
-; CHECK-LABEL: AshrReloc
-; CHECK: sar {{.*}},cl
-
-; MIPS32-LABEL: AshrReloc
-; MIPS32: lui [[REG:.*]],{{.*}} R_MIPS_HI16 G
-; MIPS32: addiu [[REG]],[[REG]],{{.*}} R_MIPS_LO16 G
-; MIPS32: srav {{.*}},{{.*}},[[REG]]
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/asm-verbose.ll b/third_party/subzero/tests_lit/llvm2ice_tests/asm-verbose.ll
deleted file mode 100644
index 65b8970..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/asm-verbose.ll
+++ /dev/null
@@ -1,26 +0,0 @@
-; Tests that -asm-verbose doesn't fail liveness validation because of
-; callee-save pushes/pops in a single-basic-block function.
-
-; REQUIRES: allow_dump
-; RUN: %p2i --target x8632 -i %s --filetype=asm --args -O2 -asm-verbose \
-; RUN:   | FileCheck %s
-; TODO(stichnot,jpp): Enable for x8664.
-; RUIN: %p2i --target x8664 -i %s --filetype=asm --args -O2 -asm-verbose \
-; RUIN:   | FileCheck %s
-; RUN: %p2i --target arm32 -i %s --filetype=asm --args -O2 -asm-verbose \
-; RUN:   | FileCheck %s
-
-define internal i32 @single_bb(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3,
-                               i32 %arg4, i32 %arg5, i32 %arg6, i32 %arg7) {
-b1:
-  %t1 = add i32 %arg0, %arg1
-  %t2 = add i32 %t1, %arg2
-  %t3 = add i32 %t2, %arg3
-  %t4 = add i32 %t3, %arg4
-  %t5 = add i32 %t4, %arg5
-  %t6 = add i32 %t5, %arg6
-  %t7 = add i32 %t6, %arg7
-  ret i32 %t7
-}
-
-; CHECK-LABEL: single_bb
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/bitcast.ll b/third_party/subzero/tests_lit/llvm2ice_tests/bitcast.ll
deleted file mode 100644
index 1a38a76..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/bitcast.ll
+++ /dev/null
@@ -1,135 +0,0 @@
-; Trivial smoke test of bitcast between integer and FP types.
-
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 | FileCheck %s
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 | FileCheck %s
-
-; RUN: %if --need=target_ARM32 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target arm32 -i %s --args -O2 \
-; RUN:   | %if --need=target_ARM32 --command FileCheck %s \
-; RUN:   --check-prefix=ARM32
-
-; RUN: %if --need=target_ARM32 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target arm32 -i %s --args -Om1 \
-; RUN:   | %if --need=target_ARM32 --command FileCheck %s \
-; RUN:   --check-prefix=ARM32
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm \
-; RUN:   --target mips32 -i %s --args -O2 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck %s \
-; RUN:   --check-prefix=MIPS32 --check-prefix=MIPS32-O2
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm \
-; RUN:   --target mips32 -i %s --args -Om1 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck %s \
-; RUN:   --check-prefix=MIPS32 --check-prefix=MIPS32-OM1
-
-define internal i32 @cast_f2i(float %f) {
-entry:
-  %v0 = bitcast float %f to i32
-  ret i32 %v0
-}
-; CHECK-LABEL: cast_f2i
-; CHECK: movd eax
-; ARM32-LABEL: cast_f2i
-; ARM32: vmov r{{[0-9]+}}, s{{[0-9]+}}
-; MIPS32-LABEL: cast_f2i
-; MIPS32-O2: mfc1 $v0, $f{{[0-9]+}}
-; MIPS32-OM1: swc1
-; MIPS32-OM1: lw
-
-define internal float @cast_i2f(i32 %i) {
-entry:
-  %v0 = bitcast i32 %i to float
-  ret float %v0
-}
-; CHECK-LABEL: cast_i2f
-; CHECK: fld DWORD PTR
-; ARM32-LABEL: cast_i2f
-; ARM32: vmov s{{[0-9]+}}, r{{[0-9]+}}
-; MIPS32-LABEL: cast_i2f
-; MIPS32-O2: mtc1 $a0, $f{{[0-9]+}}
-; MIPS32-OM1: sw
-; MIPS32-OM1: lwc1
-
-define internal i64 @cast_d2ll(double %d) {
-entry:
-  %v0 = bitcast double %d to i64
-  ret i64 %v0
-}
-; CHECK-LABEL: cast_d2ll
-; CHECK: mov edx
-; ARM32-LABEL: cast_d2ll
-; ARM32: vmov r{{[0-9]+}}, r{{[0-9]+}}, d{{[0-9]+}}
-; MIPS32-LABEL: cast_d2ll
-; MIPS32-O2: swc1 $f13, {{.*}}
-; MIPS32-O2: swc1 $f12, {{.*}}
-; MIPS32-O2: lw $v0, {{.*}}
-; MIPS32-O2: lw $v1, {{.*}}
-; MIPS32-OM1: sdc1
-; MIPS32-OM1: lw
-; MIPS32-OM1: lw
-
-define internal i64 @cast_d2ll_const() {
-entry:
-  %v0 = bitcast double 0x12345678901234 to i64
-  ret i64 %v0
-}
-; CHECK-LABEL: cast_d2ll_const
-; CHECK: mov e{{..}},{{(DWORD PTR )?}}ds:0x0 {{.*}} {{.*}}0012345678901234
-; CHECK: mov e{{..}},{{(DWORD PTR )?}}ds:0x4 {{.*}} {{.*}}0012345678901234
-; ARM32-LABEL: cast_d2ll_const
-; ARM32-DAG: movw [[ADDR:r[0-9]+]], #{{.*_MOVW_}}
-; ARM32-DAG: movt [[ADDR]], #{{.*_MOVT_}}
-; ARM32-DAG: vldr [[DREG:d[0-9]+]], {{\[}}[[ADDR]]{{\]}}
-; ARM32: vmov r{{[0-9]+}}, r{{[0-9]+}}, [[DREG]]
-; MIPS32-LABEL: cast_d2ll_const
-; MIPS32: lui {{.*}}, %hi(.L$double$0012345678901234)
-; MIPS32: ldc1 {{.*}}, %lo(.L$double$0012345678901234)({{.*}})
-; MIPS32: swc1 $f{{[0-9]+}}, {{.*}}
-; MIPS32: swc1 $f{{[0-9]+}}, {{.*}}
-; MIPS32: lw $v0, {{.*}}
-; MIPS32: lw $v1, {{.*}}
-
-define internal double @cast_ll2d(i64 %ll) {
-entry:
-  %v0 = bitcast i64 %ll to double
-  ret double %v0
-}
-; CHECK-LABEL: cast_ll2d
-; CHECK: fld QWORD PTR
-; ARM32-LABEL: cast_ll2d
-; ARM32: vmov d{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}}
-; MIPS32-LABEL: cast_ll2d
-; MIPS32-O2: mtc1 $a0, $f{{[0-9]+}}
-; MIPS32-O2: mtc1 $a1, $f{{[0-9]+}}
-; MIPS32-OM1: sw
-; MIPS32-OM1: sw
-; MIPS32-OM1: ldc1
-
-define internal double @cast_ll2d_const() {
-entry:
-  %v0 = bitcast i64 12345678901234 to double
-  ret double %v0
-}
-; CHECK-LABEL: cast_ll2d_const
-; CHECK: mov {{.*}},0x73ce2ff2
-; CHECK: mov {{.*}},0xb3a
-; CHECK: fld QWORD PTR
-; ARM32-LABEL: cast_ll2d_const
-; ARM32-DAG: movw [[REG0:r[0-9]+]], #12274
-; ARM32-DAG: movt [[REG0:r[0-9]+]], #29646
-; ARM32-DAG: movw [[REG1:r[0-9]+]], #2874
-; ARM32: vmov d{{[0-9]+}}, [[REG0]], [[REG1]]
-; MIPS32-LABEL: cast_ll2d_const
-; MIPS32: lui {{.*}}, 29646
-; MIPS32: ori {{.*}}, {{.*}}, 12274
-; MIPS32: addiu	{{.*}}, $zero, 2874
-; MIPS32-O2: mtc1 {{.*}}, $f{{[0-9]+}}
-; MIPS32-O2: mtc1 {{.*}}, $f{{[0-9]+}}
-; MIPS32-OM1: sw
-; MIPS32-OM1: sw
-; MIPS32-OM1: ldc1
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/bool-folding.ll b/third_party/subzero/tests_lit/llvm2ice_tests/bool-folding.ll
deleted file mode 100644
index 1ce0121..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/bool-folding.ll
+++ /dev/null
@@ -1,481 +0,0 @@
-; This tests the optimization where producers and consumers of i1 (bool)
-; variables are combined to implicitly use flags instead of explicitly using
-; stack or register variables.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s
-
-; RUN: %if --need=target_ARM32 --command %p2i --filetype=obj \
-; RUN:   --target arm32 -i %s --disassemble --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32 --command FileCheck %s \
-; RUN:   --check-prefix=ARM32
-
-declare void @use_value(i32)
-
-; Basic cmp/branch folding.
-define internal i32 @fold_cmp_br(i32 %arg1, i32 %arg2) {
-entry:
-  %cmp1 = icmp slt i32 %arg1, %arg2
-  br i1 %cmp1, label %branch1, label %branch2
-branch1:
-  ret i32 1
-branch2:
-  ret i32 2
-}
-
-; CHECK-LABEL: fold_cmp_br
-; CHECK: cmp
-; CHECK: jge
-; ARM32-LABEL: fold_cmp_br
-; ARM32: cmp r0, r1
-; ARM32: bge
-; ARM32: mov r0, #1
-; ARM32: bx lr
-; ARM32: mov r0, #2
-; ARM32: bx lr
-
-
-; Cmp/branch folding with intervening instructions.
-define internal i32 @fold_cmp_br_intervening_insts(i32 %arg1, i32 %arg2) {
-entry:
-  %cmp1 = icmp slt i32 %arg1, %arg2
-  call void @use_value(i32 %arg1)
-  br i1 %cmp1, label %branch1, label %branch2
-branch1:
-  ret i32 1
-branch2:
-  ret i32 2
-}
-
-; CHECK-LABEL: fold_cmp_br_intervening_insts
-; CHECK-NOT: cmp
-; CHECK: call
-; CHECK: cmp
-; CHECK: jge
-; ARM32-LABEL: fold_cmp_br_intervening_insts
-; ARM32: push {{[{].*[}]}}
-; ARM32: bl{{.*}}use_value
-; ARM32: cmp {{r[0-9]+}}, {{r[0-9]+}}
-; ARM32: bge
-; ARM32: mov r0, #1
-; ARM32: bx lr
-; ARM32: mov r0, #2
-; ARM32: bx lr
-
-
-; Cmp/branch non-folding because of live-out.
-define internal i32 @no_fold_cmp_br_liveout(i32 %arg1, i32 %arg2) {
-entry:
-  %cmp1 = icmp slt i32 %arg1, %arg2
-  br label %next
-next:
-  br i1 %cmp1, label %branch1, label %branch2
-branch1:
-  ret i32 1
-branch2:
-  ret i32 2
-}
-
-; CHECK-LABEL: no_fold_cmp_br_liveout
-; CHECK: cmp
-; CHECK: set
-; CHECK: cmp
-; CHECK: je
-; ARM32-LABEL: no_fold_cmp_br_liveout
-; ARM32: cmp
-; ARM32: movlt [[REG:r[0-9]+]]
-; ARM32: tst [[REG]], #1
-; ARM32: beq
-
-
-; Cmp/branch non-folding because of extra non-whitelisted uses.
-define internal i32 @no_fold_cmp_br_non_whitelist(i32 %arg1, i32 %arg2) {
-entry:
-  %cmp1 = icmp slt i32 %arg1, %arg2
-  %result = zext i1 %cmp1 to i32
-  br i1 %cmp1, label %branch1, label %branch2
-branch1:
-  ret i32 %result
-branch2:
-  ret i32 2
-}
-
-; CHECK-LABEL: no_fold_cmp_br_non_whitelist
-; CHECK: cmp
-; CHECK: set
-; CHECK: movzx
-; CHECK: cmp
-; CHECK: je
-; ARM32-LABEL: no_fold_cmp_br_non_whitelist
-; ARM32: mov [[R:r[0-9]+]], #0
-; ARM32: cmp r0, r1
-; ARM32: movlt [[R]], #1
-; ARM32: tst [[R]], #1
-; ARM32: beq
-; ARM32: bx lr
-; ARM32: mov r0, #2
-; ARM32: bx lr
-
-
-; Basic cmp/select folding.
-define internal i32 @fold_cmp_select(i32 %arg1, i32 %arg2) {
-entry:
-  %cmp1 = icmp slt i32 %arg1, %arg2
-  %result = select i1 %cmp1, i32 %arg1, i32 %arg2
-  ret i32 %result
-}
-
-; CHECK-LABEL: fold_cmp_select
-; CHECK: cmp
-; CHECK: cmovl
-; ARM32-LABEL: fold_cmp_select
-; ARM32: cmp r0, r1
-; ARM32: movlt {{r[0-9]+}}, r0
-
-; 64-bit cmp/select folding.
-define internal i64 @fold_cmp_select_64(i64 %arg1, i64 %arg2) {
-entry:
-  %arg1_trunc = trunc i64 %arg1 to i32
-  %arg2_trunc = trunc i64 %arg2 to i32
-  %cmp1 = icmp slt i32 %arg1_trunc, %arg2_trunc
-  %result = select i1 %cmp1, i64 %arg1, i64 %arg2
-  ret i64 %result
-}
-
-; CHECK-LABEL: fold_cmp_select_64
-; CHECK: cmp
-; CHECK: cmovl
-; CHECK: cmovl
-; ARM32-LABEL: fold_cmp_select_64
-; ARM32: cmp r0, r2
-; ARM32: movlt [[LOW:r[0-9]+]], r0
-; ARM32: movlt [[HIGH:r[0-9]+]], r1
-; ARM32: mov r0, [[LOW]]
-; ARM32: mov r1, [[HIGH]]
-; ARM32: bx lr
-
-
-define internal i64 @fold_cmp_select_64_undef(i64 %arg1) {
-entry:
-  %arg1_trunc = trunc i64 %arg1 to i32
-  %cmp1 = icmp slt i32 undef, %arg1_trunc
-  %result = select i1 %cmp1, i64 %arg1, i64 undef
-  ret i64 %result
-}
-; CHECK-LABEL: fold_cmp_select_64_undef
-; CHECK: cmp
-; CHECK: cmovl
-; CHECK: cmovl
-; ARM32-LABEL: fold_cmp_select_64_undef
-; ARM32: mov
-; ARM32: rsbs r{{[0-9]+}}, r{{[0-9]+}}, #0
-; ARM32: movlt
-; ARM32: movlt
-; ARM32: bx lr
-
-
-; Cmp/select folding with intervening instructions.
-define internal i32 @fold_cmp_select_intervening_insts(i32 %arg1, i32 %arg2) {
-entry:
-  %cmp1 = icmp slt i32 %arg1, %arg2
-  call void @use_value(i32 %arg1)
-  %result = select i1 %cmp1, i32 %arg1, i32 %arg2
-  ret i32 %result
-}
-
-; CHECK-LABEL: fold_cmp_select_intervening_insts
-; CHECK-NOT: cmp
-; CHECK: call
-; CHECK: cmp
-; CHECK: cmovl
-; ARM32-LABEL: fold_cmp_select_intervening_insts
-; ARM32: bl{{.*}}use_value
-; ARM32: cmp r{{[0-9]+}}, r{{[0-9]+}}
-; ARM32: movlt
-; ARM32: bx lr
-
-; Cmp/multi-select folding.
-define internal i32 @fold_cmp_select_multi(i32 %arg1, i32 %arg2) {
-entry:
-  %cmp1 = icmp slt i32 %arg1, %arg2
-  %a = select i1 %cmp1, i32 %arg1, i32 %arg2
-  %b = select i1 %cmp1, i32 %arg2, i32 %arg1
-  %c = select i1 %cmp1, i32 123, i32 %arg1
-  %partial = add i32 %a, %b
-  %result = add i32 %partial, %c
-  ret i32 %result
-}
-
-; CHECK-LABEL: fold_cmp_select_multi
-; CHECK: cmp
-; CHECK: cmovl
-; CHECK: cmp
-; CHECK: cmovl
-; CHECK: cmp
-; CHECK: cmovge
-; CHECK: add
-; CHECK: add
-; ARM32-LABEL: fold_cmp_select_multi
-; ARM32: mov
-; ARM32: cmp
-; ARM32: movlt {{.*}}, #1
-; ARM32: mov
-; ARM32: tst {{.*}}, #1
-; ARM32: movne
-; ARM32: mov
-; ARM32: tst {{.*}}, #1
-; ARM32: movne
-; ARM32: tst {{.*}}, #1
-; ARM32: movne {{.*}}, #123
-; ARM32: bx lr
-
-
-; Cmp/multi-select non-folding because of live-out.
-define internal i32 @no_fold_cmp_select_multi_liveout(i32 %arg1, i32 %arg2) {
-entry:
-  %cmp1 = icmp slt i32 %arg1, %arg2
-  %a = select i1 %cmp1, i32 %arg1, i32 %arg2
-  %b = select i1 %cmp1, i32 %arg2, i32 %arg1
-  br label %next
-next:
-  %c = select i1 %cmp1, i32 123, i32 %arg1
-  %partial = add i32 %a, %b
-  %result = add i32 %partial, %c
-  ret i32 %result
-}
-
-; CHECK-LABEL: no_fold_cmp_select_multi_liveout
-; CHECK: set
-; CHECK: cmp
-; CHECK: cmovne
-; CHECK: cmp
-; CHECK: cmovne
-; CHECK: cmp
-; CHECK: cmove
-; CHECK: add
-; CHECK: add
-; ARM32-LABEL: no_fold_cmp_select_multi_liveout
-; ARM32: mov
-; ARM32: cmp r0, r1
-; ARM32: movlt
-; ARM32: mov
-; ARM32: tst
-; ARM32: movne
-; ARM32: mov
-; ARM32: tst
-; ARM32: movne
-; ARM32: tst
-; ARM32: movne
-; ARM32: bx lr
-
-; Cmp/branch non-folding due to load folding and intervening store.
-define internal i32 @no_fold_cmp_br_store(i32 %arg2, i32 %argaddr) {
-entry:
-  %addr = inttoptr i32 %argaddr to i32*
-  %arg1 = load i32, i32* %addr, align 1
-  %cmp1 = icmp slt i32 %arg1, %arg2
-  store i32 1, i32* %addr, align 1
-  br i1 %cmp1, label %branch1, label %branch2
-branch1:
-  ret i32 1
-branch2:
-  ret i32 2
-}
-
-; CHECK-LABEL: no_fold_cmp_br_store
-; CHECK: cmp
-; CHECK: set
-; CHECK: cmp
-
-; Cmp/select non-folding due to load folding and intervening store.
-define internal i32 @no_fold_cmp_select_store(i32 %arg1, i32 %argaddr) {
-entry:
-  %addr = inttoptr i32 %argaddr to i32*
-  %arg2 = load i32, i32* %addr, align 1
-  %cmp1 = icmp slt i32 %arg1, %arg2
-  store i32 1, i32* %addr, align 1
-  %result = select i1 %cmp1, i32 %arg1, i32 %argaddr
-  ret i32 %result
-}
-
-; CHECK-LABEL: no_fold_cmp_select_store
-; CHECK: cmp
-; CHECK: setl
-; CHECK: mov DWORD PTR
-; CHECK: cmp
-; CHECK: cmovne
-
-; Cmp/select folding due to load folding and non-intervening store.
-define internal i32 @fold_cmp_select_store(i32 %arg1, i32 %argaddr) {
-entry:
-  %addr = inttoptr i32 %argaddr to i32*
-  %arg2 = load i32, i32* %addr, align 1
-  %cmp1 = icmp slt i32 %arg1, %arg2
-  %result = select i1 %cmp1, i32 %arg1, i32 %argaddr
-  store i32 1, i32* %addr, align 1
-  ret i32 %result
-}
-
-; CHECK-LABEL: fold_cmp_select_store
-; CHECK: cmp {{.*}},DWORD PTR
-; CHECK: cmovl
-
-; Cmp/multi-select non-folding because of extra non-whitelisted uses.
-define internal i32 @no_fold_cmp_select_multi_non_whitelist(i32 %arg1,
-                                                            i32 %arg2) {
-entry:
-  %cmp1 = icmp slt i32 %arg1, %arg2
-  %a = select i1 %cmp1, i32 %arg1, i32 %arg2
-  %b = select i1 %cmp1, i32 %arg2, i32 %arg1
-  %c = select i1 %cmp1, i32 123, i32 %arg1
-  %ext = zext i1 %cmp1 to i32
-  %partial1 = add i32 %a, %b
-  %partial2 = add i32 %partial1, %c
-  %result = add i32 %partial2, %ext
-  ret i32 %result
-}
-
-; CHECK-LABEL: no_fold_cmp_select_multi_non_whitelist
-; CHECK: set
-; CHECK: cmp
-; CHECK: cmovne
-; CHECK: cmp
-; CHECK: cmovne
-; CHECK: cmp
-; CHECK: cmove
-; CHECK: movzx
-; CHECK: add
-; CHECK: add
-; CHECK: add
-; ARM32-LABEL: no_fold_cmp_select_multi_non_whitelist
-; ARM32: mov
-; ARM32: cmp r0, r1
-; ARM32: movlt
-; ARM32: mov
-; ARM32: tst
-; ARM32: movne
-; ARM32: mov
-; ARM32: tst
-; ARM32: movne
-; ARM32: tst
-; ARM32: movne
-; ARM32: bx lr
-
-define internal i32 @br_i1_folding2_and(i32 %arg1, i32 %arg2) {
-  %t0 = trunc i32 %arg1 to i1
-  %t1 = trunc i32 %arg2 to i1
-
-  %t2 = and i1 %t0, %t1
-  br i1 %t2, label %target_true, label %target_false
-
-target_true:
-  ret i32 1
-
-target_false:
-  ret i32 0
-}
-; ARM32-LABEL: br_i1_folding2_and
-; ARM32: tst r0, #1
-; ARM32: beq
-; ARM32: tst r1, #1
-; ARM32: beq
-
-define internal i32 @br_i1_folding2_or(i32 %arg1, i32 %arg2) {
-  %t0 = trunc i32 %arg1 to i1
-  %t1 = trunc i32 %arg2 to i1
-
-  %t2 = or i1 %t0, %t1
-  br i1 %t2, label %target_true, label %target_false
-
-target_true:
-  ret i32 1
-
-target_false:
-  ret i32 0
-}
-; ARM32-LABEL: br_i1_folding2_or
-; ARM32: tst r0, #1
-; ARM32: bne
-; ARM32: tst r1, #1
-; ARM32: beq
-
-define internal i32 @br_i1_folding3_and_or(i32 %arg1, i32 %arg2, i32 %arg3) {
-  %t0 = trunc i32 %arg1 to i1
-  %t1 = trunc i32 %arg2 to i1
-  %t2 = trunc i32 %arg3 to i1
-
-  %t3 = and i1 %t0, %t1
-  %t4 = or i1 %t3, %t2
-
-  br i1 %t4, label %target_true, label %target_false
-
-target_true:
-  ret i32 1
-
-target_false:
-  ret i32 0
-}
-; ARM32-LABEL: br_i1_folding3_and_or
-; ARM32: tst r0, #1
-; ARM32: beq
-; ARM32: tst r1, #1
-; ARM32: bne
-; ARM32: tst r2, #1
-; ARM32: beq
-
-define internal i32 @br_i1_folding3_or_and(i32 %arg1, i32 %arg2, i32 %arg3) {
-  %t0 = trunc i32 %arg1 to i1
-  %t1 = trunc i32 %arg2 to i1
-  %t2 = trunc i32 %arg3 to i1
-
-  %t3 = or i1 %t0, %t1
-  %t4 = and i1 %t3, %t2
-
-  br i1 %t4, label %target_true, label %target_false
-
-target_true:
-  ret i32 1
-
-target_false:
-  ret i32 0
-}
-; ARM32-LABEL: br_i1_folding3_or_and
-; ARM32: tst r0, #1
-; ARM32: bne
-; ARM32: tst r1, #1
-; ARM32: beq
-; ARM32: tst r2, #1
-; ARM32: beq
-
-define internal i32 @br_i1_folding4(i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4,
-                                    i32 %arg5) {
-  %t0 = trunc i32 %arg1 to i1
-  %t1 = trunc i32 %arg2 to i1
-  %t2 = trunc i32 %arg3 to i1
-  %t3 = trunc i32 %arg4 to i1
-  %t4 = trunc i32 %arg5 to i1
-
-  %t5 = or i1 %t0, %t1
-  %t6 = and i1 %t5, %t2
-  %t7 = and i1 %t3, %t4
-  %t8 = or i1 %t6, %t7
-  br i1 %t8, label %target_true, label %target_false
-
-target_true:
-  ret i32 1
-
-target_false:
-  ret i32 0
-}
-; ARM32-LABEL: br_i1_folding4
-; ARM32: tst r0, #1
-; ARM32: bne
-; ARM32: tst r1, #1
-; ARM32: beq
-; ARM32: tst r2, #1
-; ARM32: bne
-; ARM32: tst     r3, #1
-; ARM32: beq     [[TARGET:.*]]
-; ARM32: tst     r4, #1
-; ARM32: beq     [[TARGET]]
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/bool-opt.ll b/third_party/subzero/tests_lit/llvm2ice_tests/bool-opt.ll
deleted file mode 100644
index c7a31e0..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/bool-opt.ll
+++ /dev/null
@@ -1,18 +0,0 @@
-; Trivial smoke test of icmp without fused branch opportunity.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s
-
-; Check that correct addressing modes are used for comparing two
-; immediates.
-define internal void @testIcmpImm() {
-entry:
-  %cmp = icmp eq i32 1, 2
-  %cmp_ext = zext i1 %cmp to i32
-  tail call void @use(i32 %cmp_ext)
-  ret void
-}
-; CHECK-LABEL: testIcmpImm
-; CHECK-NOT: cmp {{[0-9]+}},
-
-declare void @use(i32)
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/branch-opt.ll b/third_party/subzero/tests_lit/llvm2ice_tests/branch-opt.ll
deleted file mode 100644
index f5827df..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/branch-opt.ll
+++ /dev/null
@@ -1,310 +0,0 @@
-; Tests the branch optimizations under O2 (against a lack of
-; optimizations under Om1).
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 --command FileCheck --check-prefix=O2 %s
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -Om1 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 --command FileCheck --check-prefix=OM1 %s
-
-; RUN: %if --need=target_ARM32_dump \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32_dump \
-; RUN:   --command FileCheck --check-prefix ARM32O2 %s
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck \
-; RUN:   --check-prefix ARM32OM1 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32O2 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck \
-; RUN:   --check-prefix MIPS32OM1 %s
-
-declare void @dummy()
-
-; An unconditional branch to the next block should be removed.
-define internal void @testUncondToNextBlock() {
-entry:
-  call void @dummy()
-  br label %next
-next:
-  call void @dummy()
-  ret void
-}
-; O2-LABEL: testUncondToNextBlock
-; O2: call
-; There will be nops for bundle align to end (for NaCl), but there should
-; not be a branch.
-; O2-NOT: j
-; O2: call
-
-; OM1-LABEL: testUncondToNextBlock
-; OM1: call
-; OM1-NEXT: jmp
-; OM1: call
-
-; ARM32O2-LABEL: testUncondToNextBlock
-; ARM32O2: bl {{.*}} dummy
-; ARM32O2-NEXT: bl {{.*}} dummy
-
-; ARM32OM1-LABEL: testUncondToNextBlock
-; ARM32OM1: bl {{.*}} dummy
-; ARM32OM1-NEXT: b
-; ARM32OM1-NEXT: bl {{.*}} dummy
-
-; MIPS32O2-LABEL: testUncondToNextBlock
-; MIPS32O2: jal {{.*}} dummy
-; MIPS32O2-NEXT: nop
-; MIPS32O2-LABEL: <.LtestUncondToNextBlock$next>:
-; MIPS32O2-NEXT: jal {{.*}} dummy
-; MIPS32O2-NEXT: nop
-
-; MIPS32OM1-LABEL: testUncondToNextBlock
-; MIPS32OM1: jal {{.*}} dummy
-; MIPS32OM1-NEXT: nop
-; MIPS32OM1-NEXT: b {{.*}} <.LtestUncondToNextBlock$next>
-; MIPS32OM1-NEXT: nop
-; MIPS32OM1-LABEL: <.LtestUncondToNextBlock$next>:
-; MIPS32OM1-NEXT: jal {{.*}} dummy
-; MIPS32OM1-NEXT: nop
-
-; For a conditional branch with a fallthrough to the next block, the
-; fallthrough branch should be removed.
-define internal void @testCondFallthroughToNextBlock(i32 %arg) {
-entry:
-  %cmp = icmp sge i32 %arg, 123
-  br i1 %cmp, label %target, label %fallthrough
-fallthrough:
-  call void @dummy()
-  ret void
-target:
-  call void @dummy()
-  ret void
-}
-; O2-LABEL: testCondFallthroughToNextBlock
-; O2: cmp {{.*}},0x7b
-; O2-NEXT: jge
-; O2-NOT: j
-; O2: call
-; O2: ret
-; O2: call
-; O2: ret
-
-; OM1-LABEL: testCondFallthroughToNextBlock
-; OM1: cmp {{.*}},0x7b
-; OM1: setge
-; OM1: cmp
-; OM1: jne
-; OM1: jmp
-; OM1: call
-; OM1: ret
-; OM1: call
-; OM1: ret
-
-; ARM32O2-LABEL: testCondFallthroughToNextBlock
-; ARM32O2: cmp {{.*}}, #123
-; ARM32O2-NEXT: bge
-; ARM32O2-NEXT: bl
-; ARM32O2: bx lr
-; ARM32O2: bl
-; ARM32O2: bx lr
-
-; ARM32OM1-LABEL: testCondFallthroughToNextBlock
-; ARM32OM1: mov {{.*}}, #0
-; ARM32OM1: cmp {{.*}}, #123
-; ARM32OM1: movge {{.*}}, #1
-; ARM32OM1: tst {{.*}}, #1
-; ARM32OM1: bne
-; ARM32OM1: b
-; ARM32OM1: bl
-; ARM32OM1: bx lr
-; ARM32OM1: bl
-; ARM32OM1: bx lr
-
-; MIPS32O2-LABEL: testCondFallthroughToNextBlock
-; MIPS32O2: li {{.*}},123
-; MIPS32O2: slt {{.*}},{{.*}},{{.*}}
-; MIPS32O2: beqz
-; MIPS32O2: nop
-; MIPS32O2: .LtestCondFallthroughToNextBlock$fallthrough
-; MIPS32O2: jal {{.*}} dummy
-; MIPS32O2: nop
-; MIPS32O2: jr
-; MIPS32O2: nop
-; MIPS32O2: .LtestCondFallthroughToNextBlock$target
-; MIPS32O2: jal {{.*}} dummy
-; MIPS32O2: nop
-; MIPS32O2: jr
-; MIPS32O2: nop
-
-; MIPS32OM1-LABEL: testCondFallthroughToNextBlock
-; MIPS32OM1: li {{.*}},123
-; MIPS32OM1: slt {{.*}},{{.*}},{{.*}}
-; MIPS32OM1: xori {{.*}},{{.*}},{{.*}}
-; MIPS32OM1: beqz
-; MIPS32OM1: nop
-; MIPS32OM1: b
-; MIPS32OM1: nop
-; MIPS32OM1: .LtestCondFallthroughToNextBlock$fallthrough
-; MIPS32OM1: jal {{.*}} dummy
-; MIPS32OM1: nop
-; MIPS32OM1: jr
-; MIPS32OM1: nop
-; MIPS32OM1: .LtestCondFallthroughToNextBlock$target
-; MIPS32OM1: jal {{.*}} dummy
-; MIPS32OM1: nop
-; MIPS32OM1: jr
-; MIPS32OM1: nop
-
-; For a conditional branch with the next block as the target and a
-; different block as the fallthrough, the branch condition should be
-; inverted, the fallthrough block changed to the target, and the
-; branch to the next block removed.
-define internal void @testCondTargetNextBlock(i32 %arg) {
-entry:
-  %cmp = icmp sge i32 %arg, 123
-  br i1 %cmp, label %fallthrough, label %target
-fallthrough:
-  call void @dummy()
-  ret void
-target:
-  call void @dummy()
-  ret void
-}
-; O2-LABEL: testCondTargetNextBlock
-; O2: cmp {{.*}},0x7b
-; O2-NEXT: jl
-; O2-NOT: j
-; O2: call
-; O2: ret
-; O2: call
-; O2: ret
-
-; OM1-LABEL: testCondTargetNextBlock
-; OM1: cmp {{.*}},0x7b
-; OM1: setge
-; OM1: cmp
-; OM1: jne
-; OM1: jmp
-; OM1: call
-; OM1: ret
-; OM1: call
-; OM1: ret
-
-; Note that compare and branch folding isn't implemented yet
-; (compared to x86-32).
-; ARM32O2-LABEL: testCondTargetNextBlock
-; ARM32O2: cmp {{.*}}, #123
-; ARM32O2-NEXT: blt
-; ARM32O2-NEXT: bl
-; ARM32O2: bx lr
-; ARM32O2: bl
-; ARM32O2: bx lr
-
-; ARM32OM1-LABEL: testCondTargetNextBlock
-; ARM32OM1: cmp {{.*}}, #123
-; ARM32OM1: movge {{.*}}, #1
-; ARM32OM1: tst {{.*}}, #1
-; ARM32OM1: bne
-; ARM32OM1: b
-; ARM32OM1: bl
-; ARM32OM1: bx lr
-; ARM32OM1: bl
-; ARM32OM1: bx lr
-
-; MIPS32O2-LABEL: testCondTargetNextBlock
-; MIPS32O2: li {{.*}},123
-; MIPS32O2: slt {{.*}},{{.*}},{{.*}}
-; MIPS32O2: bnez
-; MIPS32O2: nop
-; MIPS32O2: .LtestCondTargetNextBlock$fallthrough
-; MIPS32O2: jal {{.*}} dummy
-; MIPS32O2: nop
-; MIPS32O2: jr
-; MIPS32O2: nop
-; MIPS32O2: .LtestCondTargetNextBlock$target
-; MIPS32O2: jal {{.*}} dummy
-; MIPS32O2: nop
-; MIPS32O2: jr
-; MIPS32O2: nop
-
-; MIPS32OM1-LABEL: testCondTargetNextBlock
-; MIPS32OM1: li {{.*}},123
-; MIPS32OM1: slt {{.*}},{{.*}},{{.*}}
-; MIPS32OM1: xori {{.*}},{{.*}},{{.*}}
-; MIPS32OM1: beqz
-; MIPS32OM1: nop
-; MIPS32OM1: b
-; MIPS32OM1: nop
-; MIPS32OM1: .LtestCondTargetNextBlock$fallthrough
-; MIPS32OM1: jal {{.*}} dummy
-; MIPS32OM1: nop
-; MIPS32OM1: jr
-; MIPS32OM1: nop
-; MIPS32OM1: .LtestCondTargetNextBlock$target
-; MIPS32OM1: jal {{.*}} dummy
-; MIPS32OM1: nop
-; MIPS32OM1: jr
-; MIPS32OM1: nop
-
-; Unconditional branches to the block after a contracted block should be
-; removed.
-define internal void @testUncondToBlockAfterContract() {
-entry:
-  call void @dummy()
-  br label %target
-contract:
-  br label %target
-target:
-  call void @dummy()
-  ret void
-}
-
-; O2-LABEL: testUncondToBlockAfterContract
-; O2: call
-; There will be nops for bundle align to end (for NaCl), but there should
-; not be a branch.
-; O2-NOT: j
-; O2: call
-
-; OM1-LABEL: testUncondToBlockAfterContract
-; OM1: call
-; OM1-NEXT: jmp
-; OM1: call
-
-; ARM32O2-LABEL: testUncondToBlockAfterContract
-; ARM32O2: bl {{.*}} dummy
-; ARM32O2-NEXT: bl {{.*}} dummy
-
-; ARM32OM1-LABEL: testUncondToBlockAfterContract
-; ARM32OM1: bl {{.*}} dummy
-; ARM32OM1-NEXT: b
-; ARM32OM1-NEXT: bl {{.*}} dummy
-
-; MIPS32O2-LABEL: testUncondToBlockAfterContract
-; MIPS32O2: jal {{.*}} dummy
-; MIPS32O2: .LtestUncondToBlockAfterContract$target
-
-; MIPS32OM1-LABEL: testUncondToBlockAfterContract
-; MIPS32OM1: jal {{.*}} dummy
-; MIPS32OM1: b
-; MIPS32OM1: .LtestUncondToBlockAfterContract$target
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/branch-simple.ll b/third_party/subzero/tests_lit/llvm2ice_tests/branch-simple.ll
deleted file mode 100644
index cbe495d..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/branch-simple.ll
+++ /dev/null
@@ -1,37 +0,0 @@
-; 1. Trivial smoke test of compare and branch, with multiple basic
-; blocks.
-; 2. For a conditional branch on a constant boolean value, make sure
-; we don't lower to a cmp instructions with an immediate as the first
-; source operand.
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --args -O2 --verbose inst -threads=0 | FileCheck %s
-; RUN: %p2i -i %s --args -Om1 --verbose inst -threads=0 | FileCheck %s
-
-define internal i32 @simple_cond_branch(i32 %foo, i32 %bar) {
-entry:
-  %r1 = icmp eq i32 %foo, %bar
-  br i1 %r1, label %Equal, label %Unequal
-Equal:
-  ret i32 %foo
-Unequal:
-  ret i32 %bar
-; CHECK-LABEL: simple_cond_branch
-; CHECK: br i1 %r1, label %Equal, label %Unequal
-; CHECK: Equal:
-; CHECK:  ret i32 %foo
-; CHECK: Unequal:
-; CHECK:  ret i32 %bar
-}
-
-define internal i32 @test_br_const() {
-__0:
-  br i1 true, label %__1, label %__2
-__1:
-  ret i32 21
-__2:
-  ret i32 43
-}
-; CHECK-LABEL: test_br_const
-; CHECK-NOT: cmp {{[0-9]*}},
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/callArgs.ll b/third_party/subzero/tests_lit/llvm2ice_tests/callArgs.ll
deleted file mode 100644
index 3aa402d..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/callArgs.ll
+++ /dev/null
@@ -1,54 +0,0 @@
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-
-
-declare void @voidCall5i32(i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5)
-declare void @voidCall5i64(i64 %a1, i64 %a2, i64 %a3, i64 %a4, i64 %a5)
-declare void @voidCalli32i64i32(i32 %a1, i64 %a2, i32 %a3)
-
-;TODO(mohit.bhakkad): Add tests for f32/f64 once legalize() or lowerArgument is
-;available for f32/f64
-
-define internal void @Call() {
-  call void @voidCall5i32(i32 1, i32 2, i32 3, i32 4, i32 5)
-  call void @voidCall5i64(i64 1, i64 2, i64 3, i64 4, i64 5)
-  call void @voidCalli32i64i32(i32 1, i64 2, i32 3)
-  ret void
-}
-; MIPS32: li    {{.*}},5
-; MIPS32: sw	{{.*}},16(sp)
-; MIPS32: li	a0,1
-; MIPS32: li	a1,2
-; MIPS32: li	a2,3
-; MIPS32: li	a3,4
-; MIPS32: jal
-
-; MIPS32: li	{{.*}},0
-; MIPS32: li	{{.*}},3
-; MIPS32: sw	{{.*}},20(sp)
-; MIPS32: sw	{{.*}},16(sp)
-; MIPS32: li	{{.*}},0
-; MIPS32: li	{{.*}},4
-; MIPS32: sw	{{.*}},28(sp)
-; MIPS32: sw	{{.*}},24(sp)
-; MIPS32: li	{{.*}},0
-; MIPS32: li	{{.*}},5
-; MIPS32: sw	{{.*}},36(sp)
-; MIPS32: sw	{{.*}},32(sp)
-; MIPS32: li	a0,1
-; MIPS32: li	a1,0
-; MIPS32: li	a2,2
-; MIPS32: li	a3,0
-; MIPS32: jal
-
-; MIPS32: li	{{.*}},3
-; MIPS32: sw	{{.*}},16(sp)
-; MIPS32: li	a0,1
-; MIPS32: li	a2,2
-; MIPS32: li	a3,0
-; MIPS32: jal
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/callindirect.pnacl.ll b/third_party/subzero/tests_lit/llvm2ice_tests/callindirect.pnacl.ll
deleted file mode 100644
index fded7f4..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/callindirect.pnacl.ll
+++ /dev/null
@@ -1,209 +0,0 @@
-; Test of multiple indirect calls to the same target.  Each call
-; should be to the same operand, whether it's in a register or on the
-; stack.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-; RUN: %if --need=allow_dump --need=target_X8632 --command %p2i --filetype=asm \
-; RUN:     --assemble --disassemble -i %s --args -O2 \
-; RUN:   | %if --need=allow_dump --need=target_X8632 --command FileCheck %s
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -Om1 \
-; RUN:   | %if --need=target_X8632 --command FileCheck --check-prefix=OPTM1 %s
-
-; RUN: %if --need=target_X8664 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8664 -i %s --args -O2 \
-; RUN:   | %if --need=target_X8664 --command FileCheck --check-prefix X8664 %s
-; RUN: %if --need=allow_dump --need=target_X8664 --command %p2i --filetype=asm \
-; RUN:     --assemble --disassemble --target x8664 -i %s --args -O2 \
-; RUN:   | %if --need=allow_dump --need=target_X8664 \
-; RUN:     --command FileCheck --check-prefix=X8664 %s
-; RUN: %if --need=target_X8664 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8664 -i %s --args -Om1 \
-; RUN:   | %if --need=target_X8664 \
-; RUN:     --command FileCheck --check-prefix=X8664-OPTM1 %s
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -O2 \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 %s
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -Om1 \
-; RUN:   | %if --need=target_ARM32_dump \
-; RUN:   --command FileCheck --check-prefix ARM32 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:   mips32 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-@__init_array_start = internal constant [0 x i8] zeroinitializer, align 4
-@__fini_array_start = internal constant [0 x i8] zeroinitializer, align 4
-@__tls_template_start = internal constant [0 x i8] zeroinitializer, align 8
-@__tls_template_alignment = internal constant [4 x i8] c"\01\00\00\00", align 4
-
-define internal void @CallIndirect(i32 %f) {
-entry:
-  %__1 = inttoptr i32 %f to void ()*
-  call void %__1()
-  call void %__1()
-  call void %__1()
-  call void %__1()
-  call void %__1()
-  call void %__1()
-  ret void
-}
-; CHECK-LABEL: CallIndirect
-; Use the first call as a barrier in case the register allocator decides to use
-; a scratch register for it but a common preserved register for the rest.
-; CHECK: call
-; CHECK: call [[REGISTER:[a-z]+]]
-; CHECK: call [[REGISTER]]
-; CHECK: call [[REGISTER]]
-; CHECK: call [[REGISTER]]
-; CHECK: call [[REGISTER]]
-;
-; OPTM1-LABEL: CallIndirect
-; OPTM1: call [[TARGET:.+]]
-; OPTM1: call [[TARGET]]
-; OPTM1: call [[TARGET]]
-; OPTM1: call [[TARGET]]
-; OPTM1: call [[TARGET]]
-;
-; X8664-LABEL: CallIndirect
-; Use the first call as a barrier so we skip the movs in the function prolog.
-; X8664: call r{{..}}
-; X8664: mov e[[REG:..]],
-; X8664-NEXT: call r[[REG]]
-; X8664: mov e[[REG:..]],
-; X8664-NEXT: call r[[REG]]
-; X8664: mov e[[REG:..]],
-; X8664-NEXT: call r[[REG]]
-; X8664: call r{{..}}
-;
-; X8664-OPTM1-LABEL: CallIndirect
-; X8664-OPTM1: mov e[[REG:..]],DWORD PTR
-; X8664-OPTM1: call r[[REG]]
-; X8664-OPTM1: mov e[[REG:..]],DWORD PTR
-; X8664-OPTM1: call r[[REG]]
-; X8664-OPTM1: mov e[[REG:..]],DWORD PTR
-; X8664-OPTM1: call r[[REG]]
-; X8664-OPTM1: mov e[[REG:..]],DWORD PTR
-; X8664-OPTM1: call r[[REG]]
-; X8664-OPTM1: mov e[[REG:..]],DWORD PTR
-; X8664-OPTM1: call r[[REG]]
-;
-; ARM32-LABEL: CallIndirect
-; ARM32: blx [[REGISTER:r.*]]
-; ARM32: blx [[REGISTER]]
-; ARM32: blx [[REGISTER]]
-; ARM32: blx [[REGISTER]]
-; ARM32: blx [[REGISTER]]
-
-; MIPS32-LABEL: CallIndirect
-; MIPS32: jalr	[[REGISTER:.*]]
-; MIPS32: jalr	[[REGISTER]]
-; MIPS32: jalr	[[REGISTER]]
-; MIPS32: jalr	[[REGISTER]]
-
-@fp_v = internal global [4 x i8] zeroinitializer, align 4
-
-define internal void @CallIndirectGlobal() {
-entry:
-  %fp_ptr_i32 = bitcast [4 x i8]* @fp_v to i32*
-  %fp_ptr = load i32, i32* %fp_ptr_i32, align 1
-  %fp = inttoptr i32 %fp_ptr to void ()*
-  call void %fp()
-  call void %fp()
-  call void %fp()
-  call void %fp()
-  ret void
-}
-; CHECK-LABEL: CallIndirectGlobal
-; Allow the first call to be to a different register because of simple
-; availability optimization.
-; CHECK: call
-; CHECK: call [[REGISTER:[a-z]+]]
-; CHECK: call [[REGISTER]]
-; CHECK: call [[REGISTER]]
-;
-; OPTM1-LABEL: CallIndirectGlobal
-; OPTM1: call [[TARGET:.+]]
-; OPTM1: call [[TARGET]]
-; OPTM1: call [[TARGET]]
-; OPTM1: call [[TARGET]]
-;
-; X8664-LABEL: CallIndirectGlobal
-; X8664: call r[[REG]]
-; X8664: mov e[[REG:..]]
-; X8664-NEXT: call r[[REG]]
-; X8664: mov e[[REG:..]]
-; X8664-NEXT: call r[[REG]]
-; X8664: call r{{..}}
-;
-; X8664-OPTM1-LABEL: CallIndirectGlobal
-; X8664-OPTM1: mov e[[REG:..]],DWORD PTR
-; X8664-OPTM1: call r[[REG]]
-; X8664-OPTM1: mov e[[REG:..]],DWORD PTR
-; X8664-OPTM1: call r[[REG]]
-; X8664-OPTM1: mov e[[REG:..]],DWORD PTR
-; X8664-OPTM1: call r[[REG]]
-; X8664-OPTM1: mov e[[REG:..]],DWORD PTR
-; X8664-OPTM1: call r[[REG]]
-;
-; ARM32-LABEL: CallIndirectGlobal
-; ARM32: blx {{r.*}}
-; ARM32: blx [[REGISTER:r[0-9]*]]
-; ARM32: blx [[REGISTER]]
-; ARM32: blx [[REGISTER]]
-
-; MIPS32-LABEL: CallIndirectGlobal
-; MIPS32: jalr	[[REGISTER:.*]]
-; MIPS32: jalr	[[REGISTER]]
-; MIPS32: jalr	[[REGISTER]]
-; MIPS32: jalr	[[REGISTER]]
-
-; Calling an absolute address is used for non-IRT PNaCl pexes to directly
-; access syscall trampolines. This is not really an indirect call, but
-; there is a cast from int to pointer first.
-define internal void @CallConst() {
-entry:
-  %__1 = inttoptr i32 66496 to void ()*
-  call void %__1()
-  call void %__1()
-  call void %__1()
-  ret void
-}
-
-; CHECK-LABEL: CallConst
-; CHECK: e8 bc 03 01 00 call {{[0-9a-f]+}} {{.*}} R_386_PC32 *ABS*
-; CHECK: e8 bc 03 01 00 call {{[0-9a-f]+}} {{.*}} R_386_PC32 *ABS*
-; CHECK: e8 bc 03 01 00 call {{[0-9a-f]+}} {{.*}} R_386_PC32 *ABS*
-;
-; OPTM1-LABEL: CallConst
-; OPTM1: e8 bc 03 01 00 call {{[0-9a-f]+}} {{.*}} R_386_PC32 *ABS*
-; OPTM1: e8 bc 03 01 00 call {{[0-9a-f]+}} {{.*}} R_386_PC32 *ABS*
-; OPTM1: e8 bc 03 01 00 call {{[0-9a-f]+}} {{.*}} R_386_PC32 *ABS*
-;
-; X8664-LABEL: CallConst
-; TODO(jpp): fix absolute call emission.
-; These are broken: the emitted code should be
-;    e8 00 00 00 00 call {{.*}} *ABS*+0x103bc
-;
-; X8664-OPTM1-LABEL: CallConst
-; TODO(jpp): fix absolute call emission.
-; These are broken: the emitted code should be
-;    e8 00 00 00 00 call {{.*}} *ABS*+0x103bc
-;
-; ARM32-LABEL: CallConst
-; ARM32: movw [[REGISTER:r.*]], #960
-; ARM32: movt [[REGISTER]], #1
-; ARM32: blx [[REGISTER]]
-; The legalization of the constant could be shared, but it isn't.
-; ARM32: movw [[REGISTER:r.*]], #960
-; ARM32: blx [[REGISTER]]
-; ARM32: blx [[REGISTER]]
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/cmp-opt.ll b/third_party/subzero/tests_lit/llvm2ice_tests/cmp-opt.ll
deleted file mode 100644
index fefd226..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/cmp-opt.ll
+++ /dev/null
@@ -1,55 +0,0 @@
-; Simple test of non-fused compare/branch.
-
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols | FileCheck --check-prefix=OPTM1 %s
-
-define internal void @testBool(i32 %a, i32 %b) {
-entry:
-  %cmp = icmp slt i32 %a, %b
-  %cmp1 = icmp sgt i32 %a, %b
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  %cmp_ext = zext i1 %cmp to i32
-  tail call void @use(i32 %cmp_ext)
-  br label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  br i1 %cmp1, label %if.then5, label %if.end7
-
-if.then5:                                         ; preds = %if.end
-  %cmp1_ext = zext i1 %cmp1 to i32
-  tail call void @use(i32 %cmp1_ext)
-  br label %if.end7
-
-if.end7:                                          ; preds = %if.then5, %if.end
-  ret void
-}
-
-declare void @use(i32)
-
-; CHECK-LABEL: testBool
-; Two bool computations
-; CHECK:      cmp
-; CHECK:      cmp
-; Test first bool
-; CHECK:      cmp
-; CHECK:      call
-; Test second bool
-; CHECK:      cmp
-; CHECK:      call
-; CHECK:      ret
-;
-; OPTM1-LABEL: testBool
-; Two bool computations
-; OPTM1:      cmp
-; OPTM1:      cmp
-; Test first bool
-; OPTM1:      cmp
-; OPTM1:      call
-; Test second bool
-; OPTM1:      cmp
-; OPTM1:      call
-; OPTM1:      ret
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/commutativity.ll b/third_party/subzero/tests_lit/llvm2ice_tests/commutativity.ll
deleted file mode 100644
index ca5f6c7..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/commutativity.ll
+++ /dev/null
@@ -1,145 +0,0 @@
-; Test the lowering sequence for commutative operations.  If there is a source
-; operand whose lifetime ends in an operation, it should be the first operand,
-; eliminating the need for a move to start the new lifetime.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:   mips32 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-define internal i32 @integerAddLeft(i32 %a, i32 %b) {
-entry:
-  %tmp = add i32 %a, %b
-  %result = add i32 %a, %tmp
-  ret i32 %result
-}
-; CHECK-LABEL: integerAddLeft
-; CHECK-NEXT: mov {{e..}},DWORD PTR
-; CHECK-NEXT: mov {{e..}},DWORD PTR
-; CHECK-NEXT: add {{e..}},{{e..}}
-; CHECK-NEXT: add {{e..}},{{e..}}
-; MIPS32-LABEL: integerAddLeft
-; MIPS32: 	move	v0,a0
-; MIPS32: 	addu	v0,v0,a1
-; MIPS32: 	addu	a0,a0,v0
-
-define internal i32 @integerAddRight(i32 %a, i32 %b) {
-entry:
-  %tmp = add i32 %a, %b
-  %result = add i32 %b, %tmp
-  ret i32 %result
-}
-; CHECK-LABEL: integerAddRight
-; CHECK-NEXT: mov {{e..}},DWORD PTR
-; CHECK-NEXT: mov {{e..}},DWORD PTR
-; CHECK-NEXT: add {{e..}},{{e..}}
-; CHECK-NEXT: add {{e..}},{{e..}}
-; MIPS32-LABEL: integerAddRight
-; MIPS32: 	move	v0,a1
-; MIPS32: 	addu	a0,a0,v0
-; MIPS32: 	addu	a1,a1,a0
-
-define internal i32 @integerMultiplyLeft(i32 %a, i32 %b) {
-entry:
-  %tmp = mul i32 %a, %b
-  %result = mul i32 %a, %tmp
-  ret i32 %result
-}
-; CHECK-LABEL: integerMultiplyLeft
-; CHECK-NEXT: mov {{e..}},DWORD PTR
-; CHECK-NEXT: mov {{e..}},DWORD PTR
-; CHECK-NEXT: imul {{e..}},{{e..}}
-; CHECK-NEXT: imul {{e..}},{{e..}}
-; MIPS32-LABEL: integerMultiplyLeft
-; MIPS32: 	move	v0,a0
-; MIPS32: 	mul	v0,v0,a1
-; MIPS32: 	mul	a0,a0,v0
-
-define internal i32 @integerMultiplyRight(i32 %a, i32 %b) {
-entry:
-  %tmp = mul i32 %a, %b
-  %result = mul i32 %b, %tmp
-  ret i32 %result
-}
-; CHECK-LABEL: integerMultiplyRight
-; CHECK-NEXT: mov {{e..}},DWORD PTR
-; CHECK-NEXT: mov {{e..}},DWORD PTR
-; CHECK-NEXT: imul {{e..}},{{e..}}
-; CHECK-NEXT: imul {{e..}},{{e..}}
-; MIPS32-LABEL: integerMultiplyRight
-; MIPS32: 	move	v0,a1
-; MIPS32: 	mul	a0,a0,v0
-; MIPS32: 	mul	a1,a1,a0
-
-define internal float @floatAddLeft(float %a, float %b) {
-entry:
-  %tmp = fadd float %a, %b
-  %result = fadd float %a, %tmp
-  ret float %result
-}
-; CHECK-LABEL: floatAddLeft
-; CHECK-NEXT: sub esp,0x1c
-; CHECK-NEXT: movss xmm0,DWORD PTR
-; CHECK-NEXT: movss xmm1,DWORD PTR
-; CHECK-NEXT: addss xmm1,xmm0
-; CHECK-NEXT: addss xmm0,xmm1
-; MIPS32-LABEL: floatAddLeft
-; MIPS32: 	mov.s	$f0,$f12
-; MIPS32: 	add.s	$f0,$f0,$f14
-; MIPS32: 	add.s	$f12,$f12,$f0
-
-define internal float @floatAddRight(float %a, float %b) {
-entry:
-  %tmp = fadd float %a, %b
-  %result = fadd float %b, %tmp
-  ret float %result
-}
-; CHECK-LABEL: floatAddRight
-; CHECK-NEXT: sub esp,0x1c
-; CHECK-NEXT: movss xmm0,DWORD PTR
-; CHECK-NEXT: movss xmm1,DWORD PTR
-; CHECK-NEXT: addss xmm0,xmm1
-; CHECK-NEXT: addss xmm1,xmm0
-; MIPS32-LABEL: floatAddRight
-; MIPS32: 	mov.s	$f0,$f14
-; MIPS32: 	add.s	$f12,$f12,$f0
-; MIPS32: 	add.s	$f14,$f14,$f12
-
-define internal float @floatMultiplyLeft(float %a, float %b) {
-entry:
-  %tmp = fmul float %a, %b
-  %result = fmul float %a, %tmp
-  ret float %result
-}
-; CHECK-LABEL: floatMultiplyLeft
-; CHECK-NEXT: sub esp,0x1c
-; CHECK-NEXT: movss xmm0,DWORD PTR
-; CHECK-NEXT: movss xmm1,DWORD PTR
-; CHECK-NEXT: mulss xmm1,xmm0
-; CHECK-NEXT: mulss xmm0,xmm1
-; MIPS32-LABEL: floatMultiplyLeft
-; MIPS32: 	mov.s	$f0,$f12
-; MIPS32: 	mul.s	$f0,$f0,$f14
-; MIPS32: 	mul.s	$f12,$f12,$f0
-
-define internal float @floatMultiplyRight(float %a, float %b) {
-entry:
-  %tmp = fmul float %a, %b
-  %result = fmul float %b, %tmp
-  ret float %result
-}
-; CHECK-LABEL: floatMultiplyRight
-; CHECK-NEXT: sub esp,0x1c
-; CHECK-NEXT: movss xmm0,DWORD PTR
-; CHECK-NEXT: movss xmm1,DWORD PTR
-; CHECK-NEXT: mulss xmm0,xmm1
-; CHECK-NEXT: mulss xmm1,xmm0
-; MIPS32-LABEL: floatMultiplyRight
-; MIPS32: 	mov.s	$f0,$f14
-; MIPS32: 	mul.s	$f12,$f12,$f0
-; MIPS32: 	mul.s	$f14,$f14,$f12
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/cond-br-same-target.ll b/third_party/subzero/tests_lit/llvm2ice_tests/cond-br-same-target.ll
deleted file mode 100644
index f4a3876..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/cond-br-same-target.ll
+++ /dev/null
@@ -1,23 +0,0 @@
-; Test conditional branch where targets are the same.
-; Tests issue: https://code.google.com/p/nativeclient/issues/detail?id=4212
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --insts | FileCheck %s
-
-define internal void @f(i32 %foo, i32 %bar) {
-entry:
-  %c = icmp ult i32 %foo, %bar
-  br i1 %c, label %block, label %block
-block:
-  ret void
-}
-
-; Note that the branch is converted to an unconditional branch.
-
-; CHECK:      define internal void @f(i32 %foo, i32 %bar) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %c = icmp ult i32 %foo, %bar
-; CHECK-NEXT:   br label %block
-; CHECK-NEXT: block:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/cond-branch.ll b/third_party/subzero/tests_lit/llvm2ice_tests/cond-branch.ll
deleted file mode 100644
index d601056..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/cond-branch.ll
+++ /dev/null
@@ -1,187 +0,0 @@
-; Tests for conditional branch instructions
-
-; RUN: %if --need=allow_dump --need=target_MIPS32 --command %p2i \
-; RUN:   --filetype=asm --target mips32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=allow_dump --need=target_MIPS32 --command FileCheck %s \
-; RUN:   --check-prefix=COMMON --check-prefix=MIPS32
-
-; RUN: %if --need=allow_dump --need=target_MIPS32 --command %p2i \
-; RUN:   --filetype=asm --target mips32 -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=allow_dump --need=target_MIPS32 --command FileCheck %s \
-; RUN:   --check-prefix=COMMON --check-prefix=MIPS32-OM1
-
-define internal i32 @cond_br_eq(i32 %arg1, i32 %arg2) {
-entry:
-  %cmp1 = icmp eq i32 %arg1, %arg2
-  br i1 %cmp1, label %branch1, label %branch2
-branch1:
-  ret i32 1
-branch2:
-  ret i32 2
-}
-; COMMON-LABEL: cond_br_eq
-; MIPS32: bne {{.*}} .Lcond_br_eq$branch2
-; MIPS32-NEXT: .Lcond_br_eq$branch1
-; MIPS32-OM1: xor
-; MIPS32-OM1: sltiu {{.*}}, {{.*}}, 1
-; MIPS32-OM1: beqz {{.*}} .Lcond_br_eq$branch2
-; MIPS32-OM1-NEXT: b .Lcond_br_eq$branch1
-
-define internal i32 @cond_br_ne(i32 %arg1, i32 %arg2) {
-entry:
-  %cmp1 = icmp ne i32 %arg1, %arg2
-  br i1 %cmp1, label %branch1, label %branch2
-branch1:
-  ret i32 1
-branch2:
-  ret i32 2
-}
-; COMMON-LABEL: cond_br_ne
-; MIPS32: beq {{.*}} .Lcond_br_ne$branch2
-; MIPS32-NEXT: .Lcond_br_ne$branch1
-; MIPS32-OM1: xor
-; MIPS32-OM1: sltu {{.*}}, $zero, {{.*}}
-; MIPS32-OM1: beqz {{.*}} .Lcond_br_ne$branch2
-; MIPS32-OM1-NEXT: b .Lcond_br_ne$branch1
-
-define internal i32 @cond_br_slt(i32 %arg1, i32 %arg2) {
-entry:
-  %cmp1 = icmp slt i32 %arg1, %arg2
-  br i1 %cmp1, label %branch1, label %branch2
-branch1:
-  ret i32 1
-branch2:
-  ret i32 2
-}
-; COMMON-LABEL: cond_br_slt
-; MIPS32: slt
-; MIPS32: beqz {{.*}} .Lcond_br_slt$branch2
-; MIPS32-NEXT: .Lcond_br_slt$branch1
-; MIPS32-OM1: slt
-; MIPS32-OM1: beqz {{.*}} .Lcond_br_slt$branch2
-; MIPS32-OM1-NEXT: b .Lcond_br_slt$branch1
-
-define internal i32 @cond_br_sle(i32 %arg1, i32 %arg2) {
-entry:
-  %cmp1 = icmp sle i32 %arg1, %arg2
-  br i1 %cmp1, label %branch1, label %branch2
-branch1:
-  ret i32 1
-branch2:
-  ret i32 2
-}
-; COMMON-LABEL: cond_br_sle
-; MIPS32: slt
-; MIPS32: bnez {{.*}} .Lcond_br_sle$branch2
-; MIPS32-NEXT: .Lcond_br_sle$branch1
-; MIPS32-OM1: slt
-; MIPS32-OM1: xori {{.*}}, {{.*}}, 1
-; MIPS32-OM1: beqz {{.*}} .Lcond_br_sle$branch2
-; MIPS32-OM1-NEXT: b .Lcond_br_sle$branch1
-
-define internal i32 @cond_br_sgt(i32 %arg1, i32 %arg2) {
-entry:
-  %cmp1 = icmp sgt i32 %arg1, %arg2
-  br i1 %cmp1, label %branch1, label %branch2
-branch1:
-  ret i32 1
-branch2:
-  ret i32 2
-}
-; COMMON-LABEL: cond_br_sgt
-; MIPS32: slt
-; MIPS32-NEXT: beqz {{.*}} .Lcond_br_sgt$branch2
-; MIPS32-NEXT: .Lcond_br_sgt$branch1
-; MIPS32-OM1: slt
-; MIPS32-OM1: beqz {{.*}} .Lcond_br_sgt$branch2
-; MIPS32-OM1-NEXT: b .Lcond_br_sgt$branch1
-
-define internal i32 @cond_br_sge(i32 %arg1, i32 %arg2) {
-entry:
-  %cmp1 = icmp sge i32 %arg1, %arg2
-  br i1 %cmp1, label %branch1, label %branch2
-branch1:
-  ret i32 1
-branch2:
-  ret i32 2
-}
-; COMMON-LABEL: cond_br_sge
-; MIPS32: slt
-; MIPS32: bnez {{.*}} .Lcond_br_sge$branch2
-; MIPS32-NEXT: .Lcond_br_sge$branch1
-; MIPS32-OM1: slt
-; MIPS32-OM1: xori {{.*}}, {{.*}}, 1
-; MIPS32-OM1: beqz {{.*}} .Lcond_br_sge$branch2
-; MIPS32-OM1-NEXT: b .Lcond_br_sge$branch1
-
-define internal i32 @cond_br_ugt(i32 %arg1, i32 %arg2) {
-entry:
-  %cmp1 = icmp ugt i32 %arg1, %arg2
-  br i1 %cmp1, label %branch1, label %branch2
-branch1:
-  ret i32 1
-branch2:
-  ret i32 2
-}
-; COMMON-LABEL: cond_br_ugt
-; MIPS32: sltu
-; MIPS32: beqz {{.*}} .Lcond_br_ugt$branch2
-; MIPS32-NEXT: .Lcond_br_ugt$branch1
-; MIPS32-OM1: sltu
-; MIPS32-OM1: beqz {{.*}} .Lcond_br_ugt$branch2
-; MIPS32-OM1-NEXT: b .Lcond_br_ugt$branch1
-
-define internal i32 @cond_br_uge(i32 %arg1, i32 %arg2) {
-entry:
-  %cmp1 = icmp uge i32 %arg1, %arg2
-  br i1 %cmp1, label %branch1, label %branch2
-branch1:
-  ret i32 1
-branch2:
-  ret i32 2
-}
-; COMMON-LABEL: cond_br_uge
-; MIPS32: sltu
-; MIPS32: bnez {{.*}} .Lcond_br_uge$branch2
-; MIPS32-NEXT: .Lcond_br_uge$branch1
-; MIPS32-OM1: sltu
-; MIPS32-OM1: xori {{.*}}, {{.*}}, 1
-; MIPS32-OM1: beqz {{.*}} .Lcond_br_uge$branch2
-; MIPS32-OM1-NEXT: b .Lcond_br_uge$branch1
-
-define internal i32 @cond_br_ult(i32 %arg1, i32 %arg2) {
-entry:
-  %cmp1 = icmp ult i32 %arg1, %arg2
-  br i1 %cmp1, label %branch1, label %branch2
-branch1:
-  ret i32 1
-branch2:
-  ret i32 2
-}
-; COMMON-LABEL: cond_br_ult
-; MIPS32: sltu
-; MIPS32: beqz {{.*}} .Lcond_br_ult$branch2
-; MIPS32-NEXT: .Lcond_br_ult$branch1
-; MIPS32-OM1: sltu
-; MIPS32-OM1: beqz {{.*}} .Lcond_br_ult$branch2
-; MIPS32-OM1-NEXT: b .Lcond_br_ult$branch1
-
-define internal i32 @cond_br_ule(i32 %arg1, i32 %arg2) {
-entry:
-  %cmp1 = icmp ule i32 %arg1, %arg2
-  br i1 %cmp1, label %branch1, label %branch2
-branch1:
-  ret i32 1
-branch2:
-  ret i32 2
-}
-; COMMON-LABEL: cond_br_ule
-; MIPS32: sltu
-; MIPS32: bnez {{.*}} .Lcond_br_ule$branch2
-; MIPS32-NEXT: .Lcond_br_ule$branch1
-; MIPS32-OM1: sltu
-; MIPS32-OM1: xori {{.*}}, {{.*}}, 1
-; MIPS32-OM1: beqz {{.*}} .Lcond_br_ule$branch2
-; MIPS32-OM1-NEXT: b .Lcond_br_ule$branch1
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/contract.ll b/third_party/subzero/tests_lit/llvm2ice_tests/contract.ll
deleted file mode 100644
index 499ab69..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/contract.ll
+++ /dev/null
@@ -1,17 +0,0 @@
-; This tests that an empty node pointing to itself is not contracted.
-; https://code.google.com/p/nativeclient/issues/detail?id=4307
-;
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:   | FileCheck %s
-
-define internal void @SimpleBranch() {
-label0:
-  br label %label2
-label1:
-  br label %label1
-label2:
-  br label %label1
-}
-
-; CHECK-LABEL: SimpleBranch
-; CHECK-NEXT: jmp 0 <SimpleBranch>
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/convert.ll b/third_party/subzero/tests_lit/llvm2ice_tests/convert.ll
deleted file mode 100644
index 743cdad..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/convert.ll
+++ /dev/null
@@ -1,459 +0,0 @@
-; Simple test of signed and unsigned integer conversions.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -Om1 \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -O2 \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 %s
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -Om1 \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:   mips32 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-@i8v = internal global [1 x i8] zeroinitializer, align 1
-@i16v = internal global [2 x i8] zeroinitializer, align 2
-@i32v = internal global [4 x i8] zeroinitializer, align 4
-@i64v = internal global [8 x i8] zeroinitializer, align 8
-@u8v = internal global [1 x i8] zeroinitializer, align 1
-@u16v = internal global [2 x i8] zeroinitializer, align 2
-@u32v = internal global [4 x i8] zeroinitializer, align 4
-@u64v = internal global [8 x i8] zeroinitializer, align 8
-
-define internal void @from_int8() {
-entry:
-  %__0 = bitcast [1 x i8]* @i8v to i8*
-  %v0 = load i8, i8* %__0, align 1
-  %v1 = sext i8 %v0 to i16
-  %__3 = bitcast [2 x i8]* @i16v to i16*
-  store i16 %v1, i16* %__3, align 1
-  %v2 = sext i8 %v0 to i32
-  %__5 = bitcast [4 x i8]* @i32v to i32*
-  store i32 %v2, i32* %__5, align 1
-  %v3 = sext i8 %v0 to i64
-  %__7 = bitcast [8 x i8]* @i64v to i64*
-  store i64 %v3, i64* %__7, align 1
-  ret void
-}
-; CHECK-LABEL: from_int8
-; CHECK: mov {{.*}},{{(BYTE PTR)?}}
-; CHECK: movsx {{.*}},{{[a-d]l|BYTE PTR}}
-; CHECK: mov {{(WORD PTR)?}}
-; CHECK: movsx
-; CHECK: mov {{(DWORD PTR)?}}
-; CHECK: movsx
-; CHECK: sar {{.*}},0x1f
-; CHECK-DAG: ds:0x{{.}},{{.*}}{{i64v|.bss}}
-; CHECK-DAG: ds:0x{{.}},{{.*}}{{i64v|.bss}}
-
-; ARM32-LABEL: from_int8
-; ARM32: movw {{.*}}i8v
-; ARM32: ldrb
-; ARM32: sxtb
-; ARM32: movw {{.*}}i16v
-; ARM32: strh
-; ARM32: sxtb
-; ARM32: movw {{.*}}i32v
-; ARM32: str r
-; ARM32: sxtb
-; ARM32: asr
-; ARM32: movw {{.*}}i64v
-; ARM32-DAG: str r{{.*}}, [r{{[0-9]+}}]
-; ARM32-DAG: str r{{.*}}, [{{.*}}, #4]
-
-; MIPS32-LABEL: from_int8
-; MIPS32: 	lui	{{.*}}	i8v
-; MIPS32: 	addiu	{{.*}}	i8v
-; MIPS32: 	lb
-; MIPS32: 	move
-; MIPS32: 	sll	{{.*}},0x18
-; MIPS32: 	sra	{{.*}},0x18
-; MIPS32: 	lui	{{.*}}	i16v
-; MIPS32: 	addiu	{{.*}}	i16v
-; MIPS32: 	sh
-; MIPS32: 	move
-; MIPS32: 	sll	{{.*}},0x18
-; MIPS32: 	sra	{{.*}},0x18
-; MIPS32: 	lui	{{.*}}	i32v
-; MIPS32: 	addiu	{{.*}}	i32v
-; MIPS32: 	sw
-; MIPS32: 	sll	{{.*}},0x18
-; MIPS32: 	sra	{{.*}},0x18
-; MIPS32: 	sra	{{.*}},0x1f
-; MIPS32: 	lui	{{.*}}	i64v
-; MIPS32: 	addiu	{{.*}}	i64v
-
-define internal void @from_int16() {
-entry:
-  %__0 = bitcast [2 x i8]* @i16v to i16*
-  %v0 = load i16, i16* %__0, align 1
-  %v1 = trunc i16 %v0 to i8
-  %__3 = bitcast [1 x i8]* @i8v to i8*
-  store i8 %v1, i8* %__3, align 1
-  %v2 = sext i16 %v0 to i32
-  %__5 = bitcast [4 x i8]* @i32v to i32*
-  store i32 %v2, i32* %__5, align 1
-  %v3 = sext i16 %v0 to i64
-  %__7 = bitcast [8 x i8]* @i64v to i64*
-  store i64 %v3, i64* %__7, align 1
-  ret void
-}
-; CHECK-LABEL: from_int16
-; CHECK: mov {{.*}},{{(WORD PTR)?}}
-; CHECK: 0x{{.}} {{.*}}{{i16v|.bss}}
-; CHECK: movsx e{{.*}},{{.*x|[ds]i|bp|WORD PTR}}
-; CHECK: 0x{{.}},{{.*}}{{i32v|.bss}}
-; CHECK: movsx e{{.*}},{{.*x|[ds]i|bp|WORD PTR}}
-; CHECK: sar {{.*}},0x1f
-; CHECK: 0x{{.}},{{.*}}{{i64v|.bss}}
-
-; ARM32-LABEL: from_int16
-; ARM32: movw {{.*}}i16v
-; ARM32: ldrh
-; ARM32: movw {{.*}}i8v
-; ARM32: strb
-; ARM32: sxth
-; ARM32: movw {{.*}}i32v
-; ARM32: str r
-; ARM32: sxth
-; ARM32: asr
-; ARM32: movw {{.*}}i64v
-; ARM32: str r
-
-; MIPS32-LABEL: from_int16
-; MIPS32: 	lui	{{.*}}	i16v
-; MIPS32: 	addiu	{{.*}}	i16v
-; MIPS32: 	lh
-; MIPS32: 	move
-; MIPS32: 	lui	{{.*}}	i8v
-; MIPS32: 	addiu	{{.*}}	i8v
-; MIPS32: 	sb
-; MIPS32: 	move
-; MIPS32: 	sll	{{.*}},0x10
-; MIPS32: 	sra	{{.*}},0x10
-; MIPS32: 	lui	{{.*}}	i32v
-; MIPS32: 	addiu	{{.*}}	i32v
-; MIPS32: 	sw
-; MIPS32: 	sll	{{.*}},0x10
-; MIPS32: 	sra	{{.*}},0x10
-; MIPS32: 	sra	{{.*}},0x1f
-; MIPS32: 	lui	{{.*}}	i64v
-; MIPS32: 	addiu	{{.*}}	i64v
-
-define internal void @from_int32() {
-entry:
-  %__0 = bitcast [4 x i8]* @i32v to i32*
-  %v0 = load i32, i32* %__0, align 1
-  %v1 = trunc i32 %v0 to i8
-  %__3 = bitcast [1 x i8]* @i8v to i8*
-  store i8 %v1, i8* %__3, align 1
-  %v2 = trunc i32 %v0 to i16
-  %__5 = bitcast [2 x i8]* @i16v to i16*
-  store i16 %v2, i16* %__5, align 1
-  %v3 = sext i32 %v0 to i64
-  %__7 = bitcast [8 x i8]* @i64v to i64*
-  store i64 %v3, i64* %__7, align 1
-  ret void
-}
-; CHECK-LABEL: from_int32
-; CHECK: 0x{{.}} {{.*}} {{i32v|.bss}}
-; CHECK: 0x{{.}},{{.*}} {{i8v|.bss}}
-; CHECK: 0x{{.}},{{.*}} {{i16v|.bss}}
-; CHECK: sar {{.*}},0x1f
-; CHECK: 0x{{.}},{{.*}} {{i64v|.bss}}
-
-; ARM32-LABEL: from_int32
-; ARM32: movw {{.*}}i32v
-; ARM32: ldr r
-; ARM32: movw {{.*}}i8v
-; ARM32: strb
-; ARM32: movw {{.*}}i16v
-; ARM32: strh
-; ARM32: asr
-; ARM32: movw {{.*}}i64v
-; ARM32: str r
-
-; MIPS32-LABEL: from_int32
-; MIPS32: 	lui	{{.*}}	i32v
-; MIPS32: 	addiu	{{.*}}	i32v
-; MIPS32: 	lw
-; MIPS32: 	move
-; MIPS32: 	lui	{{.*}}	i8v
-; MIPS32: 	addiu	{{.*}}	i8v
-; MIPS32: 	sb
-; MIPS32: 	move
-; MIPS32: 	lui	{{.*}}	i16v
-; MIPS32: 	addiu	{{.*}}	i16v
-; MIPS32: 	sh
-; MIPS32: 	sra	{{.*}},0x1f
-; MIPS32: 	lui	{{.*}}	i64v
-; MIPS32: 	addiu	{{.*}}	i64v
-
-define internal void @from_int64() {
-entry:
-  %__0 = bitcast [8 x i8]* @i64v to i64*
-  %v0 = load i64, i64* %__0, align 1
-  %v1 = trunc i64 %v0 to i8
-  %__3 = bitcast [1 x i8]* @i8v to i8*
-  store i8 %v1, i8* %__3, align 1
-  %v2 = trunc i64 %v0 to i16
-  %__5 = bitcast [2 x i8]* @i16v to i16*
-  store i16 %v2, i16* %__5, align 1
-  %v3 = trunc i64 %v0 to i32
-  %__7 = bitcast [4 x i8]* @i32v to i32*
-  store i32 %v3, i32* %__7, align 1
-  ret void
-}
-; CHECK-LABEL: from_int64
-; CHECK: 0x{{.}} {{.*}} {{i64v|.bss}}
-; CHECK: 0x{{.}},{{.*}} {{i8v|.bss}}
-; CHECK: 0x{{.}},{{.*}} {{i16v|.bss}}
-; CHECK: 0x{{.}},{{.*}} {{i32v|.bss}}
-
-; ARM32-LABEL: from_int64
-; ARM32: movw {{.*}}i64v
-; ARM32: ldr r
-; ARM32: movw {{.*}}i8v
-; ARM32: strb
-; ARM32: movw {{.*}}i16v
-; ARM32: strh
-; ARM32: movw {{.*}}i32v
-; ARM32: str r
-
-; MIPS32-LABEL: from_int64
-; MIPS32: 	lui	{{.*}}	i64v
-; MIPS32: 	addiu	{{.*}}	i64v
-; MIPS32: 	lw
-; MIPS32: 	move
-; MIPS32: 	lui	{{.*}}	i8v
-; MIPS32: 	addiu	{{.*}}	i8v
-; MIPS32: 	sb
-; MIPS32: 	move
-; MIPS32: 	lui	{{.*}}	i16v
-; MIPS32: 	addiu	{{.*}}	i16v
-; MIPS32: 	sh
-; MIPS32: 	lui	{{.*}}	i32v
-; MIPS32: 	addiu	{{.*}}	i32v
-
-define internal void @from_uint8() {
-entry:
-  %__0 = bitcast [1 x i8]* @u8v to i8*
-  %v0 = load i8, i8* %__0, align 1
-  %v1 = zext i8 %v0 to i16
-  %__3 = bitcast [2 x i8]* @i16v to i16*
-  store i16 %v1, i16* %__3, align 1
-  %v2 = zext i8 %v0 to i32
-  %__5 = bitcast [4 x i8]* @i32v to i32*
-  store i32 %v2, i32* %__5, align 1
-  %v3 = zext i8 %v0 to i64
-  %__7 = bitcast [8 x i8]* @i64v to i64*
-  store i64 %v3, i64* %__7, align 1
-  ret void
-}
-; CHECK-LABEL: from_uint8
-; CHECK: 0x{{.*}} {{.*}} {{u8v|.bss}}
-; CHECK: movzx {{.*}},{{[a-d]l|BYTE PTR}}
-; CHECK: 0x{{.}},{{.*}} {{i16v|.bss}}
-; CHECK: movzx
-; CHECK: 0x{{.}},{{.*}} {{i32v|.bss}}
-; CHECK: movzx
-; CHECK: mov {{.*}},0x0
-; CHECK: 0x{{.}},{{.*}} {{i64v|.bss}}
-
-; ARM32-LABEL: from_uint8
-; ARM32: movw {{.*}}u8v
-; ARM32: ldrb
-; ARM32: uxtb
-; ARM32: movw {{.*}}i16v
-; ARM32: strh
-; ARM32: uxtb
-; ARM32: movw {{.*}}i32v
-; ARM32: str r
-; ARM32: uxtb
-; ARM32: mov {{.*}}, #0
-; ARM32: movw {{.*}}i64v
-; ARM32: str r
-
-; MIPS32-LABEL: from_uint8
-; MIPS32: 	lui	{{.*}}	u8v
-; MIPS32: 	addiu	{{.*}}	u8v
-; MIPS32: 	lb
-; MIPS32: 	move
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	lui	{{.*}}	i16v
-; MIPS32: 	addiu	{{.*}}	i16v
-; MIPS32: 	sh
-; MIPS32: 	move
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	lui	{{.*}}	i32v
-; MIPS32: 	addiu	{{.*}}	i32v
-; MIPS32: 	sw
-; MIPS32: 	andi	{{.*}},0xff
-; MIPS32: 	li	{{.*}},0
-; MIPS32: 	lui	{{.*}}	i64v
-; MIPS32: 	addiu	{{.*}}	i64v
-
-define internal void @from_uint16() {
-entry:
-  %__0 = bitcast [2 x i8]* @u16v to i16*
-  %v0 = load i16, i16* %__0, align 1
-  %v1 = trunc i16 %v0 to i8
-  %__3 = bitcast [1 x i8]* @i8v to i8*
-  store i8 %v1, i8* %__3, align 1
-  %v2 = zext i16 %v0 to i32
-  %__5 = bitcast [4 x i8]* @i32v to i32*
-  store i32 %v2, i32* %__5, align 1
-  %v3 = zext i16 %v0 to i64
-  %__7 = bitcast [8 x i8]* @i64v to i64*
-  store i64 %v3, i64* %__7, align 1
-  ret void
-}
-; CHECK-LABEL: from_uint16
-; CHECK: 0x{{.*}} {{.*}} {{u16v|.bss}}
-; CHECK: 0x{{.}},{{.*}} {{i8v|.bss}}
-; CHECK: movzx e{{.*}},{{.*x|[ds]i|bp|WORD PTR}}
-; CHECK: 0x{{.}},{{.*}} {{i32v|.bss}}
-; CHECK: movzx e{{.*}},{{.*x|[ds]i|bp|WORD PTR}}
-; CHECK: mov {{.*}},0x0
-; CHECK: 0x{{.}},{{.*}} {{i64v|.bss}}
-
-; ARM32-LABEL: from_uint16
-; ARM32: movw {{.*}}u16v
-; ARM32: ldrh
-; ARM32: movw {{.*}}i8v
-; ARM32: strb
-; ARM32: uxth
-; ARM32: movw {{.*}}i32v
-; ARM32: str r
-; ARM32: uxth
-; ARM32: mov {{.*}}, #0
-; ARM32: movw {{.*}}i64v
-; ARM32: str r
-
-; MIPS32-LABEL: from_uint16
-; MIPS32: 	lui	{{.*}}	u16v
-; MIPS32: 	addiu	{{.*}}	u16v
-; MIPS32: 	lh
-; MIPS32: 	move
-; MIPS32: 	lui	{{.*}}	i8v
-; MIPS32: 	addiu	{{.*}}	i8v
-; MIPS32: 	sb
-; MIPS32: 	move
-; MIPS32: 	andi	{{.*}},0xffff
-; MIPS32: 	lui	{{.*}}	i32v
-; MIPS32: 	addiu	{{.*}}	i32v
-; MIPS32: 	sw
-; MIPS32: 	andi	{{.*}},0xffff
-; MIPS32: 	li	{{.*}},0
-; MIPS32: 	lui	{{.*}}	i64v
-; MIPS32: 	addiu	{{.*}}	i64v
-
-define internal void @from_uint32() {
-entry:
-  %__0 = bitcast [4 x i8]* @u32v to i32*
-  %v0 = load i32, i32* %__0, align 1
-  %v1 = trunc i32 %v0 to i8
-  %__3 = bitcast [1 x i8]* @i8v to i8*
-  store i8 %v1, i8* %__3, align 1
-  %v2 = trunc i32 %v0 to i16
-  %__5 = bitcast [2 x i8]* @i16v to i16*
-  store i16 %v2, i16* %__5, align 1
-  %v3 = zext i32 %v0 to i64
-  %__7 = bitcast [8 x i8]* @i64v to i64*
-  store i64 %v3, i64* %__7, align 1
-  ret void
-}
-; CHECK-LABEL: from_uint32
-; CHECK: 0x{{.*}} {{.*}} {{u32v|.bss}}
-; CHECK: 0x{{.}},{{.*}} {{i8v|.bss}}
-; CHECK: 0x{{.}},{{.*}} {{i16v|.bss}}
-; CHECK: mov {{.*}},0x0
-; CHECK: 0x{{.}},{{.*}} {{i64v|.bss}}
-
-; ARM32-LABEL: from_uint32
-; ARM32: movw {{.*}}u32v
-; ARM32: ldr r
-; ARM32: movw {{.*}}i8v
-; ARM32: strb
-; ARM32: movw {{.*}}i16v
-; ARM32: strh
-; ARM32: mov {{.*}}, #0
-; ARM32: movw {{.*}}i64v
-; ARM32: str r
-
-; MIPS32-LABEL: from_uint32
-; MIPS32: 	lui	{{.*}}	u32v
-; MIPS32: 	addiu	{{.*}}	u32v
-; MIPS32: 	lw
-; MIPS32: 	move
-; MIPS32: 	lui	{{.*}}	i8v
-; MIPS32: 	addiu	{{.*}}	i8v
-; MIPS32: 	sb
-; MIPS32: 	move
-; MIPS32: 	lui	{{.*}}	i16v
-; MIPS32: 	addiu	{{.*}}	i16v
-; MIPS32: 	sh
-; MIPS32: 	li	{{.*}},0
-; MIPS32: 	lui	{{.*}}	i64v
-; MIPS32: 	addiu	{{.*}}	i64v
-
-define internal void @from_uint64() {
-entry:
-  %__0 = bitcast [8 x i8]* @u64v to i64*
-  %v0 = load i64, i64* %__0, align 1
-  %v1 = trunc i64 %v0 to i8
-  %__3 = bitcast [1 x i8]* @i8v to i8*
-  store i8 %v1, i8* %__3, align 1
-  %v2 = trunc i64 %v0 to i16
-  %__5 = bitcast [2 x i8]* @i16v to i16*
-  store i16 %v2, i16* %__5, align 1
-  %v3 = trunc i64 %v0 to i32
-  %__7 = bitcast [4 x i8]* @i32v to i32*
-  store i32 %v3, i32* %__7, align 1
-  ret void
-}
-; CHECK-LABEL: from_uint64
-; CHECK: 0x{{.*}} {{.*}} {{u64v|.bss}}
-; CHECK: 0x{{.}},{{.*}} {{i8v|.bss}}
-; CHECK: 0x{{.}},{{.*}} {{i16v|.bss}}
-; CHECK: 0x{{.}},{{.*}} {{i32v|.bss}}
-
-; ARM32-LABEL: from_uint64
-; ARM32: movw {{.*}}u64v
-; ARM32: ldr r
-; ARM32: movw {{.*}}i8v
-; ARM32: strb
-; ARM32: movw {{.*}}i16v
-; ARM32: strh
-; ARM32: movw {{.*}}i32v
-; ARM32: str r
-
-; MIPS32-LABEL: from_uint64
-; MIPS32: 	lui	{{.*}}	u64v
-; MIPS32: 	addiu	{{.*}}	u64v
-; MIPS32: 	lw
-; MIPS32: 	move
-; MIPS32: 	lui	{{.*}}	i8v
-; MIPS32: 	addiu	{{.*}}	i8v
-; MIPS32: 	sb
-; MIPS32: 	move
-; MIPS32: 	lui	{{.*}}	i16v
-; MIPS32: 	addiu	{{.*}}	i16v
-; MIPS32: 	sh
-; MIPS32: 	lui	{{.*}}	i32v
-; MIPS32: 	addiu	{{.*}}	i32v
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/div_legalization.ll b/third_party/subzero/tests_lit/llvm2ice_tests/div_legalization.ll
deleted file mode 100644
index 4624dcf..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/div_legalization.ll
+++ /dev/null
@@ -1,63 +0,0 @@
-; This is a regression test that idiv and div operands are legalized
-; (they cannot be constants and can only be reg/mem for x86).
-
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 | FileCheck %s
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 | FileCheck %s
-
-define internal i32 @Sdiv_const8_b(i32 %a32) {
-; CHECK-LABEL: Sdiv_const8_b
-entry:
-  %a = trunc i32 %a32 to i8
-  %div = sdiv i8 %a, 12
-; CHECK: mov {{.*}},0xc
-; CHECK-NOT: idiv 0xc
-  %div_ext = sext i8 %div to i32
-  ret i32 %div_ext
-}
-
-define internal i32 @Sdiv_const16_b(i32 %a32) {
-; CHECK-LABEL: Sdiv_const16_b
-entry:
-  %a = trunc i32 %a32 to i16
-  %div = sdiv i16 %a, 1234
-; CHECK: mov {{.*}},0x4d2
-; CHECK-NOT: idiv 0x4d2
-  %div_ext = sext i16 %div to i32
-  ret i32 %div_ext
-}
-
-define internal i32 @Sdiv_const32_b(i32 %a) {
-; CHECK-LABEL: Sdiv_const32_b
-entry:
-  %div = sdiv i32 %a, 1234
-; CHECK: mov {{.*}},0x4d2
-; CHECK-NOT: idiv 0x4d2
-  ret i32 %div
-}
-
-define internal i32 @Srem_const_b(i32 %a) {
-; CHECK-LABEL: Srem_const_b
-entry:
-  %rem = srem i32 %a, 2345
-; CHECK: mov {{.*}},0x929
-; CHECK-NOT: idiv 0x929
-  ret i32 %rem
-}
-
-define internal i32 @Udiv_const_b(i32 %a) {
-; CHECK-LABEL: Udiv_const_b
-entry:
-  %div = udiv i32 %a, 3456
-; CHECK: mov {{.*}},0xd80
-; CHECK-NOT: div 0xd80
-  ret i32 %div
-}
-
-define internal i32 @Urem_const_b(i32 %a) {
-; CHECK-LABEL: Urem_const_b
-entry:
-  %rem = urem i32 %a, 4567
-; CHECK: mov {{.*}},0x11d7
-; CHECK-NOT: div 0x11d7
-  ret i32 %rem
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/ebp_args.ll b/third_party/subzero/tests_lit/llvm2ice_tests/ebp_args.ll
deleted file mode 100644
index e87e9d3..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/ebp_args.ll
+++ /dev/null
@@ -1,44 +0,0 @@
-; This test originally exhibited a bug in ebp-based stack slots.  The
-; problem was that during a function call push sequence, the esp
-; adjustment was incorrectly added to the stack/frame offset for
-; ebp-based frames.
-
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s
-
-declare i32 @memcpy_helper2(i32 %buf, i32 %buf2, i32 %n)
-
-define internal i32 @memcpy_helper(i32 %buf, i32 %n) {
-entry:
-  br label %eblock  ; Disable alloca optimization
-eblock:
-  %buf2 = alloca i8, i32 128, align 4
-  %n.arg_trunc = trunc i32 %n to i8
-  %arg.ext = zext i8 %n.arg_trunc to i32
-  %buf2.asint = ptrtoint i8* %buf2 to i32
-  %call = call i32 @memcpy_helper2(i32 %buf, i32 %buf2.asint, i32 %arg.ext)
-  ret i32 %call
-}
-
-; This check sequence is highly specific to the current Om1 lowering
-; and stack slot assignment code, and may need to be relaxed if the
-; lowering code changes.
-
-; CHECK-LABEL: memcpy_helper
-; CHECK:  push  ebp
-; CHECK:  mov   ebp,esp
-; CHECK:  sub   esp,0x28
-; CHECK:  sub   esp,0x80
-; CHECK:  lea   eax,[esp+0x10]
-; CHECK:  mov   DWORD PTR [ebp-0x4],eax
-; CHECK:  mov   eax,DWORD PTR [ebp+0xc]
-; CHECK:  mov   BYTE PTR [ebp-0x8],al
-; CHECK:  movzx eax,BYTE PTR [ebp-0x8]
-; CHECK:  mov   DWORD PTR [ebp-0xc],eax
-; CHECK:  mov   eax,DWORD PTR [ebp+0x8]
-; CHECK:  mov   DWORD PTR [esp],eax
-; CHECK:  mov   eax,DWORD PTR [ebp-0x4]
-; CHECK:  mov   DWORD PTR [esp+0x4],eax
-; CHECK:  mov   eax,DWORD PTR [ebp-0xc]
-; CHECK:  mov   DWORD PTR [esp+0x8],eax
-; CHECK:  call {{.*}} R_{{.*}} memcpy_helper2
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/elf_container.ll b/third_party/subzero/tests_lit/llvm2ice_tests/elf_container.ll
deleted file mode 100644
index bee9002..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/elf_container.ll
+++ /dev/null
@@ -1,649 +0,0 @@
-; Tests that we generate an ELF container with fields that make sense,
-; cross-validating against llvm-mc.
-
-; For the integrated ELF writer, we can't pipe the output because we need
-; to seek backward and patch up the file headers. So, use a temporary file.
-; RUN: %p2i -i %s --filetype=obj --output %t --args -O2 --verbose none \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   && llvm-readobj -file-headers -sections -section-data \
-; RUN:       -relocations -symbols %t | FileCheck %s
-
-; RUN: %if --need=allow_dump --command %p2i -i %s --args -O2 --verbose none \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=allow_dump --command llvm-mc -triple=i686-nacl \
-; RUN:     -filetype=obj -o - \
-; RUN:   | %if --need=allow_dump --command llvm-readobj -file-headers \
-; RUN:     -sections -section-data -relocations -symbols - \
-; RUN:   | %if --need=allow_dump --command FileCheck %s
-
-; Add a run that shows relocations in code inline.
-; RUN: %p2i -i %s --filetype=obj --output %t --disassemble --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | FileCheck --check-prefix=TEXT-RELOCS %s
-
-; Use intrinsics to test external calls.
-declare void @llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
-declare void @llvm.memset.p0i8.i32(i8*, i8, i32, i32, i1)
-
-; Try other external functions (for cross tests).
-; Not testing external global variables since the NaCl bitcode writer
-; refuses to freeze such IR.
-declare void @external_foo(i32)
-
-; Test some global data relocs (data, rodata, bss).
-@bytes = internal global [7 x i8] c"ab\03\FF\F6fg", align 1
-@bytes_const = internal constant [7 x i8] c"ab\03\FF\F6fg", align 1
-
-@ptr = internal global i32 ptrtoint ([7 x i8]* @bytes to i32), align 16
-@ptr_const = internal constant i32 ptrtoint ([7 x i8]* @bytes to i32), align 16
-
-@ptr_to_func = internal global i32 ptrtoint (double ()* @returnDoubleConst to i32), align 4
-@ptr_to_func_const = internal constant i32 ptrtoint (double ()* @returnDoubleConst to i32), align 4
-
-@addend_ptr = internal global i32 add (i32 ptrtoint (i32* @ptr to i32), i32 128), align 4
-@addend_ptr_const = internal constant i32 add (i32 ptrtoint (i32* @ptr to i32), i32 64), align 4
-
-@short_zero = internal global [2 x i8] zeroinitializer, align 2
-@double_zero = internal global [8 x i8] zeroinitializer, align 32
-@double_zero2 = internal global [8 x i8] zeroinitializer, align 8
-@short_zero_const = internal constant [2 x i8] zeroinitializer, align 2
-@double_zero_const = internal constant [8 x i8] zeroinitializer, align 32
-@double_zero_const2 = internal constant [8 x i8] zeroinitializer, align 8
-
-; Use float/double constants to test constant pools.
-define internal float @returnFloatConst() {
-entry:
-  %f = fadd float -0.0, 0x3FF3AE1400000000
-  ret float %f
-}
-; TEXT-RELOCS-LABEL: returnFloatConst
-; TEXT-RELOCS: movss {{.*}} R_386_32 {{.*}}80000000
-; TEXT-RELOCS: addss {{.*}} R_386_32 {{.*}}3f9d70a0
-
-define internal double @returnDoubleConst() {
-entry:
-  %d = fadd double 0x7FFFFFFFFFFFFFFFF, 0xFFF7FFFFFFFFFFFF
-  %d2 = fadd double %d, 0xFFF8000000000003
-  ret double %d2
-}
-; TEXT-RELOCS-LABEL: returnDoubleConst
-; TEXT-RELOCS: movsd {{.*}} R_386_32 {{.*}}ffffffffffffffff
-; TEXT-RELOCS: addsd {{.*}} R_386_32 {{.*}}fff7ffffffffffff
-; TEXT-RELOCS: addsd {{.*}} R_386_32 {{.*}}fff8000000000003
-
-; Test intrinsics that call out to external functions.
-define internal void @test_memcpy(i32 %iptr_dst, i32 %len) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = bitcast [7 x i8]* @bytes to i8*
-  call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 %len, i32 1, i1 false)
-  ret void
-}
-; TEXT-RELOCS-LABEL: test_memcpy
-; TEXT-RELOCS: mov {{.*}} R_386_32 {{bytes|.data}}
-
-define internal void @test_memset(i32 %iptr_dst, i32 %wide_val, i32 %len) {
-entry:
-  %val = trunc i32 %wide_val to i8
-  %dst = inttoptr i32 %iptr_dst to i8*
-  call void @llvm.memset.p0i8.i32(i8* %dst, i8 %val,
-                                  i32 %len, i32 1, i1 false)
-  ret void
-}
-; TEXT-RELOCS-LABEL: test_memset
-
-; Test calling internal functions (may be able to do the fixup,
-; without emitting a relocation).
-define internal float @test_call_internal() {
-  %f = call float @returnFloatConst()
-  ret float %f
-}
-
-; Test calling an external function.
-define internal void @test_call_external() {
-  call void @external_foo(i32 42)
-  ret void
-}
-
-; Test copying a function pointer, or a global data pointer.
-define internal i32 @test_ret_fp() {
-  %r = ptrtoint float ()* @returnFloatConst to i32
-  ret i32 %r
-}
-; TEXT-RELOCS-LABEL: test_ret_fp
-; TEXT-RELOCS-NEXT: mov {{.*}} R_386_32 {{returnFloatConst|.text}}
-
-define internal i32 @test_ret_global_pointer() {
-  %r = ptrtoint [7 x i8]* @bytes to i32
-  ret i32 %r
-}
-; TEXT-RELOCS-LABEL: test_ret_global_pointer
-; TEXT-RELOCS-NEXT: mov {{.*}} R_386_32 {{bytes|.data}}
-
-; Test defining a non-internal function.
-define void @_start(i32) {
-  %f = call float @returnFloatConst()
-  %d = call double @returnDoubleConst()
-  call void @test_memcpy(i32 0, i32 99)
-  call void @test_memset(i32 0, i32 0, i32 99)
-  %f2 = call float @test_call_internal()
-  %p1 = call i32 @test_ret_fp()
-  %p2 = call i32 @test_ret_global_pointer()
-  ret void
-}
-
-; CHECK: ElfHeader {
-; CHECK:   Ident {
-; CHECK:     Magic: (7F 45 4C 46)
-; CHECK:     Class: 32-bit
-; CHECK:     DataEncoding: LittleEndian
-; CHECK:     OS/ABI: SystemV (0x0)
-; CHECK:     ABIVersion: 0
-; CHECK:     Unused: (00 00 00 00 00 00 00)
-; CHECK:   }
-; CHECK:   Type: Relocatable (0x1)
-; CHECK:   Machine: EM_386 (0x3)
-; CHECK:   Version: 1
-; CHECK:   Entry: 0x0
-; CHECK:   ProgramHeaderOffset: 0x0
-; CHECK:   SectionHeaderOffset: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK:   Flags [ (0x0)
-; CHECK:   ]
-; CHECK:   HeaderSize: 52
-; CHECK:   ProgramHeaderEntrySize: 0
-; CHECK:   ProgramHeaderCount: 0
-; CHECK:   SectionHeaderEntrySize: 40
-; CHECK:   SectionHeaderCount: {{[1-9][0-9]*}}
-; CHECK:   StringTableSectionIndex: {{[1-9][0-9]*}}
-; CHECK: }
-
-
-; CHECK: Sections [
-; CHECK:   Section {
-; CHECK:     Index: 0
-; CHECK:     Name: (0)
-; CHECK:     Type: SHT_NULL
-; CHECK:     Flags [ (0x0)
-; CHECK:     ]
-; CHECK:     Address: 0x0
-; CHECK:     Offset: 0x0
-; CHECK:     Size: 0
-; CHECK:     Link: 0
-; CHECK:     Info: 0
-; CHECK:     AddressAlignment: 0
-; CHECK:     EntrySize: 0
-; CHECK:     SectionData (
-; CHECK:     )
-; CHECK:   }
-; CHECK:   Section {
-; CHECK:     Index: {{[1-9][0-9]*}}
-; CHECK:     Name: .text
-; CHECK:     Type: SHT_PROGBITS
-; CHECK:     Flags [ (0x6)
-; CHECK:       SHF_ALLOC
-; CHECK:       SHF_EXECINSTR
-; CHECK:     ]
-; CHECK:     Address: 0x0
-; CHECK:     Offset: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK:     Size: {{[1-9][0-9]*}}
-; CHECK:     Link: 0
-; CHECK:     Info: 0
-; CHECK:     AddressAlignment: 32
-; CHECK:     EntrySize: 0
-; CHECK:     SectionData (
-;   There's probably halt padding (0xF4) in there somewhere.
-; CHECK:       {{.*}}F4
-; CHECK:     )
-; CHECK:   }
-; CHECK:   Section {
-; CHECK:     Index: {{[1-9][0-9]*}}
-; CHECK:     Name: .rel.text
-; CHECK:     Type: SHT_REL
-; CHECK:     Flags [ (0x0)
-; CHECK:     ]
-; CHECK:     Address: 0x0
-; CHECK:     Offset: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK:     Size: {{[1-9][0-9]*}}
-; CHECK:     Link: [[SYMTAB_INDEX:[1-9][0-9]*]]
-; CHECK:     Info: {{[1-9][0-9]*}}
-; CHECK:     AddressAlignment: 4
-; CHECK:     EntrySize: 8
-; CHECK:     SectionData (
-; CHECK:     )
-; CHECK:   }
-; CHECK:   Section {
-; CHECK:     Index: [[DATA_INDEX:[1-9][0-9]*]]
-; CHECK:     Name: .data
-; CHECK:     Type: SHT_PROGBITS
-; CHECK:     Flags [ (0x3)
-; CHECK:       SHF_ALLOC
-; CHECK:       SHF_WRITE
-; CHECK:     ]
-; CHECK:     Address: 0x0
-; CHECK:     Offset: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK:     Size: 28
-; CHECK:     Link: 0
-; CHECK:     Info: 0
-; CHECK:     AddressAlignment: 16
-; CHECK:     EntrySize: 0
-; CHECK:     SectionData (
-; CHECK:       0000: 616203FF F66667{{.*}} |ab...fg
-; CHECK:     )
-; CHECK:   }
-; CHECK:   Section {
-; CHECK:     Index: {{[1-9][0-9]*}}
-; CHECK:     Name: .rel.data
-; CHECK:     Type: SHT_REL
-; CHECK:     Flags [ (0x0)
-; CHECK:     ]
-; CHECK:     Address: 0x0
-; CHECK:     Offset: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK:     Size: 24
-; CHECK:     Link: [[SYMTAB_INDEX]]
-; CHECK:     Info: [[DATA_INDEX]]
-; CHECK:     AddressAlignment: 4
-; CHECK:     EntrySize: 8
-; CHECK:     SectionData (
-; CHECK:     )
-; CHECK:   }
-; CHECK:   Section {
-; CHECK:     Index: {{[1-9][0-9]*}}
-; CHECK:     Name: .bss
-; CHECK:     Type: SHT_NOBITS
-; CHECK:     Flags [ (0x3)
-; CHECK:       SHF_ALLOC
-; CHECK:       SHF_WRITE
-; CHECK:     ]
-; CHECK:     Address: 0x0
-; CHECK:     Offset: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK:     Size: 48
-; CHECK:     Link: 0
-; CHECK:     Info: 0
-; CHECK:     AddressAlignment: 32
-; CHECK:     EntrySize: 0
-; CHECK:   }
-; CHECK:   Section {
-; CHECK:     Index: {{[1-9][0-9]*}}
-; CHECK:     Name: .rodata
-; CHECK:     Type: SHT_PROGBITS
-; CHECK:     Flags [ (0x2)
-; CHECK:       SHF_ALLOC
-; CHECK:     ]
-; CHECK:     Address: 0x0
-; CHECK:     Offset: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK:     Size: 48
-; CHECK:     Link: 0
-; CHECK:     Info: 0
-; CHECK:     AddressAlignment: 32
-; CHECK:     EntrySize: 0
-; CHECK:     SectionData (
-; CHECK:       0000: 616203FF F66667{{.*}} |ab...fg
-; CHECK:     )
-; CHECK:   }
-; CHECK:   Section {
-; CHECK:     Index: {{[1-9][0-9]*}}
-; CHECK:     Name: .rel.rodata
-; CHECK:     Type: SHT_REL
-; CHECK:     Flags [ (0x0)
-; CHECK:     ]
-; CHECK:     Address: 0x0
-; CHECK:     Offset: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK:     Size: {{[1-9][0-9]*}}
-; CHECK:     Link: [[SYMTAB_INDEX]]
-; CHECK:     Info: {{[1-9][0-9]*}}
-; CHECK:     AddressAlignment: 4
-; CHECK:     EntrySize: 8
-; CHECK:     SectionData (
-; CHECK:     )
-; CHECK:   }
-; CHECK:   Section {
-; CHECK:     Index: {{[1-9][0-9]*}}
-; CHECK:     Name: .rodata.cst4
-; CHECK:     Type: SHT_PROGBITS
-; CHECK:     Flags [ (0x12)
-; CHECK:       SHF_ALLOC
-; CHECK:       SHF_MERGE
-; CHECK:     ]
-; CHECK:     Address: 0x0
-; CHECK:     Offset: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK:     Size: 8
-; CHECK:     Link: 0
-; CHECK:     Info: 0
-; CHECK:     AddressAlignment: 4
-; CHECK:     EntrySize: 4
-; CHECK:     SectionData (
-; CHECK:       0000: A0709D3F 00000080
-; CHECK:     )
-; CHECK:   }
-; CHECK:   Section {
-; CHECK:     Index: {{[1-9][0-9]*}}
-; CHECK:     Name: .rodata.cst8
-; CHECK:     Type: SHT_PROGBITS
-; CHECK:     Flags [ (0x12)
-; CHECK:       SHF_ALLOC
-; CHECK:       SHF_MERGE
-; CHECK:     ]
-; CHECK:     Address: 0x0
-; CHECK:     Offset: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK:     Size: 24
-; CHECK:     Link: 0
-; CHECK:     Info: 0
-; CHECK:     AddressAlignment: 8
-; CHECK:     EntrySize: 8
-; CHECK:     SectionData (
-; CHECK:       0000: FFFFFFFF FFFFF7FF 03000000 0000F8FF
-; CHECK:       0010: FFFFFFFF FFFFFFFF
-; CHECK:     )
-; CHECK:   }
-; CHECK:   Section {
-; CHECK:     Index: {{[1-9][0-9]*}}
-; CHECK:     Name: .shstrtab
-; CHECK:     Type: SHT_STRTAB
-; CHECK:     Flags [ (0x0)
-; CHECK:     ]
-; CHECK:     Address: 0x0
-; CHECK:     Offset: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK:     Size: {{[1-9][0-9]*}}
-; CHECK:     Link: 0
-; CHECK:     Info: 0
-; CHECK:     AddressAlignment: 1
-; CHECK:     EntrySize: 0
-; CHECK:     SectionData (
-; CHECK:       {{.*}}.text{{.*}}
-; CHECK:     )
-; CHECK:   }
-; CHECK:   Section {
-; CHECK:     Index: [[SYMTAB_INDEX]]
-; CHECK-NEXT: Name: .symtab
-; CHECK:     Type: SHT_SYMTAB
-; CHECK:     Flags [ (0x0)
-; CHECK:     ]
-; CHECK:     Address: 0x0
-; CHECK:     Offset: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK:     Size: {{[1-9][0-9]*}}
-; CHECK:     Link: [[STRTAB_INDEX:[1-9][0-9]*]]
-; CHECK:     Info: [[GLOBAL_START_INDEX:[1-9][0-9]*]]
-; CHECK:     AddressAlignment: 4
-; CHECK:     EntrySize: 16
-; CHECK:   }
-; CHECK:   Section {
-; CHECK:     Index: [[STRTAB_INDEX]]
-; CHECK-NEXT: Name: .strtab
-; CHECK:     Type: SHT_STRTAB
-; CHECK:     Flags [ (0x0)
-; CHECK:     ]
-; CHECK:     Address: 0x0
-; CHECK:     Offset: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK:     Size: {{[1-9][0-9]*}}
-; CHECK:     Link: 0
-; CHECK:     Info: 0
-; CHECK:     AddressAlignment: 1
-; CHECK:     EntrySize: 0
-; CHECK:   }
-
-
-; CHECK: Relocations [
-; CHECK:   Section ({{[0-9]+}}) .rel.text {
-; CHECK:     0x7 R_386_32 {{.*}}80000000 0x0
-; CHECK:     0xF R_386_32 {{.*}}3f9d70a0 0x0
-; CHECK:     0x27 R_386_32 {{.*}}ffffffffffffffff 0x0
-; CHECK:     0x2F R_386_32 {{.*}}fff7ffffffffffff 0x0
-; CHECK:     0x37 R_386_32 {{.*}}fff8000000000003 0x0
-; CHECK:     0x{{.*}} R_386_PC32 memcpy
-; CHECK:     0x{{.*}} R_386_PC32 memset
-; CHECK:     0x{{.*}} R_386_PC32 external_foo
-; CHECK:   }
-; CHECK:   Section ({{[0-9]+}}) .rel.data {
-; The set of relocations between llvm-mc and the integrated elf-writer
-; are different. For local symbols, llvm-mc uses the section + offset within
-; the section, while the integrated elf-writer refers the symbol itself.
-; CHECK:     0x10 R_386_32 {{.*}} 0x0
-; CHECK:     0x14 R_386_32 {{.*}} 0x0
-; CHECK:     0x18 R_386_32 {{.*}} 0x0
-; CHECK:   }
-; CHECK:   Section ({{[0-9]+}}) .rel.rodata {
-; CHECK:     0x10 R_386_32 {{.*}} 0x0
-; CHECK:     0x14 R_386_32 {{.*}} 0x0
-; CHECK:     0x18 R_386_32 {{.*}} 0x0
-; CHECK:   }
-; CHECK: ]
-
-
-; CHECK: Symbols [
-; CHECK-NEXT:   Symbol {
-; CHECK-NEXT:     Name: (0)
-; CHECK-NEXT:     Value: 0x0
-; CHECK-NEXT:     Size: 0
-; CHECK-NEXT:     Binding: Local
-; CHECK-NEXT:     Type: None
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: Undefined (0x0)
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: {{.*}}fff8000000000003
-; CHECK-NEXT:     Value: 0x8
-; CHECK-NEXT:     Size: 0
-; CHECK-NEXT:     Binding: Local (0x0)
-; CHECK-NEXT:     Type: None (0x0)
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .rodata.cst8
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: {{.*}}ffffffffffffffff
-; CHECK-NEXT:     Value: 0x10
-; CHECK-NEXT:     Size: 0
-; CHECK-NEXT:     Binding: Local (0x0)
-; CHECK-NEXT:     Type: None (0x0)
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .rodata.cst8
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: {{.*}}3f9d70a0
-; CHECK-NEXT:     Value: 0x0
-; CHECK-NEXT:     Size: 0
-; CHECK-NEXT:     Binding: Local (0x0)
-; CHECK-NEXT:     Type: None (0x0)
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .rodata.cst4
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: {{.*}}80000000
-; CHECK-NEXT:     Value: 0x4
-; CHECK-NEXT:     Size: 0
-; CHECK-NEXT:     Binding: Local (0x0)
-; CHECK-NEXT:     Type: None (0x0)
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .rodata.cst4
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: addend_ptr
-; CHECK-NEXT:     Value: 0x18
-; CHECK-NEXT:     Size: 4
-; CHECK-NEXT:     Binding: Local (0x0)
-; CHECK-NEXT:     Type: Object (0x1)
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .data
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: addend_ptr_const
-; CHECK-NEXT:     Value: 0x18
-; CHECK-NEXT:     Size: 4
-; CHECK-NEXT:     Binding: Local (0x0)
-; CHECK-NEXT:     Type: Object (0x1)
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .rodata
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: bytes
-; CHECK-NEXT:     Value: 0x0
-; CHECK-NEXT:     Size: 7
-; CHECK-NEXT:     Binding: Local (0x0)
-; CHECK-NEXT:     Type: Object (0x1)
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .data
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: bytes_const
-; CHECK-NEXT:     Value: 0x0
-; CHECK-NEXT:     Size: 7
-; CHECK-NEXT:     Binding: Local (0x0)
-; CHECK-NEXT:     Type: Object (0x1)
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .rodata
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: double_zero
-; CHECK-NEXT:     Value: 0x20
-; CHECK-NEXT:     Size: 8
-; CHECK-NEXT:     Binding: Local
-; CHECK-NEXT:     Type: Object
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .bss
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: double_zero2
-; CHECK-NEXT:     Value: 0x28
-; CHECK-NEXT:     Size: 8
-; CHECK-NEXT:     Binding: Local
-; CHECK-NEXT:     Type: Object
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .bss
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: double_zero_const
-; CHECK-NEXT:     Value: 0x20
-; CHECK-NEXT:     Size: 8
-; CHECK-NEXT:     Binding: Local
-; CHECK-NEXT:     Type: Object
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .rodata
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: double_zero_const2
-; CHECK-NEXT:     Value: 0x28
-; CHECK-NEXT:     Size: 8
-; CHECK-NEXT:     Binding: Local
-; CHECK-NEXT:     Type: Object
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .rodata
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: ptr
-; CHECK-NEXT:     Value: 0x10
-; CHECK-NEXT:     Size: 4
-; CHECK-NEXT:     Binding: Local
-; CHECK-NEXT:     Type: Object
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .data
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: ptr_const
-; CHECK-NEXT:     Value: 0x10
-; CHECK-NEXT:     Size: 4
-; CHECK-NEXT:     Binding: Local
-; CHECK-NEXT:     Type: Object
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .rodata
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: ptr_to_func
-; CHECK-NEXT:     Value: 0x14
-; CHECK-NEXT:     Size: 4
-; CHECK-NEXT:     Binding: Local
-; CHECK-NEXT:     Type: Object
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .data
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: ptr_to_func_const
-; CHECK-NEXT:     Value: 0x14
-; CHECK-NEXT:     Size: 4
-; CHECK-NEXT:     Binding: Local
-; CHECK-NEXT:     Type: Object
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .rodata
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: returnDoubleConst
-; CHECK-NEXT:     Value: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK-NEXT:     Size: 0
-; CHECK-NEXT:     Binding: Local
-; CHECK-NEXT:     Type: None
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .text
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: returnFloatConst
-;  This happens to be the first function, so its offset is 0 within the text.
-; CHECK-NEXT:     Value: 0x0
-; CHECK-NEXT:     Size: 0
-; CHECK-NEXT:     Binding: Local
-; CHECK-NEXT:     Type: None
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .text
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: short_zero
-; CHECK-NEXT:     Value: 0x0
-; CHECK-NEXT:     Size: 2
-; CHECK-NEXT:     Binding: Local
-; CHECK-NEXT:     Type: Object
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .bss
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: short_zero_const
-; CHECK-NEXT:     Value: 0x1C
-; CHECK-NEXT:     Size: 2
-; CHECK-NEXT:     Binding: Local
-; CHECK-NEXT:     Type: Object
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .rodata
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: test_memcpy
-; CHECK-NEXT:     Value: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK-NEXT:     Size: 0
-; CHECK-NEXT:     Binding: Local
-; CHECK-NEXT:     Type: None
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .text
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: _start
-; CHECK-NEXT:     Value: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK-NEXT:     Size: 0
-; CHECK-NEXT:     Binding: Global
-; CHECK-NEXT:     Type: Function
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .text
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: external_foo
-; CHECK-NEXT:     Value: 0x0
-; CHECK-NEXT:     Size: 0
-; CHECK-NEXT:     Binding: Global
-; CHECK-NEXT:     Type: None
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: Undefined
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: memcpy
-; CHECK-NEXT:     Value: 0x0
-; CHECK-NEXT:     Size: 0
-; CHECK-NEXT:     Binding: Global
-; CHECK-NEXT:     Type: None
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: Undefined
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: memset
-; CHECK-NEXT:     Value: 0x0
-; CHECK-NEXT:     Size: 0
-; CHECK-NEXT:     Binding: Global
-; CHECK-NEXT:     Type: None
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: Undefined
-; CHECK-NEXT:   }
-; CHECK: ]
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/elf_function_sections.ll b/third_party/subzero/tests_lit/llvm2ice_tests/elf_function_sections.ll
deleted file mode 100644
index 804ba1d..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/elf_function_sections.ll
+++ /dev/null
@@ -1,95 +0,0 @@
-; Tests filetype=obj with -ffunction-sections.
-
-; RUN: %p2i -i %s --filetype=obj --output %t --args -O2 -ffunction-sections && \
-; RUN:   llvm-readobj -file-headers -sections -section-data \
-; RUN:     -relocations -symbols %t | FileCheck %s
-
-; RUN: %if --need=allow_dump --command \
-; RUN:   %p2i -i %s --args -O2 -ffunction-sections \
-; RUN:   | %if --need=allow_dump --command \
-; RUN:   llvm-mc -triple=i686-nacl -filetype=obj -o - \
-; RUN:   | %if --need=allow_dump --command \
-; RUN:   llvm-readobj -file-headers -sections -section-data \
-; RUN:       -relocations -symbols - \
-; RUN:   | %if --need=allow_dump --command FileCheck %s
-
-declare void @llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
-
-define internal i32 @foo(i32 %x, i32 %len) {
-  %y = add i32 %x, %x
-  %dst = inttoptr i32 %y to i8*
-  %src = inttoptr i32 %x to i8*
-  call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 %len, i32 1, i1 false)
-
-  ret i32 %y
-}
-
-define internal i32 @bar(i32 %x) {
-  ret i32 %x
-}
-
-define void @_start(i32 %x) {
-  %y = call i32 @bar(i32 4)
-  %ignored = call i32 @foo(i32 %x, i32 %y)
-  ret void
-}
-
-; CHECK:   Section {
-; CHECK:     Name: .text.foo
-; CHECK:     Type: SHT_PROGBITS
-; CHECK:     Flags [ (0x6)
-; CHECK:       SHF_ALLOC
-; CHECK:       SHF_EXECINSTR
-; CHECK:     ]
-; CHECK:   }
-; CHECK:   Section {
-; CHECK:     Name: .rel.text.foo
-; CHECK:     Type: SHT_REL
-; CHECK:     Flags [ (0x0)
-; CHECK:     ]
-; CHECK:   }
-
-; CHECK:   Section {
-; CHECK:     Name: .text.bar
-; CHECK:     Type: SHT_PROGBITS
-; CHECK:     Flags [ (0x6)
-; CHECK:       SHF_ALLOC
-; CHECK:       SHF_EXECINSTR
-; CHECK:     ]
-; CHECK:   }
-
-; CHECK:   Section {
-; CHECK:     Name: .text._start
-; CHECK:     Type: SHT_PROGBITS
-; CHECK:     Flags [ (0x6)
-; CHECK:       SHF_ALLOC
-; CHECK:       SHF_EXECINSTR
-; CHECK:     ]
-; CHECK:   }
-; CHECK:   Section {
-; CHECK:     Name: .rel.text._start
-; CHECK:     Type: SHT_REL
-; CHECK:     Flags [ (0x0)
-; CHECK:     ]
-; CHECK:     )
-; CHECK:   }
-
-; CHECK: Relocations [
-; CHECK:   Section ({{[0-9]+}}) .rel.text.foo {
-; CHECK:     0x1E R_386_PC32 memcpy 0x0
-; CHECK:   }
-;   Relocation can be against the start of the section or
-;   the function's symbol itself.
-; CHECK:   Section ({{[0-9]+}}) .rel.text._start {
-; CHECK:     0x10 R_386_PC32 {{.*}}bar 0x0
-; CHECK:     0x1C R_386_PC32 {{.*}}foo 0x0
-; CHECK:   }
-; CHECK: ]
-
-; CHECK: Symbols [
-; CHECK:          Name: bar
-; CHECK:          Name: foo
-; CHECK:          Name: _start
-; CHECK:          Name: memcpy
-; CHECK: ]
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/elf_nodata.ll b/third_party/subzero/tests_lit/llvm2ice_tests/elf_nodata.ll
deleted file mode 100644
index f286044..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/elf_nodata.ll
+++ /dev/null
@@ -1,128 +0,0 @@
-; Tests that we generate an ELF container correctly when there
-; is no data section.
-
-; RUN: %p2i -i %s --filetype=obj --output %t --args -O2 \
-; RUN:   && llvm-readobj -file-headers -sections -section-data \
-; RUN:       -relocations -symbols %t | FileCheck %s
-
-; RUN: %if --need=allow_dump --command %p2i -i %s --args -O2 \
-; RUN:   | %if --need=allow_dump --command \
-; RUN:   llvm-mc -triple=i686-nacl -filetype=obj -o - \
-; RUN:   | %if --need=allow_dump --command \
-; RUN:   llvm-readobj -file-headers -sections -section-data \
-; RUN:       -relocations -symbols - \
-; RUN:   | %if --need=allow_dump --command FileCheck %s
-
-declare void @llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
-
-define internal i32 @foo(i32 %x, i32 %len) {
-  %y = add i32 %x, %x
-  %dst = inttoptr i32 %y to i8*
-  %src = inttoptr i32 %x to i8*
-  call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 %len, i32 1, i1 false)
-
-  ret i32 %y
-}
-
-; Test defining a non-internal function.
-define void @_start(i32 %x) {
-  %ignored = call i32 @foo(i32 %x, i32 4)
-  ret void
-}
-
-; CHECK:   Section {
-; CHECK:     Index: {{[1-9][0-9]*}}
-; CHECK:     Name: .text
-; CHECK:     Type: SHT_PROGBITS
-; CHECK:     Flags [ (0x6)
-; CHECK:       SHF_ALLOC
-; CHECK:       SHF_EXECINSTR
-; CHECK:     ]
-; CHECK:     Address: 0x0
-; CHECK:     Offset: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK:     Size: {{[1-9][0-9]*}}
-; CHECK:     Link: 0
-; CHECK:     Info: 0
-; CHECK:     AddressAlignment: 32
-; CHECK:     EntrySize: 0
-; CHECK:     SectionData (
-; CHECK:     )
-; CHECK:   }
-; CHECK:   Section {
-; CHECK:     Index: {{[1-9][0-9]*}}
-; CHECK:     Name: .rel.text
-; CHECK:     Type: SHT_REL
-; CHECK:     Flags [ (0x0)
-; CHECK:     ]
-; CHECK:     Address: 0x0
-; CHECK:     Offset: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK:     Size: {{[1-9][0-9]*}}
-; CHECK:     Link: [[SYMTAB_INDEX:[1-9][0-9]*]]
-; CHECK:     Info: {{[1-9][0-9]*}}
-; CHECK:     AddressAlignment: 4
-; CHECK:     EntrySize: 8
-; CHECK:     SectionData (
-; CHECK:     )
-; CHECK:   }
-; CHECK:   Section {
-; CHECK:     Index: [[SYMTAB_INDEX]]
-; CHECK-NEXT: Name: .symtab
-; CHECK:     Type: SHT_SYMTAB
-; CHECK:     Flags [ (0x0)
-; CHECK:     ]
-; CHECK:     Address: 0x0
-; CHECK:     Offset: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK:     Size: {{[1-9][0-9]*}}
-; CHECK:     Link: {{[1-9][0-9]*}}
-; CHECK:     Info: {{[1-9][0-9]*}}
-; CHECK:     AddressAlignment: 4
-; CHECK:     EntrySize: 16
-; CHECK:   }
-
-
-; CHECK: Relocations [
-; CHECK:   Section ({{[0-9]+}}) .rel.text {
-; CHECK:     0x1E R_386_PC32 memcpy 0x0
-; CHECK:   }
-; CHECK: ]
-
-
-; CHECK: Symbols [
-; CHECK-NEXT:   Symbol {
-; CHECK-NEXT:     Name: (0)
-; CHECK-NEXT:     Value: 0x0
-; CHECK-NEXT:     Size: 0
-; CHECK-NEXT:     Binding: Local
-; CHECK-NEXT:     Type: None
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: Undefined (0x0)
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: foo
-; CHECK-NEXT:     Value: 0x0
-; CHECK-NEXT:     Size: 0
-; CHECK-NEXT:     Binding: Local
-; CHECK-NEXT:     Type: None
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .text
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: _start
-; CHECK-NEXT:     Value: 0x{{[1-9A-F][0-9A-F]*}}
-; CHECK-NEXT:     Size: 0
-; CHECK-NEXT:     Binding: Global
-; CHECK-NEXT:     Type: Function
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: .text
-; CHECK-NEXT:   }
-; CHECK:        Symbol {
-; CHECK:          Name: memcpy
-; CHECK-NEXT:     Value: 0x0
-; CHECK-NEXT:     Size: 0
-; CHECK-NEXT:     Binding: Global
-; CHECK-NEXT:     Type: None
-; CHECK-NEXT:     Other: 0
-; CHECK-NEXT:     Section: Undefined
-; CHECK-NEXT:   }
-; CHECK: ]
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/external_declaration.ll b/third_party/subzero/tests_lit/llvm2ice_tests/external_declaration.ll
deleted file mode 100644
index cf8a8bc..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/external_declaration.ll
+++ /dev/null
@@ -1,13 +0,0 @@
-; Tests that any symbols with special names have specially treated linkage.
-
-; RUN: %if --need=allow_dump --command %p2i -i %s --filetype=asm \
-; RUN:   --args -nonsfi=0 \
-; RUN:   | %if --need=allow_dump --command FileCheck %s
-
-; Verify that "__pnacl_pso_root", a specially named symbol, is made global, but
-; other global variables are not.
-@__pnacl_pso_root = constant [4 x i8] c"abcd";
-@__pnacl_pso_not_root = constant [4 x i8] c"efgh";
-
-; CHECK: .globl __pnacl_pso_root
-; CHECK-NOT: .globl __pnacl_pso_not_root
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/fp.arith.ll b/third_party/subzero/tests_lit/llvm2ice_tests/fp.arith.ll
deleted file mode 100644
index da1c035..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/fp.arith.ll
+++ /dev/null
@@ -1,161 +0,0 @@
-; This tries to be a comprehensive test of f32 and f64 arith operations.
-; The CHECK lines are only checking for basic instruction patterns
-; that should be present regardless of the optimization level, so
-; there are no special OPTM1 match lines.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -Om1 \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj --disassemble --target arm32 \
-; RUN:   -i %s --args -O2 \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 %s
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj --disassemble --target arm32 \
-; RUN:   -i %s --args -Om1 \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:   mips32 -i %s --args -O2 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:   mips32 -i %s --args -Om1 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-define internal float @addFloat(float %a, float %b) {
-entry:
-  %add = fadd float %a, %b
-  ret float %add
-}
-; CHECK-LABEL: addFloat
-; CHECK: addss
-; CHECK: fld
-; ARM32-LABEL: addFloat
-; ARM32: vadd.f32 s{{[0-9]+}}, s
-; MIPS32-LABEL: addFloat
-; MIPS32: add.s
-
-define internal double @addDouble(double %a, double %b) {
-entry:
-  %add = fadd double %a, %b
-  ret double %add
-}
-; CHECK-LABEL: addDouble
-; CHECK: addsd
-; CHECK: fld
-; ARM32-LABEL: addDouble
-; ARM32: vadd.f64 d{{[0-9]+}}, d
-; MIPS32-LABEL: addDouble
-; MIPS32: add.d
-
-define internal float @subFloat(float %a, float %b) {
-entry:
-  %sub = fsub float %a, %b
-  ret float %sub
-}
-; CHECK-LABEL: subFloat
-; CHECK: subss
-; CHECK: fld
-; ARM32-LABEL: subFloat
-; ARM32: vsub.f32 s{{[0-9]+}}, s
-; MIPS32-LABEL: subFloat
-; MIPS32: sub.s
-
-define internal double @subDouble(double %a, double %b) {
-entry:
-  %sub = fsub double %a, %b
-  ret double %sub
-}
-; CHECK-LABEL: subDouble
-; CHECK: subsd
-; CHECK: fld
-; ARM32-LABEL: subDouble
-; ARM32: vsub.f64 d{{[0-9]+}}, d
-; MIPS32-LABEL: subDouble
-; MIPS32: sub.d
-
-define internal float @mulFloat(float %a, float %b) {
-entry:
-  %mul = fmul float %a, %b
-  ret float %mul
-}
-; CHECK-LABEL: mulFloat
-; CHECK: mulss
-; CHECK: fld
-; ARM32-LABEL: mulFloat
-; ARM32: vmul.f32 s{{[0-9]+}}, s
-; MIPS32-LABEL: mulFloat
-; MIPS32: mul.s
-
-define internal double @mulDouble(double %a, double %b) {
-entry:
-  %mul = fmul double %a, %b
-  ret double %mul
-}
-; CHECK-LABEL: mulDouble
-; CHECK: mulsd
-; CHECK: fld
-; ARM32-LABEL: mulDouble
-; ARM32: vmul.f64 d{{[0-9]+}}, d
-; MIPS32-LABEL: mulDouble
-; MIPS32: mul.d
-
-define internal float @divFloat(float %a, float %b) {
-entry:
-  %div = fdiv float %a, %b
-  ret float %div
-}
-; CHECK-LABEL: divFloat
-; CHECK: divss
-; CHECK: fld
-; ARM32-LABEL: divFloat
-; ARM32: vdiv.f32 s{{[0-9]+}}, s
-; MIPS32-LABEL: divFloat
-; MIPS32: div.s
-
-define internal double @divDouble(double %a, double %b) {
-entry:
-  %div = fdiv double %a, %b
-  ret double %div
-}
-; CHECK-LABEL: divDouble
-; CHECK: divsd
-; CHECK: fld
-; ARM32-LABEL: divDouble
-; ARM32: vdiv.f64 d{{[0-9]+}}, d
-; MIPS32-LABEL: divDouble
-; MIPS32: div.d
-
-define internal float @remFloat(float %a, float %b) {
-entry:
-  %div = frem float %a, %b
-  ret float %div
-}
-; CHECK-LABEL: remFloat
-; CHECK: call {{.*}} R_{{.*}} fmodf
-; ARM32-LABEL: remFloat
-; ARM32: bl {{.*}} fmodf
-; MIPS32-LABEL: remFloat
-; MIPS32: jal {{.*}} fmodf
-
-define internal double @remDouble(double %a, double %b) {
-entry:
-  %div = frem double %a, %b
-  ret double %div
-}
-; CHECK-LABEL: remDouble
-; CHECK: call {{.*}} R_{{.*}} fmod
-; ARM32-LABEL: remDouble
-; ARM32: bl {{.*}} fmod
-; MIPS32-LABEL: remDouble
-; MIPS32: jal {{.*}} fmod
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/fp.arm.call.ll b/third_party/subzero/tests_lit/llvm2ice_tests/fp.arm.call.ll
deleted file mode 100644
index d45957a..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/fp.arm.call.ll
+++ /dev/null
@@ -1,576 +0,0 @@
-; Tests validating the vfp calling convention for ARM32.
-;
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck %s
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj --disassemble --target arm32 \
-; RUN:   -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck %s
-
-; Boring tests ensuring float arguments are allocated "correctly." Unfortunately
-; this test cannot verify whether the right arguments are being allocated to the
-; right register.
-declare void @float1(float %p0)
-declare void @float2(float %p0, float %p1)
-declare void @float3(float %p0, float %p1, float %p2)
-declare void @float4(float %p0, float %p1, float %p2, float %p3)
-declare void @float5(float %p0, float %p1, float %p2, float %p3, float %p4)
-declare void @float6(float %p0, float %p1, float %p2, float %p3, float %p4,
-                     float %p5)
-declare void @float7(float %p0, float %p1, float %p2, float %p3, float %p4,
-                     float %p5, float %p6)
-declare void @float8(float %p0, float %p1, float %p2, float %p3, float %p4,
-                     float %p5, float %p6, float %p7)
-declare void @float9(float %p0, float %p1, float %p2, float %p3, float %p4,
-                     float %p5, float %p6, float %p7, float %p8)
-declare void @float10(float %p0, float %p1, float %p2, float %p3, float %p4,
-                      float %p5, float %p6, float %p7, float %p8, float %p9)
-declare void @float11(float %p0, float %p1, float %p2, float %p3, float %p4,
-                      float %p5, float %p6, float %p7, float %p8, float %p9,
-                      float %p10)
-declare void @float12(float %p0, float %p1, float %p2, float %p3, float %p4,
-                      float %p5, float %p6, float %p7, float %p8, float %p9,
-                      float %p10, float %p11)
-declare void @float13(float %p0, float %p1, float %p2, float %p3, float %p4,
-                      float %p5, float %p6, float %p7, float %p8, float %p9,
-                      float %p10, float %p11, float %p12)
-declare void @float14(float %p0, float %p1, float %p2, float %p3, float %p4,
-                      float %p5, float %p6, float %p7, float %p8, float %p9,
-                      float %p10, float %p11, float %p12, float %p13)
-declare void @float15(float %p0, float %p1, float %p2, float %p3, float %p4,
-                      float %p5, float %p6, float %p7, float %p8, float %p9,
-                      float %p10, float %p11, float %p12, float %p13,
-                      float %p14)
-declare void @float16(float %p0, float %p1, float %p2, float %p3, float %p4,
-                      float %p5, float %p6, float %p7, float %p8, float %p9,
-                      float %p10, float %p11, float %p12, float %p13,
-                      float %p14, float %p15)
-declare void @float17(float %p0, float %p1, float %p2, float %p3, float %p4,
-                      float %p5, float %p6, float %p7, float %p8, float %p9,
-                      float %p10, float %p11, float %p12, float %p13,
-                      float %p14, float %p15, float %p16)
-declare void @float18(float %p0, float %p1, float %p2, float %p3, float %p4,
-                      float %p5, float %p6, float %p7, float %p8, float %p9,
-                      float %p10, float %p11, float %p12, float %p13,
-                      float %p14, float %p15, float %p16, float %p17)
-define internal void @floatHarness() nounwind {
-; CHECK-LABEL: floatHarness
-  call void @float1(float 1.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK: bl {{.*}} float1
-  call void @float2(float 1.0, float 2.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f32 s1
-; CHECK: bl {{.*}} float2
-  call void @float3(float 1.0, float 2.0, float 3.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f32 s1
-; CHECK-DAG: vmov.f32 s2
-; CHECK: bl {{.*}} float3
-  call void @float4(float 1.0, float 2.0, float 3.0, float 4.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f32 s1
-; CHECK-DAG: vmov.f32 s2
-; CHECK-DAG: vmov.f32 s3
-; CHECK: bl {{.*}} float4
-  call void @float5(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f32 s1
-; CHECK-DAG: vmov.f32 s2
-; CHECK-DAG: vmov.f32 s3
-; CHECK-DAG: vmov.f32 s4
-; CHECK: bl {{.*}} float5
-  call void @float6(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
-                    float 6.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f32 s1
-; CHECK-DAG: vmov.f32 s2
-; CHECK-DAG: vmov.f32 s3
-; CHECK-DAG: vmov.f32 s4
-; CHECK-DAG: vmov.f32 s5
-; CHECK: bl {{.*}} float6
-  call void @float7(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
-                    float 6.0, float 7.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f32 s1
-; CHECK-DAG: vmov.f32 s2
-; CHECK-DAG: vmov.f32 s3
-; CHECK-DAG: vmov.f32 s4
-; CHECK-DAG: vmov.f32 s5
-; CHECK-DAG: vmov.f32 s6
-; CHECK: bl {{.*}} float7
-  call void @float8(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
-                    float 6.0, float 7.0, float 8.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f32 s1
-; CHECK-DAG: vmov.f32 s2
-; CHECK-DAG: vmov.f32 s3
-; CHECK-DAG: vmov.f32 s4
-; CHECK-DAG: vmov.f32 s5
-; CHECK-DAG: vmov.f32 s6
-; CHECK-DAG: vmov.f32 s7
-; CHECK: bl {{.*}} float8
-  call void @float9(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
-                    float 6.0, float 7.0, float 8.0, float 9.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f32 s1
-; CHECK-DAG: vmov.f32 s2
-; CHECK-DAG: vmov.f32 s3
-; CHECK-DAG: vmov.f32 s4
-; CHECK-DAG: vmov.f32 s5
-; CHECK-DAG: vmov.f32 s6
-; CHECK-DAG: vmov.f32 s7
-; CHECK-DAG: vmov.f32 s8
-; CHECK: bl {{.*}} float9
-  call void @float10(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
-                    float 6.0, float 7.0, float 8.0, float 9.0, float 10.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f32 s1
-; CHECK-DAG: vmov.f32 s2
-; CHECK-DAG: vmov.f32 s3
-; CHECK-DAG: vmov.f32 s4
-; CHECK-DAG: vmov.f32 s5
-; CHECK-DAG: vmov.f32 s6
-; CHECK-DAG: vmov.f32 s7
-; CHECK-DAG: vmov.f32 s8
-; CHECK-DAG: vmov.f32 s9
-; CHECK: bl {{.*}} float10
-  call void @float11(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
-                    float 6.0, float 7.0, float 8.0, float 9.0, float 10.0,
-                    float 11.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f32 s1
-; CHECK-DAG: vmov.f32 s2
-; CHECK-DAG: vmov.f32 s3
-; CHECK-DAG: vmov.f32 s4
-; CHECK-DAG: vmov.f32 s5
-; CHECK-DAG: vmov.f32 s6
-; CHECK-DAG: vmov.f32 s7
-; CHECK-DAG: vmov.f32 s8
-; CHECK-DAG: vmov.f32 s9
-; CHECK-DAG: vmov.f32 s10
-; CHECK: bl {{.*}} float11
-  call void @float12(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
-                    float 6.0, float 7.0, float 8.0, float 9.0, float 10.0,
-                    float 11.0, float 12.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f32 s1
-; CHECK-DAG: vmov.f32 s2
-; CHECK-DAG: vmov.f32 s3
-; CHECK-DAG: vmov.f32 s4
-; CHECK-DAG: vmov.f32 s5
-; CHECK-DAG: vmov.f32 s6
-; CHECK-DAG: vmov.f32 s7
-; CHECK-DAG: vmov.f32 s8
-; CHECK-DAG: vmov.f32 s9
-; CHECK-DAG: vmov.f32 s10
-; CHECK-DAG: vmov.f32 s11
-; CHECK: bl {{.*}} float12
-  call void @float13(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
-                    float 6.0, float 7.0, float 8.0, float 9.0, float 10.0,
-                    float 11.0, float 12.0, float 13.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f32 s1
-; CHECK-DAG: vmov.f32 s2
-; CHECK-DAG: vmov.f32 s3
-; CHECK-DAG: vmov.f32 s4
-; CHECK-DAG: vmov.f32 s5
-; CHECK-DAG: vmov.f32 s6
-; CHECK-DAG: vmov.f32 s7
-; CHECK-DAG: vmov.f32 s8
-; CHECK-DAG: vmov.f32 s9
-; CHECK-DAG: vmov.f32 s10
-; CHECK-DAG: vmov.f32 s11
-; CHECK-DAG: vmov.f32 s12
-; CHECK: bl {{.*}} float13
-  call void @float14(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
-                    float 6.0, float 7.0, float 8.0, float 9.0, float 10.0,
-                    float 11.0, float 12.0, float 13.0, float 14.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f32 s1
-; CHECK-DAG: vmov.f32 s2
-; CHECK-DAG: vmov.f32 s3
-; CHECK-DAG: vmov.f32 s4
-; CHECK-DAG: vmov.f32 s5
-; CHECK-DAG: vmov.f32 s6
-; CHECK-DAG: vmov.f32 s7
-; CHECK-DAG: vmov.f32 s8
-; CHECK-DAG: vmov.f32 s9
-; CHECK-DAG: vmov.f32 s10
-; CHECK-DAG: vmov.f32 s11
-; CHECK-DAG: vmov.f32 s12
-; CHECK-DAG: vmov.f32 s13
-; CHECK: bl {{.*}} float14
-  call void @float15(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
-                    float 6.0, float 7.0, float 8.0, float 9.0, float 10.0,
-                    float 11.0, float 12.0, float 13.0, float 14.0,
-                    float 15.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f32 s1
-; CHECK-DAG: vmov.f32 s2
-; CHECK-DAG: vmov.f32 s3
-; CHECK-DAG: vmov.f32 s4
-; CHECK-DAG: vmov.f32 s5
-; CHECK-DAG: vmov.f32 s6
-; CHECK-DAG: vmov.f32 s7
-; CHECK-DAG: vmov.f32 s8
-; CHECK-DAG: vmov.f32 s9
-; CHECK-DAG: vmov.f32 s10
-; CHECK-DAG: vmov.f32 s11
-; CHECK-DAG: vmov.f32 s12
-; CHECK-DAG: vmov.f32 s13
-; CHECK-DAG: vmov.f32 s14
-; CHECK: bl {{.*}} float15
-  call void @float16(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
-                    float 6.0, float 7.0, float 8.0, float 9.0, float 10.0,
-                    float 11.0, float 12.0, float 13.0, float 14.0,
-                    float 15.0, float 16.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f32 s1
-; CHECK-DAG: vmov.f32 s2
-; CHECK-DAG: vmov.f32 s3
-; CHECK-DAG: vmov.f32 s4
-; CHECK-DAG: vmov.f32 s5
-; CHECK-DAG: vmov.f32 s6
-; CHECK-DAG: vmov.f32 s7
-; CHECK-DAG: vmov.f32 s8
-; CHECK-DAG: vmov.f32 s9
-; CHECK-DAG: vmov.f32 s10
-; CHECK-DAG: vmov.f32 s11
-; CHECK-DAG: vmov.f32 s12
-; CHECK-DAG: vmov.f32 s13
-; CHECK-DAG: vmov.f32 s14
-; CHECK-DAG: vmov.f32 s15
-; CHECK: bl {{.*}} float16
-  call void @float17(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
-                    float 6.0, float 7.0, float 8.0, float 9.0, float 10.0,
-                    float 11.0, float 12.0, float 13.0, float 14.0,
-                    float 15.0, float 16.0, float 17.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f32 s1
-; CHECK-DAG: vmov.f32 s2
-; CHECK-DAG: vmov.f32 s3
-; CHECK-DAG: vmov.f32 s4
-; CHECK-DAG: vmov.f32 s5
-; CHECK-DAG: vmov.f32 s6
-; CHECK-DAG: vmov.f32 s7
-; CHECK-DAG: vmov.f32 s8
-; CHECK-DAG: vmov.f32 s9
-; CHECK-DAG: vmov.f32 s10
-; CHECK-DAG: vmov.f32 s11
-; CHECK-DAG: vmov.f32 s12
-; CHECK-DAG: vmov.f32 s13
-; CHECK-DAG: vmov.f32 s14
-; CHECK-DAG: vmov.f32 s15
-; CHECK-DAG: vstr s{{.*}}, [sp]
-; CHECK: bl {{.*}} float17
-  call void @float18(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
-                    float 6.0, float 7.0, float 8.0, float 9.0, float 10.0,
-                    float 11.0, float 12.0, float 13.0, float 14.0,
-                    float 15.0, float 16.0, float 17.0, float 18.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f32 s1
-; CHECK-DAG: vmov.f32 s2
-; CHECK-DAG: vmov.f32 s3
-; CHECK-DAG: vmov.f32 s4
-; CHECK-DAG: vmov.f32 s5
-; CHECK-DAG: vmov.f32 s6
-; CHECK-DAG: vmov.f32 s7
-; CHECK-DAG: vmov.f32 s8
-; CHECK-DAG: vmov.f32 s9
-; CHECK-DAG: vmov.f32 s10
-; CHECK-DAG: vmov.f32 s11
-; CHECK-DAG: vmov.f32 s12
-; CHECK-DAG: vmov.f32 s13
-; CHECK-DAG: vmov.f32 s14
-; CHECK-DAG: vmov.f32 s15
-; CHECK-DAG: vstr s{{.*}}, [sp]
-; CHECK-DAG: vstr s{{.*}}, [sp, #4]
-; CHECK: bl {{.*}} float18
-  ret void
-}
-
-declare void @double1(double %p0)
-declare void @double2(double %p0, double %p1)
-declare void @double3(double %p0, double %p1, double %p2)
-declare void @double4(double %p0, double %p1, double %p2, double %p3)
-declare void @double5(double %p0, double %p1, double %p2, double %p3,
-                      double %p4)
-declare void @double6(double %p0, double %p1, double %p2, double %p3,
-                      double %p4, double %p5)
-declare void @double7(double %p0, double %p1, double %p2, double %p3,
-                      double %p4, double %p5, double %p6)
-declare void @double8(double %p0, double %p1, double %p2, double %p3,
-                      double %p4, double %p5, double %p6, double %p7)
-declare void @double9(double %p0, double %p1, double %p2, double %p3,
-                      double %p4, double %p5, double %p6, double %p7,
-                      double %p8)
-declare void @double10(double %p0, double %p1, double %p2, double %p3,
-                      double %p4, double %p5, double %p6, double %p7,
-                      double %p8, double %p9)
-define internal void @doubleHarness() nounwind {
-; CHECK-LABEL: doubleHarness
-  call void @double1(double 1.0)
-; CHECK-DAG: vmov.f64 d0
-; CHECK: bl {{.*}} double1
-  call void @double2(double 1.0, double 2.0)
-; CHECK-DAG: vmov.f64 d0
-; CHECK-DAG: vmov.f64 d1
-; CHECK: bl {{.*}} double2
-  call void @double3(double 1.0, double 2.0, double 3.0)
-; CHECK-DAG: vmov.f64 d0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK: bl {{.*}} double3
-  call void @double4(double 1.0, double 2.0, double 3.0, double 4.0)
-; CHECK-DAG: vmov.f64 d0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK-DAG: vmov.f64 d3
-; CHECK: bl {{.*}} double4
-  call void @double5(double 1.0, double 2.0, double 3.0, double 4.0,
-                     double 5.0)
-; CHECK-DAG: vmov.f64 d0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK-DAG: vmov.f64 d3
-; CHECK-DAG: vmov.f64 d4
-; CHECK: bl {{.*}} double5
-  call void @double6(double 1.0, double 2.0, double 3.0, double 4.0,
-                     double 5.0, double 6.0)
-; CHECK-DAG: vmov.f64 d0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK-DAG: vmov.f64 d3
-; CHECK-DAG: vmov.f64 d4
-; CHECK-DAG: vmov.f64 d5
-; CHECK: bl {{.*}} double6
-  call void @double7(double 1.0, double 2.0, double 3.0, double 4.0,
-                     double 5.0, double 6.0, double 7.0)
-; CHECK-DAG: vmov.f64 d0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK-DAG: vmov.f64 d3
-; CHECK-DAG: vmov.f64 d4
-; CHECK-DAG: vmov.f64 d5
-; CHECK-DAG: vmov.f64 d6
-; CHECK: bl {{.*}} double7
-  call void @double8(double 1.0, double 2.0, double 3.0, double 4.0,
-                     double 5.0, double 6.0, double 7.0, double 8.0)
-; CHECK-DAG: vmov.f64 d0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK-DAG: vmov.f64 d3
-; CHECK-DAG: vmov.f64 d4
-; CHECK-DAG: vmov.f64 d5
-; CHECK-DAG: vmov.f64 d6
-; CHECK-DAG: vmov.f64 d7
-; CHECK: bl {{.*}} double8
-  call void @double9(double 1.0, double 2.0, double 3.0, double 4.0,
-                     double 5.0, double 6.0, double 7.0, double 8.0,
-                     double 9.0)
-; CHECK-DAG: vmov.f64 d0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK-DAG: vmov.f64 d3
-; CHECK-DAG: vmov.f64 d4
-; CHECK-DAG: vmov.f64 d5
-; CHECK-DAG: vmov.f64 d6
-; CHECK-DAG: vmov.f64 d7
-; CHECK-DAG: vstr d{{.*}}, [sp]
-; CHECK: bl {{.*}} double9
-  call void @double10(double 1.0, double 2.0, double 3.0, double 4.0,
-                     double 5.0, double 6.0, double 7.0, double 8.0,
-                     double 9.0, double 10.0)
-; CHECK-DAG: vmov.f64 d0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK-DAG: vmov.f64 d3
-; CHECK-DAG: vmov.f64 d4
-; CHECK-DAG: vmov.f64 d5
-; CHECK-DAG: vmov.f64 d6
-; CHECK-DAG: vmov.f64 d7
-; CHECK-DAG: vstr d{{.*}}, [sp]
-; CHECK-DAG: vstr d{{.*}}, [sp, #8]
-; CHECK: bl {{.*}} double10
-
-  ret void
-}
-
-declare void @testFDF(float %p0, double %p1, float %p2)
-declare void @testFDDF(float %p0, double %p1, double %p2, float %p3)
-declare void @testFDDDF(float %p0, double %p1, double %p2, double %p3,
-                        float %p4)
-declare void @testFDDDDF(float %p0, double %p1, double %p2, double %p3,
-                         double %p4, float %p5)
-declare void @testFDDDDDF(float %p0, double %p1, double %p2, double %p3,
-                          double %p4, double %p5, float %p6)
-declare void @testFDDDDDDF(float %p0, double %p1, double %p2, double %p3,
-                           double %p4, double %p5, double %p6, float %p7)
-declare void @testFDDDDDDDF(float %p0, double %p1, double %p2, double %p3,
-                            double %p4, double %p5, double %p6, double %p7,
-                            float %p8)
-declare void @testFDDDDDDDFD(float %p0, double %p1, double %p2, double %p3,
-                             double %p4, double %p5, double %p6, double %p7,
-                             float %p8, double %p9)
-declare void @testFDDDDDDDDF(float %p0, double %p1, double %p2, double %p3,
-                             double %p4, double %p5, double %p6, double %p7,
-                             double %p8, float %p9)
-declare void @testFDDDDDDDDDF(float %p0, double %p1, double %p2, double %p3,
-                              double %p4, double %p5, double %p6, double %p7,
-                              double %p8, double %p9, float %p10)
-declare void @testFDDDDDDDDFD(float %p0, double %p1, double %p2, double %p3,
-                              double %p4, double %p5, double %p6, double %p7,
-                              double %p8, float %p9, double %p10)
-declare void @testFDDDDDDDDFDF(float %p0, double %p1, double %p2, double %p3,
-                               double %p4, double %p5, double %p6, double %p7,
-                               double %p8, float %p9, double %p10, float %p11)
-define internal void @packsFloats() nounwind {
-; CHECK-LABEL: packsFloats
-  call void @testFDF(float 1.0, double 2.0, float 3.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f32 s1
-; CHECK: bl {{.*}} testFDF
-  call void @testFDDF(float 1.0, double 2.0, double 3.0, float 4.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK-DAG: vmov.f32 s1
-; CHECK: bl {{.*}} testFDDF
-  call void @testFDDDF(float 1.0, double 2.0, double 3.0, double 4.0,
-                       float 5.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK-DAG: vmov.f64 d3
-; CHECK-DAG: vmov.f32 s1
-; CHECK: bl {{.*}} testFDDDF
-  call void @testFDDDDF(float 1.0, double 2.0, double 3.0, double 4.0,
-                        double 5.0, float 6.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK-DAG: vmov.f64 d3
-; CHECK-DAG: vmov.f64 d4
-; CHECK-DAG: vmov.f32 s1
-; CHECK: bl {{.*}} testFDDDDF
-  call void @testFDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0,
-                         double 5.0, double 6.0, float 7.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK-DAG: vmov.f64 d3
-; CHECK-DAG: vmov.f64 d4
-; CHECK-DAG: vmov.f64 d5
-; CHECK-DAG: vmov.f32 s1
-; CHECK: bl {{.*}} testFDDDDDF
-  call void @testFDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0,
-                          double 5.0, double 6.0, double 7.0, float 8.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK-DAG: vmov.f64 d3
-; CHECK-DAG: vmov.f64 d4
-; CHECK-DAG: vmov.f64 d5
-; CHECK-DAG: vmov.f64 d6
-; CHECK-DAG: vmov.f32 s1
-; CHECK: bl {{.*}} testFDDDDDDF
-  call void @testFDDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0,
-                           double 5.0, double 6.0, double 7.0, double 8.0,
-                           float 9.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK-DAG: vmov.f64 d3
-; CHECK-DAG: vmov.f64 d4
-; CHECK-DAG: vmov.f64 d5
-; CHECK-DAG: vmov.f64 d6
-; CHECK-DAG: vmov.f64 d7
-; CHECK-DAG: vmov.f32 s1
-; CHECK: bl {{.*}} testFDDDDDDDF
-  call void @testFDDDDDDDFD(float 1.0, double 2.0, double 3.0, double 4.0,
-                            double 5.0, double 6.0, double 7.0, double 8.0,
-                            float 9.0, double 10.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK-DAG: vmov.f64 d3
-; CHECK-DAG: vmov.f64 d4
-; CHECK-DAG: vmov.f64 d5
-; CHECK-DAG: vmov.f64 d6
-; CHECK-DAG: vmov.f64 d7
-; CHECK-DAG: vstr d{{.*}}, [sp]
-; CHECK-DAG: vmov.f32 s1
-; CHECK: bl {{.*}} testFDDDDDDDFD
-  call void @testFDDDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0,
-                            double 5.0, double 6.0, double 7.0, double 8.0,
-                            double 9.0, float 10.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK-DAG: vmov.f64 d3
-; CHECK-DAG: vmov.f64 d4
-; CHECK-DAG: vmov.f64 d5
-; CHECK-DAG: vmov.f64 d6
-; CHECK-DAG: vmov.f64 d7
-; CHECK-DAG: vstr d{{.*}}, [sp]
-; CHECK-DAG: vstr s{{.*}}, [sp, #8]
-; CHECK: bl {{.*}} testFDDDDDDDDF
-  call void @testFDDDDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0,
-                             double 5.0, double 6.0, double 7.0, double 8.0,
-                             double 9.0, double 10.0, float 11.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK-DAG: vmov.f64 d3
-; CHECK-DAG: vmov.f64 d4
-; CHECK-DAG: vmov.f64 d5
-; CHECK-DAG: vmov.f64 d6
-; CHECK-DAG: vmov.f64 d7
-; CHECK-DAG: vstr d{{.*}}, [sp]
-; CHECK-DAG: vstr d{{.*}}, [sp, #8]
-; CHECK-DAG: vstr s{{.*}}, [sp, #16]
-; CHECK: bl {{.*}} testFDDDDDDDDDF
-  call void @testFDDDDDDDDFD(float 1.0, double 2.0, double 3.0, double 4.0,
-                             double 5.0, double 6.0, double 7.0, double 8.0,
-                             double 9.0, float 10.0, double 11.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK-DAG: vmov.f64 d3
-; CHECK-DAG: vmov.f64 d4
-; CHECK-DAG: vmov.f64 d5
-; CHECK-DAG: vmov.f64 d6
-; CHECK-DAG: vmov.f64 d7
-; CHECK-DAG: vstr d{{.*}}, [sp]
-; CHECK-DAG: vstr s{{.*}}, [sp, #8]
-; CHECK-DAG: vstr d{{.*}}, [sp, #16]
-; CHECK: bl {{.*}} testFDDDDDDDDFD
-  call void @testFDDDDDDDDFDF(float 1.0, double 2.0, double 3.0, double 4.0,
-                              double 5.0, double 6.0, double 7.0, double 8.0,
-                              double 9.0, float 10.0, double 11.0, float 12.0)
-; CHECK-DAG: vmov.f32 s0
-; CHECK-DAG: vmov.f64 d1
-; CHECK-DAG: vmov.f64 d2
-; CHECK-DAG: vmov.f64 d3
-; CHECK-DAG: vmov.f64 d4
-; CHECK-DAG: vmov.f64 d5
-; CHECK-DAG: vmov.f64 d6
-; CHECK-DAG: vmov.f64 d7
-; CHECK-DAG: vstr d{{.*}}, [sp]
-; CHECK-DAG: vstr s{{.*}}, [sp, #8]
-; CHECK-DAG: vstr d{{.*}}, [sp, #16]
-; CHECK-DAG: vstr s{{.*}}, [sp, #24]
-; CHECK: bl {{.*}} testFDDDDDDDDFD
-
-  ret void
-}
-
-; TODO(jpp): add tests for stack alignment.
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/fp.call_ret.ll b/third_party/subzero/tests_lit/llvm2ice_tests/fp.call_ret.ll
deleted file mode 100644
index 460d70c..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/fp.call_ret.ll
+++ /dev/null
@@ -1,147 +0,0 @@
-; This tries to be a comprehensive test of f32 and f64 call/return ops.
-; The CHECK lines are only checking for basic instruction patterns
-; that should be present regardless of the optimization level, so
-; there are no special OPTM1 match lines.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -Om1 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:   mips32 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-; Can't test on ARM yet. Need to use several vpush {contiguous FP regs},
-; instead of push {any GPR list}.
-
-define internal i32 @doubleArgs(double %a, i32 %b, double %c) {
-entry:
-  ret i32 %b
-}
-; CHECK-LABEL: doubleArgs
-; CHECK:      mov eax,DWORD PTR [esp+0xc]
-; CHECK-NEXT: ret
-; ARM32-LABEL: doubleArgs
-; MIPS32-LABEL: doubleArgs
-; MIPS32: 	move	v0,a2
-; MIPS32: 	jr	ra
-
-define internal i32 @floatArgs(float %a, i32 %b, float %c) {
-entry:
-  ret i32 %b
-}
-; CHECK-LABEL: floatArgs
-; CHECK:      mov eax,DWORD PTR [esp+0x8]
-; CHECK-NEXT: ret
-; MIPS32-LABEL: floatArgs
-; MIPS32: 	move	v0,a1
-; MIPS32: 	jr	ra
-
-define internal i32 @passFpArgs(float %a, double %b, float %c, double %d, float %e, double %f) {
-entry:
-  %call = call i32 @ignoreFpArgsNoInline(float %a, i32 123, double %b)
-  %call1 = call i32 @ignoreFpArgsNoInline(float %c, i32 123, double %d)
-  %call2 = call i32 @ignoreFpArgsNoInline(float %e, i32 123, double %f)
-  %add = add i32 %call1, %call
-  %add3 = add i32 %add, %call2
-  ret i32 %add3
-}
-; CHECK-LABEL: passFpArgs
-; CHECK: mov DWORD PTR [esp+0x4],0x7b
-; CHECK: call {{.*}} R_{{.*}} ignoreFpArgsNoInline
-; CHECK: mov DWORD PTR [esp+0x4],0x7b
-; CHECK: call {{.*}} R_{{.*}} ignoreFpArgsNoInline
-; CHECK: mov DWORD PTR [esp+0x4],0x7b
-; CHECK: call {{.*}} R_{{.*}} ignoreFpArgsNoInline
-; MIPS32-LABEL: passFpArgs
-; MIPS32: 	mfc1	a2,$f{{[0-9]+}}
-; MIPS32: 	mfc1	a3,$f{{[0-9]+}}
-; MIPS32: 	li	a1,123
-; MIPS32: 	jal	{{.*}}	ignoreFpArgsNoInline
-; MIPS32: 	mfc1	a2,$f{{[0-9]+}}
-; MIPS32: 	mfc1	a3,$f{{[0-9]+}}
-; MIPS32: 	li	a1,123
-; MIPS32: 	jal	{{.*}}	ignoreFpArgsNoInline
-; MIPS32: 	mfc1	a2,$f{{[0-9]+}}
-; MIPS32: 	mfc1	a3,$f{{[0-9]+}}
-; MIPS32: 	li	a1,123
-; MIPS32: 	jal	{{.*}}	ignoreFpArgsNoInline
-
-declare i32 @ignoreFpArgsNoInline(float %x, i32 %y, double %z)
-
-define internal i32 @passFpConstArg(float %a, double %b) {
-entry:
-  %call = call i32 @ignoreFpArgsNoInline(float %a, i32 123, double 2.340000e+00)
-  ret i32 %call
-}
-; CHECK-LABEL: passFpConstArg
-; CHECK: mov DWORD PTR [esp+0x4],0x7b
-; CHECK: call {{.*}} R_{{.*}} ignoreFpArgsNoInline
-; MIPS32-LABEL: passFpConstArg
-; MIPS32: 	mfc1	a2,$f{{[0-9]+}}
-; MIPS32: 	mfc1	a3,$f{{[0-9]+}}
-; MIPS32: 	li	a1,123
-; MIPS32: 	jal	{{.*}}	ignoreFpArgsNoInline
-
-define internal i32 @passFp32ConstArg(float %a) {
-entry:
-  %call = call i32 @ignoreFp32ArgsNoInline(float %a, i32 123, float 2.0)
-  ret i32 %call
-}
-; CHECK-LABEL: passFp32ConstArg
-; CHECK: mov DWORD PTR [esp+0x4],0x7b
-; CHECK: movss DWORD PTR [esp+0x8]
-; CHECK: call {{.*}} R_{{.*}} ignoreFp32ArgsNoInline
-; MIPS32-LABEL: passFp32ConstArg
-; MIPS32: 	mfc1	a2,$f0
-; MIPS32: 	li	a1,123
-; MIPS32: 	jal	{{.*}}	ignoreFp32ArgsNoInline
-
-declare i32 @ignoreFp32ArgsNoInline(float %x, i32 %y, float %z)
-
-define internal float @returnFloatArg(float %a) {
-entry:
-  ret float %a
-}
-; CHECK-LABEL: returnFloatArg
-; CHECK: fld DWORD PTR [esp
-; MIPS32-LABEL: returnFloatArg
-; MIPS32: 	mov.s	$f0,$f12
-; MIPS32: 	jr	ra
-
-define internal double @returnDoubleArg(double %a) {
-entry:
-  ret double %a
-}
-; CHECK-LABEL: returnDoubleArg
-; CHECK: fld QWORD PTR [esp
-; MIPS32-LABEL: returnDoubleArg
-; MIPS32: 	mov.d	$f0,$f12
-; MIPS32: 	jr	ra
-
-define internal float @returnFloatConst() {
-entry:
-  ret float 0x3FF3AE1480000000
-}
-; CHECK-LABEL: returnFloatConst
-; CHECK: fld
-; MIPS32-LABEL: returnFloatConst
-; MIPS32: 	lui	v0,0x0    {{.*}} .L$float$3f9d70a4
-; MIPS32: 	lwc1	$f0,0(v0) {{.*}} .L$float$3f9d70a4
-; MIPS32: 	jr	ra
-
-define internal double @returnDoubleConst() {
-entry:
-  ret double 1.230000e+00
-}
-; CHECK-LABEL: returnDoubleConst
-; CHECK: fld
-; MIPS32-LABEL: returnDoubleConst
-; MIPS32: 	lui	v0,0x0	   {{.*}}  .L$double$3ff3ae147ae147ae
-; MIPS32: 	ldc1	$f0,0(v0)  {{.*}}  .L$double$3ff3ae147ae147ae
-; MIPS32: 	jr	ra
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/fp.cmp.ll b/third_party/subzero/tests_lit/llvm2ice_tests/fp.cmp.ll
deleted file mode 100644
index ce646f2..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/fp.cmp.ll
+++ /dev/null
@@ -1,1027 +0,0 @@
-; This tries to be a comprehensive test of f32 and f64 compare operations.
-
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s \
-; RUN:   --check-prefix=CHECK-OM1
-
-; RUN: %if --need=target_ARM32 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target arm32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32 --command FileCheck %s \
-; RUN:   --check-prefix=ARM32 --check-prefix=ARM32-O2
-
-; RUN: %if --need=target_ARM32 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target arm32 -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32 --command FileCheck %s \
-; RUN:   --check-prefix=ARM32 --check-prefix=ARM32-OM1
-
-; RUN: %if --need=allow_dump --need=target_MIPS32 --command %p2i \
-; RUN:   --filetype=asm --target mips32 -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=allow_dump --need=target_MIPS32 --command FileCheck %s \
-; RUN:   --check-prefix=MIPS32
-
-define internal void @fcmpEq(float %a, float %b, double %c, double %d) {
-entry:
-  %cmp = fcmp oeq float %a, %b
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  %cmp1 = fcmp oeq double %c, %d
-  br i1 %cmp1, label %if.then2, label %if.end3
-
-if.then2:                                         ; preds = %if.end
-  call void @func()
-  br label %if.end3
-
-if.end3:                                          ; preds = %if.then2, %if.end
-  ret void
-}
-; CHECK-LABEL: fcmpEq
-; CHECK: ucomiss
-; CHECK-NEXT: jne
-; CHECK-NEXT: jp
-; CHECK-NEXT: call {{.*}} R_{{.*}} func
-; CHECK: ucomisd
-; CHECK-NEXT: jne
-; CHECK-NEXT: jp
-; CHECK: call {{.*}} R_{{.*}} func
-; CHECK-OM1-LABEL: fcmpEq
-; CHECK-OM1: ucomiss
-; CHECK-OM1: jne
-; CHECK-OM1-NEXT: jp
-; CHECK-OM1: call {{.*}} R_{{.*}} func
-; CHECK-OM1: ucomisd
-; CHECK-OM1: jne
-; CHECK-NEXT-OM1: jp
-; ARM32-LABEL: fcmpEq
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R0:r[0-9]+]], #0
-; ARM32-OM1: moveq [[R0]], #1
-; ARM32-O2: bne
-; ARM32: bl{{.*}}func
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R1:r[0-9]+]], #0
-; ARM32-OM1: moveq [[R1]], #1
-; ARM32-O2: bne
-; MIPS32-LABEL: fcmpEq
-; MIPS32-LABEL: .LfcmpEq$entry
-; MIPS32: c.eq.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-; MIPS32-LABEL: .LfcmpEq$if.end
-; MIPS32: c.eq.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-
-declare void @func()
-
-define internal void @fcmpNe(float %a, float %b, double %c, double %d) {
-entry:
-  %cmp = fcmp une float %a, %b
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  %cmp1 = fcmp une double %c, %d
-  br i1 %cmp1, label %if.then2, label %if.end3
-
-if.then2:                                         ; preds = %if.end
-  call void @func()
-  br label %if.end3
-
-if.end3:                                          ; preds = %if.then2, %if.end
-  ret void
-}
-; CHECK-LABEL: fcmpNe
-; CHECK: ucomiss
-; CHECK-NEXT: jne
-; CHECK-NEXT: jp
-; CHECK-NEXT: jmp
-; CHECK-NEXT: call {{.*}} R_{{.*}} func
-; CHECK: ucomisd
-; CHECK-NEXT: jne
-; CHECK-NEXT: jp
-; CHECK-NEXT: jmp
-; CHECK-NEXT: call {{.*}} R_{{.*}} func
-; CHECK-OM1-LABEL: fcmpNe
-; CHECK-OM1: ucomiss
-; CHECK-OM1: jne
-; CHECK-OM1: jp
-; CHECK-OM1: jmp
-; CHECK-OM1: call {{.*}} R_{{.*}} func
-; CHECK-OM1: ucomisd
-; CHECK-OM1: jne
-; CHECK-OM1: jp
-; CHECK-OM1: jmp
-; CHECK-OM1: call {{.*}} R_{{.*}} func
-; ARM32-LABEL: fcmpNe
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R0:r[0-9]+]], #0
-; ARM32-OM1: movne [[R0]], #1
-; ARM32-O2: beq
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R1:r[0-9]+]], #0
-; ARM32-OM1: movne [[R1]], #1
-; ARM32-O2: beq
-; MIPS32-LABEL: fcmpNe
-; MIPS32-LABEL: .LfcmpNe$entry
-; MIPS32: c.eq.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-; MIPS32-LABEL: .LfcmpNe$if.end
-; MIPS32: c.eq.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-
-define internal void @fcmpGt(float %a, float %b, double %c, double %d) {
-entry:
-  %cmp = fcmp ogt float %a, %b
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  %cmp1 = fcmp ogt double %c, %d
-  br i1 %cmp1, label %if.then2, label %if.end3
-
-if.then2:                                         ; preds = %if.end
-  call void @func()
-  br label %if.end3
-
-if.end3:                                          ; preds = %if.then2, %if.end
-  ret void
-}
-; CHECK-LABEL: fcmpGt
-; CHECK: ucomiss
-; CHECK-NEXT: jbe
-; CHECK-NEXT: call {{.*}} R_{{.*}} func
-; CHECK: ucomisd
-; CHECK-NEXT: jbe
-; CHECK-NEXT: call {{.*}} R_{{.*}} func
-; CHECK-OM1-LABEL: fcmpGt
-; CHECK-OM1: ucomiss
-; CHECK-OM1: seta
-; CHECK-OM1: call {{.*}} R_{{.*}} func
-; CHECK-OM1: ucomisd
-; CHECK-OM1: seta
-; CHECK-OM1: call {{.*}} R_{{.*}} func
-; ARM32-LABEL: fcmpGt
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R0:r[0-9]+]], #0
-; ARM32-OM1: movgt [[R0]], #1
-; ARM32-O2: ble
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R1:r[0-9]+]], #0
-; ARM32-OM1: movgt [[R1]], #1
-; ARM32-O2: ble
-; MIPS32-LABEL: fcmpGt
-; MIPS32-LABEL: .LfcmpGt$entry
-; MIPS32: c.ule.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-; MIPS32-LABEL: .LfcmpGt$if.end
-; MIPS32: c.ule.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-
-define internal void @fcmpGe(float %a, float %b, double %c, double %d) {
-entry:
-  %cmp = fcmp ult float %a, %b
-  br i1 %cmp, label %if.end, label %if.then
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                           ; preds = %entry, %if.then
-  %cmp1 = fcmp ult double %c, %d
-  br i1 %cmp1, label %if.end3, label %if.then2
-
-if.then2:                                         ; preds = %if.end
-  call void @func()
-  br label %if.end3
-
-if.end3:                                          ; preds = %if.end, %if.then2
-  ret void
-}
-; CHECK-LABEL: fcmpGe
-; CHECK: ucomiss
-; CHECK-NEXT: jb
-; CHECK-NEXT: call {{.*}} R_{{.*}} func
-; CHECK: ucomisd
-; CHECK-NEXT: jb
-; CHECK-NEXT: call {{.*}} R_{{.*}} func
-; CHECK-OM1-LABEL: fcmpGe
-; CHECK-OM1: ucomiss
-; CHECK-OM1-NEXT: setb
-; CHECK-OM1: call {{.*}} R_{{.*}} func
-; CHECK-OM1: ucomisd
-; CHECK-OM1-NEXT: setb
-; CHECK-OM1: call {{.*}} R_{{.*}} func
-; ARM32-LABEL: fcmpGe
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R0:r[0-9]+]], #0
-; ARM32-OM1: movlt [[R0]], #1
-; ARM32-O2: blt
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R1:r[0-9]+]], #0
-; ARM32-OM1: movlt [[R1]], #1
-; ARM32-O2: blt
-; MIPS32-LABEL: fcmpGe
-; MIPS32-LABEL: .LfcmpGe$entry
-; MIPS32: c.ult.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-; MIPS32-LABEL: .LfcmpGe$if.end
-; MIPS32: c.ult.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-
-define internal void @fcmpLt(float %a, float %b, double %c, double %d) {
-entry:
-  %cmp = fcmp olt float %a, %b
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  %cmp1 = fcmp olt double %c, %d
-  br i1 %cmp1, label %if.then2, label %if.end3
-
-if.then2:                                         ; preds = %if.end
-  call void @func()
-  br label %if.end3
-
-if.end3:                                          ; preds = %if.then2, %if.end
-  ret void
-}
-; CHECK-LABEL: fcmpLt
-; CHECK: ucomiss
-; CHECK-NEXT: jbe
-; CHECK-NEXT: call {{.*}} R_{{.*}} func
-; CHECK: ucomisd
-; CHECK-NEXT: jbe
-; CHECK-NEXT: call {{.*}} R_{{.*}} func
-; CHECK-OM1-LABEL: fcmpLt
-; CHECK-OM1: ucomiss
-; CHECK-OM1-NEXT: seta
-; CHECK-OM1: call {{.*}} R_{{.*}} func
-; CHECK-OM1: ucomisd
-; CHECK-OM1-NEXT: seta
-; CHECK-OM1: call {{.*}} R_{{.*}} func
-; ARM32-LABEL: fcmpLt
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R0:r[0-9]+]], #0
-; ARM32-OM1: movmi [[R0]], #1
-; ARM32-O2: bpl
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R1:r[0-9]+]], #0
-; ARM32-OM1: movmi [[R1]], #1
-; ARM32-O2: bpl
-; MIPS32-LABEL: fcmpLt
-; MIPS32-LABEL: .LfcmpLt$entry
-; MIPS32: c.olt.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-; MIPS32-LABEL: .LfcmpLt$if.end
-; MIPS32: c.olt.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-
-define internal void @fcmpLe(float %a, float %b, double %c, double %d) {
-entry:
-  %cmp = fcmp ugt float %a, %b
-  br i1 %cmp, label %if.end, label %if.then
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                           ; preds = %entry, %if.then
-  %cmp1 = fcmp ugt double %c, %d
-  br i1 %cmp1, label %if.end3, label %if.then2
-
-if.then2:                                         ; preds = %if.end
-  call void @func()
-  br label %if.end3
-
-if.end3:                                          ; preds = %if.end, %if.then2
-  ret void
-}
-; CHECK-LABEL: fcmpLe
-; CHECK: ucomiss
-; CHECK-NEXT: jb
-; CHECK-NEXT: call {{.*}} R_{{.*}} func
-; CHECK: ucomisd
-; CHECK-NEXT: jb
-; CHECK-NEXT: call {{.*}} R_{{.*}} func
-; CHECK-OM1-LABEL: fcmpLe
-; CHECK-OM1: ucomiss
-; CHECK-OM1-NEXT: setb
-; CHECK-OM1: call {{.*}} R_{{.*}} func
-; CHECK-OM1: ucomisd
-; CHECK-OM1-NEXT: setb
-; CHECK-OM1: call {{.*}} R_{{.*}} func
-; ARM32-LABEL: fcmpLe
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R0:r[0-9]+]], #0
-; ARM32-OM1: movhi [[R0]], #1
-; ARM32-O2: bhi
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R1:r[0-9]+]], #0
-; ARM32-OM1: movhi [[R1]], #1
-; ARM32-O2: bhi
-; MIPS32-LABEL: fcmpLe
-; MIPS32-LABEL: .LfcmpLe$entry
-; MIPS32: c.ole.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-; MIPS32-LABEL: .LfcmpLe$if.end
-; MIPS32: c.ole.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpFalseFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp false float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpFalseFloat
-; CHECK: mov {{.*}},0x0
-; ARM32-LABEL: fcmpFalseFloat
-; ARM32: mov [[R:r[0-9]+]], #0
-; MIPS32-LABEL: fcmpFalseFloat
-; MIPS32: addiu [[R:.*]], $zero, 0
-; MIPS32: andi [[R]], [[R]], 1
-
-define internal i32 @fcmpFalseDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp false double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpFalseDouble
-; CHECK: mov {{.*}},0x0
-; ARM32-LABEL: fcmpFalseDouble
-; ARM32: mov [[R:r[0-9]+]], #0
-; MIPS32-LABEL: fcmpFalseDouble
-; MIPS32: addiu [[R:.*]], $zero, 0
-; MIPS32: andi [[R]], [[R]], 1
-
-define internal i32 @fcmpOeqFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp oeq float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpOeqFloat
-; CHECK: ucomiss
-; CHECK: jne
-; CHECK: jp
-; ARM32-LABEL: fcmpOeqFloat
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: moveq [[R]], #1
-; MIPS32-LABEL: fcmpOeqFloat
-; MIPS32: c.eq.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpOeqDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp oeq double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpOeqDouble
-; CHECK: ucomisd
-; CHECK: jne
-; CHECK: jp
-; ARM32-LABEL: fcmpOeqDouble
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: moveq [[R]], #1
-; MIPS32-LABEL: fcmpOeqDouble
-; MIPS32: c.eq.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpOgtFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp ogt float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpOgtFloat
-; CHECK: ucomiss
-; CHECK: seta
-; ARM32-LABEL: fcmpOgtFloat
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movgt [[R]], #1
-; MIPS32-LABEL: fcmpOgtFloat
-; MIPS32: c.ule.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpOgtDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp ogt double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpOgtDouble
-; CHECK: ucomisd
-; CHECK: seta
-; ARM32-LABEL: fcmpOgtDouble
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movgt [[R]], #1
-; MIPS32-LABEL: fcmpOgtDouble
-; MIPS32: c.ule.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpOgeFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp oge float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpOgeFloat
-; CHECK: ucomiss
-; CHECK: setae
-; ARM32-LABEL: fcmpOgeFloat
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movge [[R]], #1
-; MIPS32-LABEL: fcmpOgeFloat
-; MIPS32: c.ult.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpOgeDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp oge double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpOgeDouble
-; CHECK: ucomisd
-; CHECK: setae
-; ARM32-LABEL: fcmpOgeDouble
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movge [[R]], #1
-; MIPS32-LABEL: fcmpOgeDouble
-; MIPS32: c.ult.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpOltFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp olt float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpOltFloat
-; CHECK: ucomiss
-; CHECK: seta
-; ARM32-LABEL: fcmpOltFloat
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movmi [[R]], #1
-; MIPS32-LABEL: fcmpOltFloat
-; MIPS32: c.olt.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpOltDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp olt double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpOltDouble
-; CHECK: ucomisd
-; CHECK: seta
-; ARM32-LABEL: fcmpOltDouble
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movmi [[R]], #1
-; MIPS32-LABEL: fcmpOltDouble
-; MIPS32: c.olt.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpOleFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp ole float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpOleFloat
-; CHECK: ucomiss
-; CHECK: setae
-; ARM32-LABEL: fcmpOleFloat
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movls [[R]], #1
-; MIPS32-LABEL: fcmpOleFloat
-; MIPS32: c.ole.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpOleDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp ole double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpOleDouble
-; CHECK: ucomisd
-; CHECK: setae
-; ARM32-LABEL: fcmpOleDouble
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movls [[R]], #1
-; MIPS32-LABEL: fcmpOleDouble
-; MIPS32: c.ole.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpOneFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp one float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpOneFloat
-; CHECK: ucomiss
-; CHECK: setne
-; ARM32-LABEL: fcmpOneFloat
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movmi [[R]], #1
-; ARM32: movgt [[R]], #1
-; MIPS32-LABEL: fcmpOneFloat
-; MIPS32: c.ueq.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpOneDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp one double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpOneDouble
-; CHECK: ucomisd
-; CHECK: setne
-; ARM32-LABEL: fcmpOneDouble
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movmi [[R]], #1
-; ARM32: movgt [[R]], #1
-; MIPS32-LABEL: fcmpOneDouble
-; MIPS32: c.ueq.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpOrdFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp ord float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpOrdFloat
-; CHECK: ucomiss
-; CHECK: setnp
-; ARM32-LABEL: fcmpOrdFloat
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movvc [[R]], #1
-; MIPS32-LABEL: fcmpOrdFloat
-; MIPS32: c.un.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpOrdDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp ord double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpOrdDouble
-; CHECK: ucomisd
-; CHECK: setnp
-; ARM32-LABEL: fcmpOrdDouble
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movvc [[R]], #1
-; MIPS32-LABEL: fcmpOrdDouble
-; MIPS32: c.un.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpUeqFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp ueq float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpUeqFloat
-; CHECK: ucomiss
-; CHECK: sete
-; ARM32-LABEL: fcmpUeqFloat
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: moveq [[R]], #1
-; ARM32: movvs [[R]], #1
-; MIPS32-LABEL: fcmpUeqFloat
-; MIPS32: c.ueq.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpUeqDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp ueq double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpUeqDouble
-; CHECK: ucomisd
-; CHECK: sete
-; ARM32-LABEL: fcmpUeqDouble
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: moveq [[R]], #1
-; ARM32: movvs [[R]], #1
-; MIPS32-LABEL: fcmpUeqDouble
-; MIPS32: c.ueq.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpUgtFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp ugt float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpUgtFloat
-; CHECK: ucomiss
-; CHECK: setb
-; ARM32-LABEL: fcmpUgtFloat
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movhi [[R]], #1
-; MIPS32-LABEL: fcmpUgtFloat
-; MIPS32: c.ole.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpUgtDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp ugt double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpUgtDouble
-; CHECK: ucomisd
-; CHECK: setb
-; ARM32-LABEL: fcmpUgtDouble
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movhi [[R]], #1
-; MIPS32-LABEL: fcmpUgtDouble
-; MIPS32: c.ole.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpUgeFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp uge float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpUgeFloat
-; CHECK: ucomiss
-; CHECK: setbe
-; ARM32-LABEL: fcmpUgeFloat
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movpl [[R]], #1
-; MIPS32-LABEL: fcmpUgeFloat
-; MIPS32: c.olt.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpUgeDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp uge double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpUgeDouble
-; CHECK: ucomisd
-; CHECK: setbe
-; ARM32-LABEL: fcmpUgeDouble
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movpl [[R]], #1
-; MIPS32-LABEL: fcmpUgeDouble
-; MIPS32: c.olt.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpUltFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp ult float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpUltFloat
-; CHECK: ucomiss
-; CHECK: setb
-; ARM32-LABEL: fcmpUltFloat
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movlt [[R]], #1
-; MIPS32-LABEL: fcmpUltFloat
-; MIPS32: c.ult.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpUltDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp ult double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpUltDouble
-; CHECK: ucomisd
-; CHECK: setb
-; ARM32-LABEL: fcmpUltDouble
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movlt [[R]], #1
-; MIPS32-LABEL: fcmpUltDouble
-; MIPS32: c.ult.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpUleFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp ule float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpUleFloat
-; CHECK: ucomiss
-; CHECK: setbe
-; ARM32-LABEL: fcmpUleFloat
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movle [[R]], #1
-; MIPS32-LABEL: fcmpUleFloat
-; MIPS32: c.ule.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpUleDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp ule double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpUleDouble
-; CHECK: ucomisd
-; CHECK: setbe
-; ARM32-LABEL: fcmpUleDouble
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movle [[R]], #1
-; MIPS32-LABEL: fcmpUleDouble
-; MIPS32: c.ule.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpUneFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp une float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpUneFloat
-; CHECK: ucomiss
-; CHECK: jne
-; CHECK: jp
-; ARM32-LABEL: fcmpUneFloat
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movne [[R]], #1
-; MIPS32-LABEL: fcmpUneFloat
-; MIPS32: c.eq.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpUneDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp une double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpUneDouble
-; CHECK: ucomisd
-; CHECK: jne
-; CHECK: jp
-; ARM32-LABEL: fcmpUneDouble
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movne [[R]], #1
-; MIPS32-LABEL: fcmpUneDouble
-; MIPS32: c.eq.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movt [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpUnoFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp uno float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpUnoFloat
-; CHECK: ucomiss
-; CHECK: setp
-; ARM32-LABEL: fcmpUnoFloat
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f32
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movvs [[R]], #1
-; MIPS32-LABEL: fcmpUnoFloat
-; MIPS32: c.un.s
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpUnoDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp uno double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpUnoDouble
-; CHECK: ucomisd
-; CHECK: setp
-; ARM32-LABEL: fcmpUnoDouble
-; ARM32-O2: mov [[R:r[0-9]+]], #0
-; ARM32: vcmp.f64
-; ARM32: vmrs
-; ARM32-OM1: mov [[R:r[0-9]+]], #0
-; ARM32: movvs [[R]], #1
-; MIPS32-LABEL: fcmpUnoDouble
-; MIPS32: c.un.d
-; MIPS32: addiu [[REG:.*]], $zero, 1
-; MIPS32: movf [[REG]], $zero, {{.*}}
-
-define internal i32 @fcmpTrueFloat(float %a, float %b) {
-entry:
-  %cmp = fcmp true float %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpTrueFloat
-; CHECK: mov {{.*}},0x1
-; ARM32-LABEL: fcmpTrueFloat
-; ARM32: mov {{r[0-9]+}}, #1
-; MIPS32-LABEL: fcmpTrueFloat
-; MIPS32: addiu [[R:.*]], $zero, 1
-; MIPS32: andi [[R]], [[R]], 1
-
-define internal i32 @fcmpTrueDouble(double %a, double %b) {
-entry:
-  %cmp = fcmp true double %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; CHECK-LABEL: fcmpTrueDouble
-; CHECK: mov {{.*}},0x1
-; ARM32-LABEL: fcmpTrueDouble
-; ARM32: mov {{r[0-9]+}}, #1
-; MIPS32-LABEL: fcmpTrueDouble
-; MIPS32: addiu [[R:.*]], $zero, 1
-; MIPS32: andi [[R]], [[R]], 1
-
-define internal float @selectFloatVarVar(float %a, float %b) {
-entry:
-  %cmp = fcmp olt float %a, %b
-  %cond = select i1 %cmp, float %a, float %b
-  ret float %cond
-}
-; CHECK-LABEL: selectFloatVarVar
-; CHECK: movss
-; CHECK: minss
-; ARM32-LABEL: selectFloatVarVar
-; ARM32: vcmp.f32
-; ARM32-OM1: vmovne.f32 s{{[0-9]+}}
-; ARM32-O2: vmovmi.f32 s{{[0-9]+}}
-; ARM32: bx
-; MIPS32-LABEL: selectFloatVarVar
-; MIPS32: movn.s {{.*}}
-
-define internal double @selectDoubleVarVar(double %a, double %b) {
-entry:
-  %cmp = fcmp olt double %a, %b
-  %cond = select i1 %cmp, double %a, double %b
-  ret double %cond
-}
-; CHECK-LABEL: selectDoubleVarVar
-; CHECK: movsd
-; CHECK: minsd
-; ARM32-LABEL: selectDoubleVarVar
-; ARM32: vcmp.f64
-; ARM32-OM1: vmovne.f64 d{{[0-9]+}}
-; ARM32-O2: vmovmi.f64 d{{[0-9]+}}
-; ARM32: bx
-; MIPS32-LABEL: selectDoubleVarVar
-; MIPS32: movn.d {{.*}}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/fp.convert.ll b/third_party/subzero/tests_lit/llvm2ice_tests/fp.convert.ll
deleted file mode 100644
index 5c416a7..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/fp.convert.ll
+++ /dev/null
@@ -1,797 +0,0 @@
-; This tries to be a comprehensive test of f32 and f64 convert operations.
-; The CHECK lines are only checking for basic instruction patterns
-; that should be present regardless of the optimization level, so
-; there are no special OPTM1 match lines.
-
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 | FileCheck %s
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 | FileCheck %s
-
-; RUN: %if --need=target_ARM32 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target arm32 -i %s --args -O2 \
-; RUN:   | %if --need=target_ARM32 --command FileCheck %s \
-; RUN:   --check-prefix=ARM32
-
-; RUN: %if --need=target_ARM32 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target arm32 -i %s --args -Om1 \
-; RUN:   | %if --need=target_ARM32 --command FileCheck %s \
-; RUN:   --check-prefix=ARM32
-
-; RUN: %if --need=allow_dump --need=target_MIPS32 --command %p2i \
-; RUN:   --filetype=asm --target mips32 -i %s --args -Om1 \
-; RUN:   | %if --need=allow_dump --need=target_MIPS32 --command FileCheck %s \
-; RUN:   --check-prefix=MIPS32
-
-; RUN: %if --need=allow_dump --need=target_MIPS32 --command %p2i \
-; RUN:   --filetype=asm --target mips32 -i %s --args -O2 \
-; RUN:   | %if --need=allow_dump --need=target_MIPS32 --command FileCheck %s \
-; RUN:   --check-prefix=MIPS32O2
-
-define internal float @fptrunc(double %a) {
-entry:
-  %conv = fptrunc double %a to float
-  ret float %conv
-}
-; CHECK-LABEL: fptrunc
-; CHECK: cvtsd2ss
-; CHECK: fld
-; ARM32-LABEL: fptrunc
-; ARM32: vcvt.f32.f64 {{s[0-9]+}}, {{d[0-9]+}}
-; MIPS32-LABEL: fptrunc
-; MIPS32: cvt.s.d
-; MIPS32O2-LABEL: fptrunc
-; MIPS32O2: cvt.s.d
-
-define internal double @fpext(float %a) {
-entry:
-  %conv = fpext float %a to double
-  ret double %conv
-}
-; CHECK-LABEL: fpext
-; CHECK: cvtss2sd
-; CHECK: fld
-; ARM32-LABEL: fpext
-; ARM32: vcvt.f64.f32 {{d[0-9]+}}, {{s[0-9]+}}
-; MIPS32-LABEL: fpext
-; MIPS32: cvt.d.s
-; MIPS32O2-LABEL: fpext
-; MIPS32O2: cvt.d.s
-
-define internal i64 @doubleToSigned64(double %a) {
-entry:
-  %conv = fptosi double %a to i64
-  ret i64 %conv
-}
-; CHECK-LABEL: doubleToSigned64
-; CHECK: call {{.*}} R_{{.*}} __Sz_fptosi_f64_i64
-; ARM32-LABEL: doubleToSigned64
-; TODO(jpp): implement this test.
-; MIPS32-LABEL: doubleToSigned64
-; MIPS32: jal __Sz_fptosi_f64_i64
-; MIPS32O2-LABEL: doubleToSigned64
-; MIPS32O2: jal __Sz_fptosi_f64_i64
-
-define internal i64 @floatToSigned64(float %a) {
-entry:
-  %conv = fptosi float %a to i64
-  ret i64 %conv
-}
-; CHECK-LABEL: floatToSigned64
-; CHECK: call {{.*}} R_{{.*}} __Sz_fptosi_f32_i64
-; ARM32-LABEL: floatToSigned64
-; TODO(jpp): implement this test.
-; MIPS32-LABEL: floatToSigned64
-; MIPS32: jal __Sz_fptosi_f32_i64
-; MIPS32O2-LABEL: floatToSigned64
-; MIPS32O2: jal __Sz_fptosi_f32_i64
-
-define internal i64 @doubleToUnsigned64(double %a) {
-entry:
-  %conv = fptoui double %a to i64
-  ret i64 %conv
-}
-; CHECK-LABEL: doubleToUnsigned64
-; CHECK: call {{.*}} R_{{.*}} __Sz_fptoui_f64_i64
-; ARM32-LABEL: doubleToUnsigned64
-; TODO(jpp): implement this test.
-; MIPS32-LABEL: doubleToUnsigned64
-; MIPS32: jal __Sz_fptoui_f64_i64
-; MIPS32O2-LABEL: doubleToUnsigned64
-; MIPS32O2: jal __Sz_fptoui_f64_i64
-
-define internal i64 @floatToUnsigned64(float %a) {
-entry:
-  %conv = fptoui float %a to i64
-  ret i64 %conv
-}
-; CHECK-LABEL: floatToUnsigned64
-; CHECK: call {{.*}} R_{{.*}} __Sz_fptoui_f32_i64
-; ARM32-LABEL: floatToUnsigned64
-; TODO(jpp): implement this test.
-; MIPS32-LABEL: floatToUnsigned64
-; MIPS32: jal __Sz_fptoui_f32_i64
-; MIPS32O2-LABEL: floatToUnsigned64
-; MIPS32O2: jal __Sz_fptoui_f32_i64
-
-define internal i32 @doubleToSigned32(double %a) {
-entry:
-  %conv = fptosi double %a to i32
-  ret i32 %conv
-}
-; CHECK-LABEL: doubleToSigned32
-; CHECK: cvttsd2si
-; ARM32-LABEL: doubleToSigned32
-; ARM32-DAG: vcvt.s32.f64 [[REG:s[0-9]*]], {{d[0-9]*}}
-; ARM32-DAG: vmov {{r[0-9]+}}, [[REG]]
-; MIPS32-LABEL: doubleToSigned32
-; MIPS32: trunc.w.d
-; MIPS32O2-LABEL: doubleToSigned32
-; MIPS32O2: trunc.w.d
-
-define internal i32 @doubleToSigned32Const() {
-entry:
-  %conv = fptosi double 867.5309 to i32
-  ret i32 %conv
-}
-; CHECK-LABEL: doubleToSigned32Const
-; CHECK: cvttsd2si
-; ARM32-LABEL: doubleToSigned32Const
-; ARM32-DAG: movw [[ADDR:r[0-9]+]], #{{.*_MOVW_}}
-; ARM32-DAG: movt [[ADDR]], #{{.*_MOVT_}}
-; ARM32-DAG: vldr [[DREG:d[0-9]+]], {{\[}}[[ADDR]]{{\]}}
-; ARM32-DAG: vcvt.s32.f64 [[REG:s[0-9]+]], [[DREG]]
-; ARM32-DAF: vmov {{r[0-9]+}}, [[REG]]
-; MIPS32-LABEL: doubleToSigned32Const
-; MIPS32: lui
-; MIPS32: ldc1
-; MIPS32: trunc.w.d
-; MIPS32O2-LABEL: doubleToSigned32Const
-; MIPS32O2: lui
-; MIPS32O2: ldc1
-; MIPS32O2: trunc.w.d
-
-define internal i32 @floatToSigned32(float %a) {
-entry:
-  %conv = fptosi float %a to i32
-  ret i32 %conv
-}
-; CHECK-LABEL: floatToSigned32
-; CHECK: cvttss2si
-; ARM32-LABEL: floatToSigned32
-; ARM32-DAG: vcvt.s32.f32 [[REG:s[0-9]+]], {{s[0-9]+}}
-; ARM32-DAG: vmov {{r[0-9]+}}, [[REG]]
-; MIPS32-LABEL: floatToSigned32
-; MIPS32: trunc.w.s $f{{.*}}, $f{{.*}}
-; MIPS32O2-LABEL: floatToSigned32
-; MIPS32O2: trunc.w.s $[[REG:f[0-9]+]], $f{{.*}}
-; MIPS32O2: mfc1 $v0, $[[REG]]
-
-define internal i32 @doubleToUnsigned32(double %a) {
-entry:
-  %conv = fptoui double %a to i32
-  ret i32 %conv
-}
-; CHECK-LABEL: doubleToUnsigned32
-; CHECK: call {{.*}} R_{{.*}} __Sz_fptoui_f64_i32
-; ARM32-LABEL: doubleToUnsigned32
-; ARM32-DAG: vcvt.u32.f64 [[REG:s[0-9]+]], {{d[0-9]+}}
-; ARM32-DAG: vmov {{r[0-9]+}}, [[REG]]
-; MIPS32-LABEL: doubleToUnsigned32
-; MIPS32: jal __Sz_fptoui_f64_i32
-; MIPS32O2-LABEL: doubleToUnsigned32
-; MIPS32O2: jal __Sz_fptoui_f64_i32
-
-define internal i32 @floatToUnsigned32(float %a) {
-entry:
-  %conv = fptoui float %a to i32
-  ret i32 %conv
-}
-; CHECK-LABEL: floatToUnsigned32
-; CHECK: call {{.*}} R_{{.*}} __Sz_fptoui_f32_i32
-; ARM32-LABEL: floatToUnsigned32
-; ARM32-DAG: vcvt.u32.f32 [[REG:s[0-9]+]], {{s[0-9]+}}
-; ARM32-DAG: vmov {{r[0-9]+}}, [[REG]]
-; MIPS32-LABEL: floatToUnsigned32
-; MIPS32: jal __Sz_fptoui_f32_i32
-; MIPS32O2-LABEL: floatToUnsigned32
-; MIPS32O2: jal __Sz_fptoui_f32_i32
-
-define internal i32 @doubleToSigned16(double %a) {
-entry:
-  %conv = fptosi double %a to i16
-  %conv.ret_ext = sext i16 %conv to i32
-  ret i32 %conv.ret_ext
-}
-; CHECK-LABEL: doubleToSigned16
-; CHECK: cvttsd2si
-; CHECK: movsx
-; ARM32-LABEL: doubleToSigned16
-; ARM32-DAG: vcvt.s32.f64 [[REG:s[0-9]*]], {{d[0-9]*}}
-; ARM32-DAG: vmov {{r[0-9]+}}, [[REG]]
-; ARM32: sxth
-; MIPS32-LABEL: doubleToSigned16
-; MIPS32: trunc.w.d
-; MIPS32O2-LABEL: doubleToSigned16
-; MIPS32O2: trunc.w.d
-
-define internal i32 @floatToSigned16(float %a) {
-entry:
-  %conv = fptosi float %a to i16
-  %conv.ret_ext = sext i16 %conv to i32
-  ret i32 %conv.ret_ext
-}
-; CHECK-LABEL: floatToSigned16
-; CHECK: cvttss2si
-; CHECK: movsx
-; ARM32-LABEL: floatToSigned16
-; ARM32-DAG: vcvt.s32.f32 [[REG:s[0-9]*]], {{s[0-9]*}}
-; ARM32-DAG: vmov {{r[0-9]+}}, [[REG]]
-; ARM32: sxth
-; MIPS32-LABEL: floatToSigned16
-; MIPS32: trunc.w.s
-; MIPS32O2-LABEL: floatToSigned16
-; MIPS32O2: trunc.w.s
-
-define internal i32 @doubleToUnsigned16(double %a) {
-entry:
-  %conv = fptoui double %a to i16
-  %conv.ret_ext = zext i16 %conv to i32
-  ret i32 %conv.ret_ext
-}
-; CHECK-LABEL: doubleToUnsigned16
-; CHECK: cvttsd2si
-; CHECK: movzx
-; ARM32-LABEL: doubleToUnsigned16
-; ARM32-DAG: vcvt.u32.f64 [[REG:s[0-9]*]], {{d[0-9]*}}
-; ARM32-DAG: vmov {{r[0-9]+}}, [[REG]]
-; ARM32: uxth
-; MIPS32-LABEL: doubleToUnsigned16
-; MIPS32: trunc.w.d
-; MIPS32O2-LABEL: doubleToUnsigned16
-; MIPS32O2: trunc.w.d
-
-define internal i32 @floatToUnsigned16(float %a) {
-entry:
-  %conv = fptoui float %a to i16
-  %conv.ret_ext = zext i16 %conv to i32
-  ret i32 %conv.ret_ext
-}
-; CHECK-LABEL: floatToUnsigned16
-; CHECK: cvttss2si
-; CHECK: movzx
-; ARM32-LABEL: floatToUnsigned16
-; ARM32-DAG: vcvt.u32.f32 [[REG:s[0-9]*]], {{s[0-9]*}}
-; ARM32-DAG: vmov {{r[0-9]+}}, [[REG]]
-; ARM32: uxth
-; MIPS32-LABEL: floatToUnsigned16
-; MIPS32: trunc.w.s
-; MIPS32O2-LABEL: floatToUnsigned16
-; MIPS32O2: trunc.w.s
-
-define internal i32 @doubleToSigned8(double %a) {
-entry:
-  %conv = fptosi double %a to i8
-  %conv.ret_ext = sext i8 %conv to i32
-  ret i32 %conv.ret_ext
-}
-; CHECK-LABEL: doubleToSigned8
-; CHECK: cvttsd2si
-; CHECK: movsx
-; ARM32-LABEL: doubleToSigned8
-; ARM32-DAG: vcvt.s32.f64 [[REG:s[0-9]*]], {{d[0-9]*}}
-; ARM32-DAG: vmov {{r[0-9]+}}, [[REG]]
-; ARM32: sxtb
-; MIPS32-LABEL: doubleToSigned8
-; MIPS32: trunc.w.d
-; MIPS32O2-LABEL: doubleToSigned8
-; MIPS32O2: trunc.w.d
-
-define internal i32 @floatToSigned8(float %a) {
-entry:
-  %conv = fptosi float %a to i8
-  %conv.ret_ext = sext i8 %conv to i32
-  ret i32 %conv.ret_ext
-}
-; CHECK-LABEL: floatToSigned8
-; CHECK: cvttss2si
-; CHECK: movsx
-; ARM32-LABEL: floatToSigned8
-; ARM32-DAG: vcvt.s32.f32 [[REG:s[0-9]*]], {{s[0-9]*}}
-; ARM32-DAG: vmov {{r[0-9]+}}, [[REG]]
-; ARM32: sxtb
-; MIPS32-LABEL: floatToSigned8
-; MIPS32: trunc.w.s
-; MIPS32O2-LABEL: floatToSigned8
-; MIPS32O2: trunc.w.s
-
-define internal i32 @doubleToUnsigned8(double %a) {
-entry:
-  %conv = fptoui double %a to i8
-  %conv.ret_ext = zext i8 %conv to i32
-  ret i32 %conv.ret_ext
-}
-; CHECK-LABEL: doubleToUnsigned8
-; CHECK: cvttsd2si
-; CHECK: movzx
-; ARM32-LABEL: doubleToUnsigned8
-; ARM32-DAG: vcvt.u32.f64 [[REG:s[0-9]*]], {{d[0-9]*}}
-; ARM32-DAG: vmov {{r[0-9]+}}, [[REG]]
-; ARM32: uxtb
-; MIPS32-LABEL: doubleToUnsigned8
-; MIPS32: trunc.w.d
-; MIPS32O2-LABEL: doubleToUnsigned8
-; MIPS32O2: trunc.w.d
-
-define internal i32 @floatToUnsigned8(float %a) {
-entry:
-  %conv = fptoui float %a to i8
-  %conv.ret_ext = zext i8 %conv to i32
-  ret i32 %conv.ret_ext
-}
-; CHECK-LABEL: floatToUnsigned8
-; CHECK: cvttss2si
-; CHECK: movzx
-; ARM32-LABEL: floatToUnsigned8
-; ARM32-DAG: vcvt.u32.f32 [[REG:s[0-9]*]], {{s[0-9]*}}
-; ARM32-DAG: vmov {{r[0-9]+}}, [[REG]]
-; ARM32: uxtb
-; MIPS32-LABEL: floatToUnsigned8
-; MIPS32: trunc.w.s
-; MIPS32O2-LABEL: floatToUnsigned8
-; MIPS32O2: trunc.w.s
-
-define internal i32 @doubleToUnsigned1(double %a) {
-entry:
-  %tobool = fptoui double %a to i1
-  %tobool.ret_ext = zext i1 %tobool to i32
-  ret i32 %tobool.ret_ext
-}
-; CHECK-LABEL: doubleToUnsigned1
-; CHECK: cvttsd2si
-; CHECK-NOT: and eax,0x1
-; ARM32-LABEL: doubleToUnsigned1
-; ARM32-DAG: vcvt.u32.f64 [[REG:s[0-9]*]], {{d[0-9]*}}
-; ARM32-DAG: vmov [[RES:r[0-9]+]], [[REG]]
-; ARM32-DAG: and {{r[0-9]+}}, [[RES]], #1
-; ARM32-NOT: uxth
-; ARM32-NOT: uxtb
-; MIPS32-LABEL: doubleToUnsigned1
-; MIPS32: trunc.w.d
-; MIPS32O2-LABEL: doubleToUnsigned1
-; MIPS32O2: trunc.w.d
-
-define internal i32 @floatToUnsigned1(float %a) {
-entry:
-  %tobool = fptoui float %a to i1
-  %tobool.ret_ext = zext i1 %tobool to i32
-  ret i32 %tobool.ret_ext
-}
-; CHECK-LABEL: floatToUnsigned1
-; CHECK: cvttss2si
-; CHECK-NOT: and eax,0x1
-; ARM32-LABEL: floatToUnsigned1
-; ARM32-DAG: vcvt.u32.f32 [[REG:s[0-9]*]], {{s[0-9]*}}
-; ARM32-DAG: vmov [[RES:r[0-9]+]], [[REG]]
-; ARM32-DAG: and {{r[0-9]+}}, [[RES]], #1
-; ARM32-NOT: uxth
-; ARM32-NOT: uxtb
-; MIPS32-LABEL: floatToUnsigned1
-; MIPS32: trunc.w.s
-; MIPS32O2-LABEL: floatToUnsigned1
-; MIPS32O2: trunc.w.s
-
-define internal double @signed64ToDouble(i64 %a) {
-entry:
-  %conv = sitofp i64 %a to double
-  ret double %conv
-}
-; CHECK-LABEL: signed64ToDouble
-; CHECK: call {{.*}} R_{{.*}} __Sz_sitofp_i64_f64
-; CHECK: fstp QWORD
-; ARM32-LABEL: signed64ToDouble
-; TODO(jpp): implement this test.
-; MIPS32-LABEL: signed64ToDouble
-; MIPS32: jal __Sz_sitofp_i64_f64
-; MIPS32O2-LABEL: signed64ToDouble
-; MIPS32O2: jal __Sz_sitofp_i64_f64
-
-define internal float @signed64ToFloat(i64 %a) {
-entry:
-  %conv = sitofp i64 %a to float
-  ret float %conv
-}
-; CHECK-LABEL: signed64ToFloat
-; CHECK: call {{.*}} R_{{.*}} __Sz_sitofp_i64_f32
-; CHECK: fstp DWORD
-; ARM32-LABEL: signed64ToFloat
-; TODO(jpp): implement this test.
-; MIPS32-LABEL: signed64ToFloat
-; MIPS32: jal __Sz_sitofp_i64_f32
-; MIPS32O2-LABEL: signed64ToFloat
-; MIPS32O2: jal __Sz_sitofp_i64_f32
-
-define internal double @unsigned64ToDouble(i64 %a) {
-entry:
-  %conv = uitofp i64 %a to double
-  ret double %conv
-}
-; CHECK-LABEL: unsigned64ToDouble
-; CHECK: call {{.*}} R_{{.*}} __Sz_uitofp_i64_f64
-; CHECK: fstp
-; ARM32-LABEL: unsigned64ToDouble
-; TODO(jpp): implement this test.
-; MIPS32-LABEL: unsigned64ToDouble
-; MIPS32: jal __Sz_uitofp_i64_f64
-; MIPS32O2-LABEL: unsigned64ToDouble
-; MIPS32O2: jal __Sz_uitofp_i64_f64
-
-define internal float @unsigned64ToFloat(i64 %a) {
-entry:
-  %conv = uitofp i64 %a to float
-  ret float %conv
-}
-; CHECK-LABEL: unsigned64ToFloat
-; CHECK: call {{.*}} R_{{.*}} __Sz_uitofp_i64_f32
-; CHECK: fstp
-; ARM32-LABEL: unsigned64ToFloat
-; TODO(jpp): implement this test.
-; MIPS32-LABEL: unsigned64ToFloat
-; MIPS32: jal __Sz_uitofp_i64_f32
-; MIPS32O2-LABEL: unsigned64ToFloat
-; MIPS32O2: jal __Sz_uitofp_i64_f32
-
-define internal double @unsigned64ToDoubleConst() {
-entry:
-  %conv = uitofp i64 12345678901234 to double
-  ret double %conv
-}
-; CHECK-LABEL: unsigned64ToDoubleConst
-; CHECK: mov DWORD PTR [esp+0x4],0xb3a
-; CHECK: mov DWORD PTR [esp],0x73ce2ff2
-; CHECK: call {{.*}} R_{{.*}} __Sz_uitofp_i64_f64
-; CHECK: fstp
-; ARM32-LABEL: unsigned64ToDoubleConst
-; TODO(jpp): implement this test.
-; MIPS32-LABEL: unsigned64ToDoubleConst
-; MIPS32: jal __Sz_uitofp_i64_f64
-; MIPS32O2-LABEL: unsigned64ToDoubleConst
-; MIPS32O2: jal __Sz_uitofp_i64_f64
-
-define internal double @signed32ToDouble(i32 %a) {
-entry:
-  %conv = sitofp i32 %a to double
-  ret double %conv
-}
-; CHECK-LABEL: signed32ToDouble
-; CHECK: cvtsi2sd
-; CHECK: fld
-; ARM32-LABEL: signed32ToDouble
-; ARM32-DAG: vmov [[SRC:s[0-9]+]], {{r[0-9]+}}
-; ARM32-DAG: vcvt.f64.s32 {{d[0-9]+}}, [[SRC]]
-; MIPS32-LABEL: signed32ToDouble
-; MIPS32: cvt.d.w
-; MIPS32O2-LABEL: signed32ToDouble
-; MIPS32O2: cvt.d.w
-
-define internal double @signed32ToDoubleConst() {
-entry:
-  %conv = sitofp i32 123 to double
-  ret double %conv
-}
-; CHECK-LABEL: signed32ToDoubleConst
-; CHECK: cvtsi2sd {{.*[^1]}}
-; CHECK: fld
-; ARM32-LABEL: signed32ToDoubleConst
-; ARM32-DAG: mov [[CONST:r[0-9]+]], #123
-; ARM32-DAG: vmov [[SRC:s[0-9]+]], [[CONST]]
-; ARM32-DAG: vcvt.f64.s32 {{d[0-9]+}}, [[SRC]]
-; MIPS32-LABEL: signed32ToDoubleConst
-; MIPS32: cvt.d.w
-; MIPS32O2-LABEL: signed32ToDoubleConst
-; MIPS32O2: cvt.d.w
-
-define internal float @signed32ToFloat(i32 %a) {
-entry:
-  %conv = sitofp i32 %a to float
-  ret float %conv
-}
-; CHECK-LABEL: signed32ToFloat
-; CHECK: cvtsi2ss
-; CHECK: fld
-; ARM32-LABEL: signed32ToFloat
-; ARM32-DAG: vmov [[SRC:s[0-9]+]], {{r[0-9]+}}
-; ARM32-DAG: vcvt.f32.s32 {{s[0-9]+}}, [[SRC]]
-; MIPS32-LABEL: signed32ToFloat
-; MIPS32: cvt.s.w $f{{.*}}, $f{{.*}}
-; MIPS32O2-LABEL: signed32ToFloat
-; MIPS32O2: mtc1 $a0, $[[REG:f[0-9]+]]
-; MIPS32O2: cvt.s.w $f{{.*}}, $[[REG]]
-
-define internal double @unsigned32ToDouble(i32 %a) {
-entry:
-  %conv = uitofp i32 %a to double
-  ret double %conv
-}
-; CHECK-LABEL: unsigned32ToDouble
-; CHECK: call {{.*}} R_{{.*}} __Sz_uitofp_i32_f64
-; CHECK: fstp QWORD
-; ARM32-LABEL: unsigned32ToDouble
-; ARM32-DAG: vmov [[SRC:s[0-9]+]], {{r[0-9]+}}
-; ARM32-DAG: vcvt.f64.u32 {{d[0-9]+}}, [[SRC]]
-; MIPS32-LABEL: unsigned32ToDouble
-; MIPS32: jal __Sz_uitofp_i32_f64
-; MIPS32O2-LABEL: unsigned32ToDouble
-; MIPS32O2: jal __Sz_uitofp_i32_f64
-
-define internal float @unsigned32ToFloat(i32 %a) {
-entry:
-  %conv = uitofp i32 %a to float
-  ret float %conv
-}
-; CHECK-LABEL: unsigned32ToFloat
-; CHECK: call {{.*}} R_{{.*}} __Sz_uitofp_i32_f32
-; CHECK: fstp DWORD
-; ARM32-LABEL: unsigned32ToFloat
-; ARM32-DAG: vmov [[SRC:s[0-9]+]], {{r[0-9]+}}
-; ARM32-DAG: vcvt.f32.u32 {{s[0-9]+}}, [[SRC]]
-; MIPS32-LABEL: unsigned32ToFloat
-; MIPS32: jal __Sz_uitofp_i32_f32
-; MIPS32O2-LABEL: unsigned32ToFloat
-; MIPS32O2: jal __Sz_uitofp_i32_f32
-
-define internal double @signed16ToDouble(i32 %a) {
-entry:
-  %a.arg_trunc = trunc i32 %a to i16
-  %conv = sitofp i16 %a.arg_trunc to double
-  ret double %conv
-}
-; CHECK-LABEL: signed16ToDouble
-; CHECK: cvtsi2sd
-; CHECK: fld QWORD
-; ARM32-LABEL: signed16ToDouble
-; ARM32-DAG: sxth [[INT:r[0-9]+]]
-; ARM32-DAG: vmov [[SRC:s[0-9]+]], [[INT]]
-; ARM32-DAG: vcvt.f64.s32 {{d[0-9]+}}, [[SRC]]
-; MIPS32-LABEL: signed16ToDouble
-; MIPS32: cvt.d.w
-; MIPS32O2-LABEL: signed16ToDouble
-; MIPS32O2: cvt.d.w
-
-define internal float @signed16ToFloat(i32 %a) {
-entry:
-  %a.arg_trunc = trunc i32 %a to i16
-  %conv = sitofp i16 %a.arg_trunc to float
-  ret float %conv
-}
-; CHECK-LABEL: signed16ToFloat
-; CHECK: cvtsi2ss
-; CHECK: fld DWORD
-; ARM32-LABEL: signed16ToFloat
-; ARM32-DAG: sxth [[INT:r[0-9]+]]
-; ARM32-DAG: vmov [[SRC:s[0-9]+]], [[INT]]
-; ARM32-DAG: vcvt.f32.s32 {{s[0-9]+}}, [[SRC]]
-; MIPS32-LABEL: signed16ToFloat
-; MIPS32: cvt.s.w
-; MIPS32O2-LABEL: signed16ToFloat
-; MIPS32O2: cvt.s.w
-
-define internal double @unsigned16ToDouble(i32 %a) {
-entry:
-  %a.arg_trunc = trunc i32 %a to i16
-  %conv = uitofp i16 %a.arg_trunc to double
-  ret double %conv
-}
-; CHECK-LABEL: unsigned16ToDouble
-; CHECK: cvtsi2sd
-; CHECK: fld
-; ARM32-LABEL: unsigned16ToDouble
-; ARM32-DAG: uxth [[INT:r[0-9]+]]
-; ARM32-DAG: vmov [[SRC:s[0-9]+]], [[INT]]
-; ARM32-DAG: vcvt.f64.u32 {{d[0-9]+}}, [[SRC]]
-; MIPS32-LABEL: unsigned16ToDouble
-; MIPS32: cvt.d.w
-; MIPS32O2-LABEL: unsigned16ToDouble
-; MIPS32O2: cvt.d.w
-
-define internal double @unsigned16ToDoubleConst() {
-entry:
-  %conv = uitofp i16 12345 to double
-  ret double %conv
-}
-; CHECK-LABEL: unsigned16ToDoubleConst
-; CHECK: cvtsi2sd
-; CHECK: fld
-; ARM32-LABEL: unsigned16ToDoubleConst
-; ARM32-DAG: movw [[INT:r[0-9]+]], #12345
-; ARM32-DAG: uxth [[INT]]
-; ARM32-DAG: vmov [[SRC:s[0-9]+]], [[INT]]
-; ARM32-DAG: vcvt.f64.u32 {{d[0-9]+}}, [[SRC]]
-; MIPS32-LABEL: unsigned16ToDoubleConst
-; MIPS32: cvt.d.w
-; MIPS32O2-LABEL: unsigned16ToDoubleConst
-; MIPS32O2: cvt.d.w
-
-define internal float @unsigned16ToFloat(i32 %a) {
-entry:
-  %a.arg_trunc = trunc i32 %a to i16
-  %conv = uitofp i16 %a.arg_trunc to float
-  ret float %conv
-}
-; CHECK-LABEL: unsigned16ToFloat
-; CHECK: cvtsi2ss
-; CHECK: fld
-; ARM32-LABEL: unsigned16ToFloat
-; ARM32-DAG: uxth [[INT:r[0-9]+]]
-; ARM32-DAG: vmov [[SRC:s[0-9]+]], [[INT]]
-; ARM32-DAG: vcvt.f32.u32 {{s[0-9]+}}, [[SRC]]
-; MIPS32-LABEL: unsigned16ToFloat
-; MIPS32: cvt.s.w
-; MIPS32O2-LABEL: unsigned16ToFloat
-; MIPS32O2: cvt.s.w
-
-define internal double @signed8ToDouble(i32 %a) {
-entry:
-  %a.arg_trunc = trunc i32 %a to i8
-  %conv = sitofp i8 %a.arg_trunc to double
-  ret double %conv
-}
-; CHECK-LABEL: signed8ToDouble
-; CHECK: cvtsi2sd
-; CHECK: fld
-; ARM32-LABEL: signed8ToDouble
-; ARM32-DAG: sxtb [[INT:r[0-9]+]]
-; ARM32-DAG: vmov [[SRC:s[0-9]+]], [[INT]]
-; ARM32-DAG: vcvt.f64.s32 {{d[0-9]+}}, [[SRC]]
-; MIPS32-LABEL: signed8ToDouble
-; MIPS32: cvt.d.w
-; MIPS32O2-LABEL: signed8ToDouble
-; MIPS32O2: cvt.d.w
-
-define internal float @signed8ToFloat(i32 %a) {
-entry:
-  %a.arg_trunc = trunc i32 %a to i8
-  %conv = sitofp i8 %a.arg_trunc to float
-  ret float %conv
-}
-; CHECK-LABEL: signed8ToFloat
-; CHECK: cvtsi2ss
-; CHECK: fld
-; ARM32-LABEL: signed8ToFloat
-; ARM32-DAG: sxtb [[INT:r[0-9]+]]
-; ARM32-DAG: vmov [[SRC:s[0-9]+]], [[INT]]
-; ARM32-DAG: vcvt.f32.s32 {{s[0-9]+}}, [[SRC]]
-; MIPS32-LABEL: signed8ToFloat
-; MIPS32: cvt.s.w
-; MIPS32O2-LABEL: signed8ToFloat
-; MIPS32O2: cvt.s.w
-
-define internal double @unsigned8ToDouble(i32 %a) {
-entry:
-  %a.arg_trunc = trunc i32 %a to i8
-  %conv = uitofp i8 %a.arg_trunc to double
-  ret double %conv
-}
-; CHECK-LABEL: unsigned8ToDouble
-; CHECK: cvtsi2sd
-; CHECK: fld
-; ARM32-LABEL: unsigned8ToDouble
-; ARM32-DAG: uxtb [[INT:r[0-9]+]]
-; ARM32-DAG: vmov [[SRC:s[0-9]+]], [[INT]]
-; ARM32-DAG: vcvt.f64.u32 {{d[0-9]+}}, [[SRC]]
-; MIPS32-LABEL: unsigned8ToDouble
-; MIPS32: cvt.d.w
-; MIPS32O2-LABEL: unsigned8ToDouble
-; MIPS32O2: cvt.d.w
-
-define internal float @unsigned8ToFloat(i32 %a) {
-entry:
-  %a.arg_trunc = trunc i32 %a to i8
-  %conv = uitofp i8 %a.arg_trunc to float
-  ret float %conv
-}
-; CHECK-LABEL: unsigned8ToFloat
-; CHECK: cvtsi2ss
-; CHECK: fld
-; ARM32-LABEL: unsigned8ToFloat
-; ARM32-DAG: uxtb [[INT:r[0-9]+]]
-; ARM32-DAG: vmov [[SRC:s[0-9]+]], [[INT]]
-; ARM32-DAG: vcvt.f32.u32 {{s[0-9]+}}, [[SRC]]
-; MIPS32-LABEL: unsigned8ToFloat
-; MIPS32: cvt.s.w
-; MIPS32O2-LABEL: unsigned8ToFloat
-; MIPS32O2: cvt.s.w
-
-define internal double @unsigned1ToDouble(i32 %a) {
-entry:
-  %a.arg_trunc = trunc i32 %a to i1
-  %conv = uitofp i1 %a.arg_trunc to double
-  ret double %conv
-}
-; CHECK-LABEL: unsigned1ToDouble
-; CHECK: cvtsi2sd
-; CHECK: fld
-; ARM32-LABEL: unsigned1ToDouble
-; ARM32-DAG: and [[INT:r[0-9]+]], {{r[0-9]+}}, #1
-; ARM32-DAG: vmov [[SRC:s[0-9]+]], [[INT]]
-; ARM32-DAG: vcvt.f64.u32 {{d[0-9]+}}, [[SRC]]
-; MIPS32-LABEL: unsigned1ToDouble
-; MIPS32: cvt.d.w
-; MIPS32O2-LABEL: unsigned1ToDouble
-; MIPS32O2: cvt.d.w
-
-define internal float @unsigned1ToFloat(i32 %a) {
-entry:
-  %a.arg_trunc = trunc i32 %a to i1
-  %conv = uitofp i1 %a.arg_trunc to float
-  ret float %conv
-}
-; CHECK-LABEL: unsigned1ToFloat
-; CHECK: cvtsi2ss
-; CHECK: fld
-; ARM32-LABEL: unsigned1ToFloat
-; ARM32-DAG: and [[INT:r[0-9]+]], {{r[0-9]+}}, #1
-; ARM32-DAG: vmov [[SRC:s[0-9]+]], [[INT]]
-; ARM32-DAG: vcvt.f32.u32 {{s[0-9]+}}, [[SRC]]
-; MIPS32-LABEL: unsigned1ToFloat
-; MIPS32: cvt.s.w
-; MIPS32O2-LABEL: unsigned1ToFloat
-; MIPS32O2: cvt.s.w
-
-define internal float @int32BitcastToFloat(i32 %a) {
-entry:
-  %conv = bitcast i32 %a to float
-  ret float %conv
-}
-; CHECK-LABEL: int32BitcastToFloat
-; CHECK: mov
-; ARM32-LABEL: int32BitcastToFloat
-; ARM32: vmov s{{[0-9]+}}, r{{[0-9]+}}
-; MIPS32-LABEL: int32BitcastToFloat
-; MIPS32: sw
-; MIPS32: lwc1
-; MIPS32O2-LABEL: int32BitcastToFloat
-
-define internal float @int32BitcastToFloatConst() {
-entry:
-  %conv = bitcast i32 8675309 to float
-  ret float %conv
-}
-; CHECK-LABEL: int32BitcastToFloatConst
-; CHECK: mov
-; ARM32-LABEL: int32BitcastToFloatConst
-; ARM32-DAG: movw [[REG:r[0-9]+]], #24557
-; ARM32-DAG: movt [[REG]], #132
-; ARM32: vmov s{{[0-9]+}}, [[REG]]
-; MIPS32-LABEL: int32BitcastToFloatConst
-; MIPS32: lwc1
-; MIPS32O2-LABEL: int32BitcastToFloatConst
-
-define internal double @int64BitcastToDouble(i64 %a) {
-entry:
-  %conv = bitcast i64 %a to double
-  ret double %conv
-}
-; CHECK-LABEL: int64BitcastToDouble
-; CHECK: mov
-; ARM32-LABEL: int64BitcastToDouble
-; ARM32: vmov d{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}}
-; MIPS32-LABEL: int64BitcastToDouble
-; MIPS32: sw
-; MIPS32: sw
-; MIPS32: ldc1
-; MIPS32O2-LABEL: int64BitcastToDouble
-
-define internal double @int64BitcastToDoubleConst() {
-entry:
-  %conv = bitcast i64 9035768 to double
-  ret double %conv
-}
-; CHECK-LABEL: int64BitcastToDoubleConst
-; CHECK: mov
-; ARM32-LABEL: int64BitcastToDoubleConst
-; ARM32-DAG: movw [[REG0:r[0-9]+]], #57336
-; ARM32-DAG: movt [[REG0]], #137
-; ARM32-DAG: mov [[REG1:r[0-9]+]], #0
-; ARM32-DAG: vmov d{{[0-9]+}}, [[REG0]], [[REG1]]
-; MIPS32-LABEL: int64BitcastToDoubleConst
-; MIPS32: ldc1
-; MIPS32O2-LABEL: int64BitcastToDoubleConst
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/fp.load_store.ll b/third_party/subzero/tests_lit/llvm2ice_tests/fp.load_store.ll
deleted file mode 100644
index a0089a1..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/fp.load_store.ll
+++ /dev/null
@@ -1,122 +0,0 @@
-; This tries to be a comprehensive test of f32 and f64 compare operations.
-; The CHECK lines are only checking for basic instruction patterns
-; that should be present regardless of the optimization level, so
-; there are no special OPTM1 match lines.
-
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 | FileCheck %s
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 | FileCheck %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32O2 %s
-
-define internal float @loadFloat(i32 %a) {
-entry:
-  %__1 = inttoptr i32 %a to float*
-  %v0 = load float, float* %__1, align 4
-  ret float %v0
-}
-; CHECK-LABEL: loadFloat
-; CHECK: movss
-; CHECK: fld
-
-; MIPS32-LABEL: loadFloat
-; MIPS32: lwc1 $f{{.*}},0{{.*}}
-; MIPS32O2-LABEL: loadFloat
-; MIPS32O2: lwc1 $f{{.*}},0{{.*}}
-
-define internal double @loadDouble(i32 %a) {
-entry:
-  %__1 = inttoptr i32 %a to double*
-  %v0 = load double, double* %__1, align 8
-  ret double %v0
-}
-; CHECK-LABEL: loadDouble
-; CHECK: movsd
-; CHECK: fld
-
-; MIPS32-LABEL: loadDouble
-; MIPS32: ldc1 $f{{.*}},0{{.*}}
-; MIPS32O2-LABEL: loadDouble
-; MIPS32O2: ldc1 $f{{.*}},0{{.*}}
-
-define internal void @storeFloat(i32 %a, float %value) {
-entry:
-  %__2 = inttoptr i32 %a to float*
-  store float %value, float* %__2, align 4
-  ret void
-}
-; CHECK-LABEL: storeFloat
-; CHECK: movss
-; CHECK: movss
-
-; MIPS32-LABEL: storeFloat
-; MIPS32: swc1 $f{{.*}},0{{.*}}
-; MIPS32O2-LABEL: storeFloat
-; MIPS32O2: mtc1 a1,$f{{.*}}
-; MIPS32O2: swc1 $f{{.*}},0(a0)
-
-define internal void @storeDouble(i32 %a, double %value) {
-entry:
-  %__2 = inttoptr i32 %a to double*
-  store double %value, double* %__2, align 8
-  ret void
-}
-; CHECK-LABEL: storeDouble
-; CHECK: movsd
-; CHECK: movsd
-
-; MIPS32-LABEL: storeDouble
-; MIPS32: sdc1 $f{{.*}},0{{.*}}
-; MIPS32O2-LABEL: storeDouble
-; MIPS32O2: mtc1 a2,$f{{.*}}
-; MIPS32O2: mtc1 a3,$f{{.*}}
-; MIPS32O2: sdc1 $f{{.*}},0(a0)
-
-define internal void @storeFloatConst(i32 %a) {
-entry:
-  %a.asptr = inttoptr i32 %a to float*
-  store float 0x3FF3AE1480000000, float* %a.asptr, align 4
-  ret void
-}
-; CHECK-LABEL: storeFloatConst
-; CHECK: movss
-; CHECK: movss
-
-; MIPS32-LABEL: storeFloatConst
-; MIPS32: lui {{.*}},{{.*}}
-; MIPS32: lwc1 $f{{.*}},{{.*}}
-; MIPS32: swc1 $f{{.*}},0{{.*}}
-; MIPS32O2-LABEL: storeFloatConst
-; MIPS32O2: lui {{.*}},{{.*}}
-; MIPS32O2: lwc1 $f{{.*}},{{.*}}
-; MIPS32O2: swc1 $f{{.*}},0{{.*}}
-
-define internal void @storeDoubleConst(i32 %a) {
-entry:
-  %a.asptr = inttoptr i32 %a to double*
-  store double 1.230000e+00, double* %a.asptr, align 8
-  ret void
-}
-; CHECK-LABEL: storeDoubleConst
-; CHECK: movsd
-; CHECK: movsd
-
-; MIPS32-LABEL: storeDoubleConst
-; MIPS32: lui {{.*}},{{.*}}
-; MIPS32: ldc1 $f{{.*}},{{.*}}
-; MIPS32: sdc1 $f{{.*}},0{{.*}}
-; MIPS32O2-LABEL: storeDoubleConst
-; MIPS32O2: lui {{.*}},{{.*}}
-; MIPS32O2: ldc1 $f{{.*}},{{.*}}
-; MIPS32O2: sdc1 $f{{.*}},0{{.*}}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/fp_const_pool.ll b/third_party/subzero/tests_lit/llvm2ice_tests/fp_const_pool.ll
deleted file mode 100644
index 7ab7c43..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/fp_const_pool.ll
+++ /dev/null
@@ -1,128 +0,0 @@
-; This tests that different floating point constants (such as 0.0 and -0.0)
-; remain distinct even when they sort of look equal, and also that different
-; instances of the same floating point constant (such as NaN and NaN) get the
-; same constant pool entry even when "a==a" would suggest they are different.
-
-; REQUIRES: allow_dump
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble \
-; RUN:   --target mips32 -i %s --args -O2 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-define internal void @consume_float(float %f) {
-  ret void
-}
-
-define internal void @consume_double(double %d) {
-  ret void
-}
-
-define internal void @test_zeros() {
-entry:
-  call void @consume_float(float 0.0)
-  call void @consume_float(float -0.0)
-  call void @consume_double(double 0.0)
-  call void @consume_double(double -0.0)
-  ret void
-}
-
-; MIPS32-LABEL: test_zeros
-; MIPS32: mtc1 zero,[[REG:.*]]
-; MIPS32: mov.s {{.*}},[[REG]]
-; MIPS32: lui [[REG:.*]],{{.*}}: R_MIPS_HI16 .L$float$80000000
-; MIPS32: lwc1 {{.*}},0([[REG]]) {{.*}}: R_MIPS_LO16 .L$float$80000000
-; MIPS32: mtc1 zero,[[REGLo:.*]]
-; MIPS32: mtc1 zero,[[REGHi:.*]]
-; MIPS32: mov.d {{.*}},[[REGLo]]
-; MIPS32: lui [[REG:.*]],{{.*}}: R_MIPS_HI16 .L$double$8000000000000000
-; MIPS32: ldc1 {{.*}},0([[REG]]) {{.*}}: R_MIPS_LO16 .L$double$8000000000000000
-
-; Parse the function, dump the bitcode back out, and stop without translating.
-; This tests that +0.0 and -0.0 aren't accidentally merged into a single
-; zero-valued constant pool entry.
-;
-; RUN: %p2i -i %s --insts | FileCheck --check-prefix=ZERO %s
-; ZERO: test_zeros
-; ZERO-NEXT: entry:
-; ZERO-NEXT: call void @consume_float(float 0.0
-; ZERO-NEXT: call void @consume_float(float -0.0
-; ZERO-NEXT: call void @consume_double(double 0.0
-; ZERO-NEXT: call void @consume_double(double -0.0
-
-
-define internal void @test_nans() {
-entry:
-  call void @consume_float(float 0x7FF8000000000000)
-  call void @consume_float(float 0x7FF8000000000000)
-  call void @consume_float(float 0xFFF8000000000000)
-  call void @consume_float(float 0xFFF8000000000000)
-  call void @consume_double(double 0x7FF8000000000000)
-  call void @consume_double(double 0x7FF8000000000000)
-  call void @consume_double(double 0xFFF8000000000000)
-  call void @consume_double(double 0xFFF8000000000000)
-  ret void
-}
-
-; MIPS32-LABEL: test_nans
-; MIPS32: lui [[REG:.*]],{{.*}}: R_MIPS_HI16 .L$float$7fc00000
-; MIPS32: lwc1 {{.*}},0([[REG]]) {{.*}}: R_MIPS_LO16 .L$float$7fc00000
-; MIPS32: lui [[REG:.*]],{{.*}}: R_MIPS_HI16 .L$float$7fc00000
-; MIPS32: lwc1 {{.*}},0([[REG]]) {{.*}}: R_MIPS_LO16 .L$float$7fc00000
-; MIPS32: lui [[REG:.*]],{{.*}}: R_MIPS_HI16 .L$float$ffc00000
-; MIPS32: lwc1 {{.*}},0([[REG]]) {{.*}}: R_MIPS_LO16 .L$float$ffc00000
-; MIPS32: lui [[REG:.*]],{{.*}}: R_MIPS_HI16 .L$float$ffc00000
-; MIPS32: lwc1 {{.*}},0([[REG]]) {{.*}}: R_MIPS_LO16 .L$float$ffc00000
-; MIPS32: lui [[REG:.*]],{{.*}}: R_MIPS_HI16 .L$double$7ff8000000000000
-; MIPS32: ldc1 {{.*}},0([[REG]]) {{.*}}: R_MIPS_LO16 .L$double$7ff8000000000000
-; MIPS32: lui [[REG:.*]],{{.*}}: R_MIPS_HI16 .L$double$7ff8000000000000
-; MIPS32: ldc1 {{.*}},0([[REG]]) {{.*}}: R_MIPS_LO16 .L$double$7ff8000000000000
-; MIPS32: lui [[REG:.*]],{{.*}}: R_MIPS_HI16 .L$double$fff8000000000000
-; MIPS32: ldc1 {{.*}},0([[REG]]) {{.*}}: R_MIPS_LO16 .L$double$fff8000000000000
-; MIPS32: lui [[REG:.*]],{{.*}}: R_MIPS_HI16 .L$double$fff8000000000000
-; MIPS32: ldc1 {{.*}},0([[REG]]) {{.*}}: R_MIPS_LO16 .L$double$fff8000000000000
-; MIPS32: jr ra
-
-; The following tests check the emitted constant pool entries and make sure
-; there is at most one entry for each NaN value.  We have to run a separate test
-; for each NaN because the constant pool entries may be emitted in any order.
-;
-; RUN: %p2i -i %s --filetype=asm --llvm-source \
-; RUN:   | FileCheck --check-prefix=NANS1 %s
-; NANS1: float nan
-; NANS1-NOT: float nan
-;
-; RUN: %p2i -i %s --filetype=asm --llvm-source \
-; RUN:   | FileCheck --check-prefix=NANS2 %s
-; NANS2: float -nan
-; NANS2-NOT: float -nan
-;
-; RUN: %p2i -i %s --filetype=asm --llvm-source \
-; RUN:   | FileCheck --check-prefix=NANS3 %s
-; NANS3: double nan
-; NANS3-NOT: double nan
-;
-; RUN: %p2i -i %s --filetype=asm --llvm-source \
-; RUN:   | FileCheck --check-prefix=NANS4 %s
-; NANS4: double -nan
-; NANS4-NOT: double -nan
-
-; MIPS32 constant pool
-; RUN: %if --need=target_MIPS32 --command %p2i \
-; RUN:   --target mips32 -i %s --filetype=asm --llvm-source \
-; RUN:   --args -O2 \
-; RUN:   | %if --need=target_MIPS32 --command FileCheck \
-; RUN:   --check-prefix=MIPS32CP %s
-; MIPS32CP-LABEL: .L$float$7fc00000:
-; MIPS32CP: .word 0x7fc00000 /* f32 nan */
-; MIPS32CP-LABEL: .L$float$80000000
-; MIPS32CP: .word 0x80000000 /* f32 -0.000000e+00 */
-; MIPS32CP-LABEL: .L$float$ffc00000
-; MIPS32CP: .word 0xffc00000 /* f32 -nan */
-; MIPS32CP-LABEL: .L$double$7ff8000000000000
-; MIPS32CP: .quad 0x7ff8000000000000 /* f64 nan */
-; MIPS32CP-LABEL: .L$double$8000000000000000
-; MIPS32CP: .quad 0x8000000000000000 /* f64 -0.000000e+00 */
-; MIPS32CP-LABEL: .L$double$fff8000000000000
-; MIPS32CP: .quad 0xfff8000000000000 /* f64 -nan */
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/fpcall.ll b/third_party/subzero/tests_lit/llvm2ice_tests/fpcall.ll
deleted file mode 100644
index 07d1830..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/fpcall.ll
+++ /dev/null
@@ -1,47 +0,0 @@
-; Test that for calls returning a floating-point value, the calling
-; ABI with respect to the x87 floating point stack is honored.  In
-; particular, the top-of-stack must be popped regardless of whether
-; its value is used.
-
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \
-; RUN:      -allow-externally-defined-symbols | FileCheck %s
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 \
-; RUN:      -allow-externally-defined-symbols | FileCheck %s
-
-declare float @dummy()
-
-; The call is ignored, but the top of the FP stack still needs to be
-; popped.
-define i32 @ignored_fp_call() {
-entry:
-  %ignored = call float @dummy()
-  ret i32 0
-}
-; CHECK-LABEL: ignored_fp_call
-; CHECK: call {{.*}} R_{{.*}} dummy
-; CHECK: fstp
-
-; The top of the FP stack is popped and subsequently used.
-define i32 @converted_fp_call() {
-entry:
-  %fp = call float @dummy()
-  %ret = fptosi float %fp to i32
-  ret i32 %ret
-}
-; CHECK-LABEL: converted_fp_call
-; CHECK: call {{.*}} R_{{.*}} dummy
-; CHECK: fstp
-; CHECK: cvttss2si
-
-; The top of the FP stack is ultimately passed through as the return
-; value.  Note: the translator could optimized by not popping and
-; re-pushing, in which case the test would need to be changed.
-define float @returned_fp_call() {
-entry:
-  %fp = call float @dummy()
-  ret float %fp
-}
-; CHECK-LABEL: returned_fp_call
-; CHECK: call {{.*}} R_{{.*}} dummy
-; CHECK: fstp
-; CHECK: fld
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/fpconst.pnacl.ll b/third_party/subzero/tests_lit/llvm2ice_tests/fpconst.pnacl.ll
deleted file mode 100644
index d8048d7..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/fpconst.pnacl.ll
+++ /dev/null
@@ -1,561 +0,0 @@
-; This is a smoke test for floating-point constant pooling.  It tests
-; pooling of various float and double constants (including positive
-; and negative NaN) within functions and across functions.  Note that
-; in LLVM bitcode, hex constants are used for an FP constant whenever
-; the constant "cannot be represented as a decimal floating point
-; number in a reasonable number of digits".  See
-; http://llvm.org/docs/LangRef.html#simple-constants .
-
-; RUN: %p2i --assemble --disassemble --filetype=obj --dis-flags=-s \
-; RUN:   -i %s --args -O2 --verbose none -allow-externally-defined-symbols \
-; RUN:   | FileCheck %s
-; RUN: %p2i --assemble --disassemble --filetype=obj --dis-flags=-s \
-; RUN:   -i %s --args -Om1 --verbose none -allow-externally-defined-symbols \
-; RUN:   | FileCheck %s
-
-; RUN: %if --need allow_dump --command %p2i --assemble --disassemble \
-; RUN:   --dis-flags=-s -i %s --args -O2 --verbose none \
-; RUN:  -allow-externally-defined-symbols \
-; RUN:  | %if --need allow_dump --command FileCheck %s
-; RUN: %if --need allow_dump --command %p2i --assemble --disassemble \
-; RUN:   --dis-flags=-s -i %s --args -Om1 --verbose none \
-; RUN:  -allow-externally-defined-symbols \
-; RUN:  | %if --need allow_dump --command FileCheck %s
-
-@__init_array_start = internal constant [0 x i8] zeroinitializer, align 4
-@__fini_array_start = internal constant [0 x i8] zeroinitializer, align 4
-@__tls_template_start = internal constant [0 x i8] zeroinitializer, align 8
-@__tls_template_alignment = internal constant [4 x i8] c"\01\00\00\00", align 4
-
-define internal float @FpLookup1(i32 %Arg) {
-entry:
-  switch i32 %Arg, label %return [
-    i32 0, label %sw.bb
-    i32 1, label %sw.bb1
-    i32 2, label %sw.bb4
-    i32 3, label %sw.bb7
-    i32 -1, label %sw.bb10
-    i32 -2, label %sw.bb14
-    i32 -3, label %sw.bb19
-    i32 10, label %sw.bb24
-    i32 -10, label %sw.bb27
-    i32 100, label %sw.bb30
-    i32 101, label %sw.bb33
-    i32 102, label %sw.bb36
-    i32 103, label %sw.bb39
-    i32 -101, label %sw.bb42
-    i32 -102, label %sw.bb47
-    i32 -103, label %sw.bb52
-    i32 110, label %sw.bb57
-    i32 -110, label %sw.bb60
-  ]
-
-sw.bb:                                            ; preds = %entry
-  %call = call float @Dummy(i32 0)
-  %add = fadd float %call, 1.000000e+00
-  br label %return
-
-sw.bb1:                                           ; preds = %entry
-  %call2 = call float @Dummy(i32 1)
-  %add3 = fadd float %call2, 2.000000e+00
-  br label %return
-
-sw.bb4:                                           ; preds = %entry
-  %call5 = call float @Dummy(i32 2)
-  %add6 = fadd float %call5, 4.000000e+00
-  br label %return
-
-sw.bb7:                                           ; preds = %entry
-  %call8 = call float @Dummy(i32 3)
-  %add9 = fadd float %call8, 8.000000e+00
-  br label %return
-
-sw.bb10:                                          ; preds = %entry
-  %call11 = call float @Dummy(i32 -1)
-  %conv13 = fadd float %call11, 5.000000e-01
-  br label %return
-
-sw.bb14:                                          ; preds = %entry
-  %call15 = call float @Dummy(i32 -2)
-  %conv16 = fpext float %call15 to double
-  %add17 = fadd double %conv16, 0x3FD5555555555555
-  %conv18 = fptrunc double %add17 to float
-  br label %return
-
-sw.bb19:                                          ; preds = %entry
-  %call20 = call float @Dummy(i32 -3)
-  %conv23 = fadd float %call20, 2.500000e-01
-  br label %return
-
-sw.bb24:                                          ; preds = %entry
-  %call25 = call float @Dummy(i32 10)
-  %add26 = fadd float %call25, 0x7FF8000000000000
-  br label %return
-
-sw.bb27:                                          ; preds = %entry
-  %call28 = call float @Dummy(i32 -10)
-  %add29 = fadd float %call28, 0xFFF8000000000000
-  br label %return
-
-sw.bb30:                                          ; preds = %entry
-  %call31 = call float @Dummy(i32 100)
-  %add32 = fadd float %call31, 1.000000e+00
-  br label %return
-
-sw.bb33:                                          ; preds = %entry
-  %call34 = call float @Dummy(i32 101)
-  %add35 = fadd float %call34, 2.000000e+00
-  br label %return
-
-sw.bb36:                                          ; preds = %entry
-  %call37 = call float @Dummy(i32 102)
-  %add38 = fadd float %call37, 4.000000e+00
-  br label %return
-
-sw.bb39:                                          ; preds = %entry
-  %call40 = call float @Dummy(i32 103)
-  %add41 = fadd float %call40, 8.000000e+00
-  br label %return
-
-sw.bb42:                                          ; preds = %entry
-  %call43 = call float @Dummy(i32 -101)
-  %conv46 = fadd float %call43, 5.000000e-01
-  br label %return
-
-sw.bb47:                                          ; preds = %entry
-  %call48 = call float @Dummy(i32 -102)
-  %conv49 = fpext float %call48 to double
-  %add50 = fadd double %conv49, 0x3FD5555555555555
-  %conv51 = fptrunc double %add50 to float
-  br label %return
-
-sw.bb52:                                          ; preds = %entry
-  %call53 = call float @Dummy(i32 -103)
-  %conv56 = fadd float %call53, 2.500000e-01
-  br label %return
-
-sw.bb57:                                          ; preds = %entry
-  %call58 = call float @Dummy(i32 110)
-  %add59 = fadd float %call58, 0x7FF8000000000000
-  br label %return
-
-sw.bb60:                                          ; preds = %entry
-  %call61 = call float @Dummy(i32 -110)
-  %add62 = fadd float %call61, 0xFFF8000000000000
-  br label %return
-
-return:                                           ; preds = %entry, %sw.bb60, %sw.bb57, %sw.bb52, %sw.bb47, %sw.bb42, %sw.bb39, %sw.bb36, %sw.bb33, %sw.bb30, %sw.bb27, %sw.bb24, %sw.bb19, %sw.bb14, %sw.bb10, %sw.bb7, %sw.bb4, %sw.bb1, %sw.bb
-  %retval.0 = phi float [ %add62, %sw.bb60 ], [ %add59, %sw.bb57 ], [ %conv56, %sw.bb52 ], [ %conv51, %sw.bb47 ], [ %conv46, %sw.bb42 ], [ %add41, %sw.bb39 ], [ %add38, %sw.bb36 ], [ %add35, %sw.bb33 ], [ %add32, %sw.bb30 ], [ %add29, %sw.bb27 ], [ %add26, %sw.bb24 ], [ %conv23, %sw.bb19 ], [ %conv18, %sw.bb14 ], [ %conv13, %sw.bb10 ], [ %add9, %sw.bb7 ], [ %add6, %sw.bb4 ], [ %add3, %sw.bb1 ], [ %add, %sw.bb ], [ 0.000000e+00, %entry ]
-  ret float %retval.0
-}
-
-declare float @Dummy(i32)
-
-define internal float @FpLookup2(i32 %Arg) {
-entry:
-  switch i32 %Arg, label %return [
-    i32 0, label %sw.bb
-    i32 1, label %sw.bb1
-    i32 2, label %sw.bb4
-    i32 3, label %sw.bb7
-    i32 -1, label %sw.bb10
-    i32 -2, label %sw.bb14
-    i32 -3, label %sw.bb19
-    i32 10, label %sw.bb24
-    i32 -10, label %sw.bb27
-    i32 100, label %sw.bb30
-    i32 101, label %sw.bb33
-    i32 102, label %sw.bb36
-    i32 103, label %sw.bb39
-    i32 -101, label %sw.bb42
-    i32 -102, label %sw.bb47
-    i32 -103, label %sw.bb52
-    i32 110, label %sw.bb57
-    i32 -110, label %sw.bb60
-  ]
-
-sw.bb:                                            ; preds = %entry
-  %call = call float @Dummy(i32 0)
-  %add = fadd float %call, 1.000000e+00
-  br label %return
-
-sw.bb1:                                           ; preds = %entry
-  %call2 = call float @Dummy(i32 1)
-  %add3 = fadd float %call2, 2.000000e+00
-  br label %return
-
-sw.bb4:                                           ; preds = %entry
-  %call5 = call float @Dummy(i32 2)
-  %add6 = fadd float %call5, 4.000000e+00
-  br label %return
-
-sw.bb7:                                           ; preds = %entry
-  %call8 = call float @Dummy(i32 3)
-  %add9 = fadd float %call8, 8.000000e+00
-  br label %return
-
-sw.bb10:                                          ; preds = %entry
-  %call11 = call float @Dummy(i32 -1)
-  %conv13 = fadd float %call11, 5.000000e-01
-  br label %return
-
-sw.bb14:                                          ; preds = %entry
-  %call15 = call float @Dummy(i32 -2)
-  %conv16 = fpext float %call15 to double
-  %add17 = fadd double %conv16, 0x3FD5555555555555
-  %conv18 = fptrunc double %add17 to float
-  br label %return
-
-sw.bb19:                                          ; preds = %entry
-  %call20 = call float @Dummy(i32 -3)
-  %conv23 = fadd float %call20, 2.500000e-01
-  br label %return
-
-sw.bb24:                                          ; preds = %entry
-  %call25 = call float @Dummy(i32 10)
-  %add26 = fadd float %call25, 0x7FF8000000000000
-  br label %return
-
-sw.bb27:                                          ; preds = %entry
-  %call28 = call float @Dummy(i32 -10)
-  %add29 = fadd float %call28, 0xFFF8000000000000
-  br label %return
-
-sw.bb30:                                          ; preds = %entry
-  %call31 = call float @Dummy(i32 100)
-  %add32 = fadd float %call31, 1.000000e+00
-  br label %return
-
-sw.bb33:                                          ; preds = %entry
-  %call34 = call float @Dummy(i32 101)
-  %add35 = fadd float %call34, 2.000000e+00
-  br label %return
-
-sw.bb36:                                          ; preds = %entry
-  %call37 = call float @Dummy(i32 102)
-  %add38 = fadd float %call37, 4.000000e+00
-  br label %return
-
-sw.bb39:                                          ; preds = %entry
-  %call40 = call float @Dummy(i32 103)
-  %add41 = fadd float %call40, 8.000000e+00
-  br label %return
-
-sw.bb42:                                          ; preds = %entry
-  %call43 = call float @Dummy(i32 -101)
-  %conv46 = fadd float %call43, 5.000000e-01
-  br label %return
-
-sw.bb47:                                          ; preds = %entry
-  %call48 = call float @Dummy(i32 -102)
-  %conv49 = fpext float %call48 to double
-  %add50 = fadd double %conv49, 0x3FD5555555555555
-  %conv51 = fptrunc double %add50 to float
-  br label %return
-
-sw.bb52:                                          ; preds = %entry
-  %call53 = call float @Dummy(i32 -103)
-  %conv56 = fadd float %call53, 2.500000e-01
-  br label %return
-
-sw.bb57:                                          ; preds = %entry
-  %call58 = call float @Dummy(i32 110)
-  %add59 = fadd float %call58, 0x7FF8000000000000
-  br label %return
-
-sw.bb60:                                          ; preds = %entry
-  %call61 = call float @Dummy(i32 -110)
-  %add62 = fadd float %call61, 0xFFF8000000000000
-  br label %return
-
-return:                                           ; preds = %entry, %sw.bb60, %sw.bb57, %sw.bb52, %sw.bb47, %sw.bb42, %sw.bb39, %sw.bb36, %sw.bb33, %sw.bb30, %sw.bb27, %sw.bb24, %sw.bb19, %sw.bb14, %sw.bb10, %sw.bb7, %sw.bb4, %sw.bb1, %sw.bb
-  %retval.0 = phi float [ %add62, %sw.bb60 ], [ %add59, %sw.bb57 ], [ %conv56, %sw.bb52 ], [ %conv51, %sw.bb47 ], [ %conv46, %sw.bb42 ], [ %add41, %sw.bb39 ], [ %add38, %sw.bb36 ], [ %add35, %sw.bb33 ], [ %add32, %sw.bb30 ], [ %add29, %sw.bb27 ], [ %add26, %sw.bb24 ], [ %conv23, %sw.bb19 ], [ %conv18, %sw.bb14 ], [ %conv13, %sw.bb10 ], [ %add9, %sw.bb7 ], [ %add6, %sw.bb4 ], [ %add3, %sw.bb1 ], [ %add, %sw.bb ], [ 0.000000e+00, %entry ]
-  ret float %retval.0
-}
-
-define internal double @FpLookup3(i32 %Arg) {
-entry:
-  switch i32 %Arg, label %return [
-    i32 0, label %sw.bb
-    i32 1, label %sw.bb1
-    i32 2, label %sw.bb5
-    i32 3, label %sw.bb9
-    i32 -1, label %sw.bb13
-    i32 -2, label %sw.bb17
-    i32 -3, label %sw.bb21
-    i32 10, label %sw.bb25
-    i32 -10, label %sw.bb29
-    i32 100, label %sw.bb33
-    i32 101, label %sw.bb37
-    i32 102, label %sw.bb41
-    i32 103, label %sw.bb45
-    i32 -101, label %sw.bb49
-    i32 -102, label %sw.bb53
-    i32 -103, label %sw.bb57
-    i32 110, label %sw.bb61
-    i32 -110, label %sw.bb65
-  ]
-
-sw.bb:                                            ; preds = %entry
-  %call = call float @Dummy(i32 0)
-  %add = fadd float %call, 1.000000e+00
-  %conv = fpext float %add to double
-  br label %return
-
-sw.bb1:                                           ; preds = %entry
-  %call2 = call float @Dummy(i32 1)
-  %add3 = fadd float %call2, 2.000000e+00
-  %conv4 = fpext float %add3 to double
-  br label %return
-
-sw.bb5:                                           ; preds = %entry
-  %call6 = call float @Dummy(i32 2)
-  %add7 = fadd float %call6, 4.000000e+00
-  %conv8 = fpext float %add7 to double
-  br label %return
-
-sw.bb9:                                           ; preds = %entry
-  %call10 = call float @Dummy(i32 3)
-  %add11 = fadd float %call10, 8.000000e+00
-  %conv12 = fpext float %add11 to double
-  br label %return
-
-sw.bb13:                                          ; preds = %entry
-  %call14 = call float @Dummy(i32 -1)
-  %conv15 = fpext float %call14 to double
-  %add16 = fadd double %conv15, 5.000000e-01
-  br label %return
-
-sw.bb17:                                          ; preds = %entry
-  %call18 = call float @Dummy(i32 -2)
-  %conv19 = fpext float %call18 to double
-  %add20 = fadd double %conv19, 0x3FD5555555555555
-  br label %return
-
-sw.bb21:                                          ; preds = %entry
-  %call22 = call float @Dummy(i32 -3)
-  %conv23 = fpext float %call22 to double
-  %add24 = fadd double %conv23, 2.500000e-01
-  br label %return
-
-sw.bb25:                                          ; preds = %entry
-  %call26 = call float @Dummy(i32 10)
-  %conv27 = fpext float %call26 to double
-  %add28 = fadd double %conv27, 0x7FF8000000000000
-  br label %return
-
-sw.bb29:                                          ; preds = %entry
-  %call30 = call float @Dummy(i32 -10)
-  %conv31 = fpext float %call30 to double
-  %add32 = fadd double %conv31, 0xFFF8000000000000
-  br label %return
-
-sw.bb33:                                          ; preds = %entry
-  %call34 = call float @Dummy(i32 100)
-  %add35 = fadd float %call34, 1.000000e+00
-  %conv36 = fpext float %add35 to double
-  br label %return
-
-sw.bb37:                                          ; preds = %entry
-  %call38 = call float @Dummy(i32 101)
-  %add39 = fadd float %call38, 2.000000e+00
-  %conv40 = fpext float %add39 to double
-  br label %return
-
-sw.bb41:                                          ; preds = %entry
-  %call42 = call float @Dummy(i32 102)
-  %add43 = fadd float %call42, 4.000000e+00
-  %conv44 = fpext float %add43 to double
-  br label %return
-
-sw.bb45:                                          ; preds = %entry
-  %call46 = call float @Dummy(i32 103)
-  %add47 = fadd float %call46, 8.000000e+00
-  %conv48 = fpext float %add47 to double
-  br label %return
-
-sw.bb49:                                          ; preds = %entry
-  %call50 = call float @Dummy(i32 -101)
-  %conv51 = fpext float %call50 to double
-  %add52 = fadd double %conv51, 5.000000e-01
-  br label %return
-
-sw.bb53:                                          ; preds = %entry
-  %call54 = call float @Dummy(i32 -102)
-  %conv55 = fpext float %call54 to double
-  %add56 = fadd double %conv55, 0x3FD5555555555555
-  br label %return
-
-sw.bb57:                                          ; preds = %entry
-  %call58 = call float @Dummy(i32 -103)
-  %conv59 = fpext float %call58 to double
-  %add60 = fadd double %conv59, 2.500000e-01
-  br label %return
-
-sw.bb61:                                          ; preds = %entry
-  %call62 = call float @Dummy(i32 110)
-  %conv63 = fpext float %call62 to double
-  %add64 = fadd double %conv63, 0x7FF8000000000000
-  br label %return
-
-sw.bb65:                                          ; preds = %entry
-  %call66 = call float @Dummy(i32 -110)
-  %conv67 = fpext float %call66 to double
-  %add68 = fadd double %conv67, 0xFFF8000000000000
-  br label %return
-
-return:                                           ; preds = %entry, %sw.bb65, %sw.bb61, %sw.bb57, %sw.bb53, %sw.bb49, %sw.bb45, %sw.bb41, %sw.bb37, %sw.bb33, %sw.bb29, %sw.bb25, %sw.bb21, %sw.bb17, %sw.bb13, %sw.bb9, %sw.bb5, %sw.bb1, %sw.bb
-  %retval.0 = phi double [ %add68, %sw.bb65 ], [ %add64, %sw.bb61 ], [ %add60, %sw.bb57 ], [ %add56, %sw.bb53 ], [ %add52, %sw.bb49 ], [ %conv48, %sw.bb45 ], [ %conv44, %sw.bb41 ], [ %conv40, %sw.bb37 ], [ %conv36, %sw.bb33 ], [ %add32, %sw.bb29 ], [ %add28, %sw.bb25 ], [ %add24, %sw.bb21 ], [ %add20, %sw.bb17 ], [ %add16, %sw.bb13 ], [ %conv12, %sw.bb9 ], [ %conv8, %sw.bb5 ], [ %conv4, %sw.bb1 ], [ %conv, %sw.bb ], [ 0.000000e+00, %entry ]
-  ret double %retval.0
-}
-
-define internal double @FpLookup4(i32 %Arg) {
-entry:
-  switch i32 %Arg, label %return [
-    i32 0, label %sw.bb
-    i32 1, label %sw.bb1
-    i32 2, label %sw.bb5
-    i32 3, label %sw.bb9
-    i32 -1, label %sw.bb13
-    i32 -2, label %sw.bb17
-    i32 -3, label %sw.bb21
-    i32 10, label %sw.bb25
-    i32 -10, label %sw.bb29
-    i32 100, label %sw.bb33
-    i32 101, label %sw.bb37
-    i32 102, label %sw.bb41
-    i32 103, label %sw.bb45
-    i32 -101, label %sw.bb49
-    i32 -102, label %sw.bb53
-    i32 -103, label %sw.bb57
-    i32 110, label %sw.bb61
-    i32 -110, label %sw.bb65
-  ]
-
-sw.bb:                                            ; preds = %entry
-  %call = call float @Dummy(i32 0)
-  %add = fadd float %call, 1.000000e+00
-  %conv = fpext float %add to double
-  br label %return
-
-sw.bb1:                                           ; preds = %entry
-  %call2 = call float @Dummy(i32 1)
-  %add3 = fadd float %call2, 2.000000e+00
-  %conv4 = fpext float %add3 to double
-  br label %return
-
-sw.bb5:                                           ; preds = %entry
-  %call6 = call float @Dummy(i32 2)
-  %add7 = fadd float %call6, 4.000000e+00
-  %conv8 = fpext float %add7 to double
-  br label %return
-
-sw.bb9:                                           ; preds = %entry
-  %call10 = call float @Dummy(i32 3)
-  %add11 = fadd float %call10, 8.000000e+00
-  %conv12 = fpext float %add11 to double
-  br label %return
-
-sw.bb13:                                          ; preds = %entry
-  %call14 = call float @Dummy(i32 -1)
-  %conv15 = fpext float %call14 to double
-  %add16 = fadd double %conv15, 5.000000e-01
-  br label %return
-
-sw.bb17:                                          ; preds = %entry
-  %call18 = call float @Dummy(i32 -2)
-  %conv19 = fpext float %call18 to double
-  %add20 = fadd double %conv19, 0x3FD5555555555555
-  br label %return
-
-sw.bb21:                                          ; preds = %entry
-  %call22 = call float @Dummy(i32 -3)
-  %conv23 = fpext float %call22 to double
-  %add24 = fadd double %conv23, 2.500000e-01
-  br label %return
-
-sw.bb25:                                          ; preds = %entry
-  %call26 = call float @Dummy(i32 10)
-  %conv27 = fpext float %call26 to double
-  %add28 = fadd double %conv27, 0x7FF8000000000000
-  br label %return
-
-sw.bb29:                                          ; preds = %entry
-  %call30 = call float @Dummy(i32 -10)
-  %conv31 = fpext float %call30 to double
-  %add32 = fadd double %conv31, 0xFFF8000000000000
-  br label %return
-
-sw.bb33:                                          ; preds = %entry
-  %call34 = call float @Dummy(i32 100)
-  %add35 = fadd float %call34, 1.000000e+00
-  %conv36 = fpext float %add35 to double
-  br label %return
-
-sw.bb37:                                          ; preds = %entry
-  %call38 = call float @Dummy(i32 101)
-  %add39 = fadd float %call38, 2.000000e+00
-  %conv40 = fpext float %add39 to double
-  br label %return
-
-sw.bb41:                                          ; preds = %entry
-  %call42 = call float @Dummy(i32 102)
-  %add43 = fadd float %call42, 4.000000e+00
-  %conv44 = fpext float %add43 to double
-  br label %return
-
-sw.bb45:                                          ; preds = %entry
-  %call46 = call float @Dummy(i32 103)
-  %add47 = fadd float %call46, 8.000000e+00
-  %conv48 = fpext float %add47 to double
-  br label %return
-
-sw.bb49:                                          ; preds = %entry
-  %call50 = call float @Dummy(i32 -101)
-  %conv51 = fpext float %call50 to double
-  %add52 = fadd double %conv51, 5.000000e-01
-  br label %return
-
-sw.bb53:                                          ; preds = %entry
-  %call54 = call float @Dummy(i32 -102)
-  %conv55 = fpext float %call54 to double
-  %add56 = fadd double %conv55, 0x3FD5555555555555
-  br label %return
-
-sw.bb57:                                          ; preds = %entry
-  %call58 = call float @Dummy(i32 -103)
-  %conv59 = fpext float %call58 to double
-  %add60 = fadd double %conv59, 2.500000e-01
-  br label %return
-
-sw.bb61:                                          ; preds = %entry
-  %call62 = call float @Dummy(i32 110)
-  %conv63 = fpext float %call62 to double
-  %add64 = fadd double %conv63, 0x7FF8000000000000
-  br label %return
-
-sw.bb65:                                          ; preds = %entry
-  %call66 = call float @Dummy(i32 -110)
-  %conv67 = fpext float %call66 to double
-  %add68 = fadd double %conv67, 0xFFF8000000000000
-  br label %return
-
-return:                                           ; preds = %entry, %sw.bb65, %sw.bb61, %sw.bb57, %sw.bb53, %sw.bb49, %sw.bb45, %sw.bb41, %sw.bb37, %sw.bb33, %sw.bb29, %sw.bb25, %sw.bb21, %sw.bb17, %sw.bb13, %sw.bb9, %sw.bb5, %sw.bb1, %sw.bb
-  %retval.0 = phi double [ %add68, %sw.bb65 ], [ %add64, %sw.bb61 ], [ %add60, %sw.bb57 ], [ %add56, %sw.bb53 ], [ %add52, %sw.bb49 ], [ %conv48, %sw.bb45 ], [ %conv44, %sw.bb41 ], [ %conv40, %sw.bb37 ], [ %conv36, %sw.bb33 ], [ %add32, %sw.bb29 ], [ %add28, %sw.bb25 ], [ %add24, %sw.bb21 ], [ %add20, %sw.bb17 ], [ %add16, %sw.bb13 ], [ %conv12, %sw.bb9 ], [ %conv8, %sw.bb5 ], [ %conv4, %sw.bb1 ], [ %conv, %sw.bb ], [ 0.000000e+00, %entry ]
-  ret double %retval.0
-}
-
-; The FP constant pool entries for each type are dumped in some
-; implementation-dependent order.  So for the purposes of lit, we just
-; pick one value for each type, and make sure it appears exactly once.
-
-; Check for float 0.5
-; CHECK-LABEL: .rodata.cst4
-; CHECK:     0000003f
-; CHECK-NOT: 0000003f
-
-; Check for double 0.5
-; CHECK-LABEL: .rodata.cst8
-; CHECK:     00000000 0000e03f
-; CHECK-NOT: 00000000 0000e03f
-; CHECK-LABEL: .text
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/function_aligned.ll b/third_party/subzero/tests_lit/llvm2ice_tests/function_aligned.ll
deleted file mode 100644
index b38ea19..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/function_aligned.ll
+++ /dev/null
@@ -1,43 +0,0 @@
-; Test that functions are aligned to the NaCl bundle alignment.
-; We could be smarter and only do this for indirect call targets
-; but typically you want to align functions anyway.
-; Also, we are currently using hlts for non-executable padding.
-
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 | FileCheck %s
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -O2 \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 %s
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -O2 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-define internal void @foo() {
-  ret void
-}
-; CHECK-LABEL: foo
-; CHECK-NEXT: 0: {{.*}} ret
-; CHECK-NEXT: 1: {{.*}} hlt
-; ARM32-LABEL: foo
-; ARM32-NEXT: 0: {{.*}} bx lr
-; ARM32-NEXT: 4: e7fedef0 udf
-; ARM32-NEXT: 8: e7fedef0 udf
-; ARM32-NEXT: c: e7fedef0 udf
-; MIPS32-LABEL: foo
-; MIPS32: 0: {{.*}} jr ra
-; MIPS32-NEXT: 4: {{.*}} nop
-
-define internal void @bar() {
-  ret void
-}
-; CHECK-LABEL: bar
-; CHECK-NEXT: 20: {{.*}} ret
-; ARM32-LABEL: bar
-; ARM32-NEXT: 10: {{.*}} bx lr
-; MIPS32-LABEL: bar
-; MIPS32: 10: {{.*}} jr ra
-; MIPS32-NEXT: 14: {{.*}} nop
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/fused-alloca-arg.ll b/third_party/subzero/tests_lit/llvm2ice_tests/fused-alloca-arg.ll
deleted file mode 100644
index b51a2cf..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/fused-alloca-arg.ll
+++ /dev/null
@@ -1,103 +0,0 @@
-; This is a basic test of the alloca instruction and a call.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:   mips32 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-declare void @copy(i32 %arg1, i8* %arr1, i8* %arr2, i8* %arr3, i8* %arr4);
-
-; Test that alloca base addresses get passed correctly to functions.
-define internal void @caller1(i32 %arg) {
-entry:
-  %a1 = alloca i8, i32 32, align 4
-  %p1 = bitcast i8* %a1 to i32*
-  store i32 %arg, i32* %p1, align 1
-  call void @copy(i32 %arg, i8* %a1, i8* %a1, i8* %a1, i8* %a1)
-  ret void
-}
-
-; CHECK-LABEL:  caller1
-; CHECK-NEXT:   sub    esp,0x4c
-; CHECK-NEXT:   mov    eax,DWORD PTR [esp+0x50]
-; CHECK-NEXT:   mov    DWORD PTR [esp+0x20],eax
-; CHECK-NEXT:   mov    DWORD PTR [esp],eax
-; CHECK-NEXT:   lea    eax,[esp+0x20]
-; CHECK-NEXT:   mov    DWORD PTR [esp+0x4],eax
-; CHECK-NEXT:   lea    eax,[esp+0x20]
-; CHECK-NEXT:   mov    DWORD PTR [esp+0x8],eax
-; CHECK-NEXT:   lea    eax,[esp+0x20]
-; CHECK-NEXT:   mov    DWORD PTR [esp+0xc],eax
-; CHECK-NEXT:   lea    eax,[esp+0x20]
-; CHECK-NEXT:   mov    DWORD PTR [esp+0x10],eax
-; CHECK-NEXT:   call
-; CHECK-NEXT:   add    esp,0x4c
-; CHECK-NEXT:   ret
-; MIPS32-LABEL: caller1
-; MIPS32: 	addiu	sp,sp,{{.*}}
-; MIPS32: 	sw	ra,{{.*}}(sp)
-; MIPS32: 	move	v0,a0
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	addiu	v0,sp,32
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	addiu	a1,sp,32
-; MIPS32: 	addiu	a2,sp,32
-; MIPS32: 	addiu	a3,sp,32
-; MIPS32: 	jal
-; MIPS32: 	nop
-; MIPS32: 	lw	ra,{{.*}}(sp)
-; MIPS32: 	addiu	sp,sp,{{.*}}
-; MIPS32: 	jr	ra
-
-; Test that alloca base addresses get passed correctly to functions.
-define internal void @caller2(i32 %arg) {
-entry:
-  %a1 = alloca i8, i32 32, align 4
-  %a2 = alloca i8, i32 32, align 4
-  %p1 = bitcast i8* %a1 to i32*
-  %p2 = bitcast i8* %a2 to i32*
-  store i32 %arg, i32* %p1, align 1
-  store i32 %arg, i32* %p2, align 1
-  call void @copy(i32 %arg, i8* %a1, i8* %a2, i8* %a1, i8* %a2)
-  ret void
-}
-
-; CHECK-LABEL:  caller2
-; CHECK-NEXT:   sub    esp,0x6c
-; CHECK-NEXT:   mov    eax,DWORD PTR [esp+0x70]
-; CHECK-NEXT:   mov    DWORD PTR [esp+0x20],eax
-; CHECK-NEXT:   mov    DWORD PTR [esp+0x40],eax
-; CHECK-NEXT:   mov    DWORD PTR [esp],eax
-; CHECK-NEXT:   lea    eax,[esp+0x20]
-; CHECK-NEXT:   mov    DWORD PTR [esp+0x4],eax
-; CHECK-NEXT:   lea    eax,[esp+0x40]
-; CHECK-NEXT:   mov    DWORD PTR [esp+0x8],eax
-; CHECK-NEXT:   lea    eax,[esp+0x20]
-; CHECK-NEXT:   mov    DWORD PTR [esp+0xc],eax
-; CHECK-NEXT:   lea    eax,[esp+0x40]
-; CHECK-NEXT:   mov    DWORD PTR [esp+0x10],eax
-; CHECK-NEXT:   call
-; CHECK-NEXT:   add    esp,0x6c
-; CHECK-NEXT:   ret
-; MIPS32-LABEL: caller2
-; MIPS32: 	addiu	sp,sp,{{.*}}
-; MIPS32: 	sw	ra,{{.*}}(sp)
-; MIPS32: 	move	v0,a0
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	move	v0,a0
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	addiu	v0,sp,64
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	addiu	a1,sp,32
-; MIPS32: 	addiu	a2,sp,64
-; MIPS32: 	addiu	a3,sp,32
-; MIPS32: 	jal
-; MIPS32: 	nop
-; MIPS32: 	lw	ra,{{.*}}(sp)
-; MIPS32: 	addiu	sp,sp,{{.*}}
-; MIPS32: 	jr	ra
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/fused-alloca.ll b/third_party/subzero/tests_lit/llvm2ice_tests/fused-alloca.ll
deleted file mode 100644
index 2c6992a..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/fused-alloca.ll
+++ /dev/null
@@ -1,230 +0,0 @@
-; This is a basic test of the alloca instruction.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:   mips32 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-; Test that a sequence of allocas with less than stack alignment get fused.
-define internal void @fused_small_align(i32 %arg) {
-entry:
-  %a1 = alloca i8, i32 8, align 4
-  %a2 = alloca i8, i32 12, align 4
-  %a3 = alloca i8, i32 16, align 8
-  %p1 = bitcast i8* %a1 to i32*
-  %p2 = bitcast i8* %a2 to i32*
-  %p3 = bitcast i8* %a3 to i32*
-  store i32 %arg, i32* %p1, align 1
-  store i32 %arg, i32* %p2, align 1
-  store i32 %arg, i32* %p3, align 1
-  ret void
-}
-; CHECK-LABEL: fused_small_align
-; CHECK-NEXT: sub    esp,0x3c
-; CHECK-NEXT: mov    eax,DWORD PTR [esp+0x40]
-; CHECK-NEXT: mov    DWORD PTR [esp+0x10],eax
-; CHECK-NEXT: mov    DWORD PTR [esp+0x18],eax
-; CHECK-NEXT: mov    DWORD PTR [esp],eax
-; CHECK-NEXT: add    esp,0x3c
-; MIPS32-LABEL: fused_small_align
-; MIPS32: 	addiu	sp,sp,{{.*}}
-; MIPS32: 	move	v0,a0
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	move	v0,a0
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	sw	a0,{{.*}}(sp)
-; MIPS32: 	addiu	sp,sp,{{.*}}
-
-; Test that a sequence of allocas with greater than stack alignment get fused.
-define internal void @fused_large_align(i32 %arg) {
-entry:
-  %a1 = alloca i8, i32 8, align 32
-  %a2 = alloca i8, i32 12, align 64
-  %a3 = alloca i8, i32 16, align 32
-  %p1 = bitcast i8* %a1 to i32*
-  %p2 = bitcast i8* %a2 to i32*
-  %p3 = bitcast i8* %a3 to i32*
-  store i32 %arg, i32* %p1, align 1
-  store i32 %arg, i32* %p2, align 1
-  store i32 %arg, i32* %p3, align 1
-  ret void
-}
-; CHECK-LABEL: fused_large_align
-; CHECK-NEXT: push   ebp
-; CHECK-NEXT: mov    ebp,esp
-; CHECK-NEXT: sub    esp,0xb8
-; CHECK-NEXT: and    esp,0xffffffc0
-; CHECK-NEXT: mov    eax,DWORD PTR [ebp+0x8]
-; CHECK-NEXT: mov    DWORD PTR [esp+0x40],eax
-; CHECK-NEXT: mov    DWORD PTR [esp],eax
-; CHECK-NEXT: mov    DWORD PTR [esp+0x60],eax
-; CHECK-NEXT: mov    esp,ebp
-; CHECK-NEXT: pop    ebp
-; MIPS32-LABEL: fused_large_align
-; MIPS32: 	addiu	sp,sp,{{.*}}
-; MIPS32: 	sw	s8,{{.*}}(sp)
-; MIPS32: 	move	s8,sp
-; MIPS32: 	move	v0,a0
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	move	v0,a0
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	sw	a0,{{.*}}(sp)
-; MIPS32: 	move	sp,s8
-; MIPS32: 	lw	s8,{{.*}}(sp)
-; MIPS32: 	addiu	sp,sp,{{.*}}
-
-; Test that an interior pointer into a rematerializable variable is also
-; rematerializable, and test that it is detected even when the use appears
-; syntactically before the definition.  Test that it is folded into mem
-; operands, and also rematerializable through an lea instruction for direct use.
-define internal i32 @fused_derived(i32 %arg) {
-entry:
-  %a1 = alloca i8, i32 128, align 4
-  %a2 = alloca i8, i32 128, align 4
-  %a3 = alloca i8, i32 128, align 4
-  br label %block2
-block1:
-  %a2_i32 = bitcast i8* %a2 to i32*
-  store i32 %arg, i32* %a2_i32, align 1
-  store i32 %arg, i32* %derived, align 1
-  ret i32 %retval
-block2:
-; The following are all rematerializable variables deriving from %a2.
-  %p2 = ptrtoint i8* %a2 to i32
-  %d = add i32 %p2, 12
-  %retval = add i32 %p2, 1
-  %derived = inttoptr i32 %d to i32*
-  br label %block1
-}
-; CHECK-LABEL: fused_derived
-; CHECK-NEXT: sub    esp,0x18c
-; CHECK-NEXT: mov    [[ARG:e..]],DWORD PTR [esp+0x190]
-; CHECK-NEXT: jmp
-; CHECK-NEXT: mov    DWORD PTR [esp+0x80],[[ARG]]
-; CHECK-NEXT: mov    DWORD PTR [esp+0x8c],[[ARG]]
-; CHECK-NEXT: lea    eax,[esp+0x81]
-; CHECK-NEXT: add    esp,0x18c
-; CHECK-NEXT: ret
-; MIPS32-LABEL: fused_derived
-; MIPS32: 	addiu	sp,sp,{{.*}}
-; MIPS32: 	b
-; MIPS32: 	move	v0,a0
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	sw	a0,{{.*}}(sp)
-; MIPS32: 	addiu	v0,sp,129
-; MIPS32: 	addiu	sp,sp,{{.*}}
-
-; Test that a fixed alloca gets referenced by the frame pointer.
-define internal void @fused_small_align_with_dynamic(i32 %arg) {
-entry:
-  %a1 = alloca i8, i32 8, align 16
-  br label %next
-next:
-  %a2 = alloca i8, i32 12, align 1
-  %a3 = alloca i8, i32 16, align 1
-  %p1 = bitcast i8* %a1 to i32*
-  %p2 = bitcast i8* %a2 to i32*
-  %p3 = bitcast i8* %a3 to i32*
-  store i32 %arg, i32* %p1, align 1
-  store i32 %arg, i32* %p2, align 1
-  store i32 %arg, i32* %p3, align 1
-  ret void
-}
-; CHECK-LABEL: fused_small_align_with_dynamic
-; CHECK-NEXT: push   ebp
-; CHECK-NEXT: mov    ebp,esp
-; CHECK-NEXT: sub    esp,0x18
-; CHECK-NEXT: mov    eax,DWORD PTR [ebp+0x8]
-; CHECK-NEXT: sub    esp,0x10
-; CHECK-NEXT: mov    ecx,esp
-; CHECK-NEXT: sub    esp,0x10
-; CHECK-NEXT: mov    edx,esp
-; CHECK-NEXT: mov    DWORD PTR [ebp-0x18],eax
-; CHECK-NEXT: mov    DWORD PTR [ecx],eax
-; CHECK-NEXT: mov    DWORD PTR [edx],eax
-; CHECK-NEXT: mov    esp,ebp
-; CHECK-NEXT: pop    ebp
-; MIPS32-LABEL: fused_small_align_with_dynamic
-; MIPS32: 	addiu	sp,sp,{{.*}}
-; MIPS32: 	sw	s8,{{.*}}(sp)
-; MIPS32: 	move	s8,sp
-; MIPS32: 	addiu	v0,sp,0
-; MIPS32: 	addiu	v1,sp,16
-; MIPS32: 	move	a1,a0
-; MIPS32: 	sw	a1,32(s8)
-; MIPS32: 	move	a1,a0
-; MIPS32: 	sw	a1,0(v0)
-; MIPS32: 	sw	a0,0(v1)
-; MIPS32: 	move	sp,s8
-; MIPS32: 	lw	s8,{{.*}}(sp)
-; MIPS32: 	addiu	sp,sp,{{.*}}
-
-; Test that a sequence with greater than stack alignment and dynamic size
-; get folded and referenced correctly;
-
-define internal void @fused_large_align_with_dynamic(i32 %arg) {
-entry:
-  %a1 = alloca i8, i32 8, align 32
-  %a2 = alloca i8, i32 12, align 32
-  %a3 = alloca i8, i32 16, align 1
-  %a4 = alloca i8, i32 16, align 1
-  br label %next
-next:
-  %a5 = alloca i8, i32 16, align 1
-  %p1 = bitcast i8* %a1 to i32*
-  %p2 = bitcast i8* %a2 to i32*
-  %p3 = bitcast i8* %a3 to i32*
-  %p4 = bitcast i8* %a4 to i32*
-  %p5 = bitcast i8* %a5 to i32*
-  store i32 %arg, i32* %p1, align 1
-  store i32 %arg, i32* %p2, align 1
-  store i32 %arg, i32* %p3, align 1
-  store i32 %arg, i32* %p4, align 1
-  store i32 %arg, i32* %p5, align 1
-  ret void
-}
-; CHECK-LABEL: fused_large_align_with_dynamic
-; CHECK-NEXT: push   ebx
-; CHECK-NEXT: push   ebp
-; CHECK-NEXT: mov    ebp,esp
-; CHECK-NEXT: sub    esp,0x24
-; CHECK-NEXT: mov    eax,DWORD PTR [ebp+0xc]
-; CHECK-NEXT: and    esp,0xffffffe0
-; CHECK-NEXT: sub    esp,0x40
-; CHECK-NEXT: mov    ecx,esp
-; CHECK-NEXT: mov    edx,ecx
-; CHECK-NEXT: add    ecx,0x20
-; CHECK-NEXT: add    edx,0x0
-; CHECK-NEXT: sub    esp,0x10
-; CHECK-NEXT: mov    ebx,esp
-; CHECK-NEXT: mov    DWORD PTR [edx],eax
-; CHECK-NEXT: mov    DWORD PTR [ecx],eax
-; CHECK-NEXT: mov    DWORD PTR [ebp-0x14],eax
-; CHECK-NEXT: mov    DWORD PTR [ebp-0x24],eax
-; CHECK-NEXT: mov    DWORD PTR [ebx],eax
-; CHECK-NEXT: mov    esp,ebp
-; CHECK-NEXT: pop    ebp
-; MIPS32-LABEL: fused_large_align_with_dynamic
-; MIPS32: 	addiu	sp,sp,{{.*}}
-; MIPS32: 	sw	s8,{{.*}}(sp)
-; MIPS32: 	move	s8,sp
-; MIPS32: 	addiu	v0,sp,0
-; MIPS32: 	addiu	v1,sp,64
-; MIPS32: 	move	a1,v0
-; MIPS32: 	move	a2,a0
-; MIPS32: 	sw	a2,0(a1)
-; MIPS32: 	move	a1,a0
-; MIPS32: 	sw	a1,32(v0)
-; MIPS32: 	move	v0,a0
-; MIPS32: 	sw	v0,80(s8)
-; MIPS32: 	move	v0,a0
-; MIPS32: 	sw	v0,96(s8)
-; MIPS32: 	sw	a0,0(v1)
-; MIPS32: 	move	sp,s8
-; MIPS32: 	lw	s8,{{.*}}(sp)
-; MIPS32: 	addiu	sp,sp,{{.*}}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/globalinit.pnacl.ll b/third_party/subzero/tests_lit/llvm2ice_tests/globalinit.pnacl.ll
deleted file mode 100644
index 4495eaa..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/globalinit.pnacl.ll
+++ /dev/null
@@ -1,253 +0,0 @@
-; Test of global initializers.
-
-; REQUIRES: allow_dump
-
-; Test initializers with -filetype=asm.
-; RUN: %if --need=target_X8632 --command %p2i --filetype=asm --target x8632 \
-; RUN:   -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_ARM32 --command %p2i --filetype=asm --target arm32 \
-; RUN:   -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32 --command FileCheck %s
-
-; Test instructions for materializing addresses.
-; RUN: %if --need=target_X8632 --command %p2i --filetype=asm --target x8632 \
-; RUN:   -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN: | %if --need=target_X8632 --command FileCheck %s --check-prefix=X8632
-
-; Test instructions with -filetype=obj and try to cross reference instructions
-; w/ the symbol table.
-; RUN: %if --need=target_X8632 --command %p2i --assemble --disassemble \
-; RUN:   --target x8632 -i %s --args --verbose none \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 --command FileCheck --check-prefix=IAS %s
-
-; RUN: %if --need=target_X8632 --command %p2i --assemble --disassemble \
-; RUN:   --dis-flags=-t --target x8632 -i %s --args --verbose none \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 --command FileCheck --check-prefix=SYMTAB %s
-
-; This is not really IAS, but we can switch when that is implemented.
-; For now we can at least see the instructions / relocations.
-; RUN: %if --need=target_ARM32 --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target arm32 -i %s \
-; RUN:   --args --verbose none \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32 --command FileCheck \
-; RUN:   --check-prefix=IASARM32 %s
-
-; RUN: %if --need=target_ARM32 --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --dis-flags=-t --target arm32 -i %s \
-; RUN:   --args --verbose none \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32 --command FileCheck --check-prefix=SYMTAB %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:   mips32 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix=IASMIPS32 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump --command %p2i \
-; RUN:   --filetype=asm --assemble --disassemble --dis-flags=-t \
-; RUN:   --target mips32 -i %s --args --verbose none \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix=SYMTAB %s
-
-define internal i32 @main(i32 %argc, i32 %argv) {
-entry:
-  %expanded1 = ptrtoint [4 x i8]* @PrimitiveInit to i32
-  call void @use(i32 %expanded1)
-  %expanded3 = ptrtoint [4 x i8]* @PrimitiveInitConst to i32
-  call void @use(i32 %expanded3)
-  %expanded5 = ptrtoint [4 x i8]* @PrimitiveInitStatic to i32
-  call void @use(i32 %expanded5)
-  %expanded7 = ptrtoint [4 x i8]* @PrimitiveUninit to i32
-  call void @use(i32 %expanded7)
-  %expanded9 = ptrtoint [20 x i8]* @ArrayInit to i32
-  call void @use(i32 %expanded9)
-  %expanded11 = ptrtoint [40 x i8]* @ArrayInitPartial to i32
-  call void @use(i32 %expanded11)
-  %expanded13 = ptrtoint [20 x i8]* @ArrayUninit to i32
-  call void @use(i32 %expanded13)
-  ret i32 0
-}
-; X8632-LABEL: main
-; X8632: movl $PrimitiveInit,
-; X8632: movl $PrimitiveInitConst,
-; X8632: movl $PrimitiveInitStatic,
-; X8632: movl $PrimitiveUninit,
-; X8632: movl $ArrayInit,
-; X8632: movl $ArrayInitPartial,
-; X8632: movl $ArrayUninit,
-
-; objdump does not indicate what symbol the mov/relocation applies to
-; so we grep for "mov {{.*}}, OFFSET, sec", along with
-; "OFFSET {{.*}} sec {{.*}} symbol" in the symbol table as a sanity check.
-; NOTE: The symbol table sorting has no relation to the code's references.
-; IAS-LABEL: main
-; SYMTAB-LABEL: SYMBOL TABLE
-
-; SYMTAB-DAG: 00000000 {{.*}} .data {{.*}} PrimitiveInit
-; IAS: mov {{.*}},0x0 {{.*}} .data
-; IAS: call
-; IASARM32: movw {{.*}} PrimitiveInit
-; IASARM32: movt {{.*}} PrimitiveInit
-; IASARM32: bl
-; IASMIPS32: 	lui	{{.*}}	PrimitiveInit
-; IASMIPS32: 	addiu	{{.*}}	PrimitiveInit
-; IASMIPS32: 	jal
-
-; SYMTAB-DAG: 00000000 {{.*}} .rodata {{.*}} PrimitiveInitConst
-; IAS: mov {{.*}},0x0 {{.*}} .rodata
-; IAS: call
-; IASARM32: movw {{.*}} PrimitiveInitConst
-; IASARM32: movt {{.*}} PrimitiveInitConst
-; IASARM32: bl
-; IASMIPS32: 	lui	{{.*}}	PrimitiveInitConst
-; IASMIPS32: 	addiu	{{.*}}	PrimitiveInitConst
-; IASMIPS32: 	jal
-
-; SYMTAB-DAG: 00000000 {{.*}} .bss {{.*}} PrimitiveInitStatic
-; IAS: mov {{.*}},0x0 {{.*}} .bss
-; IAS: call
-; IASARM32: movw {{.*}} PrimitiveInitStatic
-; IASARM32: movt {{.*}} PrimitiveInitStatic
-; IASARM32: bl
-; IASMIPS32: 	lui	{{.*}}	PrimitiveInitStatic
-; IASMIPS32: 	addiu	{{.*}}	PrimitiveInitStatic
-; IASMIPS32: 	jal
-
-; SYMTAB-DAG: 00000004 {{.*}} .bss {{.*}} PrimitiveUninit
-; IAS: mov {{.*}},0x4 {{.*}} .bss
-; IAS: call
-; IASARM32: movw {{.*}} PrimitiveUninit
-; IASARM32: movt {{.*}} PrimitiveUninit
-; IASARM32: bl
-; IASMIPS32: 	lui	{{.*}}	PrimitiveUninit
-; IASMIPS32: 	addiu	{{.*}}	PrimitiveUninit
-; IASMIPS32: 	jal
-
-; SYMTAB-DAG: 00000004{{.*}}.data{{.*}}ArrayInit
-; IAS: mov {{.*}},0x4 {{.*}} .data
-; IAS: call
-; IASARM32: movw {{.*}} ArrayInit
-; IASARM32: movt {{.*}} ArrayInit
-; IASARM32: bl
-; IASMIPS32: 	lui	{{.*}}	ArrayInit
-; IASMIPS32: 	addiu	{{.*}}	ArrayInit
-; IASMIPS32: 	jal
-
-; SYMTAB-DAG: 00000018 {{.*}} .data {{.*}} ArrayInitPartial
-; IAS: mov {{.*}},0x18 {{.*}} .data
-; IAS: call
-; IASARM32: movw {{.*}} ArrayInitPartial
-; IASARM32: movt {{.*}} ArrayInitPartial
-; IASARM32: bl
-; IASMIPS32: 	lui	{{.*}}	ArrayInitPartial
-; IASMIPS32: 	addiu	{{.*}}	ArrayInitPartial
-; IASMIPS32: 	jal
-
-; SYMTAB-DAG: 00000008 {{.*}} .bss {{.*}} ArrayUninit
-; IAS: mov {{.*}},0x8 {{.*}} .bss
-; IAS: call
-; IASARM32: movw {{.*}} ArrayUninit
-; IASARM32: movt {{.*}} ArrayUninit
-; IASARM32: bl
-; IASMIPS32: 	lui	{{.*}}	ArrayUninit
-; IASMIPS32: 	addiu	{{.*}}	ArrayUninit
-; IASMIPS32: 	jal
-
-declare void @use(i32)
-
-define internal i32 @nacl_tp_tdb_offset(i32 %__0) {
-entry:
-  ret i32 0
-}
-
-define internal i32 @nacl_tp_tls_offset(i32 %size) {
-entry:
-  %result = sub i32 0, %size
-  ret i32 %result
-}
-
-
-@PrimitiveInit = internal global [4 x i8] c"\1B\00\00\00", align 4
-; CHECK: .type PrimitiveInit,%object
-; CHECK-NEXT: .section .data,"aw",%progbits
-; CHECK-NEXT: .p2align 2
-; CHECK-NEXT: PrimitiveInit:
-; CHECK-NEXT: .byte
-; CHECK: .size PrimitiveInit, 4
-
-@PrimitiveInitConst = internal constant [4 x i8] c"\0D\00\00\00", align 4
-; CHECK: .type PrimitiveInitConst,%object
-; CHECK-NEXT: .section .rodata,"a",%progbits
-; CHECK-NEXT: .p2align 2
-; CHECK-NEXT: PrimitiveInitConst:
-; CHECK-NEXT: .byte
-; CHECK: .size PrimitiveInitConst, 4
-
-@ArrayInit = internal global [20 x i8] c"\0A\00\00\00\14\00\00\00\1E\00\00\00(\00\00\002\00\00\00", align 4
-; CHECK: .type ArrayInit,%object
-; CHECK-NEXT: .section .data,"aw",%progbits
-; CHECK-NEXT: .p2align 2
-; CHECK-NEXT: ArrayInit:
-; CHECK-NEXT: .byte
-; CHECK: .size ArrayInit, 20
-
-@ArrayInitPartial = internal global [40 x i8] c"<\00\00\00F\00\00\00P\00\00\00Z\00\00\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 4
-; CHECK: .type ArrayInitPartial,%object
-; CHECK-NEXT: .section .data,"aw",%progbits
-; CHECK-NEXT: .p2align 2
-; CHECK-NEXT: ArrayInitPartial:
-; CHECK-NEXT: .byte
-; CHECK: .size ArrayInitPartial, 40
-
-@PrimitiveInitStatic = internal global [4 x i8] zeroinitializer, align 4
-; CHECK: .type PrimitiveInitStatic,%object
-; CHECK-NEXT: .section .bss,"aw",%nobits
-; CHECK-NEXT: .p2align 2
-; CHECK-NEXT: PrimitiveInitStatic:
-; CHECK-NEXT: .zero 4
-; CHECK-NEXT: .size PrimitiveInitStatic, 4
-
-@PrimitiveUninit = internal global [4 x i8] zeroinitializer, align 4
-; CHECK: .type PrimitiveUninit,%object
-; CHECK-NEXT: .section .bss,"aw",%nobits
-; CHECK-NEXT: .p2align 2
-; CHECK-NEXT: PrimitiveUninit:
-; CHECK-NEXT: .zero 4
-; CHECK-NEXT: .size PrimitiveUninit, 4
-
-@ArrayUninit = internal global [20 x i8] zeroinitializer, align 4
-; CHECK: .type ArrayUninit,%object
-; CHECK-NEXT: .section .bss,"aw",%nobits
-; CHECK-NEXT: .p2align 2
-; CHECK-NEXT: ArrayUninit:
-; CHECK-NEXT: .zero 20
-; CHECK-NEXT: .size ArrayUninit, 20
-
-@ArrayUninitConstDouble = internal constant [200 x i8] zeroinitializer, align 8
-; CHECK: .type ArrayUninitConstDouble,%object
-; CHECK-NEXT: .section .rodata,"a",%progbits
-; CHECK-NEXT: .p2align 3
-; CHECK-NEXT: ArrayUninitConstDouble:
-; CHECK-NEXT: .zero 200
-; CHECK-NEXT: .size ArrayUninitConstDouble, 200
-
-@ArrayUninitConstInt = internal constant [20 x i8] zeroinitializer, align 4
-; CHECK: .type ArrayUninitConstInt,%object
-; CHECK: .section .rodata,"a",%progbits
-; CHECK-NEXT: .p2align 2
-; CHECK-NEXT: ArrayUninitConstInt:
-; CHECK-NEXT: .zero 20
-; CHECK-NEXT: .size ArrayUninitConstInt, 20
-
-@__init_array_start = internal constant [0 x i8] zeroinitializer, align 4
-@__fini_array_start = internal constant [0 x i8] zeroinitializer, align 4
-@__tls_template_start = internal constant [0 x i8] zeroinitializer, align 8
-@__tls_template_alignment = internal constant [4 x i8] c"\01\00\00\00", align 4
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/globalrelocs.ll b/third_party/subzero/tests_lit/llvm2ice_tests/globalrelocs.ll
deleted file mode 100644
index 0a528dc..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/globalrelocs.ll
+++ /dev/null
@@ -1,265 +0,0 @@
-; Tests if we handle global variables with relocation initializers.
-
-; REQUIRES: allow_dump
-
-; Test that we handle it in the ICE converter.
-; RUN: %lc2i -i %s --args -verbose inst -threads=0 \
-; RUN:     | %iflc FileCheck %s
-; RUN: %lc2i -i %s --args -verbose inst,global_init -threads=0 \
-; RUN:     | %iflc FileCheck --check-prefix=DUMP %s
-
-; Test that we handle it using Subzero's bitcode reader.
-; RUN: %p2i -i %s --args -verbose inst -threads=0 \
-; RUN:     | FileCheck %s
-; RUN: %p2i -i %s --args -verbose inst,global_init -threads=0 \
-; RUN:     | FileCheck --check-prefix=DUMP %s
-
-@bytes = internal global [7 x i8] c"abcdefg"
-; DUMP: @bytes = internal global [7 x i8] c"abcdefg"
-; CHECK:	.type	bytes,%object
-; CHECK:	.section	.data,"aw",%progbits
-; CHECK:bytes:
-; CHECK:	.byte	97
-; CHECK:	.byte	98
-; CHECK:	.byte	99
-; CHECK:	.byte	100
-; CHECK:	.byte	101
-; CHECK:	.byte	102
-; CHECK:	.byte	103
-; CHECK:	.size	bytes, 7
-
-@const_bytes = internal constant [7 x i8] c"abcdefg"
-; DUMP: @const_bytes = internal constant [7 x i8] c"abcdefg"
-; CHECK:	.type	const_bytes,%object
-; CHECK:	.section	.rodata,"a",%progbits
-; CHECK:const_bytes:
-; CHECK:	.byte	97
-; CHECK:	.byte	98
-; CHECK:	.byte	99
-; CHECK:	.byte	100
-; CHECK:	.byte	101
-; CHECK:	.byte	102
-; CHECK:	.byte	103
-; CHECK:	.size	const_bytes, 7
-
-@ptr_to_ptr = internal global i32 ptrtoint (i32* @ptr to i32)
-; DUMP: @ptr_to_ptr = internal global i32 ptrtoint (i32* @ptr to i32)
-; CHECK:	.type	ptr_to_ptr,%object
-; CHECK:	.section	.data,"aw",%progbits
-; CHECK:ptr_to_ptr:
-; CHECK:	.long	ptr
-; CHECK:	.size	ptr_to_ptr, 4
-
-@const_ptr_to_ptr = internal constant i32 ptrtoint (i32* @ptr to i32)
-; DUMP: @const_ptr_to_ptr = internal constant i32 ptrtoint (i32* @ptr to i32)
-; CHECK:	.type	const_ptr_to_ptr,%object
-; CHECK:	.section	.rodata,"a",%progbits
-; CHECK:const_ptr_to_ptr:
-; CHECK:	.long	ptr
-; CHECK:	.size	const_ptr_to_ptr, 4
-
-@ptr_to_func = internal global i32 ptrtoint (void ()* @func to i32)
-; DUMP: @ptr_to_func = internal global i32 ptrtoint (void ()* @func to i32)
-; CHECK:	.type	ptr_to_func,%object
-; CHECK:	.section	.data,"aw",%progbits
-; CHECK:ptr_to_func:
-; CHECK:	.long	func
-; CHECK:	.size	ptr_to_func, 4
-
-@const_ptr_to_func = internal constant i32 ptrtoint (void ()* @func to i32)
-; DUMP: @const_ptr_to_func = internal constant i32 ptrtoint (void ()* @func to i32)
-; CHECK:	.type	const_ptr_to_func,%object
-; CHECK:	.section	.rodata,"a",%progbits
-; CHECK:const_ptr_to_func:
-; CHECK:	.long	func
-; CHECK:	.size	const_ptr_to_func, 4
-
-@compound = internal global <{ [3 x i8], i32 }> <{ [3 x i8] c"foo", i32 ptrtoint (void ()* @func to i32) }>
-; DUMP: @compound = internal global <{ [3 x i8], i32 }> <{ [3 x i8] c"foo", i32 ptrtoint (void ()* @func to i32) }>
-; CHECK:	.type	compound,%object
-; CHECK:	.section	.data,"aw",%progbits
-; CHECK:compound:
-; CHECK:	.byte	102
-; CHECK:	.byte	111
-; CHECK:	.byte	111
-; CHECK:	.long	func
-; CHECK:	.size	compound, 7
-
-@const_compound = internal constant <{ [3 x i8], i32 }> <{ [3 x i8] c"foo", i32 ptrtoint (void ()* @func to i32) }>
-; DUMP: @const_compound = internal constant <{ [3 x i8], i32 }> <{ [3 x i8] c"foo", i32 ptrtoint (void ()* @func to i32) }>
-; CHECK:	.type	const_compound,%object
-; CHECK:	.section	.rodata,"a",%progbits
-; CHECK:const_compound:
-; CHECK:	.byte	102
-; CHECK:	.byte	111
-; CHECK:	.byte	111
-; CHECK:	.long	func
-; CHECK:	.size	const_compound, 7
-
-@ptr = internal global i32 ptrtoint ([7 x i8]* @bytes to i32)
-; DUMP: @ptr = internal global i32 ptrtoint ([7 x i8]* @bytes to i32)
-; CHECK:	.type	ptr,%object
-; CHECK:	.section	.data,"aw",%progbits
-; CHECK:ptr:
-; CHECK:	.long	bytes
-; CHECK:	.size	ptr, 4
-
-@const_ptr = internal constant i32 ptrtoint ([7 x i8]* @bytes to i32)
-; DUMP: @const_ptr = internal constant i32 ptrtoint ([7 x i8]* @bytes to i32)
-; CHECK:	.type	const_ptr,%object
-; CHECK:	.section	.rodata,"a",%progbits
-; CHECK:const_ptr:
-; CHECK:	.long	bytes
-; CHECK:	.size	const_ptr, 4
-
-@addend_ptr = internal global i32 add (i32 ptrtoint (i32* @ptr to i32), i32 1)
-; DUMP: @addend_ptr = internal global i32 add (i32 ptrtoint (i32* @ptr to i32), i32 1)
-; CHECK:	.type	addend_ptr,%object
-; CHECK:	.section	.data,"aw",%progbits
-; CHECK:addend_ptr:
-; CHECK:	.long	ptr + 1
-; CHECK:	.size	addend_ptr, 4
-
-@const_addend_ptr = internal constant i32 add (i32 ptrtoint (i32* @ptr to i32), i32 1)
-; DUMP: @const_addend_ptr = internal constant i32 add (i32 ptrtoint (i32* @ptr to i32), i32 1)
-; CHECK:	.type	const_addend_ptr,%object
-; CHECK:	.section	.rodata,"a",%progbits
-; CHECK:const_addend_ptr:
-; CHECK:	.long	ptr + 1
-; CHECK:	.size	const_addend_ptr, 4
-
-@addend_negative = internal global i32 add (i32 ptrtoint (i32* @ptr to i32), i32 -1)
-; DUMP: @addend_negative = internal global i32 add (i32 ptrtoint (i32* @ptr to i32), i32 -1)
-; CHECK:	.type	addend_negative,%object
-; CHECK:	.section	.data,"aw",%progbits
-; CHECK:addend_negative:
-; CHECK:	.long	ptr - 1
-; CHECK:	.size	addend_negative, 4
-
-@const_addend_negative = internal constant i32 add (i32 ptrtoint (i32* @ptr to i32), i32 -1)
-; DUMP: @const_addend_negative = internal constant i32 add (i32 ptrtoint (i32* @ptr to i32), i32 -1)
-; CHECK:	.type	const_addend_negative,%object
-; CHECK:	.section	.rodata,"a",%progbits
-; CHECK:const_addend_negative:
-; CHECK:	.long	ptr - 1
-; CHECK:	.size	const_addend_negative, 4
-
-@addend_array1 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 1)
-; DUMP: @addend_array1 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 1)
-; CHECK:	.type	addend_array1,%object
-; CHECK:	.section	.data,"aw",%progbits
-; CHECK:addend_array1:
-; CHECK:	.long	bytes + 1
-; CHECK:	.size	addend_array1, 4
-
-@const_addend_array1 = internal constant i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 1)
-; DUMP: @const_addend_array1 = internal constant i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 1)
-; CHECK:	.type	const_addend_array1,%object
-; CHECK:	.section	.rodata,"a",%progbits
-; CHECK:const_addend_array1:
-; CHECK:	.long	bytes + 1
-; CHECK:	.size	const_addend_array1, 4
-
-@addend_array2 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 7)
-; DUMP: @addend_array2 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 7)
-; CHECK:	.type	addend_array2,%object
-; CHECK:	.section	.data,"aw",%progbits
-; CHECK:addend_array2:
-; CHECK:	.long	bytes + 7
-; CHECK:	.size	addend_array2, 4
-
-@const_addend_array2 = internal constant i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 7)
-; DUMP: @const_addend_array2 = internal constant i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 7)
-; CHECK:	.type	const_addend_array2,%object
-; CHECK:	.section	.rodata,"a",%progbits
-; CHECK:const_addend_array2:
-; CHECK:	.long	bytes + 7
-; CHECK:	.size	const_addend_array2, 4
-
-@addend_array3 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 9)
-; DUMP: @addend_array3 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 9)
-; CHECK:	.type	addend_array3,%object
-; CHECK:	.section	.data,"aw",%progbits
-; CHECK:addend_array3:
-; CHECK:	.long	bytes + 9
-; CHECK:	.size	addend_array3, 4
-
-@const_addend_array3 = internal constant i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 9)
-; DUMP: @const_addend_array3 = internal constant i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 9)
-; CHECK:	.type	const_addend_array3,%object
-; CHECK:	.section	.rodata,"a",%progbits
-; CHECK:const_addend_array3:
-; CHECK:	.long	bytes + 9
-; CHECK:	.size	const_addend_array3, 4
-
-@addend_struct1 = internal global i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 1)
-; DUMP: @addend_struct1 = internal global i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 1)
-; CHECK:	.type	addend_struct1,%object
-; CHECK:	.section	.data,"aw",%progbits
-; CHECK:addend_struct1:
-; CHECK:	.long	compound + 1
-; CHECK:	.size	addend_struct1, 4
-
-@const_addend_struct1 = internal constant i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 1)
-; DUMP: @const_addend_struct1 = internal constant i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 1)
-; CHECK:	.type	const_addend_struct1,%object
-; CHECK:	.section	.rodata,"a",%progbits
-; CHECK:const_addend_struct1:
-; CHECK:	.long	compound + 1
-; CHECK:	.size	const_addend_struct1, 4
-
-@addend_struct2 = internal global i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 4)
-; DUMP: @addend_struct2 = internal global i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 4)
-; CHECK:	.type	addend_struct2,%object
-; CHECK:	.section	.data,"aw",%progbits
-; CHECK:addend_struct2:
-; CHECK:	.long	compound + 4
-; CHECK:	.size	addend_struct2, 4
-
-@const_addend_struct2 = internal constant i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 4)
-; DUMP: @const_addend_struct2 = internal constant i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 4)
-; CHECK:	.type	const_addend_struct2,%object
-; CHECK:	.section	.rodata,"a",%progbits
-; CHECK:const_addend_struct2:
-; CHECK:	.long	compound + 4
-; CHECK:	.size	const_addend_struct2, 4
-
-@ptr_to_func_align = internal global i32 ptrtoint (void ()* @func to i32), align 8
-; DUMP: @ptr_to_func_align = internal global i32 ptrtoint (void ()* @func to i32), align 8
-; CHECK:	.type	ptr_to_func_align,%object
-; CHECK:	.section	.data,"aw",%progbits
-; CHECK:	.p2align	3
-; CHECK:ptr_to_func_align:
-; CHECK:	.long	func
-; CHECK:	.size	ptr_to_func_align, 4
-
-@const_ptr_to_func_align = internal constant i32 ptrtoint (void ()* @func to i32), align 8
-; DUMP: @const_ptr_to_func_align = internal constant i32 ptrtoint (void ()* @func to i32), align 8
-; CHECK:	.type	const_ptr_to_func_align,%object
-; CHECK:	.section	.rodata,"a",%progbits
-; CHECK:	.p2align	3
-; CHECK:const_ptr_to_func_align:
-; CHECK:	.long	func
-; CHECK:	.size	const_ptr_to_func_align, 4
-
-@char = internal constant [1 x i8] c"0"
-; DUMP: @char = internal constant [1 x i8] c"0"
-; CHECK:	.type	char,%object
-; CHECK:	.section	.rodata,"a",%progbits
-; CHECK:char:
-; CHECK:	.byte	48
-; CHECK:	.size	char, 1
-
-@short = internal constant [2 x i8] zeroinitializer
-; DUMP: @short = internal constant [2 x i8] zeroinitializer
-; CHECK:	.type	short,%object
-; CHECK:	.section	.rodata,"a",%progbits
-; CHECK:short:
-; CHECK:	.zero	2
-; CHECK:	.size	short, 2
-
-define internal void @func() {
-  ret void
-}
-
-; DUMP: define internal void @func() {
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/ias-data-reloc.ll b/third_party/subzero/tests_lit/llvm2ice_tests/ias-data-reloc.ll
deleted file mode 100644
index d265d40..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/ias-data-reloc.ll
+++ /dev/null
@@ -1,18 +0,0 @@
-; Tests the integrated assembler for instructions with a reloc + offset.
-
-; RUN: %if --need=target_X8632 --need=allow_dump \
-; RUN:   --command %p2i --target x8632 -i %s --args -O2 \
-; RUN:   | %if --need=target_X8632 --need=allow_dump --command FileCheck %s
-
-@p_global_char = internal global [8 x i8] zeroinitializer, align 8
-
-define internal void @reloc_in_global(i64 %x) {
-entry:
-  %p_global_char.bc = bitcast [8 x i8]* @p_global_char to i64*
-  ; This 64-bit load is split into an i32 store to [p_global_char]
-  ; and an i32 store to [p_global_char + 4] on 32-bit architectures.
-  store i64 %x, i64* %p_global_char.bc, align 1
-  ret void
-}
-; CHECK-LABEL: reloc_in_global
-; CHECK: .long p_global_char + 4
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/ias-multi-reloc.ll b/third_party/subzero/tests_lit/llvm2ice_tests/ias-multi-reloc.ll
deleted file mode 100644
index 0fedb1e..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/ias-multi-reloc.ll
+++ /dev/null
@@ -1,63 +0,0 @@
-; Tests the integrated assembler for instructions with multiple
-; relocations.
-
-; RUN: %if --need=allow_dump --command %p2i -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=allow_dump --command FileCheck %s
-
-; char global_char;
-; char *p_global_char;
-; void dummy();
-; void store_immediate_to_global() { p_global_char = &global_char; }
-; void add_in_place() { p_global_char += (int)&global_char; }
-; void cmp_global_immediate() { if (p_global_char == &global_char) dummy(); }
-
-@global_char = internal global [1 x i8] zeroinitializer, align 1
-@p_global_char = internal global [4 x i8] zeroinitializer, align 4
-declare void @dummy()
-
-define internal void @store_immediate_to_global() {
-entry:
-  %p_global_char.bc = bitcast [4 x i8]* @p_global_char to i32*
-  %expanded1 = ptrtoint [1 x i8]* @global_char to i32
-  store i32 %expanded1, i32* %p_global_char.bc, align 1
-  ret void
-}
-; CHECK-LABEL: store_immediate_to_global
-; CHECK: .long p_global_char
-; CHECK: .long global_char
-
-; Also exercises the RMW add operation.
-define internal void @add_in_place() {
-entry:
-  %p_global_char.bc = bitcast [4 x i8]* @p_global_char to i32*
-  %0 = load i32, i32* %p_global_char.bc, align 1
-  %expanded1 = ptrtoint [1 x i8]* @global_char to i32
-  %gep = add i32 %0, %expanded1
-  %p_global_char.bc3 = bitcast [4 x i8]* @p_global_char to i32*
-  store i32 %gep, i32* %p_global_char.bc3, align 1
-  ret void
-}
-; CHECK-LABEL: add_in_place
-; CHECK: .long p_global_char
-; CHECK-NEXT: .long global_char
-
-define internal void @cmp_global_immediate() {
-entry:
-  %p_global_char.bc = bitcast [4 x i8]* @p_global_char to i32*
-  %0 = load i32, i32* %p_global_char.bc, align 1
-  %expanded1 = ptrtoint [1 x i8]* @global_char to i32
-  %cmp = icmp eq i32 %0, %expanded1
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  tail call void @dummy()
-  br label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  ret void
-}
-; CHECK-LABEL: cmp_global_immediate
-; CHECK: .long p_global_char
-; CHECK: .long global_char
-; CHECK: .long dummy
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/icmp-with-zero.ll b/third_party/subzero/tests_lit/llvm2ice_tests/icmp-with-zero.ll
deleted file mode 100644
index aaa9f0d..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/icmp-with-zero.ll
+++ /dev/null
@@ -1,267 +0,0 @@
-; Simple test of non-fused compare/branch.
-
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols | FileCheck --check-prefix=OPTM1 %s
-
-define internal void @icmpEqZero64() {
-entry:
-  %cmp = icmp eq i64 123, 0
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                          ; preds = %if.then, %if.end
-  ret void
-}
-; The following checks are not strictly necessary since one of the RUN
-; lines actually runs the output through the assembler.
-; CHECK-LABEL: icmpEqZero64
-; CHECK: or
-; CHECK-NOT: set
-; OPTM1-LABEL: icmpEqZero64
-; OPTM1: or
-; OPTM1-NEXT: sete
-
-define internal void @icmpNeZero64() {
-entry:
-  %cmp = icmp ne i64 123, 0
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                          ; preds = %if.then, %if.end
-  ret void
-}
-; The following checks are not strictly necessary since one of the RUN
-; lines actually runs the output through the assembler.
-; CHECK-LABEL: icmpNeZero64
-; CHECK: or
-; CHECK-NOT: set
-; OPTM1-LABEL: icmpNeZero64
-; OPTM1: or
-; OPTM1-NEXT: setne
-
-define internal void @icmpSgeZero64() {
-entry:
-  %cmp = icmp sge i64 123, 0
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                          ; preds = %if.then, %if.end
-  ret void
-}
-; The following checks are not strictly necessary since one of the RUN
-; lines actually runs the output through the assembler.
-; CHECK-LABEL: icmpSgeZero64
-; CHECK: test eax,0x80000000
-; CHECK-NOT: sete
-; OPTM1-LABEL: icmpSgeZero64
-; OPTM1: test eax,0x80000000
-; OPTM1-NEXT: sete
-
-define internal void @icmpSltZero64() {
-entry:
-  %cmp = icmp slt i64 123, 0
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                          ; preds = %if.then, %if.end
-  ret void
-}
-; The following checks are not strictly necessary since one of the RUN
-; lines actually runs the output through the assembler.
-; CHECK-LABEL: icmpSltZero64
-; CHECK: test eax,0x80000000
-; CHECK-NOT: setne
-; OPTM1-LABEL: icmpSltZero64
-; OPTM1: test eax,0x80000000
-; OPTM1-NEXT: setne
-
-define internal void @icmpUltZero64() {
-entry:
-  %cmp = icmp ult i64 123, 0
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                          ; preds = %if.then, %if.end
-  ret void
-}
-; The following checks are not strictly necessary since one of the RUN
-; lines actually runs the output through the assembler.
-; CHECK-LABEL: icmpUltZero64
-; CHECK: mov [[RESULT:.*]],0x0
-; CHECK-NEXT: cmp [[RESULT]],0x0
-; OPTM1-LABEL: icmpUltZero64
-; OPTM1: mov [[RESULT:.*]],0x0
-; OPTM1-NEXT: cmp [[RESULT]],0x0
-
-define internal void @icmpUgeZero64() {
-entry:
-  %cmp = icmp uge i64 123, 0
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @func()
-  br label %if.end
-
-if.end:                                          ; preds = %if.then, %if.end
-  ret void
-}
-; The following checks are not strictly necessary since one of the RUN
-; lines actually runs the output through the assembler.
-; CHECK-LABEL: icmpUgeZero64
-; CHECK: mov [[RESULT:.*]],0x1
-; CHECK-NEXT: cmp [[RESULT]],0x0
-; OPTM1-LABEL: icmpUgeZero64
-; OPTM1: mov [[RESULT:.*]],0x1
-; OPTM1-NEXT: cmp [[RESULT]],0x0
-
-define internal void @icmpUltZero32() {
-entry:
-  %cmp = icmp ult i32 123, 0
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  %cmp_ext = zext i1 %cmp to i32
-  call void @use(i32 %cmp_ext)
-  br label %if.end
-
-if.end:                                          ; preds = %if.then, %if.end
-  ret void
-}
-; The following checks are not strictly necessary since one of the RUN
-; lines actually runs the output through the assembler.
-; CHECK-LABEL: icmpUltZero32
-; CHECK: mov [[RESULT:.*]],0x0
-; CHECK-NEXT: cmp [[RESULT]],0x0
-; OPTM1-LABEL: icmpUltZero32
-; OPTM1: mov [[RESULT:.*]],0x0
-; OPTM1: cmp [[RESULT]],0x0
-
-define internal void @icmpUgeZero32() {
-entry:
-  %cmp = icmp uge i32 123, 0
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  %cmp_ext = zext i1 %cmp to i32
-  call void @use(i32 %cmp_ext)
-  br label %if.end
-
-if.end:                                          ; preds = %if.then, %if.end
-  ret void
-}
-; The following checks are not strictly necessary since one of the RUN
-; lines actually runs the output through the assembler.
-; CHECK-LABEL: icmpUgeZero32
-; CHECK: mov [[RESULT:.*]],0x1
-; CHECK-NEXT: cmp [[RESULT]],0x0
-; OPTM1-LABEL: icmpUgeZero32
-; OPTM1: mov [[RESULT:.*]],0x1
-; OPTM1-NEXT: cmp [[RESULT]],0x0
-
-define internal void @icmpUltZero16() {
-entry:
-  %cmp = icmp ult i16 123, 0
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  %cmp_ext = zext i1 %cmp to i32
-  call void @use(i32 %cmp_ext)
-  br label %if.end
-
-if.end:                                          ; preds = %if.then, %if.end
-  ret void
-}
-; The following checks are not strictly necessary since one of the RUN
-; lines actually runs the output through the assembler.
-; CHECK-LABEL: icmpUltZero16
-; CHECK: mov [[RESULT:.*]],0x0
-; CHECK-NEXT: cmp [[RESULT]],0x0
-; OPTM1-LABEL: icmpUltZero16
-; OPTM1: mov [[RESULT:.*]],0x0
-; OPTM1-NEXT: cmp [[RESULT]],0x0
-
-define internal void @icmpUgeZero16() {
-entry:
-  %cmp = icmp uge i16 123, 0
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  %cmp_ext = zext i1 %cmp to i32
-  call void @use(i32 %cmp_ext)
-  br label %if.end
-
-if.end:                                          ; preds = %if.then, %if.end
-  ret void
-}
-; The following checks are not strictly necessary since one of the RUN
-; lines actually runs the output through the assembler.
-; CHECK-LABEL: icmpUgeZero16
-; CHECK: mov [[RESULT:.*]],0x1
-; CHECK-NEXT: cmp [[RESULT]],0x0
-; OPTM1-LABEL: icmpUgeZero16
-; OPTM1: mov [[RESULT:.*]],0x1
-; OPTM1-NEXT: cmp [[RESULT]],0x0
-
-define internal void @icmpUltZero8() {
-entry:
-  %cmp = icmp ult i8 123, 0
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  %cmp_ext = zext i1 %cmp to i32
-  call void @use(i32 %cmp_ext)
-  br label %if.end
-
-if.end:                                          ; preds = %if.then, %if.end
-  ret void
-}
-; The following checks are not strictly necessary since one of the RUN
-; lines actually runs the output through the assembler.
-; CHECK-LABEL: icmpUltZero8
-; CHECK: mov [[RESULT:.*]],0x0
-; CHECK-NEXT: cmp [[RESULT]],0x0
-; OPTM1-LABEL: icmpUltZero8
-; OPTM1: mov [[RESULT:.*]],0x0
-; OPTM1-NEXT: cmp [[RESULT]],0x0
-
-define internal void @icmpUgeZero8() {
-entry:
-  %cmp = icmp uge i8 123, 0
-  br i1 %cmp, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  %cmp_ext = zext i1 %cmp to i32
-  call void @use(i32 %cmp_ext)
-  br label %if.end
-
-if.end:                                          ; preds = %if.then, %if.end
-  ret void
-}
-; The following checks are not strictly necessary since one of the RUN
-; lines actually runs the output through the assembler.
-; CHECK-LABEL: icmpUgeZero8
-; CHECK: mov [[RESULT:.*]],0x1
-; CHECK-NEXT: cmp [[RESULT]],0x0
-; OPTM1-LABEL: icmpUgeZero8
-; OPTM1: mov [[RESULT:.*]],0x1
-; OPTM1-NEXT: cmp [[RESULT]],0x0
-
-declare void @func()
-declare void @use(i32)
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/icmp.ll b/third_party/subzero/tests_lit/llvm2ice_tests/icmp.ll
deleted file mode 100644
index 6c73ff6..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/icmp.ll
+++ /dev/null
@@ -1,174 +0,0 @@
-; Simple tests for icmp with i8, i16, i32 operands.
-
-; RUN: %if --need=allow_dump --need=target_MIPS32 --command %p2i \
-; RUN:   --filetype=asm --target mips32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=allow_dump --need=target_MIPS32 --command FileCheck %s \
-; RUN:   --check-prefix=COMMON --check-prefix=MIPS32
-; RUN: %if --need=allow_dump --need=target_MIPS32 --command %p2i \
-; RUN:   --filetype=asm --target mips32 -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=allow_dump --need=target_MIPS32 --command FileCheck %s \
-; RUN:   --check-prefix=COMMON --check-prefix=MIPS32
-
-define internal i32 @icmpEq32(i32 %a, i32 %b) {
-entry:
-  %cmp = icmp eq i32 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; MIPS32-LABEL: icmpEq32
-; MIPS32: xor
-; MIPS32: sltiu {{.*}}, {{.*}}, 1
-
-define internal i32 @icmpNe32(i32 %a, i32 %b) {
-entry:
-  %cmp = icmp ne i32 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; MIPS32-LABEL: icmpNe32
-; MIPS32: xor
-; MIPS32: sltu {{.*}}, $zero, {{.*}}
-
-define internal i32 @icmpSgt32(i32 %a, i32 %b) {
-entry:
-  %cmp = icmp sgt i32 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; MIPS32-LABEL: icmpSgt32
-; MIPS32: slt
-
-define internal i32 @icmpUgt32(i32 %a, i32 %b) {
-entry:
-  %cmp = icmp ugt i32 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; MIPS32-LABEL: icmpUgt32
-; MIPS32: sltu
-
-define internal i32 @icmpSge32(i32 %a, i32 %b) {
-entry:
-  %cmp = icmp sge i32 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; MIPS32-LABEL: icmpSge32
-; MIPS32: slt
-; MIPS32: xori {{.*}}, {{.*}}, 1
-
-define internal i32 @icmpUge32(i32 %a, i32 %b) {
-entry:
-  %cmp = icmp uge i32 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; MIPS32-LABEL: icmpUge32
-; MIPS32: sltu
-; MIPS32: xori {{.*}}, {{.*}}, 1
-
-define internal i32 @icmpSlt32(i32 %a, i32 %b) {
-entry:
-  %cmp = icmp slt i32 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; MIPS32-LABEL: icmpSlt32
-; MIPS32: slt
-
-define internal i32 @icmpUlt32(i32 %a, i32 %b) {
-entry:
-  %cmp = icmp ult i32 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; MIPS32-LABEL: icmpUlt32
-; MIPS32: sltu
-
-define internal i32 @icmpSle32(i32 %a, i32 %b) {
-entry:
-  %cmp = icmp sle i32 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; MIPS32-LABEL: icmpSle32
-; MIPS32: slt
-; MIPS32: xori {{.*}}, {{.*}}, 1
-
-define internal i32 @icmpUle32(i32 %a, i32 %b) {
-entry:
-  %cmp = icmp ule i32 %a, %b
-  %cmp.ret_ext = zext i1 %cmp to i32
-  ret i32 %cmp.ret_ext
-}
-; MIPS32-LABEL: icmpUle32
-; MIPS32: sltu
-; MIPS32: xori {{.*}}, {{.*}}, 1
-
-define internal i32 @icmpEq8(i32 %a, i32 %b) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %b_8 = trunc i32 %b to i8
-  %icmp = icmp eq i8 %b_8, %a_8
-  %ret = zext i1 %icmp to i32
-  ret i32 %ret
-}
-; MIPS32-LABEL: icmpEq8
-; MIPS32: sll {{.*}}, {{.*}}, 24
-; MIPS32: sll {{.*}}, {{.*}}, 24
-; MIPS32: xor
-; MIPS32: sltiu	{{.*}}, {{.*}}, 1
-
-define internal i32 @icmpSgt8(i32 %a, i32 %b) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %b_8 = trunc i32 %b to i8
-  %icmp = icmp sgt i8 %b_8, %a_8
-  %ret = zext i1 %icmp to i32
-  ret i32 %ret
-}
-; MIPS32-LABEL: icmpSgt8
-; MIPS32: sll {{.*}}, {{.*}}, 24
-; MIPS32: sll {{.*}}, {{.*}}, 24
-; MIPS32: slt
-
-define internal i32 @icmpUgt8(i32 %a, i32 %b) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %b_8 = trunc i32 %b to i8
-  %icmp = icmp ugt i8 %b_8, %a_8
-  %ret = zext i1 %icmp to i32
-  ret i32 %ret
-}
-; MIPS32-LABEL: icmpUgt8
-; MIPS32: sll {{.*}}, {{.*}}, 24
-; MIPS32: sll {{.*}}, {{.*}}, 24
-; MIPS32: sltu
-
-define internal i32 @icmpSgt16(i32 %a, i32 %b) {
-entry:
-  %a_16 = trunc i32 %a to i16
-  %b_16 = trunc i32 %b to i16
-  %icmp = icmp sgt i16 %b_16, %a_16
-  %ret = zext i1 %icmp to i32
-  ret i32 %ret
-}
-; MIPS32-LABEL: icmpSgt16
-; MIPS32: sll {{.*}}, {{.*}}, 16
-; MIPS32: sll {{.*}}, {{.*}}, 16
-; MIPS32: slt
-
-define internal i32 @icmpUgt16(i32 %a, i32 %b) {
-entry:
-  %a_16 = trunc i32 %a to i16
-  %b_16 = trunc i32 %b to i16
-  %icmp = icmp ugt i16 %b_16, %a_16
-  %ret = zext i1 %icmp to i32
-  ret i32 %ret
-}
-; MIPS32-LABEL: icmpUgt16
-; MIPS32: sll {{.*}}, {{.*}}, 16
-; MIPS32: sll {{.*}}, {{.*}}, 16
-; MIPS32: sltu
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/int-arg.ll b/third_party/subzero/tests_lit/llvm2ice_tests/int-arg.ll
deleted file mode 100644
index e1965b1..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/int-arg.ll
+++ /dev/null
@@ -1,297 +0,0 @@
-; This file checks that Subzero generates code in accordance with the
-; calling convention for integers.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 %s
-
-; TODO: Switch to --filetype=obj when possible.
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-; For x86-32, integer arguments use the stack.
-; For ARM32, integer arguments can be r0-r3. i64 arguments occupy two
-; adjacent 32-bit registers, and require the first to be an even register.
-
-
-; i32
-
-define internal i32 @test_returning32_arg0(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, i32 %arg6, i32 %arg7) {
-entry:
-  ret i32 %arg0
-}
-; CHECK-LABEL: test_returning32_arg0
-; CHECK-NEXT: mov eax,{{.*}} [esp+0x4]
-; CHECK-NEXT: ret
-; ARM32-LABEL: test_returning32_arg0
-; ARM32-NEXT: bx lr
-; MIPS32-LABEL: test_returning32_arg0
-; MIPS32: move v0,a0
-; MIPS32-NEXT: jr       ra
-
-define internal i32 @test_returning32_arg1(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, i32 %arg6, i32 %arg7) {
-entry:
-  ret i32 %arg1
-}
-; CHECK-LABEL: test_returning32_arg1
-; CHECK-NEXT: mov eax,{{.*}} [esp+0x8]
-; CHECK-NEXT: ret
-; ARM32-LABEL: test_returning32_arg1
-; ARM32-NEXT: mov r0, r1
-; ARM32-NEXT: bx lr
-; MIPS32-LABEL: test_returning32_arg1
-; MIPS32: move v0,a1
-; MIPS32-NEXT: jr       ra
-
-define internal i32 @test_returning32_arg2(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, i32 %arg6, i32 %arg7) {
-entry:
-  ret i32 %arg2
-}
-; CHECK-LABEL: test_returning32_arg2
-; CHECK-NEXT: mov eax,{{.*}} [esp+0xc]
-; CHECK-NEXT: ret
-; ARM32-LABEL: test_returning32_arg2
-; ARM32-NEXT: mov r0, r2
-; ARM32-NEXT: bx lr
-; MIPS32-LABEL: test_returning32_arg2
-; MIPS32: move v0,a2
-; MIPS32-NEXT: jr       ra
-
-
-define internal i32 @test_returning32_arg3(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, i32 %arg6, i32 %arg7) {
-entry:
-  ret i32 %arg3
-}
-; CHECK-LABEL: test_returning32_arg3
-; CHECK-NEXT: mov eax,{{.*}} [esp+0x10]
-; CHECK-NEXT: ret
-; ARM32-LABEL: test_returning32_arg3
-; ARM32-NEXT: mov r0, r3
-; ARM32-NEXT: bx lr
-
-
-define internal i32 @test_returning32_arg4(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, i32 %arg6, i32 %arg7) {
-entry:
-  ret i32 %arg4
-}
-; CHECK-LABEL: test_returning32_arg4
-; CHECK-NEXT: mov eax,{{.*}} [esp+0x14]
-; CHECK-NEXT: ret
-; ARM32-LABEL: test_returning32_arg4
-; ARM32-NEXT: ldr r0, [sp]
-; ARM32-NEXT: bx lr
-
-
-define internal i32 @test_returning32_arg5(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, i32 %arg6, i32 %arg7) {
-entry:
-  ret i32 %arg5
-}
-; CHECK-LABEL: test_returning32_arg5
-; CHECK-NEXT: mov eax,{{.*}} [esp+0x18]
-; CHECK-NEXT: ret
-; ARM32-LABEL: test_returning32_arg5
-; ARM32-NEXT: ldr r0, [sp, #4]
-; ARM32-NEXT: bx lr
-
-; i64
-
-define internal i64 @test_returning64_arg0(i64 %arg0, i64 %arg1, i64 %arg2, i64 %arg3) {
-entry:
-  ret i64 %arg0
-}
-; CHECK-LABEL: test_returning64_arg0
-; CHECK-NEXT: mov {{.*}} [esp+0x4]
-; CHECK-NEXT: mov {{.*}} [esp+0x8]
-; CHECK: ret
-; ARM32-LABEL: test_returning64_arg0
-; ARM32-NEXT: bx lr
-; MIPS32-LABEL: test_returning64_arg0
-; MIPS32-NEXT: move v0,a0
-; MIPS32-NEXT: move v1,a1
-
-
-define internal i64 @test_returning64_arg1(i64 %arg0, i64 %arg1, i64 %arg2, i64 %arg3) {
-entry:
-  ret i64 %arg1
-}
-; CHECK-LABEL: test_returning64_arg1
-; CHECK-NEXT: mov {{.*}} [esp+0xc]
-; CHECK-NEXT: mov {{.*}} [esp+0x10]
-; CHECK: ret
-; ARM32-LABEL: test_returning64_arg1
-; ARM32-NEXT: mov r0, r2
-; ARM32-NEXT: mov r1, r3
-; ARM32-NEXT: bx lr
-; MIPS32-LABEL: test_returning64_arg1
-; MIPS32-NEXT: move v0,a2
-; MIPS32-NEXT: move v1,a3
-
-define internal i64 @test_returning64_arg2(i64 %arg0, i64 %arg1, i64 %arg2, i64 %arg3) {
-entry:
-  ret i64 %arg2
-}
-; CHECK-LABEL: test_returning64_arg2
-; CHECK-NEXT: mov {{.*}} [esp+0x14]
-; CHECK-NEXT: mov {{.*}} [esp+0x18]
-; CHECK: ret
-; ARM32-LABEL: test_returning64_arg2
-; This could have been a ldm sp, {r0, r1}, but we don't do the ldm optimization.
-; ARM32-NEXT: ldr r0, [sp]
-; ARM32-NEXT: ldr r1, [sp, #4]
-; ARM32-NEXT: bx lr
-
-define internal i64 @test_returning64_arg3(i64 %arg0, i64 %arg1, i64 %arg2, i64 %arg3) {
-entry:
-  ret i64 %arg3
-}
-; CHECK-LABEL: test_returning64_arg3
-; CHECK-NEXT: mov {{.*}} [esp+0x1c]
-; CHECK-NEXT: mov {{.*}} [esp+0x20]
-; CHECK: ret
-; ARM32-LABEL: test_returning64_arg3
-; ARM32-NEXT: ldr r0, [sp, #8]
-; ARM32-NEXT: ldr r1, [sp, #12]
-; ARM32-NEXT: bx lr
-
-
-; Test that on ARM, the i64 arguments start with an even register.
-
-define internal i64 @test_returning64_even_arg1(i32 %arg0, i64 %arg1, i64 %arg2) {
-entry:
-  ret i64 %arg1
-}
-; Not padded out x86-32.
-; CHECK-LABEL: test_returning64_even_arg1
-; CHECK-NEXT: mov {{.*}} [esp+0x8]
-; CHECK-NEXT: mov {{.*}} [esp+0xc]
-; CHECK: ret
-; ARM32-LABEL: test_returning64_even_arg1
-; ARM32-NEXT: mov r0, r2
-; ARM32-NEXT: mov r1, r3
-; ARM32-NEXT: bx lr
-
-define internal i64 @test_returning64_even_arg1b(i32 %arg0, i32 %arg0b, i64 %arg1, i64 %arg2) {
-entry:
-  ret i64 %arg1
-}
-; CHECK-LABEL: test_returning64_even_arg1b
-; CHECK-NEXT: mov {{.*}} [esp+0xc]
-; CHECK-NEXT: mov {{.*}} [esp+0x10]
-; CHECK: ret
-; ARM32-LABEL: test_returning64_even_arg1b
-; ARM32-NEXT: mov r0, r2
-; ARM32-NEXT: mov r1, r3
-; ARM32-NEXT: bx lr
-
-define internal i64 @test_returning64_even_arg2(i64 %arg0, i32 %arg1, i64 %arg2) {
-entry:
-  ret i64 %arg2
-}
-; Not padded out on x86-32.
-; CHECK-LABEL: test_returning64_even_arg2
-; CHECK-NEXT: mov {{.*}} [esp+0x10]
-; CHECK-NEXT: mov {{.*}} [esp+0x14]
-; CHECK: ret
-; ARM32-LABEL: test_returning64_even_arg2
-; ARM32-DAG: ldr r0, [sp]
-; ARM32-DAG: ldr r1, [sp, #4]
-; ARM32-NEXT: bx lr
-
-define internal i64 @test_returning64_even_arg2b(i64 %arg0, i32 %arg1, i32 %arg1b, i64 %arg2) {
-entry:
-  ret i64 %arg2
-}
-; CHECK-LABEL: test_returning64_even_arg2b
-; CHECK-NEXT: mov {{.*}} [esp+0x14]
-; CHECK-NEXT: mov {{.*}} [esp+0x18]
-; CHECK: ret
-; ARM32-LABEL: test_returning64_even_arg2b
-; ARM32-NEXT: ldr r0, [sp]
-; ARM32-NEXT: ldr r1, [sp, #4]
-; ARM32-NEXT: bx lr
-
-define internal i32 @test_returning32_even_arg2(i64 %arg0, i32 %arg1, i32 %arg2) {
-entry:
-  ret i32 %arg2
-}
-; CHECK-LABEL: test_returning32_even_arg2
-; CHECK-NEXT: mov {{.*}} [esp+0x10]
-; CHECK-NEXT: ret
-; ARM32-LABEL: test_returning32_even_arg2
-; ARM32-NEXT: mov r0, r3
-; ARM32-NEXT: bx lr
-
-define internal i32 @test_returning32_even_arg2b(i32 %arg0, i32 %arg1, i32 %arg2, i64 %arg3) {
-entry:
-  ret i32 %arg2
-}
-; CHECK-LABEL: test_returning32_even_arg2b
-; CHECK-NEXT: mov {{.*}} [esp+0xc]
-; CHECK-NEXT: ret
-; ARM32-LABEL: test_returning32_even_arg2b
-; ARM32-NEXT: mov r0, r2
-; ARM32-NEXT: bx lr
-
-; The i64 won't fit in a pair of register, and consumes the last register so a
-; following i32 can't use that free register.
-define internal i32 @test_returning32_even_arg4(i32 %arg0, i32 %arg1, i32 %arg2, i64 %arg3, i32 %arg4) {
-entry:
-  ret i32 %arg4
-}
-; CHECK-LABEL: test_returning32_even_arg4
-; CHECK-NEXT: mov {{.*}} [esp+0x18]
-; CHECK-NEXT: ret
-; ARM32-LABEL: test_returning32_even_arg4
-; ARM32-NEXT: ldr r0, [sp, #8]
-; ARM32-NEXT: bx lr
-
-; Test interleaving float/double and integer (different register streams on ARM).
-; TODO(jvoung): Test once the S/D/Q regs are modeled.
-
-; Test that integers are passed correctly as arguments to a function.
-
-declare void @IntArgs(i32, i32, i32, i32, i32, i32)
-
-declare void @killRegisters()
-
-define internal void @test_passing_integers(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, i32 %arg6) {
-  call void @killRegisters()
-  call void @IntArgs(i32 %arg6, i32 %arg5, i32 %arg4, i32 %arg3, i32 %arg2, i32 %arg1)
-  ret void
-}
-
-; CHECK-LABEL: test_passing_integers
-; CHECK-DAG: mov [[REG1:e.*]],DWORD PTR [esp+0x44]
-; CHECK-DAG: mov [[REG2:e.*]],DWORD PTR [esp+0x48]
-; CHECK-DAG: mov [[REG3:e.*]],DWORD PTR [esp+0x4c]
-; CHECK-DAG: mov [[REG4:e.*]],DWORD PTR [esp+0x50]
-; CHECK: mov DWORD PTR [esp]
-; CHECK: mov DWORD PTR [esp+0x4]
-; CHECK-DAG: mov DWORD PTR [esp+0x8],[[REG4]]
-; CHECK-DAG: mov DWORD PTR [esp+0xc],[[REG3]]
-; CHECK-DAG: mov DWORD PTR [esp+0x10],[[REG2]]
-; CHECK-DAG: mov DWORD PTR [esp+0x14],[[REG1]]
-; CHECK: call
-
-; ARM32-LABEL: test_passing_integers
-; ARM32-DAG: mov [[REG1:.*]], r1
-; ARM32-DAG: mov [[REG2:.*]], r2
-; ARM32-DAG: mov [[REG3:.*]], r3
-; ARM32: str [[REG2]], [sp]
-; ARM32: str [[REG1]], [sp, #4]
-; ARM32-DAG: mov r0
-; ARM32-DAG: mov r1
-; ARM32-DAG: mov r2
-; ARM32-DAG: mov r3, [[REG3]]
-; ARM32: bl
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/invalid.test b/third_party/subzero/tests_lit/llvm2ice_tests/invalid.test
deleted file mode 100644
index 14413b7..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/invalid.test
+++ /dev/null
@@ -1,13 +0,0 @@
-; Test that we handle functions that don't end with a terminator instruction.
-; See issue: https://code.google.com/p/nativeclient/issues/detail?id=4214
-
-; Don't run in minimal build, since error messages are in generic form
-  when minimal.
-
-; REQUIRES: no_minimal_build
-
-RUN: %p2i --expect-fail --tbc -i %p/Input/no-terminator-inst.tbc --insts \
-RUN:      --args -allow-externally-defined-symbols \
-RUN:        | FileCheck --check-prefix=NO-TERM-INST %s
-
-; NO-TERM-INST: Last instruction in function not terminator
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/large_stack_offs.ll b/third_party/subzero/tests_lit/llvm2ice_tests/large_stack_offs.ll
deleted file mode 100644
index 9490c68..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/large_stack_offs.ll
+++ /dev/null
@@ -1,126 +0,0 @@
-; This tries to create variables with very large stack offsets.
-; This requires a lot of variables/register pressure. To simplify this
-; we assume poor register allocation from Om1, and a flag that forces
-; the frame to add K amount of unused stack for testing.
-; We only need to test ARM and other architectures which have limited space
-; for specifying an offset within an instruction.
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj --disassemble --target arm32 \
-; RUN:   -i %s --args -Om1 --test-stack-extra 4096 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 %s
-
-declare i64 @dummy(i32 %t1, i32 %t2, i32 %t3, i64 %t4, i64 %t5)
-
-; Test a function that requires lots of stack (due to test flag), and uses
-; SP as the base register (originally).
-define internal i64 @lotsOfStack(i32 %a, i32 %b, i32 %c, i32 %d) {
-entry:
-  %t1 = xor i32 %a, %b
-  %t2 = or i32 %c, %d
-  %cmp = icmp eq i32 %t1, %t2
-  br i1 %cmp, label %br_1, label %br_2
-
-br_1:
-  %x1 = zext i32 %t1 to i64
-  %y1 = ashr i64 %x1, 17
-  ; Use some stack during the call, so that references to %t1 and %t2's
-  ; stack slots require stack adjustment.
-  %r1 = call i64 @dummy(i32 123, i32 321, i32 %t2, i64 %x1, i64 %y1)
-  %z1 = sub i64 %r1, %y1
-  br label %end
-
-br_2:
-  %x2 = zext i32 %t2 to i64
-  %y2 = and i64 %x2, 123
-  %r2 = call i64 @dummy(i32 123, i32 321, i32 %t2, i64 %x2, i64 %y2)
-  %z2 = and i64 %r2, %y2
-  br label %end
-
-end:
-  %x3 = phi i64 [ %x1, %br_1 ], [ %x2, %br_2 ]
-  %z3 = phi i64 [ %z1, %br_1 ], [ %z2, %br_2 ]
-  %r3 = and i64 %x3, %z3
-  ret i64 %r3
-}
-; ARM32-LABEL: lotsOfStack
-; ARM32-NOT: mov fp, sp
-; ARM32: movw ip, #4{{.*}}
-; ARM32-NEXT: sub sp, sp, ip
-; ARM32: movw ip, #4248
-; ARM32-NEXT: add ip, sp, ip
-; ARM32-NOT: movw ip
-; %t2 is the result of the "or", and %t2 will be passed via r1 to the call.
-; Use that to check the stack offset of %t2. The first offset and the
-; later offset right before the call should be 16 bytes apart,
-; because of the sub sp, sp, #16.
-; ARM32: orr [[REG:r.*]], {{.*}},
-; I.e., the slot for t2 is (sp0 + 4232 - 20) == sp0 + 4212.
-; ARM32: str [[REG]], [ip, #-20]
-; ARM32: b {{[a-f0-9]+}}
-; Now skip ahead to where the call in br_1 begins, to check how %t2 is used.
-; ARM32: movw ip, #4232
-; ARM32-NEXT: add ip, sp, ip
-; ARM32: ldr r2, [ip, #-4]
-; ARM32: bl {{.*}} dummy
-; The call clobbers ip, so we need to re-create the base register.
-; ARM32: movw ip, #4{{.*}}
-; ARM32: b {{[a-f0-9]+}}
-; ARM32: bl {{.*}} dummy
-
-; Similar, but test a function that uses FP as the base register (originally).
-define internal i64 @usesFrameReg(i32 %a, i32 %b, i32 %c, i32 %d) {
-entry:
-  %p = alloca i8, i32 %d, align 4
-  %t1 = xor i32 %a, %b
-  %t2 = or i32 %c, %d
-  %cmp = icmp eq i32 %t1, %t2
-  br i1 %cmp, label %br_1, label %br_2
-
-br_1:
-  %x1 = zext i32 %t1 to i64
-  %y1 = ashr i64 %x1, 17
-  %p32 = ptrtoint i8* %p to i32
-  %r1 = call i64 @dummy(i32 %p32, i32 321, i32 %t2, i64 %x1, i64 %y1)
-  %z1 = sub i64 %r1, %y1
-  br label %end
-
-br_2:
-  %x2 = zext i32 %t2 to i64
-  %y2 = and i64 %x2, 123
-  %r2 = call i64 @dummy(i32 123, i32 321, i32 %d, i64 %x2, i64 %y2)
-  %z2 = and i64 %r2, %y2
-  br label %end
-
-end:
-  %x3 = phi i64 [ %x1, %br_1 ], [ %x2, %br_2 ]
-  %z3 = phi i64 [ %z1, %br_1 ], [ %z2, %br_2 ]
-  %r3 = and i64 %x3, %z3
-  ret i64 %r3
-}
-; ARM32-LABEL: usesFrameReg
-; ARM32: mov fp, sp
-; ARM32: movw ip, #4{{.*}}
-; ARM32-NEXT: sub sp, sp, ip
-; ARM32: movw ip, #4100
-; ARM32-NEXT: sub ip, fp, ip
-; ARM32-NOT: movw ip
-; %t2 is the result of the "or", and %t2 will be passed via r1 to the call.
-; Use that to check the stack offset of %t2. It should be the same offset
-; even after sub sp, sp, #16, because the base register was originally
-; the FP and not the SP.
-; ARM32: orr [[REG:r.*]], {{.*}},
-; I.e., the slot for t2 is (fp0 - 4100 -24) == fp0 - 4124
-; ARM32: str [[REG]], [ip, #-24]
-; ARM32: b {{[a-f0-9]+}}
-; Now skip ahead to where the call in br_1 begins, to check how %t2 is used.
-; ARM32: movw ip, #4120
-; ARM32-NEXT: sub ip, fp, ip
-; ARM32: ldr r2, [ip, #-4]
-; ARM32: bl {{.*}} dummy
-; The call clobbers ip, so we need to re-create the base register.
-; ARM32: movw ip, #4{{.*}}
-; ARM32: b {{[a-f0-9]+}}
-; ARM32: bl {{.*}} dummy
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/licm.ll b/third_party/subzero/tests_lit/llvm2ice_tests/licm.ll
deleted file mode 100644
index 53761bb..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/licm.ll
+++ /dev/null
@@ -1,36 +0,0 @@
-; Tests if the licm flag successfully hoists the add from loop0 to entry
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --target x8664 --args \
-; RUN: -O2 -licm | FileCheck --check-prefix ENABLE %s
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --target x8664 --args \
-; RUN: -O2 | FileCheck --check-prefix NOENABLE %s
-
-define internal void @dummy() {
-entry:
-  ret void
-}
-define internal i32 @test_licm(i32 %a32, i32 %b, i32 %c) {
-entry:
-  %a = trunc i32 %a32 to i1
-  br label %loop0
-loop0:                               ; <-+
-  call void @dummy()                 ;   |
-  %add1 = add i32 %b, %c             ;   |
-  br label %loop1                    ;   |
-loop1:                               ;   |
-  br i1 %a, label %loop0, label %out ; --+
-out:
-  ret i32 %add1
-}
-
-; CHECK-LABEL: test_licm
-
-; ENABLE: add
-; ENABLE: call
-
-; NOENABLE: call
-; NOENABLE-NEXT: mov
-; NOENABLE-NEXT: add
-
-; CHECK: ret
\ No newline at end of file
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/load.ll b/third_party/subzero/tests_lit/llvm2ice_tests/load.ll
deleted file mode 100644
index 5dd0039..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/load.ll
+++ /dev/null
@@ -1,74 +0,0 @@
-; Simple test of the load instruction.
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --args --verbose inst -threads=0 | FileCheck %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-define internal void @load_i64(i32 %addr_arg) {
-entry:
-  %__1 = inttoptr i32 %addr_arg to i64*
-  %iv = load i64, i64* %__1, align 1
-  ret void
-
-; CHECK:       Initial CFG
-; CHECK:     entry:
-; CHECK-NEXT:  %iv = load i64, i64* %addr_arg, align 1
-; CHECK-NEXT:  ret void
-}
-
-; MIPS32-LABEL: load_i64
-; MIPS32: lw [[BASE:.*]],
-; MIPS32-NEXT: lw {{.*}},0([[BASE]])
-; MIPS32-NEXT: lw {{.*}},4([[BASE]])
-
-define internal void @load_i32(i32 %addr_arg) {
-entry:
-  %__1 = inttoptr i32 %addr_arg to i32*
-  %iv = load i32, i32* %__1, align 1
-  ret void
-
-; CHECK:       Initial CFG
-; CHECK:     entry:
-; CHECK-NEXT:  %iv = load i32, i32* %addr_arg, align 1
-; CHECK-NEXT:  ret void
-}
-
-; MIPS32-LABEL: load_i32
-; MIPS32: lw {{.*}},0({{.*}})
-
-define internal void @load_i16(i32 %addr_arg) {
-entry:
-  %__1 = inttoptr i32 %addr_arg to i16*
-  %iv = load i16, i16* %__1, align 1
-  ret void
-
-; CHECK:       Initial CFG
-; CHECK:     entry:
-; CHECK-NEXT:  %iv = load i16, i16* %addr_arg, align 1
-; CHECK-NEXT:  ret void
-}
-
-; MIPS32-LABEL: load_i16
-; MIPS32: lh {{.*}},0({{.*}})
-
-define internal void @load_i8(i32 %addr_arg) {
-entry:
-  %__1 = inttoptr i32 %addr_arg to i8*
-  %iv = load i8, i8* %__1, align 1
-  ret void
-
-; CHECK:       Initial CFG
-; CHECK:     entry:
-; CHECK-NEXT:  %iv = load i8, i8* %addr_arg, align 1
-; CHECK-NEXT:  ret void
-}
-
-; MIPS32-LABEL: load_i8
-; MIPS32: lb {{.*}},0({{.*}})
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/load_cast.ll b/third_party/subzero/tests_lit/llvm2ice_tests/load_cast.ll
deleted file mode 100644
index 07e7173..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/load_cast.ll
+++ /dev/null
@@ -1,266 +0,0 @@
-; Tests desired and undesired folding of load instructions into cast
-; instructions.  The folding is only done when liveness analysis is performed,
-; so only O2 is tested.
-
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 | FileCheck %s
-
-; Not testing trunc, or 32-bit bitcast, because the lowered code uses pretty
-; much the same mov instructions regardless of whether folding is done.
-
-define internal i32 @zext_fold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to i8*
-  %load = load i8, i8* %addr, align 1
-  %result = zext i8 %load to i32
-  ret i32 %result
-}
-; CHECK-LABEL: zext_fold
-; CHECK: movzx {{.*}},BYTE PTR [{{.*}}+0xc8]
-
-define internal i32 @zext_nofold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to i8*
-  %load = load i8, i8* %addr, align 1
-  %tmp1 = zext i8 %load to i32
-  %tmp2 = zext i8 %load to i32
-  %result = add i32 %tmp1, %tmp2
-  ret i32 %result
-}
-; Test that load folding does not happen.
-; CHECK-LABEL: zext_nofold
-; CHECK-NOT: movzx {{.*}},BYTE PTR [{{.*}}+0xc8]
-
-define internal i32 @sext_fold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to i8*
-  %load = load i8, i8* %addr, align 1
-  %result = sext i8 %load to i32
-  ret i32 %result
-}
-; CHECK-LABEL: sext_fold
-; CHECK: movsx {{.*}},BYTE PTR [{{.*}}+0xc8]
-
-define internal i32 @sext_nofold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to i8*
-  %load = load i8, i8* %addr, align 1
-  %tmp1 = sext i8 %load to i32
-  %tmp2 = sext i8 %load to i32
-  %result = add i32 %tmp1, %tmp2
-  ret i32 %result
-}
-; Test that load folding does not happen.
-; CHECK-LABEL: sext_nofold
-; CHECK-NOT: movsx {{.*}},BYTE PTR [{{.*}}+0xc8]
-
-define internal float @fptrunc_fold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to double*
-  %load = load double, double* %addr, align 8
-  %result = fptrunc double %load to float
-  ret float %result
-}
-; CHECK-LABEL: fptrunc_fold
-; CHECK: cvtsd2ss {{.*}},QWORD PTR [{{.*}}+0xc8]
-
-define internal float @fptrunc_nofold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to double*
-  %load = load double, double* %addr, align 8
-  %tmp1 = fptrunc double %load to float
-  %tmp2 = fptrunc double %load to float
-  %result = fadd float %tmp1, %tmp2
-  ret float %result
-}
-; Test that load folding does not happen.
-; CHECK-LABEL: fptrunc_nofold
-; CHECK-NOT: cvtsd2ss {{.*}},QWORD PTR [{{.*}}+0xc8]
-
-define internal double @fpext_fold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to float*
-  %load = load float, float* %addr, align 4
-  %result = fpext float %load to double
-  ret double %result
-}
-; CHECK-LABEL: fpext_fold
-; CHECK: cvtss2sd {{.*}},DWORD PTR [{{.*}}+0xc8]
-
-define internal double @fpext_nofold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to float*
-  %load = load float, float* %addr, align 4
-  %tmp1 = fpext float %load to double
-  %tmp2 = fpext float %load to double
-  %result = fadd double %tmp1, %tmp2
-  ret double %result
-}
-; Test that load folding does not happen.
-; CHECK-LABEL: fpext_nofold
-; CHECK-NOT: cvtss2sd {{.*}},DWORD PTR [{{.*}}+0xc8]
-
-define internal i32 @fptoui_fold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to double*
-  %load = load double, double* %addr, align 8
-  %result = fptoui double %load to i16
-  %result2 = zext i16 %result to i32
-  ret i32 %result2
-}
-; CHECK-LABEL: fptoui_fold
-; CHECK: cvttsd2si {{.*}},QWORD PTR [{{.*}}+0xc8]
-
-define internal i32 @fptoui_nofold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to double*
-  %load = load double, double* %addr, align 8
-  %tmp1 = fptoui double %load to i16
-  %tmp2 = fptoui double %load to i16
-  %result = add i16 %tmp1, %tmp2
-  %result2 = zext i16 %result to i32
-  ret i32 %result2
-}
-; Test that load folding does not happen.
-; CHECK-LABEL: fptoui_nofold
-; CHECK-NOT: cvttsd2si {{.*}},QWORD PTR [{{.*}}+0xc8]
-
-define internal i32 @fptosi_fold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to double*
-  %load = load double, double* %addr, align 8
-  %result = fptosi double %load to i16
-  %result2 = zext i16 %result to i32
-  ret i32 %result2
-}
-; CHECK-LABEL: fptosi_fold
-; CHECK: cvttsd2si {{.*}},QWORD PTR [{{.*}}+0xc8]
-
-define internal i32 @fptosi_nofold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to double*
-  %load = load double, double* %addr, align 8
-  %tmp1 = fptosi double %load to i16
-  %tmp2 = fptosi double %load to i16
-  %result = add i16 %tmp1, %tmp2
-  %result2 = zext i16 %result to i32
-  ret i32 %result2
-}
-; Test that load folding does not happen.
-; CHECK-LABEL: fptosi_nofold
-; CHECK-NOT: cvttsd2si {{.*}},QWORD PTR [{{.*}}+0xc8]
-
-define internal double @uitofp_fold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to i16*
-  %load = load i16, i16* %addr, align 1
-  %result = uitofp i16 %load to double
-  ret double %result
-}
-; CHECK-LABEL: uitofp_fold
-; CHECK: movzx {{.*}},WORD PTR [{{.*}}+0xc8]
-
-define internal double @uitofp_nofold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to i16*
-  %load = load i16, i16* %addr, align 1
-  %tmp1 = uitofp i16 %load to double
-  %tmp2 = uitofp i16 %load to double
-  %result = fadd double %tmp1, %tmp2
-  ret double %result
-}
-; Test that load folding does not happen.
-; CHECK-LABEL: uitofp_nofold
-; CHECK-NOT: movzx {{.*}},WORD PTR [{{.*}}+0xc8]
-
-define internal double @sitofp_fold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to i16*
-  %load = load i16, i16* %addr, align 1
-  %result = sitofp i16 %load to double
-  ret double %result
-}
-; CHECK-LABEL: sitofp_fold
-; CHECK: movsx {{.*}},WORD PTR [{{.*}}+0xc8]
-
-define internal double @sitofp_nofold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to i16*
-  %load = load i16, i16* %addr, align 1
-  %tmp1 = sitofp i16 %load to double
-  %tmp2 = sitofp i16 %load to double
-  %result = fadd double %tmp1, %tmp2
-  ret double %result
-}
-; Test that load folding does not happen.
-; CHECK-LABEL: sitofp_nofold
-; CHECK-NOT: movsx {{.*}},WORD PTR [{{.*}}+0xc8]
-
-define internal double @bitcast_i64_fold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to i64*
-  %load = load i64, i64* %addr, align 1
-  %result = bitcast i64 %load to double
-  ret double %result
-}
-; CHECK-LABEL: bitcast_i64_fold
-; CHECK: movq {{.*}},QWORD PTR [{{.*}}+0xc8]
-
-define internal double @bitcast_i64_nofold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to i64*
-  %load = load i64, i64* %addr, align 1
-  %tmp1 = bitcast i64 %load to double
-  %tmp2 = bitcast i64 %load to double
-  %result = fadd double %tmp1, %tmp2
-  ret double %result
-}
-; Test that load folding does not happen.
-; CHECK-LABEL: bitcast_i64_nofold
-; CHECK-NOT: movq {{.*}},QWORD PTR [{{.*}}+0xc8]
-
-define internal i64 @bitcast_double_fold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to double*
-  %load = load double, double* %addr, align 8
-  %result = bitcast double %load to i64
-  ret i64 %result
-}
-; CHECK-LABEL: bitcast_double_fold
-; CHECK-NOT: QWORD PTR
-; CHECK: mov {{.*}},DWORD PTR [{{.*}}+0xc8]
-; CHECK: mov {{.*}},DWORD PTR [{{.*}}+0xcc]
-; CHECK-NOT: QWORD PTR
-
-define internal i64 @bitcast_double_nofold(i32 %arg) {
-entry:
-  %ptr = add i32 %arg, 200
-  %addr = inttoptr i32 %ptr to double*
-  %load = load double, double* %addr, align 8
-  %tmp1 = bitcast double %load to i64
-  %tmp2 = bitcast double %load to i64
-  %result = add i64 %tmp1, %tmp2
-  ret i64 %result
-}
-; Test that load folding does not happen.
-; CHECK-LABEL: bitcast_double_nofold
-; CHECK: QWORD PTR
-; CHECK: QWORD PTR
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/local-cse.ll b/third_party/subzero/tests_lit/llvm2ice_tests/local-cse.ll
deleted file mode 100644
index b99c8f4..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/local-cse.ll
+++ /dev/null
@@ -1,36 +0,0 @@
-; Tests local-cse on x8632 and x8664
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --target x8632 --args \
-; RUN: -O2 | FileCheck --check-prefix=X8632 \
-; RUN: --check-prefix=X8632EXP %s
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --target x8632 --args \
-; RUN: -O2 -lcse=0| FileCheck --check-prefix=X8632 --check-prefix X8632NOEXP %s
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --target x8664 --args \
-; RUN: -O2 | FileCheck --check-prefix=X8664 \
-; RUN: --check-prefix=X8664EXP %s
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --target x8664 --args \
-; RUN: -O2 -lcse=0| FileCheck --check-prefix=X8664 --check-prefix X8664NOEXP %s
-
-
-define internal i32 @local_cse_test(i32 %a, i32 %b) {
-entry:
-  %add1 = add i32 %b, %a
-  %add2 = add i32 %b, %a
-  %add3 = add i32 %add1, %add2
-  ret i32 %add3
-}
-
-; X8632: add
-; X8632: add
-; X8632NOEXP: add
-; X8632EXP-NOT: add
-; X8632: ret
-
-; X8664: add
-; X8664: add
-; X8664NOEXP: add
-; X8664EXP-NOT: add
-; X8664: ret
\ No newline at end of file
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/loop-nest-depth.ll b/third_party/subzero/tests_lit/llvm2ice_tests/loop-nest-depth.ll
deleted file mode 100644
index e43abb9..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/loop-nest-depth.ll
+++ /dev/null
@@ -1,306 +0,0 @@
-; Test the the loop nest depth is correctly calculated for basic blocks.
-
-; REQUIRES: allow_dump
-
-; Single threaded so that the dumps used for checking happen in order.
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 --verbose=loop \
-; RUN:     -log=%t --threads=0 && FileCheck %s < %t
-
-define internal void @test_single_loop(i32 %a32) {
-entry:
-  %a = trunc i32 %a32 to i1
-  br label %loop0
-
-loop0:                               ; <-+
-  br label %loop1                    ;   |
-loop1:                               ;   |
-  br i1 %a, label %loop0, label %out ; --+
-
-out:
-  ret void
-}
-
-; CHECK-LABEL: After loop analysis
-; CHECK-NEXT: entry:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-NEXT: loop0:
-; CHECK-NEXT: LoopNestDepth = 1
-; CHECK-NEXT: loop1:
-; CHECK-NEXT: LoopNestDepth = 1
-; CHECK-NEXT: out:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-LABEL: Before RMW
-
-define internal void @test_single_loop_with_continue(i32 %a32, i32 %b32) {
-entry:
-  %a = trunc i32 %a32 to i1
-  %b = trunc i32 %b32 to i1
-  br label %loop0
-
-loop0:                                 ; <-+
-  br label %loop1                      ;   |
-loop1:                                 ;   |
-  br i1 %a, label %loop0, label %loop2 ; --+
-loop2:                                 ;   |
-  br i1 %b, label %loop0, label %out   ; --+
-
-out:
-  ret void
-}
-
-; CHECK-LABEL: After loop analysis
-; CHECK-NEXT: entry:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-NEXT: loop0:
-; CHECK-NEXT: LoopNestDepth = 1
-; CHECK-NEXT: loop1:
-; CHECK-NEXT: LoopNestDepth = 1
-; CHECK-NEXT: loop2:
-; CHECK-NEXT: LoopNestDepth = 1
-; CHECK-NEXT: out:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-LABEL: Before RMW
-
-define internal void @test_multiple_exits(i32 %a32, i32 %b32) {
-entry:
-  %a = trunc i32 %a32 to i1
-  %b = trunc i32 %b32 to i1
-  br label %loop0
-
-loop0:                               ; <-+
-  br label %loop1                    ;   |
-loop1:                               ;   |
-  br i1 %a, label %loop2, label %out ; --+-+
-loop2:                               ;   | |
-  br i1 %b, label %loop0, label %out ; --+ |
-                                     ;     |
-out:                                 ; <---+
-  ret void
-}
-
-; CHECK-LABEL: After loop analysis
-; CHECK-NEXT: entry:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-NEXT: loop0:
-; CHECK-NEXT: LoopNestDepth = 1
-; CHECK-NEXT: loop1:
-; CHECK-NEXT: LoopNestDepth = 1
-; CHECK-NEXT: loop2:
-; CHECK-NEXT: LoopNestDepth = 1
-; CHECK-NEXT: out:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-LABEL: Before RMW
-
-define internal void @test_two_nested_loops(i32 %a32, i32 %b32) {
-entry:
-  %a = trunc i32 %a32 to i1
-  %b = trunc i32 %b32 to i1
-  br label %loop0_0
-
-loop0_0:                                   ; <---+
-  br label %loop1_0                        ;     |
-loop1_0:                                   ; <-+ |
-  br label %loop1_1                        ;   | |
-loop1_1:                                   ;   | |
-  br i1 %a, label %loop1_0, label %loop0_1 ; --+ |
-loop0_1:                                   ;     |
-  br i1 %b, label %loop0_0, label %out     ; ----+
-
-out:
-  ret void
-}
-
-; CHECK-LABEL: After loop analysis
-; CHECK-NEXT: entry:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-NEXT: loop0_0:
-; CHECK-NEXT: LoopNestDepth = 1
-; CHECK-NEXT: loop1_0:
-; CHECK-NEXT: LoopNestDepth = 2
-; CHECK-NEXT: loop1_1:
-; CHECK-NEXT: LoopNestDepth = 2
-; CHECK-NEXT: loop0_1:
-; CHECK-NEXT: LoopNestDepth = 1
-; CHECK-NEXT: out:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-LABEL: Before RMW
-
-define internal void @test_two_nested_loops_with_continue(i32 %a32, i32 %b32,
-                                                          i32 %c32) {
-entry:
-  %a = trunc i32 %a32 to i1
-  %b = trunc i32 %b32 to i1
-  %c = trunc i32 %c32 to i1
-  br label %loop0_0
-
-loop0_0:                                   ; <---+
-  br label %loop1_0                        ;     |
-loop1_0:                                   ; <-+ |
-  br label %loop1_1                        ;   | |
-loop1_1:                                   ;   | |
-  br i1 %a, label %loop1_0, label %loop1_2 ; --+ |
-loop1_2:                                   ;   | |
-  br i1 %a, label %loop1_0, label %loop0_1 ; --+ |
-loop0_1:                                   ;     |
-  br i1 %b, label %loop0_0, label %out     ; ----+
-
-out:
-  ret void
-}
-
-; CHECK-LABEL: After loop analysis
-; CHECK-NEXT: entry:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-NEXT: loop0_0:
-; CHECK-NEXT: LoopNestDepth = 1
-; CHECK-NEXT: loop1_0:
-; CHECK-NEXT: LoopNestDepth = 2
-; CHECK-NEXT: loop1_1:
-; CHECK-NEXT: LoopNestDepth = 2
-; CHECK-NEXT: loop1_2:
-; CHECK-NEXT: LoopNestDepth = 2
-; CHECK-NEXT: loop0_1:
-; CHECK-NEXT: LoopNestDepth = 1
-; CHECK-NEXT: out:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-LABEL: Before RMW
-
-define internal void @test_multiple_nested_loops(i32 %a32, i32 %b32) {
-entry:
-  %a = trunc i32 %a32 to i1
-  %b = trunc i32 %b32 to i1
-  br label %loop0_0
-
-loop0_0:                                   ; <---+
-  br label %loop1_0                        ;     |
-loop1_0:                                   ; <-+ |
-  br label %loop1_1                        ;   | |
-loop1_1:                                   ;   | |
-  br i1 %a, label %loop1_0, label %loop0_1 ; --+ |
-loop0_1:                                   ;     |
-  br label %loop2_0                        ;     |
-loop2_0:                                   ; <-+ |
-  br label %loop2_1                        ;   | |
-loop2_1:                                   ;   | |
-  br i1 %a, label %loop2_0, label %loop0_2 ; --+ |
-loop0_2:                                   ;     |
-  br i1 %b, label %loop0_0, label %out     ; ----+
-
-out:
-  ret void
-}
-
-; CHECK-LABEL: After loop analysis
-; CHECK-NEXT: entry:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-NEXT: loop0_0:
-; CHECK-NEXT: LoopNestDepth = 1
-; CHECK-NEXT: loop1_0:
-; CHECK-NEXT: LoopNestDepth = 2
-; CHECK-NEXT: loop1_1:
-; CHECK-NEXT: LoopNestDepth = 2
-; CHECK-NEXT: loop0_1:
-; CHECK-NEXT: LoopNestDepth = 1
-; CHECK-NEXT: loop2_0:
-; CHECK-NEXT: LoopNestDepth = 2
-; CHECK-NEXT: loop2_1:
-; CHECK-NEXT: LoopNestDepth = 2
-; CHECK-NEXT: loop0_2:
-; CHECK-NEXT: LoopNestDepth = 1
-; CHECK-NEXT: out:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-LABEL: Before RMW
-
-define internal void @test_three_nested_loops(i32 %a32, i32 %b32, i32 %c32) {
-entry:
-  %a = trunc i32 %a32 to i1
-  %b = trunc i32 %b32 to i1
-  %c = trunc i32 %c32 to i1
-  br label %loop0_0
-
-loop0_0:                                   ; <-----+
-  br label %loop1_0                        ;       |
-loop1_0:                                   ; <---+ |
-  br label %loop2_0                        ;     | |
-loop2_0:                                   ; <-+ | |
-  br label %loop2_1                        ;   | | |
-loop2_1:                                   ;   | | |
-  br i1 %a, label %loop2_0, label %loop1_1 ; --+ | |
-loop1_1:                                   ;     | |
-  br i1 %b, label %loop1_0, label %loop0_1 ; ----+ |
-loop0_1:                                   ;       |
-  br i1 %c, label %loop0_0, label %out     ; ------+
-
-out:
-  ret void
-}
-
-; CHECK-LABEL: After loop analysis
-; CHECK-NEXT: entry:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-NEXT: loop0_0:
-; CHECK-NEXT: LoopNestDepth = 1
-; CHECK-NEXT: loop1_0:
-; CHECK-NEXT: LoopNestDepth = 2
-; CHECK-NEXT: loop2_0:
-; CHECK-NEXT: LoopNestDepth = 3
-; CHECK-NEXT: loop2_1:
-; CHECK-NEXT: LoopNestDepth = 3
-; CHECK-NEXT: loop1_1:
-; CHECK-NEXT: LoopNestDepth = 2
-; CHECK-NEXT: loop0_1:
-; CHECK-NEXT: LoopNestDepth = 1
-; CHECK-NEXT: out:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-LABEL: Before RMW
-
-define internal void @test_diamond(i32 %a32) {
-entry:
-  %a = trunc i32 %a32 to i1
-  br i1 %a, label %left, label %right
-
-left:
-  br label %out
-
-right:
-  br label %out
-
-out:
-  ret void
-}
-
-; CHECK-LABEL: After loop analysis
-; CHECK-NEXT: entry:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-NEXT: left:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-NEXT: right:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-NEXT: out:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-LABEL: Before RMW
-
-define internal void @test_single_block_loop(i32 %count) {
-entry:
-  br label %body
-body:
-;  %i = phi i32 [ 0, %entry ], [ %inc, %body ]
-; A normal loop would have a phi instruction like above for the induction
-; variable, but that may introduce new basic blocks due to phi edge splitting,
-; so we use an alternative definition for %i to make the test more clear.
-  %i = add i32 %count, 1
-  %inc = add i32 %i, 1
-  %cmp = icmp slt i32 %inc, %count
-  br i1 %cmp, label %body, label %exit
-exit:
-  ret void
-}
-
-; CHECK-LABEL: After loop analysis
-; CHECK-NEXT: entry:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-NEXT: body:
-; CHECK-NEXT: LoopNestDepth = 1
-; CHECK-NEXT: exit:
-; CHECK-NEXT: LoopNestDepth = 0
-; CHECK-LABEL: Before RMW
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/mangle.ll b/third_party/subzero/tests_lit/llvm2ice_tests/mangle.ll
deleted file mode 100644
index 1ba73f7..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/mangle.ll
+++ /dev/null
@@ -1,145 +0,0 @@
-; Tests the Subzero "name mangling" when using the "pnacl-sz --prefix"
-; option.  Also does a quick smoke test of -ffunction-sections.
-
-; REQUIRES: allow_dump
-; RUN: %p2i -i %s --args --verbose none -ffunction-sections | FileCheck %s
-; TODO(stichnot): The following line causes this test to fail.
-; RUIN: %p2i --assemble --disassemble -i %s --args --verbose none \
-; RUIN:   | FileCheck %s
-; RUN: %p2i -i %s --args --verbose none --prefix Subzero -ffunction-sections \
-; RUN:   | FileCheck --check-prefix=MANGLE %s
-
-define internal void @FuncC(i32 %i) {
-entry:
-  ret void
-}
-; FuncC is a C symbol that isn't recognized as a C++ mangled symbol.
-; CHECK-LABEL: .text.FuncC
-; CHECK: FuncC:
-; MANGLE-LABEL: .text.SubzeroFuncC
-; MANGLE: SubzeroFuncC:
-
-define internal void @_ZN13TestNamespace4FuncEi(i32 %i) {
-entry:
-  ret void
-}
-; This is Func(int) nested inside namespace TestNamespace.
-; CHECK-LABEL: .text._ZN13TestNamespace4FuncEi
-; CHECK: _ZN13TestNamespace4FuncEi:
-; MANGLE-LABEL: .text._ZN7Subzero13TestNamespace4FuncEi
-; MANGLE: _ZN7Subzero13TestNamespace4FuncEi:
-
-define internal void @_ZN13TestNamespace15NestedNamespace4FuncEi(i32 %i) {
-entry:
-  ret void
-}
-; This is Func(int) nested inside two namespaces.
-; CHECK-LABEL: .text._ZN13TestNamespace15NestedNamespace4FuncEi
-; CHECK: _ZN13TestNamespace15NestedNamespace4FuncEi:
-; MANGLE-LABEL: .text._ZN7Subzero13TestNamespace15NestedNamespace4FuncEi
-; MANGLE: _ZN7Subzero13TestNamespace15NestedNamespace4FuncEi:
-
-define internal void @_Z13FuncCPlusPlusi(i32 %i) {
-entry:
-  ret void
-}
-; This is a non-nested, mangled C++ symbol.
-; CHECK-LABEL: .text._Z13FuncCPlusPlusi
-; CHECK: _Z13FuncCPlusPlusi:
-; MANGLE-LABEL: .text._ZN7Subzero13FuncCPlusPlusEi
-; MANGLE: _ZN7Subzero13FuncCPlusPlusEi:
-
-define internal void @_ZN12_GLOBAL__N_18FuncAnonEi(i32 %i) {
-entry:
-  ret void
-}
-; This is FuncAnon(int) nested inside an anonymous namespace.
-; CHECK-LABEL: .text._ZN12_GLOBAL__N_18FuncAnonEi
-; CHECK: _ZN12_GLOBAL__N_18FuncAnonEi:
-; MANGLE-LABEL: .text._ZN7Subzero12_GLOBAL__N_18FuncAnonEi
-; MANGLE: _ZN7Subzero12_GLOBAL__N_18FuncAnonEi:
-
-; Now for the illegitimate examples.
-
-; Test for _ZN with no suffix.  Don't crash, prepend Subzero.
-define internal void @_ZN(i32 %i) {
-entry:
-  ret void
-}
-; MANGLE-LABEL: .text.Subzero_ZN
-; MANGLE: Subzero_ZN:
-
-; Test for _Z<len><str> where <len> is smaller than it should be.
-define internal void @_Z12FuncCPlusPlusi(i32 %i) {
-entry:
-  ret void
-}
-; MANGLE-LABEL: .text._ZN7Subzero12FuncCPlusPluEsi
-; MANGLE: _ZN7Subzero12FuncCPlusPluEsi:
-
-; Test for _Z<len><str> where <len> is slightly larger than it should be.
-define internal void @_Z14FuncCPlusPlusi(i32 %i) {
-entry:
-  ret void
-}
-; MANGLE-LABEL: .text._ZN7Subzero14FuncCPlusPlusiE
-; MANGLE: _ZN7Subzero14FuncCPlusPlusiE:
-
-; Test for _Z<len><str> where <len> is much larger than it should be.
-define internal void @_Z114FuncCPlusPlusi(i32 %i) {
-entry:
-  ret void
-}
-; MANGLE-LABEL: .text.Subzero_Z114FuncCPlusPlusi
-; MANGLE: Subzero_Z114FuncCPlusPlusi:
-
-; Test for _Z<len><str> where we try to overflow the uint32_t holding <len>.
-define internal void @_Z4294967296FuncCPlusPlusi(i32 %i) {
-entry:
-  ret void
-}
-; MANGLE-LABEL: .text.Subzero_Z4294967296FuncCPlusPlusi
-; MANGLE: Subzero_Z4294967296FuncCPlusPlusi:
-
-; Test for _Z<len><str> where <len> is 0.
-define internal void @_Z0FuncCPlusPlusi(i32 %i) {
-entry:
-  ret void
-}
-; MANGLE-LABEL: .text._ZN7Subzero0EFuncCPlusPlusi
-; MANGLE: _ZN7Subzero0EFuncCPlusPlusi:
-
-; Test for _Z<len><str> where <len> is -1.  LLVM explicitly allows the
-; '-' character in identifiers.
-
-define internal void @_Z-1FuncCPlusPlusi(i32 %i) {
-entry:
-  ret void
-}
-; MANGLE-LABEL: .text.Subzero_Z-1FuncCPlusPlusi
-; MANGLE: Subzero_Z-1FuncCPlusPlusi:
-
-
-; Test for substitution incrementing.  This single test captures:
-;   S<num>_ ==> S<num+1>_ for single-digit <num>
-;   S_ ==> S0_
-;   String length increase, e.g. SZZZ_ ==> S1000_
-;   At least one digit wrapping without length increase, e.g. SZ9ZZ_ ==> SZA00_
-;   Unrelated identifiers containing S[0-9A-Z]* , e.g. MyClassS1x
-;   A proper substring of S<num>_ at the end of the string
-;     (to test parser edge cases)
-
-define internal void @_Z3fooP10MyClassS1xP10MyClassS2xRS_RS1_S_S1_SZZZ_SZ9ZZ_S12345() {
-; MANGLE-LABEL: .text._ZN7Subzero3fooEP10MyClassS1xP10MyClassS2xRS0_RS2_S0_S2_S1000_SZA00_S12345
-; MANGLE: _ZN7Subzero3fooEP10MyClassS1xP10MyClassS2xRS0_RS2_S0_S2_S1000_SZA00_S12345:
-entry:
-  ret void
-}
-
-; Test that unmangled (non-C++) strings don't have substitutions updated.
-define internal void @foo_S_S0_SZ_S() {
-; MANGLE-LABEL: .text.Subzerofoo_S_S0_SZ_S
-; MANGLE: Subzerofoo_S_S0_SZ_S:
-entry:
-  ret void
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/mips-address-mode-opt.ll b/third_party/subzero/tests_lit/llvm2ice_tests/mips-address-mode-opt.ll
deleted file mode 100644
index 2563c74..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/mips-address-mode-opt.ll
+++ /dev/null
@@ -1,44 +0,0 @@
-; This file checks support for address mode optimization.
-; This test file is same as address-mode-opt.ll however the functions in this
-; file are relevant to MIPS only.
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble \
-; RUN:   --target mips32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:     --command FileCheck --check-prefix MIPS32 %s
-
-define internal float @load_arg_plus_offset(float* %arg) {
-entry:
-  %arg.int = ptrtoint float* %arg to i32
-  %addr.int = add i32 %arg.int, 16
-  %addr.ptr = inttoptr i32 %addr.int to float*
-  %addr.load = load float, float* %addr.ptr, align 4
-  ret float %addr.load
-}
-; MIPS32-LABEL: load_arg_plus_offset
-; MIPS32: lwc1 $f0,16(a0)
-
-define internal float @load_arg_minus_offset(float* %arg) {
-entry:
-  %arg.int = ptrtoint float* %arg to i32
-  %addr.int = sub i32 %arg.int, 16
-  %addr.ptr = inttoptr i32 %addr.int to float*
-  %addr.load = load float, float* %addr.ptr, align 4
-  ret float %addr.load
-}
-; MIPS32-LABEL: load_arg_minus_offset
-; MIPS32 lwc1 $f0,-16(a0)
-
-define internal float @address_mode_opt_chaining(float* %arg) {
-entry:
-  %arg.int = ptrtoint float* %arg to i32
-  %addr1.int = add i32 12, %arg.int
-  %addr2.int = sub i32 %addr1.int, 4
-  %addr2.ptr = inttoptr i32 %addr2.int to float*
-  %addr2.load = load float, float* %addr2.ptr, align 4
-  ret float %addr2.load
-}
-; MIPS32-LABEL: address_mode_opt_chaining
-; MIPS32 lwc1 $f0,8(a0)
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/mips-legalization.ll b/third_party/subzero/tests_lit/llvm2ice_tests/mips-legalization.ll
deleted file mode 100644
index cc9414d..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/mips-legalization.ll
+++ /dev/null
@@ -1,84 +0,0 @@
-; This file checks support for legalization in MIPS.
-
-; REQUIRES: allow_dump
-
-; RUN: %if --need=target_MIPS32 \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble \
-; RUN:   --target mips32 -i %s --args -O2 \
-; RUN:   | %if --need=target_MIPS32 \
-; RUN:     --command FileCheck --check-prefix MIPS32 %s
-
-define internal i32 @legalization(i32 %a, i32 %b, i32 %c, i32 %d,
-                                  i32 %e, i32 %f) {
-entry:
-  %a.addr = alloca i8, i32 4, align 4
-  %b.addr = alloca i8, i32 4, align 4
-  %c.addr = alloca i8, i32 4, align 4
-  %d.addr = alloca i8, i32 4, align 4
-  %e.addr = alloca i8, i32 4, align 4
-  %f.addr = alloca i8, i32 4, align 4
-  %r1 = alloca i8, i32 4, align 4
-  %r2 = alloca i8, i32 4, align 4
-  %r3 = alloca i8, i32 4, align 4
-  %a.addr.bc = bitcast i8* %a.addr to i32*
-  store i32 %a, i32* %a.addr.bc, align 1
-  %b.addr.bc = bitcast i8* %b.addr to i32*
-  store i32 %b, i32* %b.addr.bc, align 1
-  %c.addr.bc = bitcast i8* %c.addr to i32*
-  store i32 %c, i32* %c.addr.bc, align 1
-  %d.addr.bc = bitcast i8* %d.addr to i32*
-  store i32 %d, i32* %d.addr.bc, align 1
-  %e.addr.bc = bitcast i8* %e.addr to i32*
-  store i32 %e, i32* %e.addr.bc, align 1
-  %f.addr.bc = bitcast i8* %f.addr to i32*
-  store i32 %f, i32* %f.addr.bc, align 1
-  %a.addr.bc1 = bitcast i8* %a.addr to i32*
-  %0 = load i32, i32* %a.addr.bc1, align 1
-  %f.addr.bc2 = bitcast i8* %f.addr to i32*
-  %1 = load i32, i32* %f.addr.bc2, align 1
-  %add = add i32 %0, %1
-  %r1.bc = bitcast i8* %r1 to i32*
-  store i32 %add, i32* %r1.bc, align 1
-  %b.addr.bc3 = bitcast i8* %b.addr to i32*
-  %2 = load i32, i32* %b.addr.bc3, align 1
-  %e.addr.bc4 = bitcast i8* %e.addr to i32*
-  %3 = load i32, i32* %e.addr.bc4, align 1
-  %add1 = add i32 %2, %3
-  %r2.bc = bitcast i8* %r2 to i32*
-  store i32 %add1, i32* %r2.bc, align 1
-  %r1.bc5 = bitcast i8* %r1 to i32*
-  %4 = load i32, i32* %r1.bc5, align 1
-  %r2.bc6 = bitcast i8* %r2 to i32*
-  %5 = load i32, i32* %r2.bc6, align 1
-  %add2 = add i32 %4, %5
-  %r3.bc = bitcast i8* %r3 to i32*
-  store i32 %add2, i32* %r3.bc, align 1
-  %r3.bc7 = bitcast i8* %r3 to i32*
-  %6 = load i32, i32* %r3.bc7, align 1
-  ret i32 %6
-}
-; MIPS32-LABEL: legalization
-; MIPS32: addiu sp,sp,-48
-; MIPS32: lw [[ARG_E:.*]],64(sp)
-; MIPS32: lw [[ARG_F:.*]],68(sp)
-; MIPS32: sw a0,0(sp)
-; MIPS32: sw a1,4(sp)
-; MIPS32: sw a2,8(sp)
-; MIPS32: sw a3,12(sp)
-; MIPS32: sw [[ARG_E]],16(sp)
-; MIPS32: sw [[ARG_F]],20(sp)
-; MIPS32: lw [[TMP_A:.*]],0(sp)
-; MIPS32: lw [[TMP_F:.*]],20(sp)
-; MIPS32: addu [[ADD1:.*]],[[TMP_A]],[[TMP_F]]
-; MIPS32: sw [[ADD1]],24(sp)
-; MIPS32: lw [[TMP_B:.*]],4(sp)
-; MIPS32: lw [[TMP_E:.*]],16(sp)
-; MIPS32: addu [[ADD2:.*]],[[TMP_B]],[[TMP_E]]
-; MIPS32: sw [[ADD2]],28(sp)
-; MIPS32: lw [[TMP_ADD1:.*]],24(sp)
-; MIPS32: lw [[TMP_ADD2:.*]],28(sp)
-; MIPS32: addu [[ADD3:.*]],[[TMP_ADD1]],[[TMP_ADD2]]
-; MIPS32: sw [[ADD3]],32(sp)
-; MIPS32: lw v0,32(sp)
-; MIPS32: addiu sp,sp,48
-; MIPS32: jr ra
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/multidef_kill.ll b/third_party/subzero/tests_lit/llvm2ice_tests/multidef_kill.ll
deleted file mode 100644
index bfc907e..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/multidef_kill.ll
+++ /dev/null
@@ -1,42 +0,0 @@
-; This tests against a lowering error in a multiply instruction that produces
-; results in a low and high register.  This is usually lowered as a mul
-; instruction whose dest contains the low portion, and a FakeDef of the high
-; portion.  The problem is that if the high portion is unused (e.g. the multiply
-; is followed by a truncation), the FakeDef may be eliminated, and the register
-; allocator may assign the high register to a variable that is live across the
-; mul instruction.  This is incorrect because the mul instruction smashes the
-; register.
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i --target x8632 -i %s --filetype=asm --args -O2 -asm-verbose \
-; RUN:   --split-local-vars=0 \
-; RUN:   --reg-use=eax,edx -reg-reserve | FileCheck --check-prefix=X8632 %s
-; RUN: %p2i --target arm32 -i %s --filetype=asm --args -O2 -asm-verbose \
-; RUN:   | FileCheck --check-prefix=ARM32 %s
-
-define internal i32 @mul(i64 %a, i64 %b, i32 %c) {
-  ; Force an early use of %c.
-  store i32 %c, i32* undef, align 1
-  %m = mul i64 %a, %b
-  %t = trunc i64 %m to i32
-  ; Make many uses of %c to give it high weight.
-  %t1 = add i32 %t, %c
-  %t2 = add i32 %t1, %c
-  %t3 = add i32 %t2, %c
-  ret i32 %t3
-}
-
-; For x8632, we want asm-verbose to print the stack offset assignment for lv$c
-; ("local variable 'c'") in the prolog, and then have at least one use of lv$c
-; in the body, i.e. don't register-allocate edx to %c.
-
-; X8632-LABEL: mul
-; X8632: lv$c =
-; X8632: lv$c
-
-; For arm32, the failure would manifest as a translation error - no register
-; being allocated to the high operand, so we just check for successful
-; translation.
-
-; ARM32-LABEL: mul
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/nacl-atomic-cmpxchg-optimization.ll b/third_party/subzero/tests_lit/llvm2ice_tests/nacl-atomic-cmpxchg-optimization.ll
deleted file mode 100644
index 3e2e743..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/nacl-atomic-cmpxchg-optimization.ll
+++ /dev/null
@@ -1,136 +0,0 @@
-; This tests the optimization of atomic cmpxchg w/ following cmp + branches.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:   -allow-externally-defined-symbols | FileCheck --check-prefix=O2 %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \
-; RUN:   -allow-externally-defined-symbols | FileCheck --check-prefix=OM1 %s
-
-declare i32 @llvm.nacl.atomic.cmpxchg.i32(i32*, i32, i32, i32, i32)
-
-
-; Test that a cmpxchg followed by icmp eq and branch can be optimized to
-; reuse the flags set by the cmpxchg instruction itself.
-; This is only expected to work w/ O2, based on lightweight liveness.
-; (Or if we had other means to detect the only use).
-declare void @use_value(i32)
-
-define internal i32 @test_atomic_cmpxchg_loop(i32 %iptr, i32 %expected,
-                                              i32 %desired) {
-entry:
-  br label %loop
-
-loop:
-  %expected_loop = phi i32 [ %expected, %entry ], [ %old, %loop ]
-  %succeeded_first_try = phi i32 [ 1, %entry ], [ 2, %loop ]
-  %ptr = inttoptr i32 %iptr to i32*
-  %old = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %expected_loop,
-                                                i32 %desired, i32 6, i32 6)
-  %success = icmp eq i32 %expected_loop, %old
-  br i1 %success, label %done, label %loop
-
-done:
-  call void @use_value(i32 %old)
-  ret i32 %succeeded_first_try
-}
-; O2-LABEL: test_atomic_cmpxchg_loop
-; O2: lock cmpxchg DWORD PTR [e{{[^a].}}],e{{[^a]}}
-; O2-NEXT: j{{e|ne}}
-; Make sure the call isn't accidentally deleted.
-; O2: call
-;
-; Check that the unopt version does have a cmp
-; OM1-LABEL: test_atomic_cmpxchg_loop
-; OM1: lock cmpxchg DWORD PTR [e{{[^a].}}],e{{[^a]}}
-; OM1: cmp
-; OM1: sete
-; OM1: call
-
-; Still works if the compare operands are flipped.
-define internal i32 @test_atomic_cmpxchg_loop2(i32 %iptr, i32 %expected,
-                                               i32 %desired) {
-entry:
-  br label %loop
-
-loop:
-  %expected_loop = phi i32 [ %expected, %entry ], [ %old, %loop ]
-  %ptr = inttoptr i32 %iptr to i32*
-  %old = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %expected_loop,
-                                                i32 %desired, i32 6, i32 6)
-  %success = icmp eq i32 %old, %expected_loop
-  br i1 %success, label %done, label %loop
-
-done:
-  ret i32 %old
-}
-; O2-LABEL: test_atomic_cmpxchg_loop2
-; O2: lock cmpxchg DWORD PTR [e{{[^a].}}],e{{[^a]}}
-; O2-NOT: cmp
-; O2: jne
-
-
-; Still works if the compare operands are constants.
-define internal i32 @test_atomic_cmpxchg_loop_const(i32 %iptr, i32 %desired) {
-entry:
-  br label %loop
-
-loop:
-  %succeeded_first_try = phi i32 [ 1, %entry ], [ 0, %loop ]
-  %ptr = inttoptr i32 %iptr to i32*
-  %old = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 0,
-                                                i32 %desired, i32 6, i32 6)
-  %success = icmp eq i32 %old, 0
-  br i1 %success, label %done, label %loop
-
-done:
-  ret i32 %succeeded_first_try
-}
-; O2-LABEL: test_atomic_cmpxchg_loop_const
-; O2: lock cmpxchg DWORD PTR [e{{[^a].}}],e{{[^a]}}
-; O2-NEXT: j{{e|ne}}
-
-; This is a case where the flags cannot be reused (compare is for some
-; other condition).
-define internal i32 @test_atomic_cmpxchg_no_opt(i32 %iptr, i32 %expected,
-                                                i32 %desired) {
-entry:
-  br label %loop
-
-loop:
-  %expected_loop = phi i32 [ %expected, %entry ], [ %old, %loop ]
-  %ptr = inttoptr i32 %iptr to i32*
-  %old = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %expected_loop,
-                                                i32 %desired, i32 6, i32 6)
-  %success = icmp sgt i32 %old, %expected
-  br i1 %success, label %done, label %loop
-
-done:
-  ret i32 %old
-}
-; O2-LABEL: test_atomic_cmpxchg_no_opt
-; O2: lock cmpxchg DWORD PTR [e{{[^a].}}],e{{[^a]}}
-; O2: cmp
-; O2: jle
-
-; Another case where the flags cannot be reused (the comparison result
-; is used somewhere else).
-define internal i32 @test_atomic_cmpxchg_no_opt2(i32 %iptr, i32 %expected,
-                                                 i32 %desired) {
-entry:
-  br label %loop
-
-loop:
-  %expected_loop = phi i32 [ %expected, %entry ], [ %old, %loop ]
-  %ptr = inttoptr i32 %iptr to i32*
-  %old = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %expected_loop,
-                                                i32 %desired, i32 6, i32 6)
-  %success = icmp eq i32 %old, %expected
-  br i1 %success, label %done, label %loop
-
-done:
-  %r = zext i1 %success to i32
-  ret i32 %r
-}
-; O2-LABEL: test_atomic_cmpxchg_no_opt2
-; O2: lock cmpxchg DWORD PTR [e{{[^a].}}],e{{[^a]}}
-; O2: cmp
-; O2: sete
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/nacl-atomic-errors.ll b/third_party/subzero/tests_lit/llvm2ice_tests/nacl-atomic-errors.ll
deleted file mode 100644
index 5d0a9bb..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/nacl-atomic-errors.ll
+++ /dev/null
@@ -1,233 +0,0 @@
-; Test that some errors trigger when the usage of NaCl atomic
-; intrinsics does not match the required ABI.
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --args --verbose none --exit-success -threads=0 2>&1 \
-; RUN:   | FileCheck %s
-
-declare i8 @llvm.nacl.atomic.load.i8(i8*, i32)
-declare i16 @llvm.nacl.atomic.load.i16(i16*, i32)
-declare i64 @llvm.nacl.atomic.load.i64(i64*, i32)
-declare void @llvm.nacl.atomic.store.i32(i32, i32*, i32)
-declare void @llvm.nacl.atomic.store.i64(i64, i64*, i32)
-declare i8 @llvm.nacl.atomic.rmw.i8(i32, i8*, i8, i32)
-declare i16 @llvm.nacl.atomic.rmw.i16(i32, i16*, i16, i32)
-declare i32 @llvm.nacl.atomic.rmw.i32(i32, i32*, i32, i32)
-declare i64 @llvm.nacl.atomic.rmw.i64(i32, i64*, i64, i32)
-declare i32 @llvm.nacl.atomic.cmpxchg.i32(i32*, i32, i32, i32, i32)
-declare i64 @llvm.nacl.atomic.cmpxchg.i64(i64*, i64, i64, i32, i32)
-declare void @llvm.nacl.atomic.fence(i32)
-declare i1 @llvm.nacl.atomic.is.lock.free(i32, i8*)
-
-;;; Load
-;;; Check unexpected memory order parameter (release=4 and acq_rel=5
-;;; are disallowed).
-
-define internal i32 @error_atomic_load_8(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i8*
-  %i = call i8 @llvm.nacl.atomic.load.i8(i8* %ptr, i32 0)
-  %r = zext i8 %i to i32
-  ret i32 %r
-}
-; CHECK: Unexpected memory ordering for AtomicLoad
-
-define internal i32 @error_atomic_load_16(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i16*
-  %i = call i16 @llvm.nacl.atomic.load.i16(i16* %ptr, i32 4)
-  %r = zext i16 %i to i32
-  ret i32 %r
-}
-; CHECK: Unexpected memory ordering for AtomicLoad
-
-define internal i64 @error_atomic_load_64(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %r = call i64 @llvm.nacl.atomic.load.i64(i64* %ptr, i32 5)
-  ret i64 %r
-}
-; CHECK: Unexpected memory ordering for AtomicLoad
-
-
-;;; Store
-;;; consume=2, acquire=3, acq_rel=5 are disallowed
-
-define internal void @error_atomic_store_32(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  call void @llvm.nacl.atomic.store.i32(i32 %v, i32* %ptr, i32 2)
-  ret void
-}
-; CHECK: Unexpected memory ordering for AtomicStore
-
-define internal void @error_atomic_store_64(i32 %iptr, i64 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  call void @llvm.nacl.atomic.store.i64(i64 %v, i64* %ptr, i32 3)
-  ret void
-}
-; CHECK: Unexpected memory ordering for AtomicStore
-
-define internal void @error_atomic_store_64_const(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  call void @llvm.nacl.atomic.store.i64(i64 12345678901234, i64* %ptr, i32 5)
-  ret void
-}
-; CHECK: Unexpected memory ordering for AtomicStore
-
-;;; RMW
-;;; Test atomic memory order and operation.
-;;; Modes 3:6 allowed.
-
-define internal i32 @error_atomic_rmw_add_8(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i8
-  %ptr = inttoptr i32 %iptr to i8*
-  %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 1, i8* %ptr, i8 %trunc, i32 1)
-  %a_ext = zext i8 %a to i32
-  ret i32 %a_ext
-}
-; CHECK: Unexpected memory ordering for AtomicRMW
-
-define internal i64 @error_atomic_rmw_add_64(i32 %iptr, i64 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 1, i64* %ptr, i64 %v, i32 7)
-  ret i64 %a
-}
-; CHECK: Unexpected memory ordering for AtomicRMW
-
-define internal i32 @error_atomic_rmw_add_16(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i16
-  %ptr = inttoptr i32 %iptr to i16*
-  %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 0, i16* %ptr, i16 %trunc, i32 6)
-  %a_ext = zext i16 %a to i32
-  ret i32 %a_ext
-}
-; CHECK: Unknown AtomicRMW operation
-
-define internal i32 @error_atomic_rmw_add_32(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 7, i32* %ptr, i32 %v, i32 6)
-  ret i32 %a
-}
-; CHECK: Unknown AtomicRMW operation
-
-define internal i32 @error_atomic_rmw_add_32_max(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 4294967295, i32* %ptr, i32 %v, i32 6)
-  ret i32 %a
-}
-; CHECK: Unknown AtomicRMW operation
-
-;;; Cmpxchg
-
-define internal i32 @error_atomic_cmpxchg_32_success(i32 %iptr, i32 %expected,
-                                                     i32 %desired) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %old = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %expected,
-                                               i32 %desired, i32 0, i32 6)
-  ret i32 %old
-}
-; CHECK: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @error_atomic_cmpxchg_32_failure(i32 %iptr, i32 %expected,
-                                                     i32 %desired) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %old = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %expected,
-                                               i32 %desired, i32 6, i32 0)
-  ret i32 %old
-}
-; CHECK: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i64 @error_atomic_cmpxchg_64_failure(i32 %iptr, i64 %expected,
-                                                     i64 %desired) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %old = call i64 @llvm.nacl.atomic.cmpxchg.i64(i64* %ptr, i64 %expected,
-                                               i64 %desired, i32 4, i32 1)
-  ret i64 %old
-}
-; CHECK: Unexpected memory ordering for AtomicCmpxchg
-
-;;; Fence and is-lock-free.
-
-define internal void @error_atomic_fence() {
-entry:
-  call void @llvm.nacl.atomic.fence(i32 0)
-  ret void
-}
-; CHECK: Unexpected memory ordering for AtomicFence
-
-define internal i32 @error_atomic_is_lock_free_var(i32 %iptr, i32 %bs) {
-entry:
-  %ptr = inttoptr i32 %iptr to i8*
-  %i = call i1 @llvm.nacl.atomic.is.lock.free(i32 %bs, i8* %ptr)
-  %r = zext i1 %i to i32
-  ret i32 %r
-}
-; CHECK: AtomicIsLockFree byte size should be compile-time const
-
-
-;;; Test bad non-constant memory ordering values.
-
-define internal i32 @error_atomic_load_8_nonconst(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i8*
-  %i = call i8 @llvm.nacl.atomic.load.i8(i8* %ptr, i32 %iptr)
-  %r = zext i8 %i to i32
-  ret i32 %r
-}
-; CHECK: Unexpected memory ordering for AtomicLoad
-
-define internal void @error_atomic_store_32_nonconst(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  call void @llvm.nacl.atomic.store.i32(i32 %v, i32* %ptr, i32 %v)
-  ret void
-}
-; CHECK: Unexpected memory ordering for AtomicStore
-
-define internal i32 @error_atomic_rmw_add_8_nonconst(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i8
-  %ptr = inttoptr i32 %iptr to i8*
-  %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 1, i8* %ptr, i8 %trunc, i32 %iptr)
-  %a_ext = zext i8 %a to i32
-  ret i32 %a_ext
-}
-; CHECK: Unexpected memory ordering for AtomicRMW
-
-define internal i32 @error_atomic_cmpxchg_32_success_nonconst_1(i32 %iptr, i32 %expected,
-                                                                i32 %desired) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %old = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %expected,
-                                               i32 %desired, i32 %iptr, i32 6)
-  ret i32 %old
-}
-; CHECK: Unexpected memory ordering for AtomicCmpxchg
-
-define internal i32 @error_atomic_cmpxchg_32_success_nonconst_2(i32 %iptr, i32 %expected,
-                                                                i32 %desired) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %old = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %expected,
-                                               i32 %desired, i32 6, i32 %iptr)
-  ret i32 %old
-}
-; CHECK: Unexpected memory ordering for AtomicCmpxchg
-
-define internal void @error_atomic_fence_nonconst(i32 %v) {
-entry:
-  call void @llvm.nacl.atomic.fence(i32 %v)
-  ret void
-}
-; CHECK: Unexpected memory ordering for AtomicFence
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/nacl-atomic-fence-all.ll b/third_party/subzero/tests_lit/llvm2ice_tests/nacl-atomic-fence-all.ll
deleted file mode 100644
index cf37696..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/nacl-atomic-fence-all.ll
+++ /dev/null
@@ -1,202 +0,0 @@
-; Test that loads/stores don't move across a nacl.atomic.fence.all.
-; This should apply to both atomic and non-atomic loads/stores
-; (unlike the non-"all" variety of nacl.atomic.fence, which only
-; applies to atomic load/stores).
-;
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 | FileCheck %s
-
-declare void @llvm.nacl.atomic.fence.all()
-declare i32 @llvm.nacl.atomic.load.i32(i32*, i32)
-declare void @llvm.nacl.atomic.store.i32(i32, i32*, i32)
-
-@g32_a = internal global [4 x i8] zeroinitializer, align 4
-@g32_b = internal global [4 x i8] zeroinitializer, align 4
-@g32_c = internal global [4 x i8] zeroinitializer, align 4
-@g32_d = internal global [4 x i8] zeroinitializer, align 4
-
-define internal i32 @test_fused_load_sub_a() {
-entry:
-  %p_alloca = alloca i8, i32 4, align 4
-  %p_alloca_bc = bitcast i8* %p_alloca to i32*
-  store i32 999, i32* %p_alloca_bc, align 1
-
-  %p_a = bitcast [4 x i8]* @g32_a to i32*
-  %l_a = call i32 @llvm.nacl.atomic.load.i32(i32* %p_a, i32 6)
-  %l_a2 = sub i32 1, %l_a
-  call void @llvm.nacl.atomic.store.i32(i32 %l_a2, i32* %p_a, i32 6)
-
-  %p_b = bitcast [4 x i8]* @g32_b to i32*
-  %l_b = load i32, i32* %p_b, align 1
-  %l_b2 = sub i32 1, %l_b
-  store i32 %l_b2, i32* %p_b, align 1
-
-  %p_c = bitcast [4 x i8]* @g32_c to i32*
-  %l_c = load i32, i32* %p_c, align 1
-  %l_c2 = sub i32 1, %l_c
-  call void @llvm.nacl.atomic.fence.all()
-  store i32 %l_c2, i32* %p_c, align 1
-
-  ret i32 %l_c2
-}
-; CHECK-LABEL: test_fused_load_sub_a
-;    alloca store
-; CHECK: mov DWORD PTR {{.*}},0x3e7
-;    atomic store (w/ its own mfence)
-; The load + sub are optimized into one everywhere.
-; CHECK: sub {{.*}},DWORD PTR {{.*}}{{(g32_a)|(.bss)}}
-; CHECK: mov {{(DWORD PTR)?}}
-; CHECK: mfence
-; CHECK: sub {{.*}},DWORD PTR {{.*}}{{(g32_b)|(.bss)}}
-; CHECK: mov {{(DWORD PTR)?}}
-; CHECK: sub {{.*}},DWORD PTR {{.*}}{{(g32_c)|(.bss)}}
-; CHECK: mfence
-; CHECK: mov {{(DWORD PTR)?}}
-
-; Test with the fence moved up a bit.
-define internal i32 @test_fused_load_sub_b() {
-entry:
-  %p_alloca = alloca i8, i32 4, align 4
-  %p_alloca_bc = bitcast i8* %p_alloca to i32*
-  store i32 999, i32* %p_alloca_bc, align 1
-
-  %p_a = bitcast [4 x i8]* @g32_a to i32*
-  %l_a = call i32 @llvm.nacl.atomic.load.i32(i32* %p_a, i32 6)
-  %l_a2 = sub i32 1, %l_a
-  call void @llvm.nacl.atomic.store.i32(i32 %l_a2, i32* %p_a, i32 6)
-
-  %p_b = bitcast [4 x i8]* @g32_b to i32*
-  %l_b = load i32, i32* %p_b, align 1
-  %l_b2 = sub i32 1, %l_b
-  store i32 %l_b2, i32* %p_b, align 1
-
-  %p_c = bitcast [4 x i8]* @g32_c to i32*
-  call void @llvm.nacl.atomic.fence.all()
-  %l_c = load i32, i32* %p_c, align 1
-  %l_c2 = sub i32 1, %l_c
-  store i32 %l_c2, i32* %p_c, align 1
-
-  ret i32 %l_c2
-}
-; CHECK-LABEL: test_fused_load_sub_b
-;    alloca store
-; CHECK: mov DWORD PTR {{.*}},0x3e7
-;    atomic store (w/ its own mfence)
-; CHECK: sub {{.*}},DWORD PTR {{.*}}{{(g32_a)|(.bss)}}
-; CHECK: mov {{(DWORD PTR)?}}
-; CHECK: mfence
-; CHECK: sub {{.*}},DWORD PTR {{.*}}{{(g32_b)|(.bss)}}
-; CHECK: mov {{(DWORD PTR)?}}
-; CHECK: mfence
-; Load + sub can still be optimized into one instruction
-; because it is not separated by a fence.
-; CHECK: sub {{.*}},DWORD PTR {{.*}}{{(g32_c)|(.bss)}}
-; CHECK: mov {{(DWORD PTR)?}}
-
-; Test with the fence splitting a load/sub.
-define internal i32 @test_fused_load_sub_c() {
-entry:
-  %p_alloca = alloca i8, i32 4, align 4
-  %p_alloca_bc = bitcast i8* %p_alloca to i32*
-  store i32 999, i32* %p_alloca_bc, align 1
-
-  %p_a = bitcast [4 x i8]* @g32_a to i32*
-  %l_a = call i32 @llvm.nacl.atomic.load.i32(i32* %p_a, i32 6)
-  %l_a2 = sub i32 1, %l_a
-  call void @llvm.nacl.atomic.store.i32(i32 %l_a2, i32* %p_a, i32 6)
-
-  %p_b = bitcast [4 x i8]* @g32_b to i32*
-  %l_b = load i32, i32* %p_b, align 1
-  call void @llvm.nacl.atomic.fence.all()
-  %l_b2 = sub i32 1, %l_b
-  store i32 %l_b2, i32* %p_b, align 1
-
-  %p_c = bitcast [4 x i8]* @g32_c to i32*
-  %l_c = load i32, i32* %p_c, align 1
-  %l_c2 = sub i32 1, %l_c
-  store i32 %l_c2, i32* %p_c, align 1
-
-  ret i32 %l_c2
-}
-; CHECK-LABEL: test_fused_load_sub_c
-;    alloca store
-; CHECK: mov DWORD PTR {{.*}},0x3e7
-;    atomic store (w/ its own mfence)
-; CHECK: sub {{.*}},DWORD PTR {{.*}}{{(g32_a)|(.bss)}}
-; CHECK: mov {{(DWORD PTR)?}}
-; CHECK: mfence
-; This load + sub are no longer optimized into one,
-; though perhaps it should be legal as long as
-; the load stays on the same side of the fence.
-; CHECK: mov {{.*}},{{(DWORD PTR )?}}{{.*}}{{(g32_b)|(.bss)}}
-; CHECK: mfence
-; CHECK: mov {{.*}},0x1
-; CHECK: sub
-; CHECK: mov {{(DWORD PTR)?}}
-; CHECK: sub {{.*}},DWORD PTR {{.*}}{{(g32_c)|(.bss)}}
-; CHECK: mov {{(DWORD PTR)?}}
-
-
-; Test where a bunch of i8 loads could have been fused into one
-; i32 load, but a fence blocks that.
-define internal i32 @could_have_fused_loads() {
-entry:
-  %ptr1 = bitcast [4 x i8]* @g32_d to i8*
-  %b1 = load i8, i8* %ptr1, align 1
-
-  %int_ptr2 = ptrtoint [4 x i8]* @g32_d to i32
-  %int_ptr_bump2 = add i32 %int_ptr2, 1
-  %ptr2 = inttoptr i32 %int_ptr_bump2 to i8*
-  %b2 = load i8, i8* %ptr2, align 1
-
-  %int_ptr_bump3 = add i32 %int_ptr2, 2
-  %ptr3 = inttoptr i32 %int_ptr_bump3 to i8*
-  %b3 = load i8, i8* %ptr3, align 1
-
-  call void @llvm.nacl.atomic.fence.all()
-
-  %int_ptr_bump4 = add i32 %int_ptr2, 3
-  %ptr4 = inttoptr i32 %int_ptr_bump4 to i8*
-  %b4 = load i8, i8* %ptr4, align 1
-
-  %b1.ext = zext i8 %b1 to i32
-  %b2.ext = zext i8 %b2 to i32
-  %b2.shift = shl i32 %b2.ext, 8
-  %b12 = or i32 %b1.ext, %b2.shift
-  %b3.ext = zext i8 %b3 to i32
-  %b3.shift = shl i32 %b3.ext, 16
-  %b123 = or i32 %b12, %b3.shift
-  %b4.ext = zext i8 %b4 to i32
-  %b4.shift = shl i32 %b4.ext, 24
-  %b1234 = or i32 %b123, %b4.shift
-  ret i32 %b1234
-}
-; CHECK-LABEL: could_have_fused_loads
-; CHECK: mov {{.*}},{{(BYTE PTR)?}}
-; CHECK: mov {{.*}},BYTE PTR
-; CHECK: mov {{.*}},BYTE PTR
-; CHECK: mfence
-; CHECK: mov {{.*}},BYTE PTR
-
-
-; Test where an identical load from two branches could have been hoisted
-; up, and then the code merged, but a fence prevents it.
-define internal i32 @could_have_hoisted_loads(i32 %x) {
-entry:
-  %ptr = bitcast [4 x i8]* @g32_d to i32*
-  %cmp = icmp eq i32 %x, 1
-  br i1 %cmp, label %branch1, label %branch2
-branch1:
-  %y = load i32, i32* %ptr, align 1
-  ret i32 %y
-branch2:
-  call void @llvm.nacl.atomic.fence.all()
-  %z = load i32, i32* %ptr, align 1
-  ret i32 %z
-}
-; CHECK-LABEL: could_have_hoisted_loads
-; CHECK: jne {{.*}}
-; CHECK: mov {{.*}},{{(DWORD PTR )?}}{{.*}}{{(g32_d)|(.bss)}}
-; CHECK: ret
-; CHECK: mfence
-; CHECK: mov {{.*}},{{(DWORD PTR )?}}{{.*}}{{(g32_d)|(.bss)}}
-; CHECK: ret
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/nacl-atomic-intrinsics.ll b/third_party/subzero/tests_lit/llvm2ice_tests/nacl-atomic-intrinsics.ll
deleted file mode 100644
index abb8e34..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/nacl-atomic-intrinsics.ll
+++ /dev/null
@@ -1,2066 +0,0 @@
-; This tests each of the supported NaCl atomic instructions for every
-; size allowed.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:   -allow-externally-defined-symbols | FileCheck --check-prefix=O2 %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s
-
-; RUN: %if --need=allow_dump --need=target_ARM32 --command %p2i --filetype=asm \
-; RUN:   --target arm32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=allow_dump --need=target_ARM32 --command FileCheck %s \
-; RUN:   --check-prefix=ARM32
-
-; RUN: %if --need=allow_dump --need=target_ARM32 --command %p2i --filetype=asm \
-; RUN:   --target arm32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=allow_dump --need=target_ARM32 --command FileCheck %s \
-; RUN:   --check-prefix=ARM32O2
-
-; RUN: %if --need=allow_dump --need=target_ARM32 --command %p2i --filetype=asm \
-; RUN:   --target arm32 -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=allow_dump --need=target_ARM32 --command FileCheck %s \
-; RUN:   --check-prefix=ARM32
-
-; RUN: %if --need=allow_dump --need=target_MIPS32 --command %p2i --filetype=asm\
-; RUN:   --target mips32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=allow_dump --need=target_MIPS32 --command FileCheck %s \
-; RUN:   --check-prefix=MIPS32O2 --check-prefix=MIPS32
-
-; RUN: %if --need=allow_dump --need=target_MIPS32 --command %p2i --filetype=asm\
-; RUN:   --target mips32 -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=allow_dump --need=target_MIPS32 --command FileCheck %s \
-; RUN:   --check-prefix=MIPS32OM1 --check-prefix=MIPS32
-
-declare i8 @llvm.nacl.atomic.load.i8(i8*, i32)
-declare i16 @llvm.nacl.atomic.load.i16(i16*, i32)
-declare i32 @llvm.nacl.atomic.load.i32(i32*, i32)
-declare i64 @llvm.nacl.atomic.load.i64(i64*, i32)
-declare void @llvm.nacl.atomic.store.i8(i8, i8*, i32)
-declare void @llvm.nacl.atomic.store.i16(i16, i16*, i32)
-declare void @llvm.nacl.atomic.store.i32(i32, i32*, i32)
-declare void @llvm.nacl.atomic.store.i64(i64, i64*, i32)
-declare i8 @llvm.nacl.atomic.rmw.i8(i32, i8*, i8, i32)
-declare i16 @llvm.nacl.atomic.rmw.i16(i32, i16*, i16, i32)
-declare i32 @llvm.nacl.atomic.rmw.i32(i32, i32*, i32, i32)
-declare i64 @llvm.nacl.atomic.rmw.i64(i32, i64*, i64, i32)
-declare i8 @llvm.nacl.atomic.cmpxchg.i8(i8*, i8, i8, i32, i32)
-declare i16 @llvm.nacl.atomic.cmpxchg.i16(i16*, i16, i16, i32, i32)
-declare i32 @llvm.nacl.atomic.cmpxchg.i32(i32*, i32, i32, i32, i32)
-declare i64 @llvm.nacl.atomic.cmpxchg.i64(i64*, i64, i64, i32, i32)
-declare void @llvm.nacl.atomic.fence(i32)
-declare void @llvm.nacl.atomic.fence.all()
-declare i1 @llvm.nacl.atomic.is.lock.free(i32, i8*)
-
-@SzGlobal8 = internal global [1 x i8] zeroinitializer, align 1
-@SzGlobal16 = internal global [2 x i8] zeroinitializer, align 2
-@SzGlobal32 = internal global [4 x i8] zeroinitializer, align 4
-@SzGlobal64 = internal global [8 x i8] zeroinitializer, align 8
-
-; NOTE: The LLC equivalent for 16-bit atomic operations are expanded
-; as 32-bit operations. For Subzero, assume that real 16-bit operations
-; will be usable (the validator will be fixed):
-; https://code.google.com/p/nativeclient/issues/detail?id=2981
-
-;;; Load
-
-; x86 guarantees load/store to be atomic if naturally aligned.
-; The PNaCl IR requires all atomic accesses to be naturally aligned.
-
-define internal i32 @test_atomic_load_8(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i8*
-  ; parameter value "6" is for the sequential consistency memory order.
-  %i = call i8 @llvm.nacl.atomic.load.i8(i8* %ptr, i32 6)
-  %i2 = sub i8 %i, 0
-  %r = zext i8 %i2 to i32
-  ret i32 %r
-}
-; CHECK-LABEL: test_atomic_load_8
-; CHECK: mov {{.*}},DWORD
-; CHECK: mov {{.*}},BYTE
-; ARM32-LABEL: test_atomic_load_8
-; ARM32: ldrb r{{[0-9]+}}, [r{{[0-9]+}}
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_load_8
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: sc
-; MIPS32: sync
-
-define internal i32 @test_atomic_load_16(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i16*
-  %i = call i16 @llvm.nacl.atomic.load.i16(i16* %ptr, i32 6)
-  %i2 = sub i16 %i, 0
-  %r = zext i16 %i2 to i32
-  ret i32 %r
-}
-; CHECK-LABEL: test_atomic_load_16
-; CHECK: mov {{.*}},DWORD
-; CHECK: mov {{.*}},WORD
-; ARM32-LABEL: test_atomic_load_16
-; ARM32: ldrh r{{[0-9]+}}, [r{{[0-9]+}}
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_load_16
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: sc
-; MIPS32: sync
-
-define internal i32 @test_atomic_load_32(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %r = call i32 @llvm.nacl.atomic.load.i32(i32* %ptr, i32 6)
-  ret i32 %r
-}
-; CHECK-LABEL: test_atomic_load_32
-; CHECK: mov {{.*}},DWORD
-; CHECK: mov {{.*}},DWORD
-; ARM32-LABEL: test_atomic_load_32
-; ARM32: ldr r{{[0-9]+}}, [r{{[0-9]+}}
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_load_32
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: sc
-; MIPS32: sync
-
-define internal i64 @test_atomic_load_64(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %r = call i64 @llvm.nacl.atomic.load.i64(i64* %ptr, i32 6)
-  ret i64 %r
-}
-; CHECK-LABEL: test_atomic_load_64
-; CHECK: movq x{{.*}},QWORD
-; CHECK: movq QWORD {{.*}},x{{.*}}
-; ARM32-LABEL: test_atomic_load_64
-; ARM32: ldrexd r{{[0-9]+}}, r{{[0-9]+}}, [r{{[0-9]+}}
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_load_64
-; MIPS32: jal __sync_val_compare_and_swap_8
-; MIPS32: sync
-
-define internal i32 @test_atomic_load_32_with_arith(i32 %iptr) {
-entry:
-  br label %next
-
-next:
-  %ptr = inttoptr i32 %iptr to i32*
-  %r = call i32 @llvm.nacl.atomic.load.i32(i32* %ptr, i32 6)
-  %r2 = sub i32 32, %r
-  ret i32 %r2
-}
-; CHECK-LABEL: test_atomic_load_32_with_arith
-; CHECK: mov {{.*}},DWORD
-; The next instruction may be a separate load or folded into an add.
-;
-; In O2 mode, we know that the load and sub are going to be fused.
-; O2-LABEL: test_atomic_load_32_with_arith
-; O2: mov {{.*}},DWORD
-; O2: sub {{.*}},DWORD
-; ARM32-LABEL: test_atomic_load_32_with_arith
-; ARM32: ldr r{{[0-9]+}}, [r{{[0-9]+}}
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_load_32_with_arith
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: sc
-; MIPS32: sync
-; MIPS32: subu
-
-define internal i32 @test_atomic_load_32_ignored(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %ignored = call i32 @llvm.nacl.atomic.load.i32(i32* %ptr, i32 6)
-  ret i32 0
-}
-; CHECK-LABEL: test_atomic_load_32_ignored
-; CHECK: mov {{.*}},DWORD
-; CHECK: mov {{.*}},DWORD
-; O2-LABEL: test_atomic_load_32_ignored
-; O2: mov {{.*}},DWORD
-; O2: mov {{.*}},DWORD
-; ARM32-LABEL: test_atomic_load_32_ignored
-; ARM32: ldr r{{[0-9]+}}, [r{{[0-9]+}}
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_load_32_ignored
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: sc
-; MIPS32: sync
-
-define internal i64 @test_atomic_load_64_ignored(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %ignored = call i64 @llvm.nacl.atomic.load.i64(i64* %ptr, i32 6)
-  ret i64 0
-}
-; CHECK-LABEL: test_atomic_load_64_ignored
-; CHECK: movq x{{.*}},QWORD
-; CHECK: movq QWORD {{.*}},x{{.*}}
-; ARM32-LABEL: test_atomic_load_64_ignored
-; ARM32: ldrexd r{{[0-9]+}}, r{{[0-9]+}}, [r{{[0-9]+}}
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_load_64_ignored
-; MIPS32: jal	__sync_val_compare_and_swap_8
-; MIPS32: sync
-
-;;; Store
-
-define internal void @test_atomic_store_8(i32 %iptr, i32 %v) {
-entry:
-  %truncv = trunc i32 %v to i8
-  %ptr = inttoptr i32 %iptr to i8*
-  call void @llvm.nacl.atomic.store.i8(i8 %truncv, i8* %ptr, i32 6)
-  ret void
-}
-; CHECK-LABEL: test_atomic_store_8
-; CHECK: mov BYTE
-; CHECK: mfence
-; ARM32-LABEL: test_atomic_store_8
-; ARM32: dmb
-; ARM32: strb r{{[0-9]+}}, [r{{[0-9]+}}
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_store_8
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: sc
-; MIPS32: sync
-
-define internal void @test_atomic_store_16(i32 %iptr, i32 %v) {
-entry:
-  %truncv = trunc i32 %v to i16
-  %ptr = inttoptr i32 %iptr to i16*
-  call void @llvm.nacl.atomic.store.i16(i16 %truncv, i16* %ptr, i32 6)
-  ret void
-}
-; CHECK-LABEL: test_atomic_store_16
-; CHECK: mov WORD
-; CHECK: mfence
-; ARM32-LABEL: test_atomic_store_16
-; ARM32: dmb
-; ARM32: strh r{{[0-9]+}}, [r{{[0-9]+}}
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_store_16
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: sc
-; MIPS32: sync
-
-define internal void @test_atomic_store_32(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  call void @llvm.nacl.atomic.store.i32(i32 %v, i32* %ptr, i32 6)
-  ret void
-}
-; CHECK-LABEL: test_atomic_store_32
-; CHECK: mov DWORD
-; CHECK: mfence
-; ARM32-LABEL: test_atomic_store_32
-; ARM32: dmb
-; ARM32: str r{{[0-9]+}}, [r{{[0-9]+}}
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_store_32
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: sc
-; MIPS32: sync
-
-define internal void @test_atomic_store_64(i32 %iptr, i64 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  call void @llvm.nacl.atomic.store.i64(i64 %v, i64* %ptr, i32 6)
-  ret void
-}
-; CHECK-LABEL: test_atomic_store_64
-; CHECK: movq x{{.*}},QWORD
-; CHECK: movq QWORD {{.*}},x{{.*}}
-; CHECK: mfence
-; ARM32-LABEL: test_atomic_store_64
-; ARM32: dmb
-; ARM32: ldrexd r{{[0-9]+}}, r{{[0-9]+}}, [[MEM:.*]]
-; ARM32: strexd [[S:r[0-9]+]], r{{[0-9]+}}, r{{[0-9]+}}, [[MEM]]
-; ARM32: cmp [[S]], #0
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_store_64
-; MIPS32: sync
-; MIPS32: jal	__sync_lock_test_and_set_8
-; MIPS32: sync
-
-define internal void @test_atomic_store_64_const(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  call void @llvm.nacl.atomic.store.i64(i64 12345678901234, i64* %ptr, i32 6)
-  ret void
-}
-; CHECK-LABEL: test_atomic_store_64_const
-; CHECK: mov {{.*}},0x73ce2ff2
-; CHECK: mov {{.*}},0xb3a
-; CHECK: movq x{{.*}},QWORD
-; CHECK: movq QWORD {{.*}},x{{.*}}
-; CHECK: mfence
-; ARM32-LABEL: test_atomic_store_64_const
-; ARM32: movw [[T0:r[0-9]+]], #12274
-; ARM32: movt [[T0]], #29646
-; ARM32: movw r{{[0-9]+}}, #2874
-; ARM32: dmb
-; ARM32: .L[[RETRY:.*]]:
-; ARM32: ldrexd r{{[0-9]+}}, r{{[0-9]+}}, [[MEM:.*]]
-; ARM32: strexd [[S:r[0-9]+]], r{{[0-9]+}}, r{{[0-9]+}}, [[MEM]]
-; ARM32: cmp [[S]], #0
-; ARM32: bne .L[[RETRY]]
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_store_64_const
-; MIPS32: sync
-; MIPS32: lui	{{.*}}, 29646
-; MIPS32: ori	{{.*}},{{.*}}, 12274
-; MIPS32: addiu	{{.*}}, $zero, 2874
-; MIPS32: jal	__sync_lock_test_and_set_8
-; MIPS32: sync
-
-;;; RMW
-
-;; add
-
-define internal i32 @test_atomic_rmw_add_8(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i8
-  %ptr = inttoptr i32 %iptr to i8*
-  ; "1" is an atomic add, and "6" is sequential consistency.
-  %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 1, i8* %ptr, i8 %trunc, i32 6)
-  %a_ext = zext i8 %a to i32
-  ret i32 %a_ext
-}
-; CHECK-LABEL: test_atomic_rmw_add_8
-; CHECK: lock xadd BYTE {{.*}},[[REG:.*]]
-; CHECK: {{mov|movzx}} {{.*}},[[REG]]
-; ARM32-LABEL: test_atomic_rmw_add_8
-; ARM32: dmb
-; ARM32: ldrexb
-; ARM32: add
-; ARM32: strexb
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_add_8
-; MIPS32: sync
-; MIPS32: addiu	{{.*}}, $zero, -4
-; MIPS32: and
-; MIPS32: andi	{{.*}}, {{.*}}, 3
-; MIPS32: sll	{{.*}}, {{.*}}, 3
-; MIPS32: ori	{{.*}}, $zero, 255
-; MIPS32: sllv
-; MIPS32: nor
-; MIPS32: sllv
-; MIPS32: ll
-; MIPS32: addu
-; MIPS32: and
-; MIPS32: and
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: and
-; MIPS32: srlv
-; MIPS32: sll	{{.*}}, {{.*}}, 24
-; MIPS32: sra	{{.*}}, {{.*}}, 24
-; MIPS32: sync
-
-define internal i32 @test_atomic_rmw_add_16(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i16
-  %ptr = inttoptr i32 %iptr to i16*
-  %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 1, i16* %ptr, i16 %trunc, i32 6)
-  %a_ext = zext i16 %a to i32
-  ret i32 %a_ext
-}
-; CHECK-LABEL: test_atomic_rmw_add_16
-; CHECK: lock xadd WORD {{.*}},[[REG:.*]]
-; CHECK: {{mov|movzx}} {{.*}},[[REG]]
-; ARM32-LABEL: test_atomic_rmw_add_16
-; ARM32: dmb
-; ARM32: ldrexh
-; ARM32: add
-; ARM32: strexh
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_add_16
-; MIPS32: sync
-; MIPS32: addiu	{{.*}}, $zero, -4
-; MIPS32: and
-; MIPS32: andi	{{.*}}, {{.*}}, 3
-; MIPS32: sll	{{.*}}, {{.*}}, 3
-; MIPS32: ori	{{.*}}, {{.*}}, 65535
-; MIPS32: sllv
-; MIPS32: nor
-; MIPS32: sllv
-; MIPS32: ll
-; MIPS32: addu
-; MIPS32: and
-; MIPS32: and
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: and
-; MIPS32: srlv
-; MIPS32: sll	{{.*}}, {{.*}}, 16
-; MIPS32: sra	{{.*}}, {{.*}}, 16
-; MIPS32: sync
-
-define internal i32 @test_atomic_rmw_add_32(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 1, i32* %ptr, i32 %v, i32 6)
-  ret i32 %a
-}
-; CHECK-LABEL: test_atomic_rmw_add_32
-; CHECK: lock xadd DWORD {{.*}},[[REG:.*]]
-; CHECK: mov {{.*}},[[REG]]
-; ARM32-LABEL: test_atomic_rmw_add_32
-; ARM32: dmb
-; ARM32: ldrex
-; ARM32: add
-; ARM32: strex
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_add_32
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: addu
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: sync
-
-define internal i64 @test_atomic_rmw_add_64(i32 %iptr, i64 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 1, i64* %ptr, i64 %v, i32 6)
-  ret i64 %a
-}
-; CHECK-LABEL: test_atomic_rmw_add_64
-; CHECK: push ebx
-; CHECK: mov eax,DWORD PTR [{{.*}}]
-; CHECK: mov edx,DWORD PTR [{{.*}}+0x4]
-; CHECK: [[LABEL:[^ ]*]]: {{.*}} mov ebx,eax
-; RHS of add cannot be any of the e[abcd]x regs because they are
-; clobbered in the loop, and the RHS needs to be remain live.
-; CHECK: add ebx,{{.*e.[^x]}}
-; CHECK: mov ecx,edx
-; CHECK: adc ecx,{{.*e.[^x]}}
-; Ptr cannot be eax, ebx, ecx, or edx (used up for the expected and desired).
-; It can be esi, edi, or ebp though, for example (so we need to be careful
-; about rejecting eb* and ed*.)
-; CHECK: lock cmpxchg8b QWORD PTR [e{{.[^x]}}
-; CHECK: jne [[LABEL]]
-; ARM32-LABEL: test_atomic_rmw_add_64
-; ARM32: dmb
-; ARM32: ldrexd r{{[0-9]+}}, r{{[0-9]+}}, [r{{[0-9]+}}]
-; ARM32: adds
-; ARM32: adc
-; ARM32: strexd r{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}}, [r{{[0-9]+}}]
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_add_64
-; MIPS32: sync
-; MIPS32: jal	__sync_fetch_and_add_8
-; MIPS32: sync
-
-; Same test as above, but with a global address to test FakeUse issues.
-define internal i64 @test_atomic_rmw_add_64_global(i64 %v) {
-entry:
-  %ptr = bitcast [8 x i8]* @SzGlobal64 to i64*
-  %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 1, i64* %ptr, i64 %v, i32 6)
-  ret i64 %a
-}
-; CHECK-LABEL: test_atomic_rmw_add_64_global
-; ARM32-LABEL: test_atomic_rmw_add_64_global
-; ARM32: dmb
-; ARM32: ldrexd r{{[0-9]+}}, r{{[0-9]+}}, [r{{[0-9]+}}]
-; ARM32: adds
-; ARM32: adc
-; ARM32: strexd r{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}}, [r{{[0-9]+}}]
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_add_64_global
-; MIPS32: sync
-; MIPS32: jal	__sync_fetch_and_add_8
-; MIPS32: sync
-
-; Test with some more register pressure. When we have an alloca, ebp is
-; used to manage the stack frame, so it cannot be used as a register either.
-declare void @use_ptr(i32 %iptr)
-
-define internal i64 @test_atomic_rmw_add_64_alloca(i32 %iptr, i64 %v) {
-entry:
-  br label %eblock  ; Disable alloca optimization
-eblock:
-  %alloca_ptr = alloca i8, i32 16, align 16
-  %ptr = inttoptr i32 %iptr to i64*
-  %old = call i64 @llvm.nacl.atomic.rmw.i64(i32 1, i64* %ptr, i64 %v, i32 6)
-  store i8 0, i8* %alloca_ptr, align 1
-  store i8 1, i8* %alloca_ptr, align 1
-  store i8 2, i8* %alloca_ptr, align 1
-  store i8 3, i8* %alloca_ptr, align 1
-  %__5 = ptrtoint i8* %alloca_ptr to i32
-  call void @use_ptr(i32 %__5)
-  ret i64 %old
-}
-; CHECK-LABEL: test_atomic_rmw_add_64_alloca
-; CHECK: push ebx
-; CHECK-DAG: mov edx
-; CHECK-DAG: mov eax
-; CHECK-DAG: mov ecx
-; CHECK-DAG: mov ebx
-; Ptr cannot be eax, ebx, ecx, or edx (used up for the expected and desired).
-; It also cannot be ebp since we use that for alloca. Also make sure it's
-; not esp, since that's the stack pointer and mucking with it will break
-; the later use_ptr function call.
-; That pretty much leaves esi, or edi as the only viable registers.
-; CHECK: lock cmpxchg8b QWORD PTR [e{{[ds]}}i]
-; CHECK: call {{.*}} R_{{.*}} use_ptr
-; ARM32-LABEL: test_atomic_rmw_add_64_alloca
-; ARM32: dmb
-; ARM32: ldrexd r{{[0-9]+}}, r{{[0-9]+}}, [r{{[0-9]+}}]
-; ARM32: adds
-; ARM32: adc
-; ARM32: strexd r{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}}, [r{{[0-9]+}}]
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_add_64_alloca
-; MIPS32: sync
-; MIPS32: jal	__sync_fetch_and_add_8
-; MIPS32: sync
-
-define internal i32 @test_atomic_rmw_add_32_ignored(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %ignored = call i32 @llvm.nacl.atomic.rmw.i32(i32 1, i32* %ptr, i32 %v, i32 6)
-  ret i32 %v
-}
-; Technically this could use "lock add" instead of "lock xadd", if liveness
-; tells us that the destination variable is dead.
-; CHECK-LABEL: test_atomic_rmw_add_32_ignored
-; CHECK: lock xadd DWORD {{.*}},[[REG:.*]]
-; ARM32-LABEL: test_atomic_rmw_add_32_ignored
-; ARM32: dmb
-; ARM32: ldrex
-; ARM32: add
-; ARM32: strex
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_add_32_ignored
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: addu
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: sync
-
-; Atomic RMW 64 needs to be expanded into its own loop.
-; Make sure that works w/ non-trivial function bodies.
-define internal i64 @test_atomic_rmw_add_64_loop(i32 %iptr, i64 %v) {
-entry:
-  %x = icmp ult i64 %v, 100
-  br i1 %x, label %err, label %loop
-
-loop:
-  %v_next = phi i64 [ %v, %entry ], [ %next, %loop ]
-  %ptr = inttoptr i32 %iptr to i64*
-  %next = call i64 @llvm.nacl.atomic.rmw.i64(i32 1, i64* %ptr, i64 %v_next, i32 6)
-  %success = icmp eq i64 %next, 100
-  br i1 %success, label %done, label %loop
-
-done:
-  ret i64 %next
-
-err:
-  ret i64 0
-}
-; CHECK-LABEL: test_atomic_rmw_add_64_loop
-; CHECK: push ebx
-; CHECK: mov eax,DWORD PTR [{{.*}}]
-; CHECK: mov edx,DWORD PTR [{{.*}}+0x4]
-; CHECK: [[LABEL:[^ ]*]]: {{.*}} mov ebx,eax
-; CHECK: add ebx,{{.*e.[^x]}}
-; CHECK: mov ecx,edx
-; CHECK: adc ecx,{{.*e.[^x]}}
-; CHECK: lock cmpxchg8b QWORD PTR [e{{.[^x]}}+0x0]
-; CHECK: jne [[LABEL]]
-; ARM32-LABEL: test_atomic_rmw_add_64_loop
-; ARM32: dmb
-; ARM32: ldrexd r{{[0-9]+}}, r{{[0-9]+}}, [r{{[0-9]+}}]
-; ARM32: adds
-; ARM32: adc
-; ARM32: strexd r{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}}, [r{{[0-9]+}}]
-; ARM32: bne
-; ARM32: dmb
-; ARM32: b
-; MIPS32-LABEL: test_atomic_rmw_add_64_loop
-; MIPS32: sync
-; MIPS32: jal	__sync_fetch_and_add_8
-; MIPS32: sync
-
-;; sub
-
-define internal i32 @test_atomic_rmw_sub_8(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i8
-  %ptr = inttoptr i32 %iptr to i8*
-  %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 2, i8* %ptr, i8 %trunc, i32 6)
-  %a_ext = zext i8 %a to i32
-  ret i32 %a_ext
-}
-; CHECK-LABEL: test_atomic_rmw_sub_8
-; CHECK: neg [[REG:.*]]
-; CHECK: lock xadd BYTE {{.*}},[[REG]]
-; CHECK: {{mov|movzx}} {{.*}},[[REG]]
-; ARM32-LABEL: test_atomic_rmw_sub_8
-; ARM32: dmb
-; ARM32: ldrexb
-; ARM32: sub
-; ARM32: strexb
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_sub_8
-; MIPS32: sync
-; MIPS32: addiu	{{.*}}, $zero, -4
-; MIPS32: and
-; MIPS32: andi	{{.*}}, {{.*}}, 3
-; MIPS32: sll	{{.*}}, {{.*}}, 3
-; MIPS32: ori	{{.*}}, $zero, 255
-; MIPS32: sllv
-; MIPS32: nor
-; MIPS32: sllv
-; MIPS32: ll
-; MIPS32: subu
-; MIPS32: and
-; MIPS32: and
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: and
-; MIPS32: srlv
-; MIPS32: sll	{{.*}}, {{.*}}, 24
-; MIPS32: sra	{{.*}}, {{.*}}, 24
-; MIPS32: sync
-
-define internal i32 @test_atomic_rmw_sub_16(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i16
-  %ptr = inttoptr i32 %iptr to i16*
-  %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 2, i16* %ptr, i16 %trunc, i32 6)
-  %a_ext = zext i16 %a to i32
-  ret i32 %a_ext
-}
-; CHECK-LABEL: test_atomic_rmw_sub_16
-; CHECK: neg [[REG:.*]]
-; CHECK: lock xadd WORD {{.*}},[[REG]]
-; CHECK: {{mov|movzx}} {{.*}},[[REG]]
-; ARM32-LABEL: test_atomic_rmw_sub_16
-; ARM32: dmb
-; ARM32: ldrexh
-; ARM32: sub
-; ARM32: strexh
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_sub_16
-; MIPS32: sync
-; MIPS32: addiu	{{.*}}, $zero, -4
-; MIPS32: and
-; MIPS32: andi	{{.*}}, {{.*}}, 3
-; MIPS32: sll	{{.*}}, {{.*}}, 3
-; MIPS32: ori	{{.*}}, {{.*}}, 65535
-; MIPS32: sllv
-; MIPS32: nor
-; MIPS32: sllv
-; MIPS32: ll
-; MIPS32: subu
-; MIPS32: and
-; MIPS32: and
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: and
-; MIPS32: srlv
-; MIPS32: sll	{{.*}}, {{.*}}, 16
-; MIPS32: sra	{{.*}}, {{.*}}, 16
-; MIPS32: sync
-
-define internal i32 @test_atomic_rmw_sub_32(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 2, i32* %ptr, i32 %v, i32 6)
-  ret i32 %a
-}
-; CHECK-LABEL: test_atomic_rmw_sub_32
-; CHECK: neg [[REG:.*]]
-; CHECK: lock xadd DWORD {{.*}},[[REG]]
-; CHECK: mov {{.*}},[[REG]]
-; ARM32-LABEL: test_atomic_rmw_sub_32
-; ARM32: dmb
-; ARM32: ldrex
-; ARM32: sub
-; ARM32: strex
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_sub_32
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: subu
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: sync
-
-define internal i64 @test_atomic_rmw_sub_64(i32 %iptr, i64 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 2, i64* %ptr, i64 %v, i32 6)
-  ret i64 %a
-}
-; CHECK-LABEL: test_atomic_rmw_sub_64
-; CHECK: push ebx
-; CHECK: mov eax,DWORD PTR [{{.*}}]
-; CHECK: mov edx,DWORD PTR [{{.*}}+0x4]
-; CHECK: [[LABEL:[^ ]*]]: {{.*}} mov ebx,eax
-; CHECK: sub ebx,{{.*e.[^x]}}
-; CHECK: mov ecx,edx
-; CHECK: sbb ecx,{{.*e.[^x]}}
-; CHECK: lock cmpxchg8b QWORD PTR [e{{.[^x]}}
-; CHECK: jne [[LABEL]]
-; ARM32-LABEL: test_atomic_rmw_sub_64
-; ARM32: dmb
-; ARM32: ldrexd r{{[0-9]+}}, r{{[0-9]+}}, [r{{[0-9]+}}]
-; ARM32: subs
-; ARM32: sbc
-; ARM32: strexd r{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}}, [r{{[0-9]+}}]
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_sub_64
-; MIPS32: sync
-; MIPS32: jal	__sync_fetch_and_sub_8
-; MIPS32: sync
-
-define internal i32 @test_atomic_rmw_sub_32_ignored(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %ignored = call i32 @llvm.nacl.atomic.rmw.i32(i32 2, i32* %ptr, i32 %v, i32 6)
-  ret i32 %v
-}
-; Could use "lock sub" instead of "neg; lock xadd"
-; CHECK-LABEL: test_atomic_rmw_sub_32_ignored
-; CHECK: neg [[REG:.*]]
-; CHECK: lock xadd DWORD {{.*}},[[REG]]
-; ARM32-LABEL: test_atomic_rmw_sub_32_ignored
-; ARM32: dmb
-; ARM32: ldrex
-; ARM32: sub
-; ARM32: strex
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_sub_32_ignored
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: subu
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: sync
-
-;; or
-
-define internal i32 @test_atomic_rmw_or_8(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i8
-  %ptr = inttoptr i32 %iptr to i8*
-  %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 3, i8* %ptr, i8 %trunc, i32 6)
-  %a_ext = zext i8 %a to i32
-  ret i32 %a_ext
-}
-; CHECK-LABEL: test_atomic_rmw_or_8
-; CHECK: mov al,BYTE PTR
-; Dest cannot be eax here, because eax is used for the old value. Also want
-; to make sure that cmpxchg's source is the same register.
-; CHECK: or [[REG:[^a].]]
-; CHECK: lock cmpxchg BYTE PTR [e{{[^a].}}],[[REG]]
-; CHECK: jne
-; ARM32-LABEL: test_atomic_rmw_or_8
-; ARM32: dmb
-; ARM32: ldrexb
-; ARM32: orr
-; ARM32: strexb
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_or_8
-; MIPS32: sync
-; MIPS32: addiu	{{.*}}, $zero, -4
-; MIPS32: and
-; MIPS32: andi	{{.*}}, {{.*}}, 3
-; MIPS32: sll	{{.*}}, {{.*}}, 3
-; MIPS32: ori	{{.*}}, $zero, 255
-; MIPS32: sllv
-; MIPS32: nor
-; MIPS32: sllv
-; MIPS32: ll
-; MIPS32: or
-; MIPS32: and
-; MIPS32: and
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: and
-; MIPS32: srlv
-; MIPS32: sll	{{.*}}, {{.*}}, 24
-; MIPS32: sra	{{.*}}, {{.*}}, 24
-; MIPS32: sync
-
-; Same test as above, but with a global address to test FakeUse issues.
-define internal i32 @test_atomic_rmw_or_8_global(i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i8
-  %ptr = bitcast [1 x i8]* @SzGlobal8 to i8*
-  %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 3, i8* %ptr, i8 %trunc, i32 6)
-  %a_ext = zext i8 %a to i32
-  ret i32 %a_ext
-}
-; CHECK-LABEL: test_atomic_rmw_or_8_global
-; ARM32-LABEL: test_atomic_rmw_or_8_global
-; ARM32: dmb
-; ARM32: movw [[PTR:r[0-9]+]], #:lower16:SzGlobal8
-; ARM32: movt [[PTR]], #:upper16:SzGlobal8
-; ARM32: ldrexb r{{[0-9]+}}, {{[[]}}[[PTR]]{{[]]}}
-; ARM32: orr
-; ARM32: strexb
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_or_8_global
-; MIPS32: sync
-; MIPS32: addiu	{{.*}}, $zero, -4
-; MIPS32: and
-; MIPS32: andi	{{.*}}, {{.*}}, 3
-; MIPS32: sll	{{.*}}, {{.*}}, 3
-; MIPS32: ori	{{.*}}, $zero, 255
-; MIPS32: sllv
-; MIPS32: nor
-; MIPS32: sllv
-; MIPS32: ll
-; MIPS32: or
-; MIPS32: and
-; MIPS32: and
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: and
-; MIPS32: srlv
-; MIPS32: sll	{{.*}}, {{.*}}, 24
-; MIPS32: sra	{{.*}}, {{.*}}, 24
-; MIPS32: sync
-
-define internal i32 @test_atomic_rmw_or_16(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i16
-  %ptr = inttoptr i32 %iptr to i16*
-  %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 3, i16* %ptr, i16 %trunc, i32 6)
-  %a_ext = zext i16 %a to i32
-  ret i32 %a_ext
-}
-; CHECK-LABEL: test_atomic_rmw_or_16
-; CHECK: mov ax,WORD PTR
-; CHECK: or [[REG:[^a].]]
-; CHECK: lock cmpxchg WORD PTR [e{{[^a].}}],[[REG]]
-; CHECK: jne
-; ARM32-LABEL: test_atomic_rmw_or_16
-; ARM32: dmb
-; ARM32: ldrexh
-; ARM32: orr
-; ARM32: strexh
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_or_16
-; MIPS32: sync
-; MIPS32: addiu	{{.*}}, $zero, -4
-; MIPS32: and
-; MIPS32: andi	{{.*}}, {{.*}}, 3
-; MIPS32: sll	{{.*}}, {{.*}}, 3
-; MIPS32: ori	{{.*}}, {{.*}}, 65535
-; MIPS32: sllv
-; MIPS32: nor
-; MIPS32: sllv
-; MIPS32: ll
-; MIPS32: or
-; MIPS32: and
-; MIPS32: and
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: and
-; MIPS32: srlv
-; MIPS32: sll	{{.*}}, {{.*}}, 16
-; MIPS32: sra	{{.*}}, {{.*}}, 16
-; MIPS32: sync
-
-; Same test as above, but with a global address to test FakeUse issues.
-define internal i32 @test_atomic_rmw_or_16_global(i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i16
-  %ptr = bitcast [2 x i8]* @SzGlobal16 to i16*
-  %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 3, i16* %ptr, i16 %trunc, i32 6)
-  %a_ext = zext i16 %a to i32
-  ret i32 %a_ext
-}
-; CHECK-LABEL: test_atomic_rmw_or_16_global
-; ARM32-LABEL: test_atomic_rmw_or_16_global
-; ARM32: dmb
-; ARM32: movw [[PTR:r[0-9]+]], #:lower16:SzGlobal16
-; ARM32: movt [[PTR]], #:upper16:SzGlobal16
-; ARM32: ldrexh r{{[0-9]+}}, {{[[]}}[[PTR]]{{[]]}}
-; ARM32: orr
-; ARM32: strexh
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_or_16_global
-; MIPS32: sync
-; MIPS32: addiu	{{.*}}, $zero, -4
-; MIPS32: and
-; MIPS32: andi	{{.*}}, {{.*}}, 3
-; MIPS32: sll	{{.*}}, {{.*}}, 3
-; MIPS32: ori	{{.*}}, {{.*}}, 65535
-; MIPS32: sllv
-; MIPS32: nor
-; MIPS32: sllv
-; MIPS32: ll
-; MIPS32: or
-; MIPS32: and
-; MIPS32: and
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: and
-; MIPS32: srlv
-; MIPS32: sll	{{.*}}, {{.*}}, 16
-; MIPS32: sra	{{.*}}, {{.*}}, 16
-; MIPS32: sync
-
-define internal i32 @test_atomic_rmw_or_32(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 3, i32* %ptr, i32 %v, i32 6)
-  ret i32 %a
-}
-; CHECK-LABEL: test_atomic_rmw_or_32
-; CHECK: mov eax,DWORD PTR
-; CHECK: or [[REG:e[^a].]]
-; CHECK: lock cmpxchg DWORD PTR [e{{[^a].}}],[[REG]]
-; CHECK: jne
-; ARM32-LABEL: test_atomic_rmw_or_32
-; ARM32: dmb
-; ARM32: ldrex
-; ARM32: orr
-; ARM32: strex
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_or_32
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: sync
-
-; Same test as above, but with a global address to test FakeUse issues.
-define internal i32 @test_atomic_rmw_or_32_global(i32 %v) {
-entry:
-  %ptr = bitcast [4 x i8]* @SzGlobal32 to i32*
-  %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 3, i32* %ptr, i32 %v, i32 6)
-  ret i32 %a
-}
-; CHECK-LABEL: test_atomic_rmw_or_32_global
-; ARM32-LABEL: test_atomic_rmw_or_32_global
-; ARM32: dmb
-; ARM32: movw [[PTR:r[0-9]+]], #:lower16:SzGlobal32
-; ARM32: movt [[PTR]], #:upper16:SzGlobal32
-; ARM32: ldrex r{{[0-9]+}}, {{[[]}}[[PTR]]{{[]]}}
-; ARM32: orr
-; ARM32: strex
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_or_32_global
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: sync
-
-define internal i64 @test_atomic_rmw_or_64(i32 %iptr, i64 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 3, i64* %ptr, i64 %v, i32 6)
-  ret i64 %a
-}
-; CHECK-LABEL: test_atomic_rmw_or_64
-; CHECK: push ebx
-; CHECK: mov eax,DWORD PTR [{{.*}}]
-; CHECK: mov edx,DWORD PTR [{{.*}}+0x4]
-; CHECK: [[LABEL:[^ ]*]]: {{.*}} mov ebx,eax
-; CHECK: or ebx,{{.*e.[^x]}}
-; CHECK: mov ecx,edx
-; CHECK: or ecx,{{.*e.[^x]}}
-; CHECK: lock cmpxchg8b QWORD PTR [e{{.[^x]}}
-; CHECK: jne [[LABEL]]
-; ARM32-LABEL: test_atomic_rmw_or_64
-; ARM32: dmb
-; ARM32: ldrexd r{{[0-9]+}}, r{{[0-9]+}}, [r{{[0-9]+}}]
-; ARM32: orr
-; ARM32: orr
-; ARM32: strexd r{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}}, [r{{[0-9]+}}]
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_or_64
-; MIPS32: sync
-; MIPS32: jal	__sync_fetch_and_or_8
-; MIPS32: sync
-
-define internal i32 @test_atomic_rmw_or_32_ignored(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %ignored = call i32 @llvm.nacl.atomic.rmw.i32(i32 3, i32* %ptr, i32 %v, i32 6)
-  ret i32 %v
-}
-; CHECK-LABEL: test_atomic_rmw_or_32_ignored
-; Could just "lock or", if we inspect the liveness information first.
-; Would also need a way to introduce "lock"'edness to binary
-; operators without introducing overhead on the more common binary ops.
-; CHECK: mov eax,DWORD PTR
-; CHECK: or [[REG:e[^a].]]
-; CHECK: lock cmpxchg DWORD PTR [e{{[^a].}}],[[REG]]
-; CHECK: jne
-; ARM32-LABEL: test_atomic_rmw_or_32_ignored
-; ARM32: dmb
-; ARM32: ldrex
-; ARM32: orr
-; ARM32: strex
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_or_32_ignored
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: sync
-
-;; and
-
-define internal i32 @test_atomic_rmw_and_8(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i8
-  %ptr = inttoptr i32 %iptr to i8*
-  %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 4, i8* %ptr, i8 %trunc, i32 6)
-  %a_ext = zext i8 %a to i32
-  ret i32 %a_ext
-}
-; CHECK-LABEL: test_atomic_rmw_and_8
-; CHECK: mov al,BYTE PTR
-; CHECK: and [[REG:[^a].]]
-; CHECK: lock cmpxchg BYTE PTR [e{{[^a].}}],[[REG]]
-; CHECK: jne
-; ARM32-LABEL: test_atomic_rmw_and_8
-; ARM32: dmb
-; ARM32: ldrexb
-; ARM32: and
-; ARM32: strexb
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_and_8
-; MIPS32: sync
-; MIPS32: addiu	{{.*}}, $zero, -4
-; MIPS32: and
-; MIPS32: andi	{{.*}}, {{.*}}, 3
-; MIPS32: sll	{{.*}}, {{.*}}, 3
-; MIPS32: ori	{{.*}}, $zero, 255
-; MIPS32: sllv
-; MIPS32: nor
-; MIPS32: sllv
-; MIPS32: ll
-; MIPS32: and
-; MIPS32: and
-; MIPS32: and
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: and
-; MIPS32: srlv
-; MIPS32: sll	{{.*}}, {{.*}}, 24
-; MIPS32: sra	{{.*}}, {{.*}}, 24
-; MIPS32: sync
-
-define internal i32 @test_atomic_rmw_and_16(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i16
-  %ptr = inttoptr i32 %iptr to i16*
-  %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 4, i16* %ptr, i16 %trunc, i32 6)
-  %a_ext = zext i16 %a to i32
-  ret i32 %a_ext
-}
-; CHECK-LABEL: test_atomic_rmw_and_16
-; CHECK: mov ax,WORD PTR
-; CHECK: and
-; CHECK: lock cmpxchg WORD PTR [e{{[^a].}}]
-; CHECK: jne
-; ARM32-LABEL: test_atomic_rmw_and_16
-; ARM32: dmb
-; ARM32: ldrexh
-; ARM32: and
-; ARM32: strexh
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_and_16
-; MIPS32: sync
-; MIPS32: addiu	{{.*}}, $zero, -4
-; MIPS32: and
-; MIPS32: andi	{{.*}}, {{.*}}, 3
-; MIPS32: sll	{{.*}}, {{.*}}, 3
-; MIPS32: ori	{{.*}}, {{.*}}, 65535
-; MIPS32: sllv
-; MIPS32: nor
-; MIPS32: sllv
-; MIPS32: ll
-; MIPS32: and
-; MIPS32: and
-; MIPS32: and
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: and
-; MIPS32: srlv
-; MIPS32: sll	{{.*}}, {{.*}}, 16
-; MIPS32: sra	{{.*}}, {{.*}}, 16
-; MIPS32: sync
-
-define internal i32 @test_atomic_rmw_and_32(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 4, i32* %ptr, i32 %v, i32 6)
-  ret i32 %a
-}
-; CHECK-LABEL: test_atomic_rmw_and_32
-; CHECK: mov eax,DWORD PTR
-; CHECK: and
-; CHECK: lock cmpxchg DWORD PTR [e{{[^a].}}]
-; CHECK: jne
-; ARM32-LABEL: test_atomic_rmw_and_32
-; ARM32: dmb
-; ARM32: ldrex
-; ARM32: and
-; ARM32: strex
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_and_32
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: and
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: sync
-
-define internal i64 @test_atomic_rmw_and_64(i32 %iptr, i64 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 4, i64* %ptr, i64 %v, i32 6)
-  ret i64 %a
-}
-; CHECK-LABEL: test_atomic_rmw_and_64
-; CHECK: push ebx
-; CHECK: mov eax,DWORD PTR [{{.*}}]
-; CHECK: mov edx,DWORD PTR [{{.*}}+0x4]
-; CHECK: [[LABEL:[^ ]*]]: {{.*}} mov ebx,eax
-; CHECK: and ebx,{{.*e.[^x]}}
-; CHECK: mov ecx,edx
-; CHECK: and ecx,{{.*e.[^x]}}
-; CHECK: lock cmpxchg8b QWORD PTR [e{{.[^x]}}
-; CHECK: jne [[LABEL]]
-; ARM32-LABEL: test_atomic_rmw_and_64
-; ARM32: dmb
-; ARM32: ldrexd r{{[0-9]+}}, r{{[0-9]+}}, [r{{[0-9]+}}]
-; ARM32: and
-; ARM32: and
-; ARM32: strexd r{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}}, [r{{[0-9]+}}]
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_and_64
-; MIPS32: sync
-; MIPS32: jal	__sync_fetch_and_and_8
-; MIPS32: sync
-
-define internal i32 @test_atomic_rmw_and_32_ignored(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %ignored = call i32 @llvm.nacl.atomic.rmw.i32(i32 4, i32* %ptr, i32 %v, i32 6)
-  ret i32 %v
-}
-; CHECK-LABEL: test_atomic_rmw_and_32_ignored
-; Could just "lock and"
-; CHECK: mov eax,DWORD PTR
-; CHECK: and
-; CHECK: lock cmpxchg DWORD PTR [e{{[^a].}}]
-; CHECK: jne
-; ARM32-LABEL: test_atomic_rmw_and_32_ignored
-; ARM32: dmb
-; ARM32: ldrex
-; ARM32: and
-; ARM32: strex
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_and_32_ignored
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: and
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: sync
-
-;; xor
-
-define internal i32 @test_atomic_rmw_xor_8(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i8
-  %ptr = inttoptr i32 %iptr to i8*
-  %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 5, i8* %ptr, i8 %trunc, i32 6)
-  %a_ext = zext i8 %a to i32
-  ret i32 %a_ext
-}
-; CHECK-LABEL: test_atomic_rmw_xor_8
-; CHECK: mov al,BYTE PTR
-; CHECK: xor [[REG:[^a].]]
-; CHECK: lock cmpxchg BYTE PTR [e{{[^a].}}],[[REG]]
-; CHECK: jne
-; ARM32-LABEL: test_atomic_rmw_xor_8
-; ARM32: dmb
-; ARM32: ldrexb
-; ARM32: eor
-; ARM32: strexb
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_xor_8
-; MIPS32: sync
-; MIPS32: addiu	{{.*}}, $zero, -4
-; MIPS32: and
-; MIPS32: andi	{{.*}}, {{.*}}, 3
-; MIPS32: sll	{{.*}}, {{.*}}, 3
-; MIPS32: ori	{{.*}}, $zero, 255
-; MIPS32: sllv
-; MIPS32: nor
-; MIPS32: sllv
-; MIPS32: ll
-; MIPS32: xor
-; MIPS32: and
-; MIPS32: and
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: and
-; MIPS32: srlv
-; MIPS32: sll	{{.*}}, {{.*}}, 24
-; MIPS32: sra	{{.*}}, {{.*}}, 24
-; MIPS32: sync
-
-define internal i32 @test_atomic_rmw_xor_16(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i16
-  %ptr = inttoptr i32 %iptr to i16*
-  %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 5, i16* %ptr, i16 %trunc, i32 6)
-  %a_ext = zext i16 %a to i32
-  ret i32 %a_ext
-}
-; CHECK-LABEL: test_atomic_rmw_xor_16
-; CHECK: mov ax,WORD PTR
-; CHECK: xor
-; CHECK: lock cmpxchg WORD PTR [e{{[^a].}}]
-; CHECK: jne
-; ARM32-LABEL: test_atomic_rmw_xor_16
-; ARM32: dmb
-; ARM32: ldrexh
-; ARM32: eor
-; ARM32: strexh
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_xor_16
-; MIPS32: sync
-; MIPS32: addiu	{{.*}}, $zero, -4
-; MIPS32: and
-; MIPS32: andi	{{.*}}, {{.*}}, 3
-; MIPS32: sll	{{.*}}, {{.*}}, 3
-; MIPS32: ori	{{.*}}, {{.*}}, 65535
-; MIPS32: sllv
-; MIPS32: nor
-; MIPS32: sllv
-; MIPS32: ll
-; MIPS32: xor
-; MIPS32: and
-; MIPS32: and
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: and
-; MIPS32: srlv
-; MIPS32: sll	{{.*}}, {{.*}}, 16
-; MIPS32: sra	{{.*}}, {{.*}}, 16
-; MIPS32: sync
-
-define internal i32 @test_atomic_rmw_xor_32(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 5, i32* %ptr, i32 %v, i32 6)
-  ret i32 %a
-}
-; CHECK-LABEL: test_atomic_rmw_xor_32
-; CHECK: mov eax,DWORD PTR
-; CHECK: xor
-; CHECK: lock cmpxchg DWORD PTR [e{{[^a].}}]
-; CHECK: jne
-; ARM32-LABEL: test_atomic_rmw_xor_32
-; ARM32: dmb
-; ARM32: ldrex
-; ARM32: eor
-; ARM32: strex
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_xor_32
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: xor
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: sync
-
-define internal i64 @test_atomic_rmw_xor_64(i32 %iptr, i64 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 5, i64* %ptr, i64 %v, i32 6)
-  ret i64 %a
-}
-; CHECK-LABEL: test_atomic_rmw_xor_64
-; CHECK: push ebx
-; CHECK: mov eax,DWORD PTR [{{.*}}]
-; CHECK: mov edx,DWORD PTR [{{.*}}+0x4]
-; CHECK: mov ebx,eax
-; CHECK: or ebx,{{.*e.[^x]}}
-; CHECK: mov ecx,edx
-; CHECK: or ecx,{{.*e.[^x]}}
-; CHECK: lock cmpxchg8b QWORD PTR [e{{.[^x]}}
-; CHECK: jne
-; ARM32-LABEL: test_atomic_rmw_xor_64
-; ARM32: dmb
-; ARM32: ldrexd r{{[0-9]+}}, r{{[0-9]+}}, [r{{[0-9]+}}]
-; ARM32: eor
-; ARM32: eor
-; ARM32: strexd r{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}}, [r{{[0-9]+}}]
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_xor_64
-; MIPS32: sync
-; MIPS32: jal	__sync_fetch_and_xor_8
-; MIPS32: sync
-
-define internal i32 @test_atomic_rmw_xor_32_ignored(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %ignored = call i32 @llvm.nacl.atomic.rmw.i32(i32 5, i32* %ptr, i32 %v, i32 6)
-  ret i32 %v
-}
-; CHECK-LABEL: test_atomic_rmw_xor_32_ignored
-; CHECK: mov eax,DWORD PTR
-; CHECK: xor
-; CHECK: lock cmpxchg DWORD PTR [e{{[^a].}}]
-; CHECK: jne
-; ARM32-LABEL: test_atomic_rmw_xor_32_ignored
-; ARM32: dmb
-; ARM32: ldrex
-; ARM32: eor
-; ARM32: strex
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_xor_32_ignored
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: xor
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: sync
-
-;; exchange
-
-define internal i32 @test_atomic_rmw_xchg_8(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i8
-  %ptr = inttoptr i32 %iptr to i8*
-  %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 6, i8* %ptr, i8 %trunc, i32 6)
-  %a_ext = zext i8 %a to i32
-  ret i32 %a_ext
-}
-; CHECK-LABEL: test_atomic_rmw_xchg_8
-; CHECK: xchg BYTE PTR {{.*}},[[REG:.*]]
-; ARM32-LABEL: test_atomic_rmw_xchg_8
-; ARM32: dmb
-; ARM32: ldrexb
-; ARM32: strexb
-; ARM32: cmp
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_xchg_8
-; MIPS32: sync
-; MIPS32: addiu	{{.*}}, $zero, -4
-; MIPS32: and
-; MIPS32: andi	{{.*}}, {{.*}}, 3
-; MIPS32: sll	{{.*}}, {{.*}}, 3
-; MIPS32: ori	{{.*}}, $zero, 255
-; MIPS32: sllv
-; MIPS32: nor
-; MIPS32: sllv
-; MIPS32: ll
-; MIPS32: and
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: and
-; MIPS32: srlv
-; MIPS32: sll	{{.*}}, {{.*}}, 24
-; MIPS32: sra	{{.*}}, {{.*}}, 24
-; MIPS32: sync
-
-define internal i32 @test_atomic_rmw_xchg_16(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i16
-  %ptr = inttoptr i32 %iptr to i16*
-  %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 6, i16* %ptr, i16 %trunc, i32 6)
-  %a_ext = zext i16 %a to i32
-  ret i32 %a_ext
-}
-; CHECK-LABEL: test_atomic_rmw_xchg_16
-; CHECK: xchg WORD PTR {{.*}},[[REG:.*]]
-; ARM32-LABEL: test_atomic_rmw_xchg_16
-; ARM32: dmb
-; ARM32: ldrexh
-; ARM32: strexh
-; ARM32: cmp
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_xchg_16
-; MIPS32: sync
-; MIPS32: addiu	{{.*}}, $zero, -4
-; MIPS32: and
-; MIPS32: andi	{{.*}}, {{.*}}, 3
-; MIPS32: sll	{{.*}}, {{.*}}, 3
-; MIPS32: ori	{{.*}}, {{.*}}, 65535
-; MIPS32: sllv
-; MIPS32: nor
-; MIPS32: sllv
-; MIPS32: ll
-; MIPS32: and
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: and
-; MIPS32: srlv
-; MIPS32: sll	{{.*}}, {{.*}}, 16
-; MIPS32: sra	{{.*}}, {{.*}}, 16
-; MIPS32: sync
-
-define internal i32 @test_atomic_rmw_xchg_32(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 6, i32* %ptr, i32 %v, i32 6)
-  ret i32 %a
-}
-; CHECK-LABEL: test_atomic_rmw_xchg_32
-; CHECK: xchg DWORD PTR {{.*}},[[REG:.*]]
-; ARM32-LABEL: test_atomic_rmw_xchg_32
-; ARM32: dmb
-; ARM32: ldrex
-; ARM32: strex
-; ARM32: cmp
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_xchg_32
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: move
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: sync
-
-define internal i64 @test_atomic_rmw_xchg_64(i32 %iptr, i64 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 6, i64* %ptr, i64 %v, i32 6)
-  ret i64 %a
-}
-; CHECK-LABEL: test_atomic_rmw_xchg_64
-; CHECK: push ebx
-; CHECK-DAG: mov edx
-; CHECK-DAG: mov eax
-; CHECK-DAG: mov ecx
-; CHECK-DAG: mov ebx
-; CHECK: lock cmpxchg8b QWORD PTR [{{e.[^x]}}
-; CHECK: jne
-; ARM32-LABEL: test_atomic_rmw_xchg_64
-; ARM32: dmb
-; ARM32: ldrexd r{{[0-9]+}}, r{{[0-9]+}}, {{[[]}}[[PTR:r[0-9]+]]{{[]]}}
-; ARM32: strexd r{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}}, {{[[]}}[[PTR]]{{[]]}}
-; ARM32: cmp
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_xchg_64
-; MIPS32: sync
-; MIPS32: jal	__sync_lock_test_and_set_8
-; MIPS32: sync
-
-define internal i32 @test_atomic_rmw_xchg_32_ignored(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %ignored = call i32 @llvm.nacl.atomic.rmw.i32(i32 6, i32* %ptr, i32 %v, i32 6)
-  ret i32 %v
-}
-; In this case, ignoring the return value doesn't help. The xchg is
-; used to do an atomic store.
-; CHECK-LABEL: test_atomic_rmw_xchg_32_ignored
-; CHECK: xchg DWORD PTR {{.*}},[[REG:.*]]
-; ARM32-LABEL: test_atomic_rmw_xchg_32_ignored
-; ARM32: dmb
-; ARM32: ldrex
-; ARM32: strex
-; ARM32: cmp
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_rmw_xchg_32_ignored
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: move
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: sync
-
-;;;; Cmpxchg
-
-define internal i32 @test_atomic_cmpxchg_8(i32 %iptr, i32 %expected,
-                                           i32 %desired) {
-entry:
-  %trunc_exp = trunc i32 %expected to i8
-  %trunc_des = trunc i32 %desired to i8
-  %ptr = inttoptr i32 %iptr to i8*
-  %old = call i8 @llvm.nacl.atomic.cmpxchg.i8(i8* %ptr, i8 %trunc_exp,
-                                              i8 %trunc_des, i32 6, i32 6)
-  %old_ext = zext i8 %old to i32
-  ret i32 %old_ext
-}
-; CHECK-LABEL: test_atomic_cmpxchg_8
-; CHECK: mov eax,{{.*}}
-; Need to check that eax isn't used as the address register or the desired.
-; since it is already used as the *expected* register.
-; CHECK: lock cmpxchg BYTE PTR [e{{[^a].}}],{{[^a]}}l
-; ARM32-LABEL: test_atomic_cmpxchg_8
-; ARM32: dmb
-; ARM32: ldrexb [[V:r[0-9]+]], {{[[]}}[[A:r[0-9]+]]{{[]]}}
-; ARM32: lsl [[VV:r[0-9]+]], [[V]], #24
-; ARM32: cmp [[VV]], {{r[0-9]+}}, lsl #24
-; ARM32: movne [[SUCCESS:r[0-9]+]],
-; ARM32: strexbeq [[SUCCESS]], {{r[0-9]+}}, {{[[]}}[[A]]{{[]]}}
-; ARM32: cmp [[SUCCESS]], #0
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_cmpxchg_8
-; MIPS32: addiu	{{.*}}, $zero, -4
-; MIPS32: and
-; MIPS32: andi	{{.*}}, {{.*}}, 3
-; MIPS32: sll	{{.*}}, {{.*}}, 3
-; MIPS32: ori	{{.*}}, $zero, 255
-; MIPS32: sllv
-; MIPS32: nor
-; MIPS32: andi	{{.*}}, {{.*}}, 255
-; MIPS32: sllv
-; MIPS32: andi	{{.*}}, {{.*}}, 255
-; MIPS32: sllv
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: and
-; MIPS32: bne
-; MIPS32: and
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	$zero, {{.*}}, {{.*}}
-; MIPS32: srlv
-; MIPS32: sll	{{.*}}, {{.*}}, 24
-; MIPS32: sra	{{.*}}, {{.*}}, 24
-; MIPS32: sync
-
-define internal i32 @test_atomic_cmpxchg_16(i32 %iptr, i32 %expected,
-                                            i32 %desired) {
-entry:
-  %trunc_exp = trunc i32 %expected to i16
-  %trunc_des = trunc i32 %desired to i16
-  %ptr = inttoptr i32 %iptr to i16*
-  %old = call i16 @llvm.nacl.atomic.cmpxchg.i16(i16* %ptr, i16 %trunc_exp,
-                                               i16 %trunc_des, i32 6, i32 6)
-  %old_ext = zext i16 %old to i32
-  ret i32 %old_ext
-}
-; CHECK-LABEL: test_atomic_cmpxchg_16
-; CHECK: mov {{ax|eax}},{{.*}}
-; CHECK: lock cmpxchg WORD PTR [e{{[^a].}}],{{[^a]}}x
-; ARM32-LABEL: test_atomic_cmpxchg_16
-; ARM32: dmb
-; ARM32: ldrexh [[V:r[0-9]+]], {{[[]}}[[A:r[0-9]+]]{{[]]}}
-; ARM32: lsl [[VV:r[0-9]+]], [[V]], #16
-; ARM32: cmp [[VV]], {{r[0-9]+}}, lsl #16
-; ARM32: movne [[SUCCESS:r[0-9]+]],
-; ARM32: strexheq [[SUCCESS]], {{r[0-9]+}}, {{[[]}}[[A]]{{[]]}}
-; ARM32: cmp [[SUCCESS]], #0
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_cmpxchg_16
-; MIPS32: addiu	{{.*}}, $zero, -4
-; MIPS32: and
-; MIPS32: andi	{{.*}}, {{.*}}, 3
-; MIPS32: sll	{{.*}}, {{.*}}, 3
-; MIPS32: ori	{{.*}}, {{.*}}, 65535
-; MIPS32: sllv
-; MIPS32: nor
-; MIPS32: andi	{{.*}}, {{.*}}, 65535
-; MIPS32: sllv
-; MIPS32: andi	{{.*}}, {{.*}}, 65535
-; MIPS32: sllv
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: and
-; MIPS32: bne
-; MIPS32: and
-; MIPS32: or
-; MIPS32: sc
-; MIPS32: beq	$zero, {{.*}}, {{.*}}
-; MIPS32: srlv
-; MIPS32: sll	{{.*}}, {{.*}}, 16
-; MIPS32: sra	{{.*}}, {{.*}}, 16
-; MIPS32: sync
-
-define internal i32 @test_atomic_cmpxchg_32(i32 %iptr, i32 %expected,
-                                            i32 %desired) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %old = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %expected,
-                                               i32 %desired, i32 6, i32 6)
-  ret i32 %old
-}
-; CHECK-LABEL: test_atomic_cmpxchg_32
-; CHECK: mov eax,{{.*}}
-; CHECK: lock cmpxchg DWORD PTR [e{{[^a].}}],e{{[^a]}}
-; ARM32-LABEL: test_atomic_cmpxchg_32
-; ARM32: dmb
-; ARM32: ldrex [[V:r[0-9]+]], {{[[]}}[[A:r[0-9]+]]{{[]]}}
-; ARM32: cmp [[V]], {{r[0-9]+}}
-; ARM32: movne [[SUCCESS:r[0-9]+]],
-; ARM32: strexeq [[SUCCESS]], {{r[0-9]+}}, {{[[]}}[[A]]{{[]]}}
-; ARM32: cmp [[SUCCESS]], #0
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_cmpxchg_32
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: bne
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: sync
-
-define internal i64 @test_atomic_cmpxchg_64(i32 %iptr, i64 %expected,
-                                            i64 %desired) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %old = call i64 @llvm.nacl.atomic.cmpxchg.i64(i64* %ptr, i64 %expected,
-                                               i64 %desired, i32 6, i32 6)
-  ret i64 %old
-}
-; CHECK-LABEL: test_atomic_cmpxchg_64
-; CHECK: push ebx
-; CHECK-DAG: mov edx
-; CHECK-DAG: mov eax
-; CHECK-DAG: mov ecx
-; CHECK-DAG: mov ebx
-; CHECK: lock cmpxchg8b QWORD PTR [e{{.[^x]}}+0x0]
-; edx and eax are already the return registers, so they don't actually
-; need to be reshuffled via movs. The next test stores the result
-; somewhere, so in that case they do need to be mov'ed.
-; ARM32-LABEL: test_atomic_cmpxchg_64
-; ARM32: dmb
-; ARM32: ldrexd [[V0:r[0-9]+]], [[V1:r[0-9]+]], {{[[]}}[[A:r[0-9]+]]{{[]]}}
-; ARM32: cmp [[V0]], {{r[0-9]+}}
-; ARM32: cmpeq [[V1]], {{r[0-9]+}}
-; ARM32: movne [[SUCCESS:r[0-9]+]],
-; ARM32: strexdeq [[SUCCESS]], r{{[0-9]+}}, r{{[0-9]+}}, {{[[]}}[[A]]{{[]]}}
-; ARM32: cmp [[SUCCESS]], #0
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_cmpxchg_64
-; MIPS32: sync
-; MIPS32: jal	__sync_val_compare_and_swap_8
-; MIPS32: sync
-
-
-define internal i64 @test_atomic_cmpxchg_64_undef(i32 %iptr, i64 %desired) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %old = call i64 @llvm.nacl.atomic.cmpxchg.i64(i64* %ptr, i64 undef,
-                                               i64 %desired, i32 6, i32 6)
-  ret i64 %old
-}
-; CHECK-LABEL: test_atomic_cmpxchg_64_undef
-; CHECK: lock cmpxchg8b QWORD PTR [e{{.[^x]}}+0x0]
-; ARM32-LABEL: test_atomic_cmpxchg_64_undef
-; ARM32: mov r{{[0-9]+}}, #0
-; ARM32: mov r{{[0-9]+}}, #0
-; ARM32: dmb
-; ARM32: ldrexd [[V0:r[0-9]+]], [[V1:r[0-9]+]], {{[[]}}[[A:r[0-9]+]]{{[]]}}
-; ARM32: cmp [[V0]], {{r[0-9]+}}
-; ARM32: cmpeq [[V1]], {{r[0-9]+}}
-; ARM32: movne [[SUCCESS:r[0-9]+]],
-; ARM32: strexdeq [[SUCCESS]], r{{[0-9]+}}, r{{[0-9]+}}, {{[[]}}[[A]]{{[]]}}
-; ARM32: cmp [[SUCCESS]], #0
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_cmpxchg_64_undef
-; MIPS32: sync
-; MIPS32: jal	__sync_val_compare_and_swap_8
-; MIPS32: sync
-
-; Test a case where %old really does need to be copied out of edx:eax.
-define internal void @test_atomic_cmpxchg_64_store(
-    i32 %ret_iptr, i32 %iptr, i64 %expected, i64 %desired) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %old = call i64 @llvm.nacl.atomic.cmpxchg.i64(i64* %ptr, i64 %expected,
-                                                i64 %desired, i32 6, i32 6)
-  %__6 = inttoptr i32 %ret_iptr to i64*
-  store i64 %old, i64* %__6, align 1
-  ret void
-}
-; CHECK-LABEL: test_atomic_cmpxchg_64_store
-; CHECK: push ebx
-; CHECK-DAG: mov edx
-; CHECK-DAG: mov eax
-; CHECK-DAG: mov ecx
-; CHECK-DAG: mov ebx
-; CHECK: lock cmpxchg8b QWORD PTR [e{{.[^x]}}
-; CHECK-DAG: mov {{.*}},edx
-; CHECK-DAG: mov {{.*}},eax
-; ARM32-LABEL: test_atomic_cmpxchg_64_store
-; ARM32: dmb
-; ARM32: ldrexd [[V0:r[0-9]+]], [[V1:r[0-9]+]], {{[[]}}[[A:r[0-9]+]]{{[]]}}
-; ARM32: cmp [[V0]], {{r[0-9]+}}
-; ARM32: cmpeq [[V1]], {{r[0-9]+}}
-; ARM32: movne [[SUCCESS:r[0-9]+]],
-; ARM32: strexdeq [[SUCCESS]], r{{[0-9]+}}, r{{[0-9]+}}, {{[[]}}[[A]]{{[]]}}
-; ARM32: cmp [[SUCCESS]], #0
-; ARM32: bne
-; ARM32: dmb
-; ARM32: str
-; ARM32: str
-; MIPS32-LABEL: test_atomic_cmpxchg_64_store
-; MIPS32: sync
-; MIPS32: jal	__sync_val_compare_and_swap_8
-; MIPS32: sync
-
-
-; Test with some more register pressure. When we have an alloca, ebp is
-; used to manage the stack frame, so it cannot be used as a register either.
-define internal i64 @test_atomic_cmpxchg_64_alloca(i32 %iptr, i64 %expected,
-                                                   i64 %desired) {
-entry:
-  br label %eblock  ; Disable alloca optimization
-eblock:
-  %alloca_ptr = alloca i8, i32 16, align 16
-  %ptr = inttoptr i32 %iptr to i64*
-  %old = call i64 @llvm.nacl.atomic.cmpxchg.i64(i64* %ptr, i64 %expected,
-                                                i64 %desired, i32 6, i32 6)
-  store i8 0, i8* %alloca_ptr, align 1
-  store i8 1, i8* %alloca_ptr, align 1
-  store i8 2, i8* %alloca_ptr, align 1
-  store i8 3, i8* %alloca_ptr, align 1
-  %__6 = ptrtoint i8* %alloca_ptr to i32
-  call void @use_ptr(i32 %__6)
-  ret i64 %old
-}
-; CHECK-LABEL: test_atomic_cmpxchg_64_alloca
-; CHECK: push ebx
-; CHECK-DAG: mov edx
-; CHECK-DAG: mov eax
-; CHECK-DAG: mov ecx
-; CHECK-DAG: mov ebx
-; Ptr cannot be eax, ebx, ecx, or edx (used up for the expected and desired).
-; It also cannot be ebp since we use that for alloca. Also make sure it's
-; not esp, since that's the stack pointer and mucking with it will break
-; the later use_ptr function call.
-; That pretty much leaves esi, or edi as the only viable registers.
-; CHECK: lock cmpxchg8b QWORD PTR [e{{[ds]}}i]
-; CHECK: call {{.*}} R_{{.*}} use_ptr
-; ARM32-LABEL: test_atomic_cmpxchg_64_alloca
-; ARM32: dmb
-; ARM32: ldrexd [[V0:r[0-9]+]], [[V1:r[0-9]+]], {{[[]}}[[A:r[0-9]+]]{{[]]}}
-; ARM32: cmp [[V0]], {{r[0-9]+}}
-; ARM32: cmpeq [[V1]], {{r[0-9]+}}
-; ARM32: movne [[SUCCESS:r[0-9]+]],
-; ARM32: strexdeq [[SUCCESS]], r{{[0-9]+}}, r{{[0-9]+}}, {{[[]}}[[A]]{{[]]}}
-; ARM32: cmp [[SUCCESS]], #0
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_cmpxchg_64_alloca
-; MIPS32: sync
-; MIPS32: jal	__sync_val_compare_and_swap_8
-; MIPS32: sync
-
-define internal i32 @test_atomic_cmpxchg_32_ignored(i32 %iptr, i32 %expected,
-                                                    i32 %desired) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %ignored = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %expected,
-                                                    i32 %desired, i32 6, i32 6)
-  ret i32 0
-}
-; CHECK-LABEL: test_atomic_cmpxchg_32_ignored
-; CHECK: mov eax,{{.*}}
-; CHECK: lock cmpxchg DWORD PTR [e{{[^a].}}]
-; ARM32-LABEL: test_atomic_cmpxchg_32_ignored
-; ARM32: dmb
-; ARM32: ldrex [[V:r[0-9]+]], {{[[]}}[[A:r[0-9]+]]{{[]]}}
-; ARM32: cmp [[V]], {{r[0-9]+}}
-; ARM32: movne [[SUCCESS:r[0-9]+]],
-; ARM32: strexeq [[SUCCESS]]
-; ARM32: cmp [[SUCCESS]], #0
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_cmpxchg_32_ignored
-; MIPS32: sync
-; MIPS32: ll
-; MIPS32: bne
-; MIPS32: sc
-; MIPS32: beq	{{.*}}, $zero, {{.*}}
-; MIPS32: sync
-
-define internal i64 @test_atomic_cmpxchg_64_ignored(i32 %iptr, i64 %expected,
-                                                    i64 %desired) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %ignored = call i64 @llvm.nacl.atomic.cmpxchg.i64(i64* %ptr, i64 %expected,
-                                                    i64 %desired, i32 6, i32 6)
-  ret i64 0
-}
-; CHECK-LABEL: test_atomic_cmpxchg_64_ignored
-; CHECK: push ebx
-; CHECK-DAG: mov edx
-; CHECK-DAG: mov eax
-; CHECK-DAG: mov ecx
-; CHECK-DAG: mov ebx
-; CHECK: lock cmpxchg8b QWORD PTR [e{{.[^x]}}+0x0]
-; ARM32-LABEL: test_atomic_cmpxchg_64_ignored
-; ARM32: dmb
-; ARM32: ldrexd [[V0:r[0-9]+]], [[V1:r[0-9]+]], {{[[]}}[[A:r[0-9]+]]{{[]]}}
-; ARM32: cmp [[V0]], {{r[0-9]+}}
-; ARM32: cmpeq [[V1]], {{r[0-9]+}}
-; ARM32: movne [[SUCCESS:r[0-9]+]],
-; ARM32: strexdeq [[SUCCESS]], r{{[0-9]+}}, r{{[0-9]+}}, {{[[]}}[[PTR]]{{[]]}}
-; ARM32: cmp [[SUCCESS]], #0
-; ARM32: bne
-; ARM32: dmb
-; MIPS32-LABEL: test_atomic_cmpxchg_64_ignored
-; MIPS32: sync
-; MIPS32: jal	__sync_val_compare_and_swap_8
-; MIPS32: sync
-
-;;;; Fence and is-lock-free.
-
-define internal void @test_atomic_fence() {
-entry:
-  call void @llvm.nacl.atomic.fence(i32 6)
-  ret void
-}
-; CHECK-LABEL: test_atomic_fence
-; CHECK: mfence
-; ARM32-LABEL: test_atomic_fence
-; ARM32: dmb sy
-; MIPS32-LABEL: test_atomic_fence
-; MIPS32: sync
-
-define internal void @test_atomic_fence_all() {
-entry:
-  call void @llvm.nacl.atomic.fence.all()
-  ret void
-}
-; CHECK-LABEL: test_atomic_fence_all
-; CHECK: mfence
-; ARM32-LABEL: test_atomic_fence_all
-; ARM32: dmb sy
-; MIPS32-LABEL: test_atomic_fence_all
-; MIPS32: sync
-
-define internal i32 @test_atomic_is_lock_free(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i8*
-  %i = call i1 @llvm.nacl.atomic.is.lock.free(i32 4, i8* %ptr)
-  %r = zext i1 %i to i32
-  ret i32 %r
-}
-; CHECK-LABEL: test_atomic_is_lock_free
-; CHECK: mov {{.*}},0x1
-; ARM32-LABEL: test_atomic_is_lock_free
-; ARM32: mov {{.*}}, #1
-; MIPS32-LABEL: test_atomic_is_lock_free
-; MIPS32: addiu {{.*}}, $zero, 1
-
-define internal i32 @test_not_lock_free(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i8*
-  %i = call i1 @llvm.nacl.atomic.is.lock.free(i32 7, i8* %ptr)
-  %r = zext i1 %i to i32
-  ret i32 %r
-}
-; CHECK-LABEL: test_not_lock_free
-; CHECK: mov {{.*}},0x0
-; ARM32-LABEL: test_not_lock_free
-; ARM32: mov {{.*}}, #0
-; MIPS32-LABEL: test_not_lock_free
-; MIPS32: addiu {{.*}}, $zero, 0
-
-define internal i32 @test_atomic_is_lock_free_ignored(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i8*
-  %ignored = call i1 @llvm.nacl.atomic.is.lock.free(i32 4, i8* %ptr)
-  ret i32 0
-}
-; CHECK-LABEL: test_atomic_is_lock_free_ignored
-; CHECK: mov {{.*}},0x0
-; This can get optimized out, because it's side-effect-free.
-; O2-LABEL: test_atomic_is_lock_free_ignored
-; O2-NOT: mov {{.*}}, 1
-; O2: mov {{.*}},0x0
-; ARM32O2-LABEL: test_atomic_is_lock_free_ignored
-; ARM32O2-NOT: mov {{.*}}, #1
-; ARM32O2: mov {{.*}}, #0
-; MIPS32O2-LABEL: test_atomic_is_lock_free
-; MIPS32O2-NOT: addiu {{.*}}, $zero, 1
-; MIPS32O2: addiu {{.*}}, $zero, 0
-
-; TODO(jvoung): at some point we can take advantage of the
-; fact that nacl.atomic.is.lock.free will resolve to a constant
-; (which adds DCE opportunities). Once we optimize, the test expectations
-; for this case should change.
-define internal i32 @test_atomic_is_lock_free_can_dce(i32 %iptr, i32 %x,
-                                                      i32 %y) {
-entry:
-  %ptr = inttoptr i32 %iptr to i8*
-  %i = call i1 @llvm.nacl.atomic.is.lock.free(i32 4, i8* %ptr)
-  %i_ext = zext i1 %i to i32
-  %cmp = icmp eq i32 %i_ext, 1
-  br i1 %cmp, label %lock_free, label %not_lock_free
-lock_free:
-  ret i32 %i_ext
-
-not_lock_free:
-  %z = add i32 %x, %y
-  ret i32 %z
-}
-; CHECK-LABEL: test_atomic_is_lock_free_can_dce
-; CHECK: mov {{.*}},0x1
-; CHECK: ret
-; CHECK: add
-; CHECK: ret
-
-; Test the liveness / register allocation properties of the xadd instruction.
-; Make sure we model that the Src register is modified and therefore it can't
-; share a register with an overlapping live range, even if the result of the
-; xadd instruction is unused.
-define internal void @test_xadd_regalloc() {
-entry:
-  br label %body
-body:
-  %i = phi i32 [ 1, %entry ], [ %i_plus_1, %body ]
-  %g = bitcast [4 x i8]* @SzGlobal32 to i32*
-  %unused = call i32 @llvm.nacl.atomic.rmw.i32(i32 1, i32* %g, i32 %i, i32 6)
-  %i_plus_1 = add i32 %i, 1
-  %cmp = icmp eq i32 %i_plus_1, 1001
-  br i1 %cmp, label %done, label %body
-done:
-  ret void
-}
-; O2-LABEL: test_xadd_regalloc
-;;; Some register will be used in the xadd instruction.
-; O2: lock xadd DWORD PTR {{.*}},[[REG:e..]]
-;;; Make sure that register isn't used again, e.g. as the induction variable.
-; O2-NOT: ,[[REG]]
-; O2: ret
-
-; Do the same test for the xchg instruction instead of xadd.
-define internal void @test_xchg_regalloc() {
-entry:
-  br label %body
-body:
-  %i = phi i32 [ 1, %entry ], [ %i_plus_1, %body ]
-  %g = bitcast [4 x i8]* @SzGlobal32 to i32*
-  %unused = call i32 @llvm.nacl.atomic.rmw.i32(i32 6, i32* %g, i32 %i, i32 6)
-  %i_plus_1 = add i32 %i, 1
-  %cmp = icmp eq i32 %i_plus_1, 1001
-  br i1 %cmp, label %done, label %body
-done:
-  ret void
-}
-; O2-LABEL: test_xchg_regalloc
-;;; Some register will be used in the xchg instruction.
-; O2: xchg DWORD PTR {{.*}},[[REG:e..]]
-;;; Make sure that register isn't used again, e.g. as the induction variable.
-; O2-NOT: ,[[REG]]
-; O2: ret
-
-; Same test for cmpxchg.
-define internal void @test_cmpxchg_regalloc() {
-entry:
-  br label %body
-body:
-  %i = phi i32 [ 1, %entry ], [ %i_plus_1, %body ]
-  %g = bitcast [4 x i8]* @SzGlobal32 to i32*
-  %unused = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %g, i32 %i, i32 %i, i32 6, i32 6)
-  %i_plus_1 = add i32 %i, 1
-  %cmp = icmp eq i32 %i_plus_1, 1001
-  br i1 %cmp, label %done, label %body
-done:
-  ret void
-}
-; O2-LABEL: test_cmpxchg_regalloc
-;;; eax and some other register will be used in the cmpxchg instruction.
-; O2: lock cmpxchg DWORD PTR {{.*}},[[REG:e..]]
-;;; Make sure eax isn't used again, e.g. as the induction variable.
-; O2-NOT: ,eax
-; O2: ret
-
-; Same test for cmpxchg8b.
-define internal void @test_cmpxchg8b_regalloc() {
-entry:
-  br label %body
-body:
-  %i = phi i32 [ 1, %entry ], [ %i_plus_1, %body ]
-  %g = bitcast [8 x i8]* @SzGlobal64 to i64*
-  %i_64 = zext i32 %i to i64
-  %unused = call i64 @llvm.nacl.atomic.cmpxchg.i64(i64* %g, i64 %i_64, i64 %i_64, i32 6, i32 6)
-  %i_plus_1 = add i32 %i, 1
-  %cmp = icmp eq i32 %i_plus_1, 1001
-  br i1 %cmp, label %done, label %body
-done:
-  ret void
-}
-; O2-LABEL: test_cmpxchg8b_regalloc
-;;; eax and some other register will be used in the cmpxchg instruction.
-; O2: lock cmpxchg8b QWORD PTR
-;;; Make sure eax/ecx/edx/ebx aren't used again, e.g. as the induction variable.
-; O2-NOT: ,{{eax|ecx|edx|ebx}}
-; O2: pop ebx
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/nacl-mem-intrinsics.ll b/third_party/subzero/tests_lit/llvm2ice_tests/nacl-mem-intrinsics.ll
deleted file mode 100644
index 570edda..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/nacl-mem-intrinsics.ll
+++ /dev/null
@@ -1,583 +0,0 @@
-; This tests the NaCl intrinsics memset, memcpy and memmove.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 --sandbox -i %s --args -O2 \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 --sandbox -i %s --args -Om1 --fmem-intrin-opt \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 --sandbox -i %s --args -Om1 \
-; RUN:   | %if --need=target_X8632 --command FileCheck --check-prefix OM1 %s
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj --disassemble --target arm32 \
-; RUN:   -i %s --args -O2 \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target mips32\
-; RUN:   -i %s --args -Om1 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-declare void @llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
-declare void @llvm.memmove.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
-declare void @llvm.memset.p0i8.i32(i8*, i8, i32, i32, i1)
-
-define internal void @test_memcpy(i32 %iptr_dst, i32 %iptr_src, i32 %len) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = inttoptr i32 %iptr_src to i8*
-  call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 %len, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memcpy
-; CHECK: call {{.*}} R_{{.*}} memcpy
-; OM1-LABEL: test_memcpy
-; OM1: call  {{.*}} memcpy
-; ARM32-LABEL: test_memcpy
-; ARM32: bl {{.*}} memcpy
-; MIPS32-LABEL: test_memcpy
-; MIPS32: jal {{.*}} memcpy
-
-define internal void @test_memcpy_long_const_len(i32 %iptr_dst, i32 %iptr_src) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = inttoptr i32 %iptr_src to i8*
-  call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 4876, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memcpy_long_const_len
-; CHECK: call {{.*}} R_{{.*}} memcpy
-; OM1-LABEL: test_memcpy_long_const_len
-; OM1: call {{.*}} memcpy
-; ARM32-LABEL: test_memcpy_long_const_len
-; ARM32: bl {{.*}} memcpy
-; MIPS32-LABEL: test_memcpy_long_const_len
-; MIPS32: jal {{.*}} memcpy
-
-define internal void @test_memcpy_very_small_const_len(i32 %iptr_dst,
-                                                       i32 %iptr_src) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = inttoptr i32 %iptr_src to i8*
-  call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 2, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memcpy_very_small_const_len
-; CHECK: mov [[REG:[^,]*]],WORD PTR [{{.*}}]
-; CHECK-NEXT: mov WORD PTR [{{.*}}],[[REG]]
-; CHECK-NOT: mov
-; OM1-LABEL: test_memcpy_very_small_const_len
-; OM1: call {{.*}} memcpy
-; ARM32-LABEL: test_memcpy_very_small_const_len
-; ARM32: bl {{.*}} memcpy
-; MIPS32-LABEL: test_memcpy_very_small_const_len
-; MIPS32: jal {{.*}} memcpy
-
-define internal void @test_memcpy_const_len_3(i32 %iptr_dst, i32 %iptr_src) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = inttoptr i32 %iptr_src to i8*
-  call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 3, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memcpy_const_len_3
-; CHECK: mov [[REG:[^,]*]],WORD PTR [{{.*}}]
-; CHECK-NEXT: mov WORD PTR [{{.*}}],[[REG]]
-; CHECK-NEXT: mov [[REG:[^,]*]],BYTE PTR [{{.*}}+0x2]
-; CHECK-NEXT: mov BYTE PTR [{{.*}}+0x2],[[REG]]
-; CHECK-NOT: mov
-; OM1-LABEL: test_memcpy_const_len_3
-; OM1: call {{.*}} memcpy
-; ARM32-LABEL: test_memcpy_const_len_3
-; ARM32: bl {{.*}} memcpy
-; MIPS32-LABEL: test_memcpy_const_len_3
-; MIPS32: jal {{.*}} memcpy
-
-define internal void @test_memcpy_mid_const_len(i32 %iptr_dst, i32 %iptr_src) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = inttoptr i32 %iptr_src to i8*
-  call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 9, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memcpy_mid_const_len
-; CHECK: movq [[REG:xmm[0-9]+]],QWORD PTR [{{.*}}]
-; CHECK-NEXT: movq QWORD PTR [{{.*}}],[[REG]]
-; CHECK-NEXT: mov [[REG:[^,]*]],BYTE PTR [{{.*}}+0x8]
-; CHECK-NEXT: mov BYTE PTR [{{.*}}+0x8],[[REG]]
-; CHECK-NOT: mov
-; OM1-LABEL: test_memcpy_mid_const_len
-; OM1: call {{.*}} memcpy
-; ARM32-LABEL: test_memcpy_mid_const_len
-; ARM32: bl {{.*}} memcpy
-; MIPS32-LABEL: test_memcpy_mid_const_len
-; MIPS32: jal {{.*}} memcpy
-
-define internal void @test_memcpy_mid_const_len_overlap(i32 %iptr_dst,
-                                                        i32 %iptr_src) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = inttoptr i32 %iptr_src to i8*
-  call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 15, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memcpy_mid_const_len_overlap
-; CHECK: movq [[REG:xmm[0-9]+]],QWORD PTR [{{.*}}]
-; CHECK-NEXT: movq QWORD PTR [{{.*}}],[[REG]]
-; CHECK-NEXT: movq [[REG:xmm[0-9]+]],QWORD PTR [{{.*}}+0x7]
-; CHECK-NEXT: movq QWORD PTR [{{.*}}+0x7],[[REG]]
-; CHECK-NOT: mov
-; OM1-LABEL: test_memcpy_mid_const_len_overlap
-; OM1: call {{.*}} memcpy
-; ARM32-LABEL: test_memcpy_mid_const_len_overlap
-; ARM32: bl {{.*}} memcpy
-; MIPS32-LABEL: test_memcpy_mid_const_len_overlap
-; MIPS32: jal {{.*}} memcpy
-
-define internal void @test_memcpy_big_const_len_overlap(i32 %iptr_dst,
-                                                        i32 %iptr_src) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = inttoptr i32 %iptr_src to i8*
-  call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 30, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memcpy_big_const_len_overlap
-; CHECK: movups [[REG:xmm[0-9]+]],XMMWORD PTR [{{.*}}]
-; CHECK-NEXT: movups XMMWORD PTR [{{.*}}],[[REG]]
-; CHECK-NEXT: movups [[REG:xmm[0-9]+]],XMMWORD PTR [{{.*}}+0xe]
-; CHECK-NEXT: movups XMMWORD PTR [{{.*}}+0xe],[[REG]]
-; CHECK-NOT: mov
-; OM1-LABEL: test_memcpy_big_const_len_overlap
-; OM1: call {{.*}} memcpy
-; ARM32-LABEL: test_memcpy_big_const_len_overlap
-; ARM32: bl {{.*}} memcpy
-; MIPS32-LABEL: test_memcpy_big_const_len_overlap
-; MIPS32: jal {{.*}} memcpy
-
-define internal void @test_memcpy_large_const_len(i32 %iptr_dst,
-                                                  i32 %iptr_src) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = inttoptr i32 %iptr_src to i8*
-  call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 33, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memcpy_large_const_len
-; CHECK: movups [[REG:xmm[0-9]+]],XMMWORD PTR [{{.*}}+0x10]
-; CHECK-NEXT: movups XMMWORD PTR [{{.*}}+0x10],[[REG]]
-; CHECK-NEXT: movups [[REG:xmm[0-9]+]],XMMWORD PTR [{{.*}}]
-; CHECK-NEXT: movups XMMWORD PTR [{{.*}}],[[REG]]
-; CHECK-NEXT: mov [[REG:[^,]*]],BYTE PTR [{{.*}}+0x20]
-; CHECK-NEXT: mov BYTE PTR [{{.*}}+0x20],[[REG]]
-; CHECK-NOT: mov
-; OM1-LABEL: test_memcpy_large_const_len
-; OM1: call {{.*}} memcpy
-; ARM32-LABEL: test_memcpy_large_const_len
-; ARM32: bl {{.*}} memcpy
-; MIPS32-LABEL: test_memcpy_large_const_len
-; MIPS32: jal {{.*}} memcpy
-
-define internal void @test_memmove(i32 %iptr_dst, i32 %iptr_src, i32 %len) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = inttoptr i32 %iptr_src to i8*
-  call void @llvm.memmove.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 %len, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memmove
-; CHECK: call {{.*}} R_{{.*}} memmove
-; OM1-LABEL: test_memmove
-; OM1: call {{.*}} memmove
-; ARM32-LABEL: test_memmove
-; ARM32: bl {{.*}} memmove
-; MIPS32-LABEL: test_memmove
-; MIPS32: jal {{.*}} memmove
-
-define internal void @test_memmove_long_const_len(i32 %iptr_dst,
-                                                  i32 %iptr_src) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = inttoptr i32 %iptr_src to i8*
-  call void @llvm.memmove.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 4876, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memmove_long_const_len
-; CHECK: call {{.*}} R_{{.*}} memmove
-; OM1-LABEL: test_memmove_long_const_len
-; OM1: call {{.*}} memmove
-; ARM32-LABEL: test_memmove_long_const_len
-; ARM32: bl {{.*}} memmove
-; MIPS32-LABEL: test_memmove_long_const_len
-; MIPS32: jal {{.*}} memmove
-
-define internal void @test_memmove_very_small_const_len(i32 %iptr_dst,
-                                                        i32 %iptr_src) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = inttoptr i32 %iptr_src to i8*
-  call void @llvm.memmove.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 2, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memmove_very_small_const_len
-; CHECK: mov [[REG:[^,]*]],WORD PTR [{{.*}}]
-; CHECK-NEXT: mov WORD PTR [{{.*}}],[[REG]]
-; CHECK-NOT: mov
-; OM1-LABEL: test_memmove_very_small_const_len
-; OM1: call {{.*}} memmove
-; ARM32-LABEL: test_memmove_very_small_const_len
-; ARM32: bl {{.*}} memmove
-; MIPS32-LABEL: test_memmove_very_small_const_len
-; MIPS32: jal {{.*}} memmove
-
-define internal void @test_memmove_const_len_3(i32 %iptr_dst, i32 %iptr_src) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = inttoptr i32 %iptr_src to i8*
-  call void @llvm.memmove.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 3, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memmove_const_len_3
-; CHECK: mov [[REG0:[^,]*]],WORD PTR [{{.*}}]
-; CHECK-NEXT: mov [[REG1:[^,]*]],BYTE PTR [{{.*}}+0x2]
-; CHECK-NEXT: mov WORD PTR [{{.*}}],[[REG0]]
-; CHECK-NEXT: mov BYTE PTR [{{.*}}+0x2],[[REG1]]
-; CHECK-NOT: mov
-; OM1-LABEL: test_memmove_const_len_3
-; OM1: call {{.*}} memmove
-; ARM32-LABEL: test_memmove_const_len_3
-; ARM32: bl {{.*}} memmove
-; MIPS32-LABEL: test_memmove_const_len_3
-; MIPS32: jal {{.*}} memmove
-
-define internal void @test_memmove_mid_const_len(i32 %iptr_dst, i32 %iptr_src) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = inttoptr i32 %iptr_src to i8*
-  call void @llvm.memmove.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 9, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memmove_mid_const_len
-; CHECK: movq [[REG0:xmm[0-9]+]],QWORD PTR [{{.*}}]
-; CHECK-NEXT: mov [[REG1:[^,]*]],BYTE PTR [{{.*}}+0x8]
-; CHECK-NEXT: movq QWORD PTR [{{.*}}],[[REG0]]
-; CHECK-NEXT: mov BYTE PTR [{{.*}}+0x8],[[REG1]]
-; CHECK-NOT: mov
-; OM1-LABEL: test_memmove_mid_const_len
-; OM1: call {{.*}} memmove
-; ARM32-LABEL: test_memmove_mid_const_len
-; ARM32: bl {{.*}} memmove
-; MIPS32-LABEL: test_memmove_mid_const_len
-; MIPS32: jal {{.*}} memmove
-
-define internal void @test_memmove_mid_const_len_overlap(i32 %iptr_dst,
-                                                         i32 %iptr_src) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = inttoptr i32 %iptr_src to i8*
-  call void @llvm.memmove.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 15, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memmove_mid_const_len_overlap
-; CHECK: movq [[REG0:xmm[0-9]+]],QWORD PTR [{{.*}}]
-; CHECK-NEXT: movq [[REG1:xmm[0-9]+]],QWORD PTR [{{.*}}+0x7]
-; CHECK-NEXT: movq QWORD PTR [{{.*}}],[[REG0]]
-; CHECK-NEXT: movq QWORD PTR [{{.*}}+0x7],[[REG1]]
-; CHECK-NOT: mov
-; OM1-LABEL: test_memmove_mid_const_len_overlap
-; OM1: call {{.*}} memmove
-; ARM32-LABEL: test_memmove_mid_const_len_overlap
-; ARM32: bl {{.*}} memmove
-; MIPS32-LABEL: test_memmove_mid_const_len_overlap
-; MIPS32: jal {{.*}} memmove
-
-define internal void @test_memmove_big_const_len_overlap(i32 %iptr_dst,
-                                                         i32 %iptr_src) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = inttoptr i32 %iptr_src to i8*
-  call void @llvm.memmove.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 30, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memmove_big_const_len_overlap
-; CHECK: movups [[REG0:xmm[0-9]+]],XMMWORD PTR [{{.*}}]
-; CHECK-NEXT: movups [[REG1:xmm[0-9]+]],XMMWORD PTR [{{.*}}+0xe]
-; CHECK-NEXT: movups XMMWORD PTR [{{.*}}],[[REG0]]
-; CHECK-NEXT: movups XMMWORD PTR [{{.*}}+0xe],[[REG1]]
-; CHECK-NOT: mov
-; OM1-LABEL: test_memmove_big_const_len_overlap
-; OM1: call {{.*}} memmove
-; ARM32-LABEL: test_memmove_big_const_len_overlap
-; ARM32: bl {{.*}} memmove
-; MIPS32-LABEL: test_memmove_big_const_len_overlap
-; MIPS32: jal {{.*}} memmove
-
-define internal void @test_memmove_large_const_len(i32 %iptr_dst,
-                                                   i32 %iptr_src) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = inttoptr i32 %iptr_src to i8*
-  call void @llvm.memmove.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 33, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memmove_large_const_len
-; CHECK: movups [[REG0:xmm[0-9]+]],XMMWORD PTR [{{.*}}+0x10]
-; CHECK-NEXT: movups [[REG1:xmm[0-9]+]],XMMWORD PTR [{{.*}}]
-; CHECK-NEXT: mov [[REG2:[^,]*]],BYTE PTR [{{.*}}+0x20]
-; CHECK-NEXT: movups XMMWORD PTR [{{.*}}+0x10],[[REG0]]
-; CHECK-NEXT: movups XMMWORD PTR [{{.*}}],[[REG1]]
-; CHECK-NEXT: mov BYTE PTR [{{.*}}+0x20],[[REG2]]
-; CHECK-NOT: mov
-; OM1-LABEL: test_memmove_large_const_len
-; OM1: call {{.*}} memmove
-; ARM32-LABEL: test_memmove_large_const_len
-; ARM32: bl {{.*}} memmove
-; MIPS32-LABEL: test_memmove_large_const_len
-; MIPS32: jal {{.*}} memmove
-
-define internal void @test_memset(i32 %iptr_dst, i32 %wide_val, i32 %len) {
-entry:
-  %val = trunc i32 %wide_val to i8
-  %dst = inttoptr i32 %iptr_dst to i8*
-  call void @llvm.memset.p0i8.i32(i8* %dst, i8 %val,
-                                  i32 %len, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memset
-; CHECK: movzx
-; CHECK: call {{.*}} R_{{.*}} memset
-; OM1-LABEL: test_memset
-; OM1: movzx
-; OM1: call {{.*}} R_{{.*}} memset
-; ARM32-LABEL: test_memset
-; ARM32: uxtb
-; ARM32: bl {{.*}} memset
-; MIPS32-LABEL: test_memset
-; MIPS32: jal {{.*}} memset
-
-define internal void @test_memset_const_len_align(i32 %iptr_dst,
-                                                  i32 %wide_val) {
-entry:
-  %val = trunc i32 %wide_val to i8
-  %dst = inttoptr i32 %iptr_dst to i8*
-  call void @llvm.memset.p0i8.i32(i8* %dst, i8 %val,
-                                  i32 32, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memset_const_len_align
-; CHECK: movzx
-; CHECK: call {{.*}} R_{{.*}} memset
-; OM1-LABEL: test_memset_const_len_align
-; OM1: movzx
-; OM1: call {{.*}} R_{{.*}} memset
-; ARM32-LABEL: test_memset_const_len_align
-; ARM32: uxtb
-; ARM32: bl {{.*}} memset
-; MIPS32-LABEL: test_memset_const_len_align
-; MIPS32: jal {{.*}} memset
-
-define internal void @test_memset_long_const_len_zero_val_align(
-    i32 %iptr_dst) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  call void @llvm.memset.p0i8.i32(i8* %dst, i8 0,
-                                  i32 4876, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memset_long_const_len_zero_val_align
-; CHECK: call {{.*}} R_{{.*}} memset
-; OM1-LABEL: test_memset_long_const_len_zero_val_align
-; OM1: call {{.*}} R_{{.*}} memset
-; ARM32-LABEL: test_memset_long_const_len_zero_val_align
-; ARM32: uxtb
-; ARM32: bl {{.*}} memset
-; MIPS32-LABEL: test_memset_long_const_len_zero_val_align
-; MIPS32: jal {{.*}} memset
-
-define internal void @test_memset_const_val(i32 %iptr_dst, i32 %len) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  call void @llvm.memset.p0i8.i32(i8* %dst, i8 0, i32 %len, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memset_const_val
-; CHECK-NOT: movzx
-; CHECK: call {{.*}} R_{{.*}} memset
-; OM1-LABEL: test_memset_const_val
-; OM1: call {{.*}} R_{{.*}} memset
-; ARM32-LABEL: test_memset_const_val
-; ARM32: uxtb
-; ARM32: bl {{.*}} memset
-; MIPS32-LABEL: test_memset_const_val
-; MIPS32: jal {{.*}} memset
-
-define internal void @test_memset_const_val_len_very_small(i32 %iptr_dst) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  call void @llvm.memset.p0i8.i32(i8* %dst, i8 10, i32 2, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memset_const_val_len_very_small
-; CHECK: mov WORD PTR [{{.*}}],0xa0a
-; CHECK-NOT: mov
-; OM1-LABEL: test_memset_const_val_len_very_small
-; OM1: call {{.*}} R_{{.*}} memset
-; ARM32-LABEL: test_memset_const_val_len_very_small
-; ARM32: uxtb
-; ARM32: bl {{.*}} memset
-; MIPS32-LABEL: test_memset_const_val_len_very_small
-; MIPS32: jal {{.*}} memset
-
-define internal void @test_memset_const_val_len_3(i32 %iptr_dst) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  call void @llvm.memset.p0i8.i32(i8* %dst, i8 16, i32 3, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memset_const_val_len_3
-; CHECK: mov WORD PTR [{{.*}}],0x1010
-; CHECK-NEXT: mov BYTE PTR [{{.*}}+0x2],0x10
-; CHECK-NOT: mov
-; OM1-LABEL: test_memset_const_val_len_3
-; OM1: call {{.*}} R_{{.*}} memset
-; ARM32-LABEL: test_memset_const_val_len_3
-; ARM32: uxtb
-; ARM32: bl {{.*}} memset
-; MIPS32-LABEL: test_memset_const_val_len_3
-; MIPS32: jal {{.*}} memset
-
-define internal void @test_memset_const_val_len_mid(i32 %iptr_dst) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  call void @llvm.memset.p0i8.i32(i8* %dst, i8 32, i32 9, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memset_const_val_len_mid
-; CHECK: mov DWORD PTR [{{.*}}+0x4],0x20202020
-; CHECK: mov DWORD PTR [{{.*}}],0x20202020
-; CHECK-NEXT: mov BYTE PTR [{{.*}}+0x8],0x20
-; CHECK-NOT: mov
-; OM1-LABEL: test_memset_const_val_len_mid
-; OM1: call {{.*}} R_{{.*}} memset
-; ARM32-LABEL: test_memset_const_val_len_mid
-; ARM32: uxtb
-; ARM32: bl {{.*}} memset
-; MIPS32-LABEL: test_memset_const_val_len_mid
-; MIPS32: jal {{.*}} memset
-
-; Same as above, but with a negative value.
-define internal void @test_memset_const_neg_val_len_mid(i32 %iptr_dst) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  call void @llvm.memset.p0i8.i32(i8* %dst, i8 -128, i32 9, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memset_const_neg_val_len_mid
-; CHECK: mov DWORD PTR [{{.*}}+0x4],0x80808080
-; CHECK: mov DWORD PTR [{{.*}}],0x80808080
-; CHECK-NEXT: mov BYTE PTR [{{.*}}+0x8],0x80
-; CHECK-NOT: mov
-; OM1-LABEL: test_memset_const_neg_val_len_mid
-; OM1: call {{.*}} R_{{.*}} memset
-; ARM32-LABEL: test_memset_const_neg_val_len_mid
-; ARM32: uxtb
-; ARM32: bl {{.*}} memset
-; MIPS32-LABEL: test_memset_const_neg_val_len_mid
-; MIPS32: jal {{.*}} memset
-
-define internal void @test_memset_zero_const_len_small(i32 %iptr_dst) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  call void @llvm.memset.p0i8.i32(i8* %dst, i8 0, i32 12, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memset_zero_const_len_small
-; CHECK: pxor [[ZERO:xmm[0-9]+]],[[ZERO]]
-; CHECK-NEXT: movq QWORD PTR [{{.*}}],[[ZERO]]
-; CHECK-NEXT: mov DWORD PTR [{{.*}}+0x8],0x0
-; CHECK-NOT: mov
-; OM1-LABEL: test_memset_zero_const_len_small
-; OM1: call {{.*}} R_{{.*}} memset
-; ARM32-LABEL: test_memset_zero_const_len_small
-; ARM32: uxtb
-; ARM32: bl {{.*}} memset
-; MIPS32-LABEL: test_memset_zero_const_len_small
-; MIPS32: jal {{.*}} memset
-
-define internal void @test_memset_zero_const_len_small_overlap(i32 %iptr_dst) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  call void @llvm.memset.p0i8.i32(i8* %dst, i8 0, i32 15, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memset_zero_const_len_small_overlap
-; CHECK: pxor [[ZERO:xmm[0-9]+]],[[ZERO]]
-; CHECK-NEXT: movq QWORD PTR [{{.*}}],[[ZERO]]
-; CHECK-NEXT: movq QWORD PTR [{{.*}}+0x7],[[ZERO]]
-; CHECK-NOT: mov
-; OM1-LABEL: test_memset_zero_const_len_small_overlap
-; OM1: call {{.*}} R_{{.*}} memset
-; ARM32-LABEL: test_memset_zero_const_len_small_overlap
-; ARM32: uxtb
-; ARM32: bl {{.*}} memset
-; MIPS32-LABEL: test_memset_zero_const_len_small_overlap
-; MIPS32: jal {{.*}} memset
-
-define internal void @test_memset_zero_const_len_big_overlap(i32 %iptr_dst) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  call void @llvm.memset.p0i8.i32(i8* %dst, i8 0, i32 30, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memset_zero_const_len_big_overlap
-; CHECK: pxor [[ZERO:xmm[0-9]+]],[[ZERO]]
-; CHECK-NEXT: movups XMMWORD PTR [{{.*}}],[[ZERO]]
-; CHECK-NEXT: movups XMMWORD PTR [{{.*}}+0xe],[[ZERO]]
-; CHECK-NOT: mov
-; OM1-LABEL: test_memset_zero_const_len_big_overlap
-; OM1: call {{.*}} R_{{.*}} memset
-; ARM32-LABEL: test_memset_zero_const_len_big_overlap
-; ARM32: uxtb
-; ARM32: bl {{.*}} memset
-; MIPS32-LABEL: test_memset_zero_const_len_big_overlap
-; MIPS32: jal {{.*}} memset
-
-define internal void @test_memset_zero_const_len_large(i32 %iptr_dst) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  call void @llvm.memset.p0i8.i32(i8* %dst, i8 0, i32 33, i32 1, i1 false)
-  ret void
-}
-; CHECK-LABEL: test_memset_zero_const_len_large
-; CHECK: pxor [[ZERO:xmm[0-9]+]],[[ZERO]]
-; CHECK-NEXT: movups XMMWORD PTR [{{.*}}+0x10],[[ZERO]]
-; CHECK-NEXT: movups XMMWORD PTR [{{.*}}],[[ZERO]]
-; CHECK-NEXT: mov BYTE PTR [{{.*}}+0x20],0x0
-; CHECK-NOT: mov
-; OM1-LABEL: test_memset_zero_const_len_large
-; OM1: call {{.*}} R_{{.*}} memset
-; ARM32-LABEL: test_memset_zero_const_len_large
-; ARM32: uxtb
-; ARM32: bl {{.*}} memset
-; MIPS32-LABEL: test_memset_zero_const_len_large
-; MIPS32: jal {{.*}} memset
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/nacl-other-intrinsics.ll b/third_party/subzero/tests_lit/llvm2ice_tests/nacl-other-intrinsics.ll
deleted file mode 100644
index 003fe38..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/nacl-other-intrinsics.ll
+++ /dev/null
@@ -1,714 +0,0 @@
-; This tests the NaCl intrinsics not related to atomic operations.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 --sandbox -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 --sandbox -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; Do another run w/ O2 and a different check-prefix (otherwise O2 and Om1
-; share the same "CHECK" prefix). This separate run helps check that
-; some code is optimized out.
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 --sandbox -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 \
-; RUN:   --command FileCheck --check-prefix=CHECKO2REM %s
-
-; Do O2 runs without -sandbox to make sure llvm.nacl.read.tp gets
-; lowered to __nacl_read_tp instead of gs:0x0.
-; We also know that because it's O2, it'll have the O2REM optimizations.
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 \
-; RUN:   --command FileCheck --check-prefix=CHECKO2UNSANDBOXEDREM %s
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj --disassemble --target arm32 \
-; RUN:   -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target mips32\
-; RUN:   -i %s --args -Om1 --skip-unimplemented \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-declare i8* @llvm.nacl.read.tp()
-declare void @llvm.nacl.longjmp(i8*, i32)
-declare i32 @llvm.nacl.setjmp(i8*)
-declare float @llvm.sqrt.f32(float)
-declare double @llvm.sqrt.f64(double)
-declare float @llvm.fabs.f32(float)
-declare double @llvm.fabs.f64(double)
-declare <4 x float> @llvm.fabs.v4f32(<4 x float>)
-declare void @llvm.trap()
-declare i16 @llvm.bswap.i16(i16)
-declare i32 @llvm.bswap.i32(i32)
-declare i64 @llvm.bswap.i64(i64)
-declare i32 @llvm.ctlz.i32(i32, i1)
-declare i64 @llvm.ctlz.i64(i64, i1)
-declare i32 @llvm.cttz.i32(i32, i1)
-declare i64 @llvm.cttz.i64(i64, i1)
-declare i32 @llvm.ctpop.i32(i32)
-declare i64 @llvm.ctpop.i64(i64)
-declare i8* @llvm.stacksave()
-declare void @llvm.stackrestore(i8*)
-
-define internal i32 @test_nacl_read_tp() {
-entry:
-  %ptr = call i8* @llvm.nacl.read.tp()
-  %__1 = ptrtoint i8* %ptr to i32
-  ret i32 %__1
-}
-; CHECK-LABEL: test_nacl_read_tp
-; CHECK: mov e{{.*}},{{(DWORD PTR )?}}gs:0x0
-; CHECKO2REM-LABEL: test_nacl_read_tp
-; CHECKO2REM: mov e{{.*}},{{(DWORD PTR )?}}gs:0x0
-; CHECKO2UNSANDBOXEDREM-LABEL: test_nacl_read_tp
-; CHECKO2UNSANDBOXEDREM: call {{.*}} R_{{.*}} __nacl_read_tp
-; MIPS32-LABEL: test_nacl_read_tp
-; MIPS32: jal {{.*}} __nacl_read_tp
-
-define internal i32 @test_nacl_read_tp_more_addressing() {
-entry:
-  %ptr = call i8* @llvm.nacl.read.tp()
-  %__1 = ptrtoint i8* %ptr to i32
-  %x = add i32 %__1, %__1
-  %__3 = inttoptr i32 %x to i32*
-  %v = load i32, i32* %__3, align 1
-  %v_add = add i32 %v, 1
-
-  %ptr2 = call i8* @llvm.nacl.read.tp()
-  %__6 = ptrtoint i8* %ptr2 to i32
-  %y = add i32 %__6, 4
-  %__8 = inttoptr i32 %y to i32*
-  %v_add2 = add i32 %v, 4
-  store i32 %v_add2, i32* %__8, align 1
-  ret i32 %v
-}
-; CHECK-LABEL: test_nacl_read_tp_more_addressing
-; CHECK: mov e{{.*}},{{(DWORD PTR )?}}gs:0x0
-; CHECK: mov e{{.*}},{{(DWORD PTR )?}}gs:0x0
-; CHECKO2REM-LABEL: test_nacl_read_tp_more_addressing
-; CHECKO2REM: mov e{{.*}},{{(DWORD PTR )?}}gs:0x0
-; CHECKO2REM: mov e{{.*}},{{(DWORD PTR )?}}gs:0x0
-; CHECKO2UNSANDBOXEDREM-LABEL: test_nacl_read_tp_more_addressing
-; CHECKO2UNSANDBOXEDREM: call {{.*}} R_{{.*}} __nacl_read_tp
-; CHECKO2UNSANDBOXEDREM: call {{.*}} R_{{.*}} __nacl_read_tp
-; MIPS32-LABEL: test_nacl_read_tp_more_addressing
-; MIPS32: jal {{.*}} __nacl_read_tp
-
-define internal i32 @test_nacl_read_tp_dead(i32 %a) {
-entry:
-  %ptr = call i8* @llvm.nacl.read.tp()
-  ; Not actually using the result of nacl read tp call.
-  ; In O2 mode this should be DCE'ed.
-  ret i32 %a
-}
-; Consider nacl.read.tp side-effect free, so it can be eliminated.
-; CHECKO2REM-LABEL: test_nacl_read_tp_dead
-; CHECKO2REM-NOT: mov e{{.*}}, DWORD PTR gs:0x0
-; CHECKO2UNSANDBOXEDREM-LABEL: test_nacl_read_tp_dead
-; CHECKO2UNSANDBOXEDREM-NOT: call {{.*}} R_{{.*}} __nacl_read_tp
-; MIPS32-LABEL: test_nacl_read_tp_dead
-; MIPS32: jal {{.*}} __nacl_read_tp
-
-define internal i32 @test_setjmplongjmp(i32 %iptr_env) {
-entry:
-  %env = inttoptr i32 %iptr_env to i8*
-  %i = call i32 @llvm.nacl.setjmp(i8* %env)
-  %r1 = icmp eq i32 %i, 0
-  br i1 %r1, label %Zero, label %NonZero
-Zero:
-  ; Redundant inttoptr, to make --pnacl cast-eliding/re-insertion happy.
-  %env2 = inttoptr i32 %iptr_env to i8*
-  call void @llvm.nacl.longjmp(i8* %env2, i32 1)
-  ret i32 0
-NonZero:
-  ret i32 1
-}
-; CHECK-LABEL: test_setjmplongjmp
-; CHECK: call {{.*}} R_{{.*}} setjmp
-; CHECK: call {{.*}} R_{{.*}} longjmp
-; CHECKO2REM-LABEL: test_setjmplongjmp
-; CHECKO2REM: call {{.*}} R_{{.*}} setjmp
-; CHECKO2REM: call {{.*}} R_{{.*}} longjmp
-; ARM32-LABEL: test_setjmplongjmp
-; ARM32: bl {{.*}} setjmp
-; ARM32: bl {{.*}} longjmp
-; MIPS32-LABEL: test_setjmplongjmp
-; MIPS32: jal {{.*}} setjmp
-; MIPS32: jal {{.*}} longjmp
-
-define internal i32 @test_setjmp_unused(i32 %iptr_env, i32 %i_other) {
-entry:
-  %env = inttoptr i32 %iptr_env to i8*
-  %i = call i32 @llvm.nacl.setjmp(i8* %env)
-  ret i32 %i_other
-}
-; Don't consider setjmp side-effect free, so it's not eliminated if
-; result unused.
-; CHECKO2REM-LABEL: test_setjmp_unused
-; CHECKO2REM: call {{.*}} R_{{.*}} setjmp
-; MIPS32-LABEL: test_setjmp_unused
-; MIPS32: jal {{.*}} setjmp
-
-define internal float @test_sqrt_float(float %x, i32 %iptr) {
-entry:
-  %r = call float @llvm.sqrt.f32(float %x)
-  %r2 = call float @llvm.sqrt.f32(float %r)
-  %r3 = call float @llvm.sqrt.f32(float -0.0)
-  %r4 = fadd float %r2, %r3
-  ret float %r4
-}
-; CHECK-LABEL: test_sqrt_float
-; CHECK: sqrtss xmm{{.*}}
-; CHECK: sqrtss xmm{{.*}}
-; CHECK: sqrtss xmm{{.*}},DWORD PTR
-; ARM32-LABEL: test_sqrt_float
-; ARM32: vsqrt.f32
-; ARM32: vsqrt.f32
-; ARM32: vsqrt.f32
-; ARM32: vadd.f32
-; MIPS32-LABEL: test_sqrt_float
-; MIPS32: sqrt.s
-; MIPS32: sqrt.s
-; MIPS32: sqrt.s
-; MIPS32: add.s
-
-define internal float @test_sqrt_float_mergeable_load(float %x, i32 %iptr) {
-entry:
-  %__2 = inttoptr i32 %iptr to float*
-  %y = load float, float* %__2, align 4
-  %r5 = call float @llvm.sqrt.f32(float %y)
-  %r6 = fadd float %x, %r5
-  ret float %r6
-}
-; CHECK-LABEL: test_sqrt_float_mergeable_load
-; We could fold the load and the sqrt into one operation, but the
-; current folding only handles load + arithmetic op. The sqrt inst
-; is considered an intrinsic call and not an arithmetic op.
-; CHECK: sqrtss xmm{{.*}}
-; ARM32-LABEL: test_sqrt_float_mergeable_load
-; ARM32: vldr s{{.*}}
-; ARM32: vsqrt.f32
-
-define internal double @test_sqrt_double(double %x, i32 %iptr) {
-entry:
-  %r = call double @llvm.sqrt.f64(double %x)
-  %r2 = call double @llvm.sqrt.f64(double %r)
-  %r3 = call double @llvm.sqrt.f64(double -0.0)
-  %r4 = fadd double %r2, %r3
-  ret double %r4
-}
-; CHECK-LABEL: test_sqrt_double
-; CHECK: sqrtsd xmm{{.*}}
-; CHECK: sqrtsd xmm{{.*}}
-; CHECK: sqrtsd xmm{{.*}},QWORD PTR
-; ARM32-LABEL: test_sqrt_double
-; ARM32: vsqrt.f64
-; ARM32: vsqrt.f64
-; ARM32: vsqrt.f64
-; ARM32: vadd.f64
-; MIPS32-LABEL: test_sqrt_double
-; MIPS32: sqrt.d
-; MIPS32: sqrt.d
-; MIPS32: sqrt.d
-; MIPS32: add.d
-
-define internal double @test_sqrt_double_mergeable_load(double %x, i32 %iptr) {
-entry:
-  %__2 = inttoptr i32 %iptr to double*
-  %y = load double, double* %__2, align 8
-  %r5 = call double @llvm.sqrt.f64(double %y)
-  %r6 = fadd double %x, %r5
-  ret double %r6
-}
-; CHECK-LABEL: test_sqrt_double_mergeable_load
-; CHECK: sqrtsd xmm{{.*}}
-; ARM32-LABEL: test_sqrt_double_mergeable_load
-; ARM32: vldr d{{.*}}
-; ARM32: vsqrt.f64
-
-define internal float @test_sqrt_ignored(float %x, double %y) {
-entry:
-  %ignored1 = call float @llvm.sqrt.f32(float %x)
-  %ignored2 = call double @llvm.sqrt.f64(double %y)
-  ret float 0.0
-}
-; CHECKO2REM-LABEL: test_sqrt_ignored
-; CHECKO2REM-NOT: sqrtss
-; CHECKO2REM-NOT: sqrtsd
-; MIPS32-LABEL: test_sqrt_ignored
-; MIPS32: sqrt.s
-; MIPS32: sqrt.d
-
-define internal float @test_fabs_float(float %x) {
-entry:
-  %r = call float @llvm.fabs.f32(float %x)
-  %r2 = call float @llvm.fabs.f32(float %r)
-  %r3 = call float @llvm.fabs.f32(float -0.0)
-  %r4 = fadd float %r2, %r3
-  ret float %r4
-}
-;;; Specially check that the pand instruction doesn't try to operate on a 32-bit
-;;; (f32) memory operand, and instead uses two xmm registers.
-; CHECK-LABEL: test_fabs_float
-; CHECK: pcmpeqd
-; CHECK: psrld
-; CHECK: pand {{.*}}xmm{{.*}}xmm
-; CHECK: pcmpeqd
-; CHECK: psrld
-; CHECK: pand {{.*}}xmm{{.*}}xmm
-; CHECK: pcmpeqd
-; CHECK: psrld
-; CHECK: pand {{.*}}xmm{{.*}}xmm
-; MIPS32-LABEL: test_fabs_float
-; MIPS32: abs.s
-; MIPS32: abs.s
-; MIPS32: abs.s
-; MIPS32: add.s
-
-define internal double @test_fabs_double(double %x) {
-entry:
-  %r = call double @llvm.fabs.f64(double %x)
-  %r2 = call double @llvm.fabs.f64(double %r)
-  %r3 = call double @llvm.fabs.f64(double -0.0)
-  %r4 = fadd double %r2, %r3
-  ret double %r4
-}
-;;; Specially check that the pand instruction doesn't try to operate on a 64-bit
-;;; (f64) memory operand, and instead uses two xmm registers.
-; CHECK-LABEL: test_fabs_double
-; CHECK: pcmpeqd
-; CHECK: psrlq
-; CHECK: pand {{.*}}xmm{{.*}}xmm
-; CHECK: pcmpeqd
-; CHECK: psrlq
-; CHECK: pand {{.*}}xmm{{.*}}xmm
-; CHECK: pcmpeqd
-; CHECK: psrlq
-; CHECK: pand {{.*}}xmm{{.*}}xmm
-; MIPS32-LABEL: test_fabs_double
-; MIPS32: abs.d
-; MIPS32: abs.d
-; MIPS32: abs.d
-; MIPS32: add.d
-
-define internal <4 x float> @test_fabs_v4f32(<4 x float> %x) {
-entry:
-  %r = call <4 x float> @llvm.fabs.v4f32(<4 x float> %x)
-  %r2 = call <4 x float> @llvm.fabs.v4f32(<4 x float> %r)
-  %r3 = call <4 x float> @llvm.fabs.v4f32(<4 x float> undef)
-  %r4 = fadd <4 x float> %r2, %r3
-  ret <4 x float> %r4
-}
-; CHECK-LABEL: test_fabs_v4f32
-; CHECK: pcmpeqd
-; CHECK: psrld
-; CHECK: pand
-; CHECK: pcmpeqd
-; CHECK: psrld
-; CHECK: pand
-; CHECK: pcmpeqd
-; CHECK: psrld
-; CHECK: pand
-
-define internal i32 @test_trap(i32 %br) {
-entry:
-  %r1 = icmp eq i32 %br, 0
-  br i1 %r1, label %Zero, label %NonZero
-Zero:
-  call void @llvm.trap()
-  unreachable
-NonZero:
-  ret i32 1
-}
-; CHECK-LABEL: test_trap
-; CHECK: ud2
-; ARM32-LABEL: test_trap
-; ARM32: udf
-; MIPS32-LABEL: test_trap
-; MIPS32: teq zero,zero
-
-define internal i32 @test_bswap_16(i32 %x) {
-entry:
-  %x_trunc = trunc i32 %x to i16
-  %r = call i16 @llvm.bswap.i16(i16 %x_trunc)
-  %r_zext = zext i16 %r to i32
-  ret i32 %r_zext
-}
-; CHECK-LABEL: test_bswap_16
-; Make sure this is the right operand size so that the most significant bit
-; to least significant bit rotation happens at the right boundary.
-; CHECK: rol {{[abcd]x|si|di|bp|word ptr}},0x8
-; ARM32-LABEL: test_bswap_16
-; ARM32: rev
-; ARM32: lsr {{.*}} #16
-; MIPS32-LABEL: test_bswap_16
-; MIPS32: sll {{.*}},0x8
-; MIPS32: lui {{.*}},0xff
-; MIPS32: and
-; MIPS32: sll {{.*}},0x18
-; MIPS32: or
-; MIPS32: srl {{.*}},0x10
-; MIPS32: andi {{.*}},0xffff
-
-define internal i32 @test_bswap_32(i32 %x) {
-entry:
-  %r = call i32 @llvm.bswap.i32(i32 %x)
-  ret i32 %r
-}
-; CHECK-LABEL: test_bswap_32
-; CHECK: bswap e{{.*}}
-; ARM32-LABEL: test_bswap_32
-; ARM32: rev
-; MIPS32-LABEL: test_bswap_32
-; MIPS32: srl {{.*}},0x18
-; MIPS32: srl {{.*}},0x8
-; MIPS32: andi {{.*}},0xff00
-; MIPS32: or
-; MIPS32: sll {{.*}},0x8
-; MIPS32: lui {{.*}},0xff
-; MIPS32: and
-; MIPS32: sll {{.*}},0x18
-; MIPS32: or
-; MIPS32: or
-
-define internal i64 @test_bswap_64(i64 %x) {
-entry:
-  %r = call i64 @llvm.bswap.i64(i64 %x)
-  ret i64 %r
-}
-; CHECK-LABEL: test_bswap_64
-; CHECK: bswap e{{.*}}
-; CHECK: bswap e{{.*}}
-; ARM32-LABEL: test_bswap_64
-; ARM32: rev
-; ARM32: rev
-; MIPS32-LABEL: test_bswap_64
-; MIPS32: sll {{.*}},0x8
-; MIPS32: srl {{.*}},0x18
-; MIPS32: srl {{.*}},0x8
-; MIPS32: andi {{.*}},0xff00
-; MIPS32: lui {{.*}},0xff
-; MIPS32: or
-; MIPS32: and
-; MIPS32: sll {{.*}},0x18
-; MIPS32: or
-; MIPS32: srl {{.*}},0x18
-; MIPS32: srl {{.*}},0x8
-; MIPS32: andi {{.*}},0xff00
-; MIPS32: or
-; MIPS32: or
-; MIPS32: sll {{.*}},0x8
-; MIPS32: and
-; MIPS32: sll {{.*}},0x18
-; MIPS32: or
-; MIPS32: or
-
-define internal i64 @test_bswap_64_undef() {
-entry:
-  %r = call i64 @llvm.bswap.i64(i64 undef)
-  ret i64 %r
-}
-; CHECK-LABEL: test_bswap_64_undef
-; CHECK: bswap e{{.*}}
-; CHECK: bswap e{{.*}}
-; ARM32-LABEL: test_bswap_64
-; ARM32: rev
-; ARM32: rev
-; MIPS32-LABEL: test_bswap_64_undef
-; MIPS32: sll {{.*}},0x8
-; MIPS32: srl {{.*}},0x18
-; MIPS32: srl {{.*}},0x8
-; MIPS32: andi {{.*}},0xff00
-; MIPS32: lui {{.*}},0xff
-; MIPS32: or
-; MIPS32: and
-; MIPS32: sll {{.*}},0x18
-; MIPS32: or
-; MIPS32: srl {{.*}},0x18
-; MIPS32: srl {{.*}},0x8
-; MIPS32: andi {{.*}},0xff00
-; MIPS32: or
-; MIPS32: or
-; MIPS32: sll {{.*}},0x8
-; MIPS32: and
-; MIPS32: sll {{.*}},0x18
-; MIPS32: or
-; MIPS32: or
-
-define internal i32 @test_ctlz_32(i32 %x) {
-entry:
-  %r = call i32 @llvm.ctlz.i32(i32 %x, i1 false)
-  ret i32 %r
-}
-; CHECK-LABEL: test_ctlz_32
-; TODO(jvoung): If we detect that LZCNT is supported, then use that
-; and avoid the need to do the cmovne and xor stuff to guarantee that
-; the result is well-defined w/ input == 0.
-; CHECK: bsr [[REG_TMP:e.*]],{{.*}}
-; CHECK: mov [[REG_RES:e.*]],0x3f
-; CHECK: cmovne [[REG_RES]],[[REG_TMP]]
-; CHECK: xor [[REG_RES]],0x1f
-; ARM32-LABEL: test_ctlz_32
-; ARM32: clz
-; MIPS32-LABEL: test_ctlz_32
-; MIPS32: clz
-
-define internal i32 @test_ctlz_32_const() {
-entry:
-  %r = call i32 @llvm.ctlz.i32(i32 123456, i1 false)
-  ret i32 %r
-}
-; Could potentially constant fold this, but the front-end should have done that.
-; The dest operand must be a register and the source operand must be a register
-; or memory.
-; CHECK-LABEL: test_ctlz_32_const
-; CHECK: bsr e{{.*}},{{.*}}e{{.*}}
-; ARM32-LABEL: test_ctlz_32_const
-; ARM32: clz
-; MIPS32-LABEL: test_ctlz_32_const
-; MIPS32: clz
-
-define internal i32 @test_ctlz_32_ignored(i32 %x) {
-entry:
-  %ignored = call i32 @llvm.ctlz.i32(i32 %x, i1 false)
-  ret i32 1
-}
-; CHECKO2REM-LABEL: test_ctlz_32_ignored
-; CHECKO2REM-NOT: bsr
-
-define internal i64 @test_ctlz_64(i64 %x) {
-entry:
-  %r = call i64 @llvm.ctlz.i64(i64 %x, i1 false)
-  ret i64 %r
-}
-; CHECKO2REM-LABEL: test_ctlz_64
-; CHECK-LABEL: test_ctlz_64
-; CHECK: bsr [[REG_TMP1:e.*]],{{.*}}
-; CHECK: mov [[REG_RES1:e.*]],0x3f
-; CHECK: cmovne [[REG_RES1]],[[REG_TMP1]]
-; CHECK: xor [[REG_RES1]],0x1f
-; CHECK: add [[REG_RES1]],0x20
-; CHECK: bsr [[REG_RES2:e.*]],{{.*}}
-; CHECK: xor [[REG_RES2]],0x1f
-; CHECK: test [[REG_UPPER:.*]],[[REG_UPPER]]
-; CHECK: cmove [[REG_RES2]],[[REG_RES1]]
-; CHECK: mov {{.*}},0x0
-; ARM32-LABEL: test_ctlz_64
-; ARM32: clz
-; ARM32: cmp {{.*}}, #0
-; ARM32: add {{.*}}, #32
-; ARM32: clzne
-; ARM32: mov {{.*}}, #0
-; MIPS32-LABEL: test_ctlz_64
-; MIPS32: clz
-; MIPS32: clz
-; MIPS32: addiu
-; MIPS32: movn
-; MIPS32: addiu
-
-define internal i32 @test_ctlz_64_const(i64 %x) {
-entry:
-  %r = call i64 @llvm.ctlz.i64(i64 123456789012, i1 false)
-  %r2 = trunc i64 %r to i32
-  ret i32 %r2
-}
-; CHECK-LABEL: test_ctlz_64_const
-; CHECK: bsr e{{.*}},{{.*}}e{{.*}}
-; CHECK: bsr e{{.*}},{{.*}}e{{.*}}
-; ARM32-LABEL: test_ctlz_64
-; ARM32: clz
-; ARM32: clzne
-; MIPS32-LABEL: test_ctlz_64_const
-; MIPS32: clz
-; MIPS32: clz
-; MIPS32: addiu
-; MIPS32: movn
-; MIPS32: addiu
-
-define internal i32 @test_ctlz_64_ignored(i64 %x) {
-entry:
-  %ignored = call i64 @llvm.ctlz.i64(i64 1234567890, i1 false)
-  ret i32 2
-}
-; CHECKO2REM-LABEL: test_ctlz_64_ignored
-; CHECKO2REM-NOT: bsr
-
-define internal i32 @test_cttz_32(i32 %x) {
-entry:
-  %r = call i32 @llvm.cttz.i32(i32 %x, i1 false)
-  ret i32 %r
-}
-; CHECK-LABEL: test_cttz_32
-; CHECK: bsf [[REG_IF_NOTZERO:e.*]],{{.*}}
-; CHECK: mov [[REG_IF_ZERO:e.*]],0x20
-; CHECK: cmovne [[REG_IF_ZERO]],[[REG_IF_NOTZERO]]
-; ARM32-LABEL: test_cttz_32
-; ARM32: rbit
-; ARM32: clz
-; MIPS32-LABEL: test_cttz_32
-; MIPS32: addiu
-; MIPS32: nor
-; MIPS32: and
-; MIPS32: clz
-; MIPS32: li
-; MIPS32: subu
-
-define internal i64 @test_cttz_64(i64 %x) {
-entry:
-  %r = call i64 @llvm.cttz.i64(i64 %x, i1 false)
-  ret i64 %r
-}
-; CHECK-LABEL: test_cttz_64
-; CHECK: bsf [[REG_IF_NOTZERO:e.*]],{{.*}}
-; CHECK: mov [[REG_RES1:e.*]],0x20
-; CHECK: cmovne [[REG_RES1]],[[REG_IF_NOTZERO]]
-; CHECK: add [[REG_RES1]],0x20
-; CHECK: bsf [[REG_RES2:e.*]],[[REG_LOWER:.*]]
-; CHECK: test [[REG_LOWER]],[[REG_LOWER]]
-; CHECK: cmove [[REG_RES2]],[[REG_RES1]]
-; CHECK: mov {{.*}},0x0
-; ARM32-LABEL: test_cttz_64
-; ARM32: rbit
-; ARM32: rbit
-; ARM32: clz
-; ARM32: cmp {{.*}}, #0
-; ARM32: add {{.*}}, #32
-; ARM32: clzne
-; ARM32: mov {{.*}}, #0
-; MIPS32-LABEL: test_cttz_64
-; MIPS32: addiu
-; MIPS32: nor
-; MIPS32: and
-; MIPS32: clz
-; MIPS32: li
-; MIPS32: subu
-; MIPS32: addiu
-; MIPS32: nor
-; MIPS32: and
-; MIPS32: clz
-; MIPS32: li
-; MIPS32: subu
-
-define internal i32 @test_popcount_32(i32 %x) {
-entry:
-  %r = call i32 @llvm.ctpop.i32(i32 %x)
-  ret i32 %r
-}
-; CHECK-LABEL: test_popcount_32
-; CHECK: call {{.*}} R_{{.*}} __popcountsi2
-; ARM32-LABEL: test_popcount_32
-; ARM32: bl {{.*}} __popcountsi2
-; MIPS32-LABEL: test_popcount_32
-; MIPS32: jal {{.*}} __popcountsi2
-
-define internal i64 @test_popcount_64(i64 %x) {
-entry:
-  %r = call i64 @llvm.ctpop.i64(i64 %x)
-  ret i64 %r
-}
-; CHECK-LABEL: test_popcount_64
-; CHECK: call {{.*}} R_{{.*}} __popcountdi2
-; __popcountdi2 only returns a 32-bit result, so clear the upper bits of
-; the return value just in case.
-; CHECK: mov {{.*}},0x0
-; ARM32-LABEL: test_popcount_64
-; ARM32: bl {{.*}} __popcountdi2
-; ARM32: mov {{.*}}, #0
-; MIPS32-LABEL: test_popcount_64
-; MIPS32: jal {{.*}} __popcountdi2
-
-define internal i32 @test_popcount_64_ret_i32(i64 %x) {
-entry:
-  %r_i64 = call i64 @llvm.ctpop.i64(i64 %x)
-  %r = trunc i64 %r_i64 to i32
-  ret i32 %r
-}
-; If there is a trunc, then the mov {{.*}}, 0 is dead and gets optimized out.
-; CHECKO2REM-LABEL: test_popcount_64_ret_i32
-; CHECKO2REM: call {{.*}} R_{{.*}} __popcountdi2
-; CHECKO2REM-NOT: mov {{.*}}, 0
-; MIPS32-LABEL: test_popcount_64_ret_i32
-; MIPS32: jal {{.*}} __popcountdi2
-; MIPS32: sw v0,{{.*}}
-; MIPS32: sw v1,{{.*}}
-; MIPS32: lw v0,{{.*}}
-; MIPS32: lw ra,{{.*}}
-
-define internal void @test_stacksave_noalloca() {
-entry:
-  %sp = call i8* @llvm.stacksave()
-  call void @llvm.stackrestore(i8* %sp)
-  ret void
-}
-; CHECK-LABEL: test_stacksave_noalloca
-; CHECK: mov {{.*}},esp
-; CHECK: mov esp,{{.*}}
-; ARM32-LABEL: test_stacksave_noalloca
-; ARM32: mov {{.*}}, sp
-; ARM32: mov sp, {{.*}}
-; MIPS32-LABEL: test_stacksave_noalloca
-; MIPS32: 	sw	sp,{{.*}}
-; MIPS32: 	lw	[[REG:.*]],0(sp)
-; MIPS32: 	move	sp,[[REG]]
-
-declare i32 @foo(i32 %x)
-
-define internal void @test_stacksave_multiple(i32 %x) {
-entry:
-  %x_4 = mul i32 %x, 4
-  %sp1 = call i8* @llvm.stacksave()
-  %tmp1 = alloca i8, i32 %x_4, align 4
-
-  %sp2 = call i8* @llvm.stacksave()
-  %tmp2 = alloca i8, i32 %x_4, align 4
-
-  %y = call i32 @foo(i32 %x)
-
-  %sp3 = call i8* @llvm.stacksave()
-  %tmp3 = alloca i8, i32 %x_4, align 4
-
-  %__9 = bitcast i8* %tmp1 to i32*
-  store i32 %y, i32* %__9, align 1
-
-  %__10 = bitcast i8* %tmp2 to i32*
-  store i32 %x, i32* %__10, align 1
-
-  %__11 = bitcast i8* %tmp3 to i32*
-  store i32 %x, i32* %__11, align 1
-
-  call void @llvm.stackrestore(i8* %sp1)
-  ret void
-}
-; CHECK-LABEL: test_stacksave_multiple
-; lea is used to copy from esp for the allocas.
-; Otherwise, only one stacksave is live.
-; CHECK: mov ebp,esp
-; CHECK: mov {{.*}},esp
-; CHECK: lea {{.*}},[esp+0x10]
-; CHECK: lea {{.*}},[esp+0x10]
-; CHECK: call
-; CHECK: mov esp,{{.*}}
-; CHECK: mov esp,ebp
-; ARM32-LABEL: test_stacksave_multiple
-; ARM32: mov {{.*}}, sp
-; ARM32: mov {{.*}}, sp
-; ARM32: mov {{.*}}, sp
-; ARM32: mov sp, {{.*}}
-; MIPS32-LABEL: test_stacksave_multiple
-; MIPS32: 	sw	sp,[[MEMLOC:.*]]
-; MIPS32: 	sw	sp,{{.*}}
-; MIPS32: 	sw	sp,{{.*}}
-; MIPS32: 	lw	[[REG:.*]],[[MEMLOC]]
-; MIPS32: 	move	sp,[[REG]]
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/nonsfi.ll b/third_party/subzero/tests_lit/llvm2ice_tests/nonsfi.ll
deleted file mode 100644
index 7da6cd4..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/nonsfi.ll
+++ /dev/null
@@ -1,155 +0,0 @@
-; RUN: %p2i -i %s --target=x8632 --filetype=obj --assemble --disassemble \
-; RUN:   --args -O2 -nonsfi=1 --ffunction-sections \
-; RUN:   | FileCheck --check-prefix=NONSFI %s
-; RUN: %p2i -i %s --target=x8632 --filetype=obj --assemble --disassemble \
-; RUN:   --args -O2 -nonsfi=0 --ffunction-sections \
-; RUN:   | FileCheck --check-prefix=DEFAULT %s
-
-; RUN: %p2i -i %s --target=arm32 --filetype=obj --assemble --disassemble \
-; RUN:   --args -O2 -nonsfi=1 --ffunction-sections \
-; RUN:   | FileCheck --check-prefix=ARM32-NONSFI %s
-
-@G1 = internal global [4 x i8] zeroinitializer, align 4
-@G2 = internal global [4 x i8] zeroinitializer, align 4
-
-define internal void @testCallRegular() {
-entry:
-  ; Make a call to a *different* function, plus use -ffunction-sections, to
-  ; force an appropriately-named relocation.
-  call i32 @testLoadBasic()
-  ret void
-}
-; Expect a simple direct call to testCallRegular.
-; NONSFI-LABEL: testCallRegular
-; NONSFI: call {{.*}} R_386_PC32 {{.*}}testLoadBasic
-; DEFAULT-LABEL: testCallRegular
-
-; ARM32-NONSFI-LABEL: testCallRegular
-; ARM32-NONSFI: bl {{.*}} R_ARM_CALL {{.*}}testLoadBasic
-
-define internal double @testCallBuiltin(double %val) {
-entry:
-  %result = frem double %val, %val
-  ret double %result
-}
-; Expect a simple direct call to fmod.
-; NONSFI-LABEL: testCallBuiltin
-; NONSFI: call {{.*}} R_386_PC32 fmod
-; DEFAULT-LABEL: testCallBuiltin
-
-; ARM32-NONSFI-LABEL: testCallBuiltin
-; ARM32-NONSFI: bl {{.*}} R_ARM_CALL {{.*}}fmod
-
-define internal i32 @testLoadBasic() {
-entry:
-  %a = bitcast [4 x i8]* @G1 to i32*
-  %b = load i32, i32* %a, align 1
-  ret i32 %b
-}
-; Expect a load with a R_386_GOTOFF relocation.
-; NONSFI-LABEL: testLoadBasic
-; NONSFI: mov {{.*}} R_386_GOTOFF {{G1|.bss}}
-; DEFAULT-LABEL: testLoadBasic
-
-; ARM32 PIC load.
-; ARM32-NONSFI-LABEL: testLoadBasic
-; ARM32-NONSFI:      movw {{.*}} R_ARM_MOVW_PREL_NC _GLOBAL_OFFSET_TABLE_
-; ARM32-NONSFI-NEXT: movt {{.*}} R_ARM_MOVT_PREL _GLOBAL_OFFSET_TABLE_
-; ARM32-NONSFI:      movw [[REG:r[0-9]+]], {{.*}} R_ARM_MOVW_PREL_NC {{.*}}G1
-; ARM32-NONSFI-NEXT: movt [[REG]], {{.*}} R_ARM_MOVT_PREL {{.*}}G1
-; ARM32-NONSFI-NEXT: ldr r{{[0-9]+}}, [pc, [[REG]]]
-
-define internal i32 @testLoadFixedOffset() {
-entry:
-  %a = ptrtoint [4 x i8]* @G1 to i32
-  %a1 = add i32 %a, 4
-  %a2 = inttoptr i32 %a1 to i32*
-  %b = load i32, i32* %a2, align 1
-  ret i32 %b
-}
-; Expect a load with a R_386_GOTOFF relocation plus an immediate offset.
-; NONSFI-LABEL: testLoadFixedOffset
-; NONSFI: mov {{.*}}+0x4] {{.*}} R_386_GOTOFF {{G1|.bss}}
-; DEFAULT-LABEL: testLoadFixedOffset
-
-; ARM32-NONSFI-LABEL: testLoadFixedOffset
-; ARM32-NONSFI:      movw [[GOT:r[0-9]+]], {{.*}} R_ARM_MOVW_PREL_NC _GLOBAL_OFFSET_TABLE_
-; ARM32-NONSFI-NEXT: movt [[GOT]], {{.*}} R_ARM_MOVT_PREL _GLOBAL_OFFSET_TABLE_
-; ARM32-NONSFI:      movw [[REG:r[0-9]+]], {{.*}} R_ARM_MOVW_PREL_NC {{.*}}G1
-; ARM32-NONSFI-NEXT: movt [[REG]], {{.*}} R_ARM_MOVT_PREL {{.*}}G1
-; ARM32-NONSFI-NEXT: ldr [[ADDR:r[0-9]+]], [pc, [[REG]]]
-; ARM32-NONSFI-NEXT: add [[G1BASE:r[0-9]+]], [[GOT]], [[ADDR]]
-; ARM32-NONSFI-NEXT: add {{.*}}, [[G1BASE]], #4
-
-define internal i32 @testLoadIndexed(i32 %idx) {
-entry:
-  %a = ptrtoint [4 x i8]* @G1 to i32
-  %a0 = mul i32 %idx, 4
-  %a1 = add i32 %a0, 12
-  %a2 = add i32 %a1, %a
-  %a3 = inttoptr i32 %a2 to i32*
-  %b = load i32, i32* %a3, align 1
-  ret i32 %b
-}
-; Expect a load with a R_386_GOTOFF relocation plus an immediate offset, plus a
-; scaled index register.
-; NONSFI-LABEL: testLoadIndexed
-; NONSFI: mov {{.*}}*4+0xc] {{.*}} R_386_GOTOFF {{G1|.bss}}
-; DEFAULT-LABEL: testLoadIndexed
-
-; ARM32-NONSFI-LABEL: testLoadIndexed
-; ARM32-NONSFI:      movw [[GOT:r[0-9]+]], {{.*}} R_ARM_MOVW_PREL_NC _GLOBAL_OFFSET_TABLE_
-; ARM32-NONSFI-NEXT: movt [[GOT]], {{.*}} R_ARM_MOVT_PREL _GLOBAL_OFFSET_TABLE_
-; ARM32-NONSFI:      movw [[REG:r[0-9]+]], {{.*}} R_ARM_MOVW_PREL_NC {{.*}}G1
-; ARM32-NONSFI-NEXT: movt [[REG]], {{.*}} R_ARM_MOVT_PREL {{.*}}G1
-; ARM32-NONSFI-NEXT: ldr [[ADDR:r[0-9]+]], [pc, [[REG]]]
-; ARM32-NONSFI-NEXT: add [[G1BASE:r[0-9]+]], [[GOT]], [[ADDR]]
-; ARaM32-NONSFI-NEXT: add {{.*}}, [[G1BASE]]
-
-define internal i32 @testLoadIndexedBase(i32 %base, i32 %idx) {
-entry:
-  %a = ptrtoint [4 x i8]* @G1 to i32
-  %a0 = mul i32 %idx, 4
-  %a1 = add i32 %a0, %base
-  %a2 = add i32 %a1, %a
-  %a3 = add i32 %a2, 12
-  %a4 = inttoptr i32 %a3 to i32*
-  %b = load i32, i32* %a4, align 1
-  ret i32 %b
-}
-; Expect a load with a R_386_GOTOFF relocation plus an immediate offset, but
-; without the scaled index.
-; NONSFI-LABEL: testLoadIndexedBase
-; NONSFI: mov {{.*}}*1+0xc] {{.*}} R_386_GOTOFF {{G1|.bss}}
-; By contrast, without -nonsfi, expect a load with a *R_386_32* relocation plus
-; an immediate offset, and *with* the scaled index.
-; DEFAULT-LABEL: testLoadIndexedBase
-; DEFAULT: mov {{.*}},DWORD PTR [{{.*}}+{{.*}}*4+0xc] {{.*}} R_386_32 {{G1|.bss}}
-
-define internal i32 @testLoadOpt() {
-entry:
-  %a = bitcast [4 x i8]* @G1 to i32*
-  %b = load i32, i32* %a, align 1
-  %c = bitcast [4 x i8]* @G2 to i32*
-  %d = load i32, i32* %c, align 1
-  %e = add i32 %b, %d
-  ret i32 %e
-}
-; Expect a load-folding optimization with a R_386_GOTOFF relocation.
-; NONSFI-LABEL: testLoadOpt
-; NONSFI: mov [[REG:e..]],{{.*}}+0x0] {{.*}} R_386_GOTOFF {{G1|.bss}}
-; NONSFI-NEXT: add [[REG]],{{.*}}+0x{{0|4}}] {{.*}} R_386_GOTOFF {{G2|.bss}}
-; DEFAULT-LABEL: testLoadOpt
-
-define internal void @testRMW() {
-entry:
-  %a = bitcast [4 x i8]* @G1 to i32*
-  %b = load i32, i32* %a, align 1
-  %c = add i32 %b, 1234
-  store i32 %c, i32* %a, align 1
-  ret void
-}
-; Expect an RMW optimization with a R_386_GOTOFF relocation.
-; NONSFI-LABEL: testRMW
-; NONSFI: add DWORD PTR {{.*}}+0x0],0x4d2 {{.*}} R_386_GOTOFF {{G1|.bss}}
-; DEFAULT-LABEL: testRMW
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/nop-insertion-no-vectors.ll b/third_party/subzero/tests_lit/llvm2ice_tests/nop-insertion-no-vectors.ll
deleted file mode 100644
index 3a25270..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/nop-insertion-no-vectors.ll
+++ /dev/null
@@ -1,181 +0,0 @@
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --filetype=asm --assemble --disassemble --target=mips32 \
-; RUN:    -a -sz-seed=1 -nop-insertion \
-; RUN:    -nop-insertion-percentage=50 -max-nops-per-instruction=1 \
-; RUN:    | FileCheck %s --check-prefix=MIPS32P50N1
-; RUN: %p2i -i %s --filetype=asm --assemble --disassemble --target=mips32 \
-; RUN:    -a -sz-seed=1 -nop-insertion \
-; RUN:    -nop-insertion-percentage=110 -max-nops-per-instruction=2 \
-; RUN:    | FileCheck %s --check-prefix=MIPS32P110N2
-
-
-define internal i32 @nopInsertion(i32 %a, i32 %b, i32 %c) {
-entry:
-  %a1 = add i32 %a, 1
-  %b1 = add i32 %b, 2
-  %c1 = add i32 %c, 3
-  %a2 = sub i32 %a1, 1
-  %b2 = sub i32 %b1, 2
-  %c2 = sub i32 %c1, 3
-  %a3 = mul i32 %a2, %b2
-  %b3 = mul i32 %a3, %c2
-  ret i32 %b3
-}
-
-; MIPS32P50N1-LABEL: nopInsertion
-; MIPS32P50N1: nop
-; MIPS32P50N1: addiu {{.*}}
-; MIPS32P50N1: sw {{.*}}
-; MIPS32P50N1: nop
-; MIPS32P50N1: sw {{.*}}
-; MIPS32P50N1: nop
-; MIPS32P50N1: sw {{.*}}
-; MIPS32P50N1: lw {{.*}}
-; MIPS32P50N1: addiu {{.*}},1
-; MIPS32P50N1: nop
-; MIPS32P50N1: sw {{.*}}
-; MIPS32P50N1: lw {{.*}}
-; MIPS32P50N1: nop
-; MIPS32P50N1: addiu {{.*}},2
-; MIPS32P50N1: nop
-; MIPS32P50N1: sw {{.*}}
-; MIPS32P50N1: nop
-; MIPS32P50N1: lw {{.*}}
-; MIPS32P50N1: nop
-; MIPS32P50N1: addiu {{.*}},3
-; MIPS32P50N1: sw {{.*}}
-; MIPS32P50N1: nop
-; MIPS32P50N1: lw {{.*}}
-; MIPS32P50N1: addiu {{.*}},-1
-; MIPS32P50N1: nop
-; MIPS32P50N1: sw {{.*}}
-; MIPS32P50N1: lw {{.*}}
-; MIPS32P50N1: nop
-; MIPS32P50N1: addiu {{.*}},-2
-; MIPS32P50N1: nop
-; MIPS32P50N1: sw {{.*}}
-; MIPS32P50N1: lw {{.*}}
-; MIPS32P50N1: addiu {{.*}},-3
-; MIPS32P50N1: sw {{.*}}
-; MIPS32P50N1: lw {{.*}}
-; MIPS32P50N1: lw {{.*}}
-; MIPS32P50N1: nop
-; MIPS32P50N1: mul {{.*}}
-; MIPS32P50N1: sw {{.*}}
-; MIPS32P50N1: lw {{.*}}
-; MIPS32P50N1: nop
-; MIPS32P50N1: lw {{.*}}
-; MIPS32P50N1: nop
-; MIPS32P50N1: mul {{.*}}
-; MIPS32P50N1: nop
-; MIPS32P50N1: sw {{.*}}
-; MIPS32P50N1: nop
-; MIPS32P50N1: lw {{.*}}
-; MIPS32P50N1: nop
-; MIPS32P50N1: addiu {{.*}}
-; MIPS32P50N1: jr ra
-; MIPS32P50N1: nop
-
-; MIPS32P110N2-LABEL: nopInsertion
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: addiu {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: sw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: sw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: sw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: lw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: addiu {{.*}},1
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: sw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: lw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: addiu {{.*}},2
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: sw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: lw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: addiu {{.*}},3
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: sw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: lw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: addiu {{.*}},-1
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: sw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: lw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: addiu {{.*}},-2
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: sw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: lw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: addiu {{.*}},-3
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: sw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: lw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: lw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: mul {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: sw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: lw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: lw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: mul {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: sw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: lw {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: addiu {{.*}}
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
-; MIPS32P110N2: jr ra
-; MIPS32P110N2: nop
-; MIPS32P110N2: nop
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/nop-insertion.ll b/third_party/subzero/tests_lit/llvm2ice_tests/nop-insertion.ll
deleted file mode 100644
index 59ff760..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/nop-insertion.ll
+++ /dev/null
@@ -1,213 +0,0 @@
-; This is a smoke test of nop insertion.
-
-; REQUIRES: allow_dump
-
-; Use filetype=asm because this currently depends on the /* variant */
-; assembler comment.
-
-; RUN: %p2i -i %s --filetype=asm -a -sz-seed=1 -nop-insertion \
-; RUN:    -nop-insertion-percentage=50 -max-nops-per-instruction=1 \
-; RUN:    | FileCheck %s --check-prefix=PROB50
-; RUN: %p2i -i %s --filetype=asm -a -sz-seed=1 -nop-insertion \
-; RUN:    -nop-insertion-percentage=90 -max-nops-per-instruction=1 \
-; RUN:    | FileCheck %s --check-prefix=PROB90
-; RUN: %p2i -i %s --filetype=asm -a -sz-seed=1 -nop-insertion \
-; RUN:    -nop-insertion-percentage=50 -max-nops-per-instruction=2 \
-; RUN:    | FileCheck %s --check-prefix=MAXNOPS2
-; RUN: %p2i -i %s --filetype=asm --sandbox -a -sz-seed=1 -nop-insertion \
-; RUN:    -nop-insertion-percentage=50 -max-nops-per-instruction=1 \
-; RUN:    | FileCheck %s --check-prefix=SANDBOX50
-; RUN: %p2i -i %s --filetype=asm --sandbox --target=arm32 -a -sz-seed=1 \
-; RUN:    -nop-insertion -nop-insertion-percentage=110 \
-; RUN:    -max-nops-per-instruction=2 \
-; RUN:    | FileCheck %s --check-prefix=ARM110P2
-
-
-define internal <4 x i32> @mul_v4i32(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %res = mul <4 x i32> %a, %b
-  ret <4 x i32> %res
-
-; PROB50-LABEL: mul_v4i32
-; PROB50: nop /* variant = 1 */
-; PROB50: subl $60, %esp
-; PROB50: nop /* variant = 3 */
-; PROB50: movups %xmm0, 32(%esp)
-; PROB50: movups %xmm1, 16(%esp)
-; PROB50: movups 32(%esp), %xmm0
-; PROB50: nop /* variant = 1 */
-; PROB50: pshufd $49, 32(%esp), %xmm1
-; PROB50: nop /* variant = 4 */
-; PROB50: pshufd $49, 16(%esp), %xmm2
-; PROB50: nop /* variant = 1 */
-; PROB50: pmuludq 16(%esp), %xmm0
-; PROB50: pmuludq %xmm2, %xmm1
-; PROB50: nop /* variant = 0 */
-; PROB50: shufps $136, %xmm1, %xmm0
-; PROB50: nop /* variant = 3 */
-; PROB50: pshufd $216, %xmm0, %xmm0
-; PROB50: nop /* variant = 1 */
-; PROB50: movups %xmm0, (%esp)
-; PROB50: movups (%esp), %xmm0
-; PROB50: addl $60, %esp
-; PROB50: ret
-
-; PROB90-LABEL: mul_v4i32
-; PROB90: nop /* variant = 1 */
-; PROB90: subl $60, %esp
-; PROB90: nop /* variant = 3 */
-; PROB90: movups %xmm0, 32(%esp)
-; PROB90: nop /* variant = 4 */
-; PROB90: movups %xmm1, 16(%esp)
-; PROB90: nop /* variant = 1 */
-; PROB90: movups 32(%esp), %xmm0
-; PROB90: nop /* variant = 4 */
-; PROB90: pshufd $49, 32(%esp), %xmm1
-; PROB90: nop /* variant = 1 */
-; PROB90: pshufd $49, 16(%esp), %xmm2
-; PROB90: nop /* variant = 4 */
-; PROB90: pmuludq 16(%esp), %xmm0
-; PROB90: nop /* variant = 2 */
-; PROB90: pmuludq %xmm2, %xmm1
-; PROB90: shufps $136, %xmm1, %xmm0
-; PROB90: nop /* variant = 1 */
-; PROB90: pshufd $216, %xmm0, %xmm0
-; PROB90: movups %xmm0, (%esp)
-; PROB90: nop /* variant = 1 */
-; PROB90: movups (%esp), %xmm0
-; PROB90: nop /* variant = 0 */
-; PROB90: addl $60, %esp
-; PROB90: nop /* variant = 0 */
-; PROB90: ret
-; PROB90: nop /* variant = 4 */
-
-; MAXNOPS2-LABEL: mul_v4i32
-; MAXNOPS2: nop /* variant = 1 */
-; MAXNOPS2: nop /* variant = 3 */
-; MAXNOPS2: subl $60, %esp
-; MAXNOPS2: movups %xmm0, 32(%esp)
-; MAXNOPS2: nop /* variant = 1 */
-; MAXNOPS2: nop /* variant = 4 */
-; MAXNOPS2: movups %xmm1, 16(%esp)
-; MAXNOPS2: nop /* variant = 1 */
-; MAXNOPS2: movups 32(%esp), %xmm0
-; MAXNOPS2: nop /* variant = 0 */
-; MAXNOPS2: nop /* variant = 3 */
-; MAXNOPS2: pshufd $49, 32(%esp), %xmm1
-; MAXNOPS2: nop /* variant = 1 */
-; MAXNOPS2: pshufd $49, 16(%esp), %xmm2
-; MAXNOPS2: pmuludq 16(%esp), %xmm0
-; MAXNOPS2: pmuludq %xmm2, %xmm1
-; MAXNOPS2: nop /* variant = 0 */
-; MAXNOPS2: shufps $136, %xmm1, %xmm0
-; MAXNOPS2: nop /* variant = 0 */
-; MAXNOPS2: nop /* variant = 0 */
-; MAXNOPS2: pshufd $216, %xmm0, %xmm0
-; MAXNOPS2: nop /* variant = 1 */
-; MAXNOPS2: nop /* variant = 3 */
-; MAXNOPS2: movups %xmm0, (%esp)
-; MAXNOPS2: nop /* variant = 3 */
-; MAXNOPS2: movups (%esp), %xmm0
-; MAXNOPS2: addl $60, %esp
-; MAXNOPS2: nop /* variant = 3 */
-; MAXNOPS2: ret
-
-
-; SANDBOX50-LABEL: mul_v4i32
-; SANDBOX50: nop /* variant = 1 */
-; SANDBOX50: subl $60, %esp
-; SANDBOX50: nop /* variant = 3 */
-; SANDBOX50: movups %xmm0, 32(%esp)
-; SANDBOX50: movups %xmm1, 16(%esp)
-; SANDBOX50: movups 32(%esp), %xmm0
-; SANDBOX50: nop /* variant = 1 */
-; SANDBOX50: pshufd $49, 32(%esp), %xmm1
-; SANDBOX50: nop /* variant = 4 */
-; SANDBOX50: pshufd $49, 16(%esp), %xmm2
-; SANDBOX50: nop /* variant = 1 */
-; SANDBOX50: pmuludq 16(%esp), %xmm0
-; SANDBOX50: pmuludq %xmm2, %xmm1
-; SANDBOX50: nop /* variant = 0 */
-; SANDBOX50: shufps $136, %xmm1, %xmm0
-; SANDBOX50: nop /* variant = 3 */
-; SANDBOX50: pshufd $216, %xmm0, %xmm0
-; SANDBOX50: nop /* variant = 1 */
-; SANDBOX50: movups %xmm0, (%esp)
-; SANDBOX50: movups (%esp), %xmm0
-; SANDBOX50: addl $60, %esp
-; SANDBOX50: pop %ecx
-; SANDBOX50: .bundle_lock
-; SANDBOX50: andl $-32, %ecx
-; SANDBOX50: jmp *%ecx
-; SANDBOX50: .bundle_unlock
-
-; ARM110P2:       mul_v4i32:
-; ARM110P2-NEXT: .Lmul_v4i32$entry:
-; ARM110P2-NEXT:        .bundle_lock
-; ARM110P2-NEXT:        sub     sp, sp, #48
-; ARM110P2-NEXT:        bic     sp, sp, #3221225472
-; ARM110P2-NEXT:        .bundle_unlock
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        add     ip, sp, #32
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        .bundle_lock
-; ARM110P2-NEXT:        bic     ip, ip, #3221225472
-; ARM110P2-NEXT:        vst1.32 q0, [ip]
-; ARM110P2-NEXT:        .bundle_unlock
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        # [sp, #32] = def.pseudo
-; ARM110P2-NEXT:        add     ip, sp, #16
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        .bundle_lock
-; ARM110P2-NEXT:        bic     ip, ip, #3221225472
-; ARM110P2-NEXT:        vst1.32 q1, [ip]
-; ARM110P2-NEXT:        .bundle_unlock
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        # [sp, #16] = def.pseudo
-; ARM110P2-NEXT:        add     ip, sp, #32
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        .bundle_lock
-; ARM110P2-NEXT:        bic     ip, ip, #3221225472
-; ARM110P2-NEXT:        vld1.32 q0, [ip]
-; ARM110P2-NEXT:        .bundle_unlock
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        add     ip, sp, #16
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        .bundle_lock
-; ARM110P2-NEXT:        bic     ip, ip, #3221225472
-; ARM110P2-NEXT:        vld1.32 q1, [ip]
-; ARM110P2-NEXT:        .bundle_unlock
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        vmul.i32        q0, q0, q1
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        vst1.32 q0, [sp]
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        # [sp] = def.pseudo
-; ARM110P2-NEXT:        vld1.32 q0, [sp]
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        .bundle_lock
-; ARM110P2-NEXT:        add     sp, sp, #48
-; ARM110P2-NEXT:        bic     sp, sp, #3221225472
-; ARM110P2-NEXT:        .bundle_unlock
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        .bundle_lock
-; ARM110P2-NEXT:        bic     lr, lr, #3221225487
-; ARM110P2-NEXT:        bx      lr
-; ARM110P2-NEXT:        .bundle_unlock
-; ARM110P2-NEXT:        nop
-; ARM110P2-NEXT:        nop
-
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/phi.ll b/third_party/subzero/tests_lit/llvm2ice_tests/phi.ll
deleted file mode 100644
index d5ca2b1..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/phi.ll
+++ /dev/null
@@ -1,160 +0,0 @@
-; This tests some of the subtleties of Phi lowering.  In particular,
-; it tests that it does the right thing when it tries to enable
-; compare/branch fusing.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 --phi-edge-split=0 \
-; RUN:   | FileCheck %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 --phi-edge-split=1 \
-; RUN:   | FileCheck --check-prefix=SPLIT %s
-
-define internal i32 @testPhi1(i32 %arg) {
-entry:
-  %cmp1 = icmp sgt i32 %arg, 0
-  br i1 %cmp1, label %next, label %target
-next:
-  br label %target
-target:
-  %merge = phi i1 [ %cmp1, %entry ], [ false, %next ]
-  %result = zext i1 %merge to i32
-  ret i32 %result
-}
-; Test that compare/branch fusing does not happen, and Phi lowering is
-; put in the right place.
-; CHECK-LABEL: testPhi1
-; CHECK: cmp {{.*}},0x0
-; CHECK: setg
-; CHECK: mov [[PHI:.*]],
-; CHECK: cmp {{.*}},0x0
-; CHECK: je
-; CHECK: mov [[PHI]],0x0
-; CHECK: movzx {{.*}},[[PHI]]
-
-define internal i32 @testPhi2(i32 %arg) {
-entry:
-  %cmp1 = icmp sgt i32 %arg, 0
-  br i1 %cmp1, label %next, label %target
-next:
-  br label %target
-target:
-  %merge = phi i32 [ 12345, %entry ], [ 54321, %next ]
-  ret i32 %merge
-}
-; Test that compare/branch fusing and Phi lowering happens as expected.
-; CHECK-LABEL: testPhi2
-; CHECK: mov {{.*}},0x3039
-; CHECK: cmp {{.*}},0x0
-; CHECK-NEXT: jle
-; CHECK: mov [[PHI:.*]],0xd431
-; CHECK: mov {{.*}},[[PHI]]
-
-; Test that address mode inference doesn't extend past
-; multi-definition, non-SSA Phi temporaries.
-define internal i32 @testPhi3(i32 %arg) {
-entry:
-  br label %body
-body:
-  %merge = phi i32 [ %arg, %entry ], [ %elt, %body ]
-  %interior = add i32 %merge, 1000
-  ; Trick to make a basic block local copy of interior for
-  ; addressing mode optimization.
-  %interior__4 = add i32 %interior, 0
-  %__4 = inttoptr i32 %interior__4 to i32*
-  %elt = load i32, i32* %__4, align 1
-  %cmp = icmp eq i32 %elt, 0
-  br i1 %cmp, label %exit, label %body
-exit:
-  ; Same trick (making a basic block local copy).
-  %interior__6 = add i32 %interior, 0
-  %__6 = inttoptr i32 %interior__6 to i32*
-  store i32 %arg, i32* %__6, align 1
-  ret i32 %arg
-}
-; I can't figure out how to reliably test this for correctness, so I
-; will just include patterns for the entire current O2 sequence.  This
-; may need to be changed when meaningful optimizations are added.
-; The key is to avoid the "bad" pattern like this:
-;
-; testPhi3:
-; .LtestPhi3$entry:
-;         mov     eax, DWORD PTR [esp+4]
-;         mov     ecx, eax
-; .LtestPhi3$body:
-;         mov     ecx, DWORD PTR [ecx+1000]
-;         cmp     ecx, 0
-;         jne     .LtestPhi3$body
-; .LtestPhi3$exit:
-;         mov     DWORD PTR [ecx+1000], eax
-;         ret
-;
-; This is bad because the final store address is supposed to be the
-; same as the load address in the loop, but it has clearly been
-; over-optimized into a null pointer dereference.
-
-; CHECK-LABEL: testPhi3
-; CHECK: push [[EBX:.*]]
-; CHECK: mov [[EAX:.*]],DWORD PTR [esp
-; CHECK: mov [[ECX:.*]],[[EAX]]
-;;; start of loop body
-; CHECK: mov [[EDX:.*]],[[ECX]]
-; CHECK: mov {{.*}},DWORD PTR [{{.*}}+0x3e8]
-; CHECK: cmp {{.*}},0x0
-; CHECK: jne
-;;; start of epilog
-; CHECK: mov DWORD PTR {{.}}[[EDX]]+0x3e8],
-; CHECK: pop [[EBX]]
-
-; Test of "advanced phi lowering" with undef phi arg (integer vector).
-define internal <4 x i32> @test_split_undef_int_vec(<4 x i32> %arg, i32 %cond) {
-entry:
-  %cmp = icmp eq i32 %cond, 0
-  br i1 %cmp, label %eq, label %exit
-eq:
-  br label %exit
-exit:
-  %merge = phi <4 x i32> [ %arg, %entry ], [ undef, %eq ]
-  ret <4 x i32> %merge
-}
-; SPLIT-LABEL: test_split_undef_int_vec
-; SPLIT: pxor
-
-; Test of "advanced phi lowering" with undef phi arg (float vector).
-define internal <4 x float> @test_split_undef_float_vec(<4 x float> %arg, i32 %cond) {
-entry:
-  %cmp = icmp eq i32 %cond, 0
-  br i1 %cmp, label %eq, label %exit
-eq:
-  br label %exit
-exit:
-  %merge = phi <4 x float> [ %arg, %entry ], [ undef, %eq ]
-  ret <4 x float> %merge
-}
-; SPLIT-LABEL: test_split_undef_float_vec
-; SPLIT: pxor
-
-; Test of "advanced phi lowering" with undef phi arg (integer scalar).
-define internal i32 @test_split_undef_int_scalar(i32 %arg, i32 %cond) {
-entry:
-  %cmp = icmp eq i32 %cond, 0
-  br i1 %cmp, label %eq, label %exit
-eq:
-  br label %exit
-exit:
-  %merge = phi i32 [ %arg, %entry ], [ undef, %eq ]
-  ret i32 %merge
-}
-; SPLIT-LABEL: test_split_undef_int_scalar
-; SPLIT: mov {{.*}},0x0
-
-; Test of "advanced phi lowering" with undef phi arg (float scalar).
-define internal float @test_split_undef_float_scalar(float %arg, i32 %cond) {
-entry:
-  %cmp = icmp eq i32 %cond, 0
-  br i1 %cmp, label %eq, label %exit
-eq:
-  br label %exit
-exit:
-  %merge = phi float [ %arg, %entry ], [ undef, %eq ]
-  ret float %merge
-}
-; SPLIT-LABEL: test_split_undef_float_scalar
-; SPLIT: movss {{.*}},DWORD PTR
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/phi_invalid.test b/third_party/subzero/tests_lit/llvm2ice_tests/phi_invalid.test
deleted file mode 100644
index 665f09c..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/phi_invalid.test
+++ /dev/null
@@ -1,9 +0,0 @@
-; Test that a bad phi instruction is caught.
-; https://code.google.com/p/nativeclient/issues/detail?id=4304
-
-RUN: %p2i --expect-fail --tbc -i %p/Input/phi-invalid.tbc --insts 2>&1 \
-RUN:        --filetype=obj --output /dev/null \
-RUN:        --args -allow-externally-defined-symbols \
-RUN:        | FileCheck --check-prefix=BADPHI %s
-
-; BADPHI: Phi error:
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/prune_unreachable.ll b/third_party/subzero/tests_lit/llvm2ice_tests/prune_unreachable.ll
deleted file mode 100644
index 7ce93e9..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/prune_unreachable.ll
+++ /dev/null
@@ -1,24 +0,0 @@
-; This tests that unreachable basic blocks are pruned from the CFG, so that
-; liveness analysis doesn't detect inconsistencies.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \
-; RUN:      -allow-externally-defined-symbols | FileCheck %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:      -allow-externally-defined-symbols | FileCheck %s
-
-declare void @abort()
-
-define internal i32 @unreachable_block() {
-entry:
-  ; ret_val has no reaching uses and so its assignment may be
-  ; dead-code eliminated.
-  %ret_val = add i32 undef, undef
-  call void @abort()
-  unreachable
-label:
-  ; ret_val has no reaching definitions, causing an inconsistency in
-  ; liveness analysis.
-  ret i32 %ret_val
-}
-
-; CHECK-LABEL: unreachable_block
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/randomize-pool-immediate-basic.ll b/third_party/subzero/tests_lit/llvm2ice_tests/randomize-pool-immediate-basic.ll
deleted file mode 100644
index d8ebefe..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/randomize-pool-immediate-basic.ll
+++ /dev/null
@@ -1,133 +0,0 @@
-; This is a smoke test of constant blinding and constant pooling.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:    -sz-seed=1 -randomize-pool-immediates=randomize \
-; RUN:    -randomize-pool-threshold=0x1 \
-; RUN:    | FileCheck %s --check-prefix=BLINDINGO2
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \
-; RUN:    -sz-seed=1 -randomize-pool-immediates=randomize \
-; RUN:    -randomize-pool-threshold=0x1 \
-; RUN:    | FileCheck %s --check-prefix=BLINDINGOM1
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:    -sz-seed=1 -randomize-pool-immediates=pool \
-; RUN:    -randomize-pool-threshold=0x1 \
-; RUN:    | FileCheck %s --check-prefix=POOLING
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \
-; RUN:    -sz-seed=1 -randomize-pool-immediates=pool \
-; RUN:    -randomize-pool-threshold=0x1 \
-; RUN:    | FileCheck %s --check-prefix=POOLING
-
-
-define internal i32 @add_arg_plus_200000(i32 %arg) {
-entry:
-  %res = add i32 200000, %arg
-  ret i32 %res
-
-; BLINDINGO2-LABEL: add_arg_plus_200000
-; BLINDINGO2: mov [[REG:e[a-z]*]],0x669f4eea
-; BLINDINGO2-NEXT: lea [[REG]],{{[[]}}[[REG]]-0x669c41aa{{[]]}}
-
-; BLINDINGOM1-LABEL: add_arg_plus_200000
-; BLINDINGOM1: mov [[REG:e[a-z]*]],0x669f4eea
-; BLINDINGOM1-NEXT: lea [[REG]],{{[[]}}[[REG]]-0x669c41aa{{[]]}}
-
-; POOLING-LABEL: add_arg_plus_200000
-; POOLING: mov e{{[a-z]*}},{{(DWORD PTR )?}}ds:0x0 {{[0-9a-f]*}}: R_386_32 .L$i32$00030d40
-}
-
-define internal float @load_arg_plus_200000(float* %arg) {
-entry:
-  %arg.int = ptrtoint float* %arg to i32
-  %addr.int = add i32 %arg.int, 200000
-  %addr.ptr = inttoptr i32 %addr.int to float*
-  %addr.load = load float, float* %addr.ptr, align 4
-  ret float %addr.load
-; BLINDINGO2-LABEL: load_arg_plus_200000
-; BLINDINGO2: lea [[REG:e[a-z]*]],{{[[]}}{{e[a-z]*}}+0x69ed4ee7{{[]]}}
-
-; BLINDINGOM1-LABEL: load_arg_plus_200000
-; BLINDINGOM1: lea [[REG:e[a-z]*]],{{[[]}}{{e[a-z]*}}-0x69ea41a7{{[]]}}
-
-; POOLING-LABEL: load_arg_plus_200000
-; POOLING: mov e{{[a-z]*}},{{(DWORD PTR )?}}ds:0x0 {{[0-9a-f]*}}: R_386_32 .L$i32$00030d40
-}
-
-define internal i64 @add_arg_plus_64bits(i32 %arg) {
-entry:
-  %0 = sext i32 %arg to i64
-  %res = add i64 90000000000, %0
-  ret i64 %res
-
-; BLINDINGO2-LABEL: add_arg_plus_64bits
-; BLINDINGO2: sar [[RHI:e[a-z]*]],0x1f
-; BLINDINGO2: mov [[RLO:e[a-z]*]],0x61a345a8
-; BLINDINGO2-NEXT: lea [[RLO]],{{[[]}}[[RLO]]-0x6d3841a8{{[]]}}
-
-; BLINDINGOM1-LABEL: add_arg_plus_64bits
-; BLINDINGOM1: sar [[RHI:e[a-z]*]],0x1f
-; BLINDINGOM1: mov [[RLO:e[a-z]*]],0x61a345a8
-; BLINDINGOM1-NEXT: lea [[RLO]],{{[[]}}[[RLO]]-0x6d3841a8{{[]]}}
-
-; POOLING-LABEL: add_arg_plus_64bits
-; POOLING: mov e{{[a-z]*}},{{(DWORD PTR )?}}ds:0x0 {{[0-9a-f]*}}: R_386_32 .L$i32$f46b0400
-}
-
-define internal i64 @load_arg_plus_64bits(i64* %arg) {
-entry:
-  %arg.int = ptrtoint i64* %arg to i32
-  %arg.new = add i32 %arg.int, 90000
-  %arg.ptr = inttoptr i32 %arg.new to i64*
-  %arg.load = load i64, i64* %arg.ptr, align 1
-  ret i64 %arg.load
-
-; BLINDINGO2-LABEL: load_arg_plus_64bits
-; BLINDINGO2: lea e{{[a-z]*}},{{[[]}}e{{[a-z]*}}+0x7087a139{{[]]}}
-; BLINDINGO2: mov e{{[a-z]*}},DWORD PTR {{[[]}}e{{[a-z]*}}-0x708641a9{{[]]}}
-
-; BLINDINGOM1-LABEL: load_arg_plus_64bits
-; BLINDINGOM1: mov e{{[a-z]*}},0x7087a139
-; BLINDINGOM1-NEXT: lea e{{[a-z]*}},{{[[]}}e{{[a-z]*}}-0x708641a9{{[]]}}
-
-; POOLING-LABEL: load_arg_plus_64bits
-; POOLING: mov e{{[a-z]x}},{{(DWORD PTR )?}}ds:0x0 {{[0-9a-f]*}}: R_386_32 .L$i32$00000004
-}
-
-define internal i32 @add_const_8bits(i32 %a) {
-entry:
-  %a_8 = trunc i32 %a to i8
-  %add = add i8 %a_8, 123
-  %ret = zext i8 %add to i32
-  ret i32 %ret
-
-; BLINDINGO2-LABEL: add_const_8bits
-; BLINDINGO2: mov e{{[a-z]*}},0x73d44225
-; BLINDINGO2-NEXT: e{{[a-z]*}},{{[[]}}e{{[a-z]*}}-0x73d441aa{{[]]}}
-
-; BLINDINGOM1-LABEL: add_const_8bits
-; BLINDINGOM1: mov e{{[a-z]*}},0x73d44225
-; BLINDINGOM1-NEXT: e{{[a-z]*}},{{[[]}}e{{[a-z]*}}-0x73d441aa{{[]]}}
-
-; POOLING-LABEL: add_const_8bits
-; POOLING: mov {{[a-z]l}},{{(BYTE PTR )?}}ds:0x0 {{[0-9a-f]*}}: R_386_32 .L$i8$0000007b
-}
-
-define internal i32 @add_const_16bits(i32 %a) {
-entry:
-  %a_16 = trunc i32 %a to i16
-  %add = add i16 %a_16, 32766
-  %ret = zext i16 %add to i32
-  ret i32 %ret
-
-; BLINDINGO2-LABEL: add_const_16bits
-; BLINDINGO2: mov e{{[a-z]*}},0x7722c1a5
-; BLINDINGO2-NEXT: e{{[a-z]*}},{{[[]}}e{{[a-z]*}}-0x772241a7{{[]]}}
-
-; BLINDINGOM1-LABEL: add_const_16bits
-; BLINDINGOM1: mov e{{[a-z]*}},0x7722c1a5
-; BLINDINGOM1-NEXT: e{{[a-z]*}},{{[[]}}e{{[a-z]*}}-0x772241a7{{[]]}}
-
-; POOLING-LABEL: add_const_16bits
-; POOLING: mov {{[a-z]x}},{{(WORD PTR )?}}ds:0x0 {{[0-9a-f]*}}: R_386_32 .L$i16$00007ffe
-
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/randomize-regalloc.ll b/third_party/subzero/tests_lit/llvm2ice_tests/randomize-regalloc.ll
deleted file mode 100644
index e13410a..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/randomize-regalloc.ll
+++ /dev/null
@@ -1,80 +0,0 @@
-; This is a smoke test of randomized register allocation.  The output
-; of this test will change with changes to the random number generator
-; implementation.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 -sz-seed=1 \
-; RUN:   -randomize-regalloc -split-local-vars=0 \
-; RUN:   | FileCheck %s --check-prefix=CHECK_1
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 -sz-seed=1 \
-; RUN:   -randomize-regalloc \
-; RUN:   | FileCheck %s --check-prefix=OPTM1_1
-
-; Same tests but with a different seed, just to verify randomness.
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 -sz-seed=123 \
-; RUN:   -randomize-regalloc -split-local-vars=0 \
-; RUN:   | FileCheck %s --check-prefix=CHECK_123
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 -sz-seed=123 \
-; RUN:   -randomize-regalloc \
-; RUN:   | FileCheck %s --check-prefix=OPTM1_123
-
-define internal <4 x i32> @mul_v4i32(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %res = mul <4 x i32> %a, %b
-  ret <4 x i32> %res
-; OPTM1_1-LABEL: mul_v4i32
-; OPTM1_1: sub     esp,0x3c
-; OPTM1_1-NEXT: movups  XMMWORD PTR [esp+0x20],xmm0
-; OPTM1_1-NEXT: movups  XMMWORD PTR [esp+0x10],xmm1
-; OPTM1_1-NEXT: movups  xmm0,XMMWORD PTR [esp+0x20]
-; OPTM1_1-NEXT: pshufd  xmm6,XMMWORD PTR [esp+0x20],0x31
-; OPTM1_1-NEXT: pshufd  xmm2,XMMWORD PTR [esp+0x10],0x31
-; OPTM1_1-NEXT: pmuludq xmm0,XMMWORD PTR [esp+0x10]
-; OPTM1_1-NEXT: pmuludq xmm6,xmm2
-; OPTM1_1-NEXT: shufps  xmm0,xmm6,0x88
-; OPTM1_1-NEXT: pshufd  xmm0,xmm0,0xd8
-; OPTM1_1-NEXT: movups  XMMWORD PTR [esp],xmm0
-; OPTM1_1-NEXT: movups  xmm0,XMMWORD PTR [esp]
-; OPTM1_1-NEXT: add     esp,0x3c
-; OPTM1_1-NEXT: ret
-
-; CHECK_1-LABEL: mul_v4i32
-; CHECK_1: movups  xmm7,xmm0
-; CHECK_1-NEXT: pshufd  xmm0,xmm0,0x31
-; CHECK_1-NEXT: pshufd  xmm5,xmm1,0x31
-; CHECK_1-NEXT: pmuludq xmm7,xmm1
-; CHECK_1-NEXT: pmuludq xmm0,xmm5
-; CHECK_1-NEXT: shufps  xmm7,xmm0,0x88
-; CHECK_1-NEXT: pshufd  xmm7,xmm7,0xd8
-; CHECK_1-NEXT: movups  xmm0,xmm7
-; CHECK_1-NEXT: ret
-
-; OPTM1_123-LABEL: mul_v4i32
-; OPTM1_123: sub     esp,0x3c
-; OPTM1_123-NEXT: movups  XMMWORD PTR [esp+0x20],xmm0
-; OPTM1_123-NEXT: movups  XMMWORD PTR [esp+0x10],xmm1
-; OPTM1_123-NEXT: movups  xmm0,XMMWORD PTR [esp+0x20]
-; OPTM1_123-NEXT: pshufd  xmm6,XMMWORD PTR [esp+0x20],0x31
-; OPTM1_123-NEXT: pshufd  xmm2,XMMWORD PTR [esp+0x10],0x31
-; OPTM1_123-NEXT: pmuludq xmm0,XMMWORD PTR [esp+0x10]
-; OPTM1_123-NEXT: pmuludq xmm6,xmm2
-; OPTM1_123-NEXT: shufps  xmm0,xmm6,0x88
-; OPTM1_123-NEXT: pshufd  xmm0,xmm0,0xd8
-; OPTM1_123-NEXT: movups  XMMWORD PTR [esp],xmm0
-; OPTM1_123-NEXT: movups  xmm0,XMMWORD PTR [esp]
-; OPTM1_123-NEXT: add     esp,0x3c
-; OPTM1_123-NEXT: ret
-
-; CHECK_123-LABEL: mul_v4i32
-; CHECK_123: movups  xmm5,xmm0
-; CHECK_123-NEXT: pshufd  xmm0,xmm0,0x31
-; CHECK_123-NEXT: pshufd  xmm7,xmm1,0x31
-; CHECK_123-NEXT: pmuludq xmm5,xmm1
-; CHECK_123-NEXT: pmuludq xmm0,xmm7
-; CHECK_123-NEXT: shufps  xmm5,xmm0,0x88
-; CHECK_123-NEXT: pshufd  xmm5,xmm5,0xd8
-; CHECK_123-NEXT: movups  xmm0,xmm5
-; CHECK_123-NEXT: ret
-}
-
-; ERRORS-NOT: ICE translation error
-; DUMP-NOT: SZ
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/rangespec.ll b/third_party/subzero/tests_lit/llvm2ice_tests/rangespec.ll
deleted file mode 100644
index aeadbf8..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/rangespec.ll
+++ /dev/null
@@ -1,68 +0,0 @@
-; Tests basic functionality of RangeSpec matching.  Makes use of the fact that
-; "-verbose=status" prints the sequence number, and "-test-status" can suppress
-; this output.  Note that seq=2 is the first sequence number for functions.
-
-; REQUIRES: allow_dump
-
-define internal void @Func2() { ret void }
-define internal void @Func3() { ret void }
-define internal void @Func4() { ret void }
-define internal void @Func5() { ret void }
-define internal void @Func6() { ret void }
-define internal void @Func7() { ret void }
-define internal void @Func8() { ret void }
-define internal void @Func9() { ret void }
-define internal void @Func10() { ret void }
-define internal void @Func11() { ret void }
-
-; A few tests that include everything.
-; RUN: %p2i -i %s -o /dev/null --args -verbose status -threads=0 \
-; RUN:   -test-status=: \
-; RUN:   | FileCheck %s --check-prefix=TEST1
-; RUN: %p2i -i %s -o /dev/null --args -verbose status -threads=0 \
-; RUN:   -test-status=2: \
-; RUN:   | FileCheck %s --check-prefix=TEST1
-; RUN: %p2i -i %s -o /dev/null --args -verbose status -threads=0 \
-; RUN:   -test-status=:20 \
-; RUN:   | FileCheck %s --check-prefix=TEST1
-; RUN: %p2i -i %s -o /dev/null --args -verbose status -threads=0 \
-; RUN:   -test-status=-xxx \
-; RUN:   | FileCheck %s --check-prefix=TEST1
-; TEST1: seq=2
-; TEST1: seq=3
-; TEST1: seq=4
-; TEST1: seq=5
-; TEST1: seq=6
-; TEST1: seq=7
-; TEST1: seq=8
-; TEST1: seq=9
-; TEST1: seq=10
-; TEST1: seq=11
-
-; Several ways of expressing 3+4+5+6
-; RUN: %p2i -i %s -o /dev/null --args -verbose status -threads=0 \
-; RUN:   -test-status=3:7 \
-; RUN:   | FileCheck %s --check-prefix=TEST2
-; RUN: %p2i -i %s -o /dev/null --args -verbose status -threads=0 \
-; RUN:   -test-status=3:6,6 \
-; RUN:   | FileCheck %s --check-prefix=TEST2
-; RUN: %p2i -i %s -o /dev/null --args -verbose status -threads=0 \
-; RUN:   -test-status=5,3:5,6 \
-; RUN:   | FileCheck %s --check-prefix=TEST2
-; RUN: %p2i -i %s -o /dev/null --args -verbose status -threads=0 \
-; RUN:   -test-status=3:9,-7: \
-; RUN:   | FileCheck %s --check-prefix=TEST2
-; RUN: %p2i -i %s -o /dev/null --args -verbose status -threads=0 \
-; RUN:   -test-status=3:9,-Func7,-Func8 \
-; RUN:   | FileCheck %s --check-prefix=TEST2
-; TEST2-NOT: seq=2
-; TEST2: seq=3
-; TEST2: seq=4
-; TEST2: seq=5
-; TEST2: seq=6
-; TEST2-NOT: seq=7
-; TEST2-NOT: seq=8
-; TEST2-NOT: seq=9
-; TEST2-NOT: seq=10
-; TEST2-NOT: seq=11
-; TEST2-NOT: seq=12
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/regalloc_evict_non_overlap.ll b/third_party/subzero/tests_lit/llvm2ice_tests/regalloc_evict_non_overlap.ll
deleted file mode 100644
index 0833a5c..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/regalloc_evict_non_overlap.ll
+++ /dev/null
@@ -1,78 +0,0 @@
-; Bugpoint-reduced example that demonstrated a bug (assertion failure)
-; in register allocation.  See
-; https://code.google.com/p/nativeclient/issues/detail?id=3903 .
-;
-; TODO(kschimpf) Find out why lc2i is needed.
-; RUN: %lc2i -i %s --args -O2 --verbose regalloc
-
-define internal void @foo() {
-bb:
-  br i1 undef, label %bb13, label %bb14
-
-bb13:
-  unreachable
-
-bb14:
-  br i1 undef, label %bb50, label %bb16
-
-bb15:                                             ; preds = %bb42, %bb35
-  br i1 undef, label %bb50, label %bb16
-
-bb16:                                             ; preds = %bb49, %bb15, %bb14
-  %tmp = phi i32 [ undef, %bb14 ], [ %tmp18, %bb49 ], [ undef, %bb15 ]
-  br label %bb17
-
-bb17:                                             ; preds = %bb48, %bb16
-  %tmp18 = phi i32 [ undef, %bb16 ], [ undef, %bb48 ]
-  %tmp19 = add i32 %tmp18, 4
-  br i1 undef, label %bb21, label %bb46
-
-bb21:                                             ; preds = %bb27, %bb17
-  %tmp22 = phi i32 [ undef, %bb17 ], [ %tmp30, %bb27 ]
-  %tmp23 = add i32 undef, -1
-  %tmp24 = add i32 undef, undef
-  %undef.ptr = inttoptr i32 undef to i32*
-  %tmp25 = load i32, i32* %undef.ptr, align 1
-  %tmp26 = icmp eq i32 undef, %tmp22
-  br i1 %tmp26, label %bb34, label %bb32
-
-bb27:                                             ; preds = %bb42, %bb34
-  %tmp28 = icmp sgt i32 %tmp23, 0
-  %tmp29 = inttoptr i32 %tmp19 to i32*
-  %tmp30 = load i32, i32* %tmp29, align 1
-  br i1 %tmp28, label %bb21, label %bb46
-
-bb32:                                             ; preds = %bb21
-  %tmp33 = inttoptr i32 %tmp24 to i32*
-  store i32 0, i32* %tmp33, align 1
-  br label %bb34
-
-bb34:                                             ; preds = %bb32, %bb31
-  br i1 undef, label %bb27, label %bb35
-
-bb35:                                             ; preds = %bb34
-  %tmp40 = inttoptr i32 %tmp25 to void (i32)*
-  call void %tmp40(i32 undef)
-  br i1 undef, label %bb42, label %bb15
-
-bb42:                                             ; preds = %bb35
-  %tmp43 = inttoptr i32 %tmp to i32*
-  %tmp44 = load i32, i32* %tmp43, align 1
-  %tmp45 = icmp eq i32 %tmp44, %tmp18
-  br i1 %tmp45, label %bb27, label %bb15
-
-bb46:                                             ; preds = %bb27, %bb17
-  br i1 undef, label %bb47, label %bb49
-
-bb47:                                             ; preds = %bb46
-  br i1 undef, label %bb50, label %bb48
-
-bb48:                                             ; preds = %bb47
-  br i1 undef, label %bb50, label %bb17
-
-bb49:                                             ; preds = %bb46
-  br i1 undef, label %bb50, label %bb16
-
-bb50:                                             ; preds = %bb49, %bb48, %bb47, %bb15, %bb14
-  unreachable
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/reorder-basic-blocks.ll b/third_party/subzero/tests_lit/llvm2ice_tests/reorder-basic-blocks.ll
deleted file mode 100644
index 440b08d..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/reorder-basic-blocks.ll
+++ /dev/null
@@ -1,41 +0,0 @@
-; Trivial smoke test of basic block reordering. Different random seeds should
-; generate different basic block layout.
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --filetype=asm --args -O2 -sz-seed=1 \
-; RUN: -reorder-basic-blocks -threads=0 \
-; RUN: | FileCheck %s --check-prefix=SEED1
-; RUN: %p2i -i %s --filetype=asm --args -O2 -sz-seed=2 \
-; RUN: -reorder-basic-blocks -threads=0 \
-; RUN: | FileCheck %s --check-prefix=SEED2
-
-define internal void @basic_block_reordering(i32 %foo, i32 %bar) {
-entry:
-  %r1 = icmp eq i32 %foo, %bar
-  br i1 %r1, label %BB1, label %BB2
-BB1:
-  %r2 = icmp sgt i32 %foo, %bar
-  br i1 %r2, label %BB3, label %BB4
-BB2:
-  %r3 = icmp slt i32 %foo, %bar
-  br i1 %r3, label %BB3, label %BB4
-BB3:
-  ret void
-BB4:
-  ret void
-
-
-; SEED1-LABEL: basic_block_reordering:
-; SEED1: .Lbasic_block_reordering$entry:
-; SEED1: .Lbasic_block_reordering$BB1:
-; SEED1: .Lbasic_block_reordering$BB2:
-; SEED1: .Lbasic_block_reordering$BB4:
-; SEED1: .Lbasic_block_reordering$BB3:
-
-; SEED2-LABEL: basic_block_reordering:
-; SEED2: .Lbasic_block_reordering$entry:
-; SEED2: .Lbasic_block_reordering$BB2:
-; SEED2: .Lbasic_block_reordering$BB1:
-; SEED2: .Lbasic_block_reordering$BB4:
-; SEED2: .Lbasic_block_reordering$BB3
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/reorder-functions.ll b/third_party/subzero/tests_lit/llvm2ice_tests/reorder-functions.ll
deleted file mode 100644
index 5351e43..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/reorder-functions.ll
+++ /dev/null
@@ -1,90 +0,0 @@
-; This is a smoke test of function reordering.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:    -sz-seed=1 -reorder-functions \
-; RUN:    | FileCheck %s --check-prefix=DEFAULTWINDOWSIZE
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \
-; RUN:    -sz-seed=1 -reorder-functions \
-; RUN:    | FileCheck %s --check-prefix=DEFAULTWINDOWSIZE
-
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:    -sz-seed=1 -reorder-functions \
-; RUN:    -reorder-functions-window-size=1 \
-; RUN:    | FileCheck %s --check-prefix=WINDOWSIZE1
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \
-; RUN:    -sz-seed=1 -reorder-functions \
-; RUN:    -reorder-functions-window-size=1 \
-; RUN:    | FileCheck %s --check-prefix=WINDOWSIZE1
-
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:    -sz-seed=1 -reorder-functions \
-; RUN:    -threads=0 \
-; RUN:    | FileCheck %s --check-prefix=SEQUENTIAL
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \
-; RUN:    -sz-seed=1 -reorder-functions \
-; RUN:    -threads=0 \
-; RUN:    | FileCheck %s --check-prefix=SEQUENTIAL
-
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:    -sz-seed=1 -reorder-functions \
-; RUN:    -reorder-functions-window-size=0xffffffff \
-; RUN:    | FileCheck %s --check-prefix=WINDOWSIZEMAX
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \
-; RUN:    -sz-seed=1 -reorder-functions \
-; RUN:    -reorder-functions-window-size=0xffffffff \
-; RUN:    | FileCheck %s --check-prefix=WINDOWSIZEMAX
-
-define internal void @func1() {
-  ret void
-}
-
-define internal void @func2() {
-  ret void
-}
-
-define internal void @func3() {
-  ret void
-}
-
-define internal void @func4() {
-  ret void
-}
-
-define internal void @func5() {
-  ret void
-}
-
-define internal void @func6() {
-  ret void
-}
-
-; DEFAULTWINDOWSIZE-LABEL: func1
-; DEFAULTWINDOWSIZE-LABEL: func4
-; DEFAULTWINDOWSIZE-LABEL: func5
-; DEFAULTWINDOWSIZE-LABEL: func2
-; DEFAULTWINDOWSIZE-LABEL: func6
-; DEFAULTWINDOWSIZE-LABEL: func3
-
-; WINDOWSIZE1-LABEL: func1
-; WINDOWSIZE1-LABEL: func2
-; WINDOWSIZE1-LABEL: func3
-; WINDOWSIZE1-LABEL: func4
-; WINDOWSIZE1-LABEL: func5
-; WINDOWSIZE1-LABEL: func6
-
-; SEQUENTIAL-LABEL: func1
-; SEQUENTIAL-LABEL: func2
-; SEQUENTIAL-LABEL: func3
-; SEQUENTIAL-LABEL: func4
-; SEQUENTIAL-LABEL: func5
-; SEQUENTIAL-LABEL: func6
-
-; WINDOWSIZEMAX-LABEL: func1
-; WINDOWSIZEMAX-LABEL: func4
-; WINDOWSIZEMAX-LABEL: func5
-; WINDOWSIZEMAX-LABEL: func2
-; WINDOWSIZEMAX-LABEL: func6
-; WINDOWSIZEMAX-LABEL: func3
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/reorder-global-variables.ll b/third_party/subzero/tests_lit/llvm2ice_tests/reorder-global-variables.ll
deleted file mode 100644
index a1239b6..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/reorder-global-variables.ll
+++ /dev/null
@@ -1,71 +0,0 @@
-; Test of global variable reordering.
-
-; REQUIRES: allow_dump
-
-; Test x8632 asm output
-; RUN: %if --need=target_X8632 --command %p2i --filetype=asm --target x8632 \
-; RUN:     -i %s --assemble --disassemble --dis-flags=-rD \
-; RUN:      --args -sz-seed=1 -reorder-global-variables -O2 \
-; RUN:     | %if --need=target_X8632 --command FileCheck %s
-; RUN: %if --need=target_X8632 --command %p2i --filetype=asm --target x8632 \
-; RUN:     -i %s --assemble --disassemble --dis-flags=-rD \
-; RUN:     --args -sz-seed=1 -reorder-global-variables -Om1 \
-; RUN:     | %if --need=target_X8632 --command FileCheck %s
-
-; Test x8632 elf output
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --target x8632 \
-; RUN:     -i %s --disassemble --dis-flags=-rD \
-; RUN:     --args -sz-seed=1 -reorder-global-variables -O2 \
-; RUN:     | %if --need=target_X8632 --command FileCheck %s
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --target x8632 \
-; RUN:     -i %s --disassemble --dis-flags=-rD \
-; RUN:     --args -sz-seed=1 -reorder-global-variables -Om1 \
-; RUN:     | %if --need=target_X8632 --command  FileCheck %s
-
-; Test arm output
-; RUN: %if --need=target_ARM32 --command %p2i --filetype=obj --target arm32 \
-; RUN:     -i %s --disassemble --dis-flags=-rD \
-; RUN:     --args -sz-seed=1 -reorder-global-variables \
-; RUN:     -O2 \
-; RUN:     | %if --need=target_ARM32 --command FileCheck %s
-; RUN: %if --need=target_ARM32 --command %p2i --filetype=obj --target arm32 \
-; RUN:     -i %s --disassemble --dis-flags=-rD \
-; RUN:     --args -sz-seed=1 -reorder-global-variables \
-; RUN:     -Om1 \
-; RUN:     | %if --need=target_ARM32 --command FileCheck %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:     --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:     mips32 -i %s --dis-flags=-rD --args -O2 -sz-seed=1 \
-; RUN:     -reorder-global-variables \
-; RUN:     | %if --need=target_MIPS32 --need=allow_dump --command FileCheck %s
-
-@PrimitiveInit = internal global [4 x i8] c"\1B\00\00\00", align 4
-
-@PrimitiveInitConst = internal constant [4 x i8] c"\0D\00\00\00", align 4
-
-@ArrayInit = internal global [20 x i8] c"\0A\00\00\00\14\00\00\00\1E\00\00\00(\00\00\002\00\00\00", align 4
-
-@ArrayInitPartial = internal global [40 x i8] c"<\00\00\00F\00\00\00P\00\00\00Z\00\00\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 4
-
-@PrimitiveInitStatic = internal global [4 x i8] zeroinitializer, align 4
-
-@PrimitiveUninit = internal global [4 x i8] zeroinitializer, align 4
-
-@ArrayUninit = internal global [20 x i8] zeroinitializer, align 4
-
-@ArrayUninitConstDouble = internal constant [200 x i8] zeroinitializer, align 8
-
-@ArrayUninitConstInt = internal constant [20 x i8] zeroinitializer, align 4
-
-; Make sure the shuffled order is correct.
-
-; CHECK-LABEL: ArrayInit
-; CHECK-LABEL: PrimitiveInit
-; CHECK-LABEL: ArrayInitPartial
-; CHECK-LABEL: PrimitiveUninit
-; CHECK-LABEL: ArrayUninit
-; CHECK-LABEL: PrimitiveInitStatic
-; CHECK-LABEL: ArrayUninitConstDouble
-; CHECK-LABEL: ArrayUninitConstInt
-; CHECK-LABEL: PrimitiveInitConst
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/reorder-pooled-constants.ll b/third_party/subzero/tests_lit/llvm2ice_tests/reorder-pooled-constants.ll
deleted file mode 100644
index 76bfc0f..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/reorder-pooled-constants.ll
+++ /dev/null
@@ -1,548 +0,0 @@
-; This is a smoke test for reordering pooled constants.
-; This option is only implemented for target X8632 for now.
-
-; RUN: %p2i --assemble --disassemble --filetype=obj --dis-flags=-s \
-; RUN:   --target x8632 -i %s --args -sz-seed=1 -O2 -reorder-pooled-constants \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s --check-prefix=X86
-
-; RUN: %p2i --assemble --disassemble --filetype=obj --dis-flags=-s \
-; RUN:   --target x8632 -i %s --args -sz-seed=1 -Om1 -reorder-pooled-constants \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s --check-prefix=X86
-
-@__init_array_start = internal constant [0 x i8] zeroinitializer, align 4
-@__fini_array_start = internal constant [0 x i8] zeroinitializer, align 4
-@__tls_template_start = internal constant [0 x i8] zeroinitializer, align 8
-@__tls_template_alignment = internal constant [4 x i8] c"\01\00\00\00", align 4
-
-define internal float @FpLookup1(i32 %Arg) {
-entry:
-  switch i32 %Arg, label %return [
-    i32 0, label %sw.bb
-    i32 1, label %sw.bb1
-    i32 2, label %sw.bb4
-    i32 3, label %sw.bb7
-    i32 -1, label %sw.bb10
-    i32 -2, label %sw.bb14
-    i32 -3, label %sw.bb19
-    i32 10, label %sw.bb24
-    i32 -10, label %sw.bb27
-    i32 100, label %sw.bb30
-    i32 101, label %sw.bb33
-    i32 102, label %sw.bb36
-    i32 103, label %sw.bb39
-    i32 -101, label %sw.bb42
-    i32 -102, label %sw.bb47
-    i32 -103, label %sw.bb52
-    i32 110, label %sw.bb57
-    i32 -110, label %sw.bb60
-  ]
-
-sw.bb:                                            ; preds = %entry
-  %call = call float @Dummy(i32 0)
-  %add = fadd float %call, 1.000000e+00
-  br label %return
-
-sw.bb1:                                           ; preds = %entry
-  %call2 = call float @Dummy(i32 1)
-  %add3 = fadd float %call2, 2.000000e+00
-  br label %return
-
-sw.bb4:                                           ; preds = %entry
-  %call5 = call float @Dummy(i32 2)
-  %add6 = fadd float %call5, 4.000000e+00
-  br label %return
-
-sw.bb7:                                           ; preds = %entry
-  %call8 = call float @Dummy(i32 3)
-  %add9 = fadd float %call8, 8.000000e+00
-  br label %return
-
-sw.bb10:                                          ; preds = %entry
-  %call11 = call float @Dummy(i32 -1)
-  %conv13 = fadd float %call11, 5.000000e-01
-  br label %return
-
-sw.bb14:                                          ; preds = %entry
-  %call15 = call float @Dummy(i32 -2)
-  %conv16 = fpext float %call15 to double
-  %add17 = fadd double %conv16, 0x3FD5555555555555
-  %conv18 = fptrunc double %add17 to float
-  br label %return
-
-sw.bb19:                                          ; preds = %entry
-  %call20 = call float @Dummy(i32 -3)
-  %conv23 = fadd float %call20, 2.500000e-01
-  br label %return
-
-sw.bb24:                                          ; preds = %entry
-  %call25 = call float @Dummy(i32 10)
-  %add26 = fadd float %call25, 0x7FF8000000000000
-  br label %return
-
-sw.bb27:                                          ; preds = %entry
-  %call28 = call float @Dummy(i32 -10)
-  %add29 = fadd float %call28, 0xFFF8000000000000
-  br label %return
-
-sw.bb30:                                          ; preds = %entry
-  %call31 = call float @Dummy(i32 100)
-  %add32 = fadd float %call31, 1.000000e+00
-  br label %return
-
-sw.bb33:                                          ; preds = %entry
-  %call34 = call float @Dummy(i32 101)
-  %add35 = fadd float %call34, 2.000000e+00
-  br label %return
-
-sw.bb36:                                          ; preds = %entry
-  %call37 = call float @Dummy(i32 102)
-  %add38 = fadd float %call37, 4.000000e+00
-  br label %return
-
-sw.bb39:                                          ; preds = %entry
-  %call40 = call float @Dummy(i32 103)
-  %add41 = fadd float %call40, 8.000000e+00
-  br label %return
-
-sw.bb42:                                          ; preds = %entry
-  %call43 = call float @Dummy(i32 -101)
-  %conv46 = fadd float %call43, 5.000000e-01
-  br label %return
-
-sw.bb47:                                          ; preds = %entry
-  %call48 = call float @Dummy(i32 -102)
-  %conv49 = fpext float %call48 to double
-  %add50 = fadd double %conv49, 0x3FD5555555555555
-  %conv51 = fptrunc double %add50 to float
-  br label %return
-
-sw.bb52:                                          ; preds = %entry
-  %call53 = call float @Dummy(i32 -103)
-  %conv56 = fadd float %call53, 2.500000e-01
-  br label %return
-
-sw.bb57:                                          ; preds = %entry
-  %call58 = call float @Dummy(i32 110)
-  %add59 = fadd float %call58, 0x7FF8000000000000
-  br label %return
-
-sw.bb60:                                          ; preds = %entry
-  %call61 = call float @Dummy(i32 -110)
-  %add62 = fadd float %call61, 0xFFF8000000000000
-  br label %return
-
-return:                                           ; preds = %entry, %sw.bb60, %sw.bb57, %sw.bb52, %sw.bb47, %sw.bb42, %sw.bb39, %sw.bb36, %sw.bb33, %sw.bb30, %sw.bb27, %sw.bb24, %sw.bb19, %sw.bb14, %sw.bb10, %sw.bb7, %sw.bb4, %sw.bb1, %sw.bb
-  %retval.0 = phi float [ %add62, %sw.bb60 ], [ %add59, %sw.bb57 ], [ %conv56, %sw.bb52 ], [ %conv51, %sw.bb47 ], [ %conv46, %sw.bb42 ], [ %add41, %sw.bb39 ], [ %add38, %sw.bb36 ], [ %add35, %sw.bb33 ], [ %add32, %sw.bb30 ], [ %add29, %sw.bb27 ], [ %add26, %sw.bb24 ], [ %conv23, %sw.bb19 ], [ %conv18, %sw.bb14 ], [ %conv13, %sw.bb10 ], [ %add9, %sw.bb7 ], [ %add6, %sw.bb4 ], [ %add3, %sw.bb1 ], [ %add, %sw.bb ], [ 0.000000e+00, %entry ]
-  ret float %retval.0
-}
-
-declare float @Dummy(i32)
-
-define internal float @FpLookup2(i32 %Arg) {
-entry:
-  switch i32 %Arg, label %return [
-    i32 0, label %sw.bb
-    i32 1, label %sw.bb1
-    i32 2, label %sw.bb4
-    i32 3, label %sw.bb7
-    i32 -1, label %sw.bb10
-    i32 -2, label %sw.bb14
-    i32 -3, label %sw.bb19
-    i32 10, label %sw.bb24
-    i32 -10, label %sw.bb27
-    i32 100, label %sw.bb30
-    i32 101, label %sw.bb33
-    i32 102, label %sw.bb36
-    i32 103, label %sw.bb39
-    i32 -101, label %sw.bb42
-    i32 -102, label %sw.bb47
-    i32 -103, label %sw.bb52
-    i32 110, label %sw.bb57
-    i32 -110, label %sw.bb60
-  ]
-
-sw.bb:                                            ; preds = %entry
-  %call = call float @Dummy(i32 0)
-  %add = fadd float %call, 1.000000e+00
-  br label %return
-
-sw.bb1:                                           ; preds = %entry
-  %call2 = call float @Dummy(i32 1)
-  %add3 = fadd float %call2, 2.000000e+00
-  br label %return
-
-sw.bb4:                                           ; preds = %entry
-  %call5 = call float @Dummy(i32 2)
-  %add6 = fadd float %call5, 4.000000e+00
-  br label %return
-
-sw.bb7:                                           ; preds = %entry
-  %call8 = call float @Dummy(i32 3)
-  %add9 = fadd float %call8, 8.000000e+00
-  br label %return
-
-sw.bb10:                                          ; preds = %entry
-  %call11 = call float @Dummy(i32 -1)
-  %conv13 = fadd float %call11, 5.000000e-01
-  br label %return
-
-sw.bb14:                                          ; preds = %entry
-  %call15 = call float @Dummy(i32 -2)
-  %conv16 = fpext float %call15 to double
-  %add17 = fadd double %conv16, 0x3FD5555555555555
-  %conv18 = fptrunc double %add17 to float
-  br label %return
-
-sw.bb19:                                          ; preds = %entry
-  %call20 = call float @Dummy(i32 -3)
-  %conv23 = fadd float %call20, 2.500000e-01
-  br label %return
-
-sw.bb24:                                          ; preds = %entry
-  %call25 = call float @Dummy(i32 10)
-  %add26 = fadd float %call25, 0x7FF8000000000000
-  br label %return
-
-sw.bb27:                                          ; preds = %entry
-  %call28 = call float @Dummy(i32 -10)
-  %add29 = fadd float %call28, 0xFFF8000000000000
-  br label %return
-
-sw.bb30:                                          ; preds = %entry
-  %call31 = call float @Dummy(i32 100)
-  %add32 = fadd float %call31, 1.000000e+00
-  br label %return
-
-sw.bb33:                                          ; preds = %entry
-  %call34 = call float @Dummy(i32 101)
-  %add35 = fadd float %call34, 2.000000e+00
-  br label %return
-
-sw.bb36:                                          ; preds = %entry
-  %call37 = call float @Dummy(i32 102)
-  %add38 = fadd float %call37, 4.000000e+00
-  br label %return
-
-sw.bb39:                                          ; preds = %entry
-  %call40 = call float @Dummy(i32 103)
-  %add41 = fadd float %call40, 8.000000e+00
-  br label %return
-
-sw.bb42:                                          ; preds = %entry
-  %call43 = call float @Dummy(i32 -101)
-  %conv46 = fadd float %call43, 5.000000e-01
-  br label %return
-
-sw.bb47:                                          ; preds = %entry
-  %call48 = call float @Dummy(i32 -102)
-  %conv49 = fpext float %call48 to double
-  %add50 = fadd double %conv49, 0x3FD5555555555555
-  %conv51 = fptrunc double %add50 to float
-  br label %return
-
-sw.bb52:                                          ; preds = %entry
-  %call53 = call float @Dummy(i32 -103)
-  %conv56 = fadd float %call53, 2.500000e-01
-  br label %return
-
-sw.bb57:                                          ; preds = %entry
-  %call58 = call float @Dummy(i32 110)
-  %add59 = fadd float %call58, 0x7FF8000000000000
-  br label %return
-
-sw.bb60:                                          ; preds = %entry
-  %call61 = call float @Dummy(i32 -110)
-  %add62 = fadd float %call61, 0xFFF8000000000000
-  br label %return
-
-return:                                           ; preds = %entry, %sw.bb60, %sw.bb57, %sw.bb52, %sw.bb47, %sw.bb42, %sw.bb39, %sw.bb36, %sw.bb33, %sw.bb30, %sw.bb27, %sw.bb24, %sw.bb19, %sw.bb14, %sw.bb10, %sw.bb7, %sw.bb4, %sw.bb1, %sw.bb
-  %retval.0 = phi float [ %add62, %sw.bb60 ], [ %add59, %sw.bb57 ], [ %conv56, %sw.bb52 ], [ %conv51, %sw.bb47 ], [ %conv46, %sw.bb42 ], [ %add41, %sw.bb39 ], [ %add38, %sw.bb36 ], [ %add35, %sw.bb33 ], [ %add32, %sw.bb30 ], [ %add29, %sw.bb27 ], [ %add26, %sw.bb24 ], [ %conv23, %sw.bb19 ], [ %conv18, %sw.bb14 ], [ %conv13, %sw.bb10 ], [ %add9, %sw.bb7 ], [ %add6, %sw.bb4 ], [ %add3, %sw.bb1 ], [ %add, %sw.bb ], [ 0.000000e+00, %entry ]
-  ret float %retval.0
-}
-
-define internal double @FpLookup3(i32 %Arg) {
-entry:
-  switch i32 %Arg, label %return [
-    i32 0, label %sw.bb
-    i32 1, label %sw.bb1
-    i32 2, label %sw.bb5
-    i32 3, label %sw.bb9
-    i32 -1, label %sw.bb13
-    i32 -2, label %sw.bb17
-    i32 -3, label %sw.bb21
-    i32 10, label %sw.bb25
-    i32 -10, label %sw.bb29
-    i32 100, label %sw.bb33
-    i32 101, label %sw.bb37
-    i32 102, label %sw.bb41
-    i32 103, label %sw.bb45
-    i32 -101, label %sw.bb49
-    i32 -102, label %sw.bb53
-    i32 -103, label %sw.bb57
-    i32 110, label %sw.bb61
-    i32 -110, label %sw.bb65
-  ]
-
-sw.bb:                                            ; preds = %entry
-  %call = call float @Dummy(i32 0)
-  %add = fadd float %call, 1.000000e+00
-  %conv = fpext float %add to double
-  br label %return
-
-sw.bb1:                                           ; preds = %entry
-  %call2 = call float @Dummy(i32 1)
-  %add3 = fadd float %call2, 2.000000e+00
-  %conv4 = fpext float %add3 to double
-  br label %return
-
-sw.bb5:                                           ; preds = %entry
-  %call6 = call float @Dummy(i32 2)
-  %add7 = fadd float %call6, 4.000000e+00
-  %conv8 = fpext float %add7 to double
-  br label %return
-
-sw.bb9:                                           ; preds = %entry
-  %call10 = call float @Dummy(i32 3)
-  %add11 = fadd float %call10, 8.000000e+00
-  %conv12 = fpext float %add11 to double
-  br label %return
-
-sw.bb13:                                          ; preds = %entry
-  %call14 = call float @Dummy(i32 -1)
-  %conv15 = fpext float %call14 to double
-  %add16 = fadd double %conv15, 5.000000e-01
-  br label %return
-
-sw.bb17:                                          ; preds = %entry
-  %call18 = call float @Dummy(i32 -2)
-  %conv19 = fpext float %call18 to double
-  %add20 = fadd double %conv19, 0x3FD5555555555555
-  br label %return
-
-sw.bb21:                                          ; preds = %entry
-  %call22 = call float @Dummy(i32 -3)
-  %conv23 = fpext float %call22 to double
-  %add24 = fadd double %conv23, 2.500000e-01
-  br label %return
-
-sw.bb25:                                          ; preds = %entry
-  %call26 = call float @Dummy(i32 10)
-  %conv27 = fpext float %call26 to double
-  %add28 = fadd double %conv27, 0x7FF8000000000000
-  br label %return
-
-sw.bb29:                                          ; preds = %entry
-  %call30 = call float @Dummy(i32 -10)
-  %conv31 = fpext float %call30 to double
-  %add32 = fadd double %conv31, 0xFFF8000000000000
-  br label %return
-
-sw.bb33:                                          ; preds = %entry
-  %call34 = call float @Dummy(i32 100)
-  %add35 = fadd float %call34, 1.000000e+00
-  %conv36 = fpext float %add35 to double
-  br label %return
-
-sw.bb37:                                          ; preds = %entry
-  %call38 = call float @Dummy(i32 101)
-  %add39 = fadd float %call38, 2.000000e+00
-  %conv40 = fpext float %add39 to double
-  br label %return
-
-sw.bb41:                                          ; preds = %entry
-  %call42 = call float @Dummy(i32 102)
-  %add43 = fadd float %call42, 4.000000e+00
-  %conv44 = fpext float %add43 to double
-  br label %return
-
-sw.bb45:                                          ; preds = %entry
-  %call46 = call float @Dummy(i32 103)
-  %add47 = fadd float %call46, 8.000000e+00
-  %conv48 = fpext float %add47 to double
-  br label %return
-
-sw.bb49:                                          ; preds = %entry
-  %call50 = call float @Dummy(i32 -101)
-  %conv51 = fpext float %call50 to double
-  %add52 = fadd double %conv51, 5.000000e-01
-  br label %return
-
-sw.bb53:                                          ; preds = %entry
-  %call54 = call float @Dummy(i32 -102)
-  %conv55 = fpext float %call54 to double
-  %add56 = fadd double %conv55, 0x3FD5555555555555
-  br label %return
-
-sw.bb57:                                          ; preds = %entry
-  %call58 = call float @Dummy(i32 -103)
-  %conv59 = fpext float %call58 to double
-  %add60 = fadd double %conv59, 2.500000e-01
-  br label %return
-
-sw.bb61:                                          ; preds = %entry
-  %call62 = call float @Dummy(i32 110)
-  %conv63 = fpext float %call62 to double
-  %add64 = fadd double %conv63, 0x7FF8000000000000
-  br label %return
-
-sw.bb65:                                          ; preds = %entry
-  %call66 = call float @Dummy(i32 -110)
-  %conv67 = fpext float %call66 to double
-  %add68 = fadd double %conv67, 0xFFF8000000000000
-  br label %return
-
-return:                                           ; preds = %entry, %sw.bb65, %sw.bb61, %sw.bb57, %sw.bb53, %sw.bb49, %sw.bb45, %sw.bb41, %sw.bb37, %sw.bb33, %sw.bb29, %sw.bb25, %sw.bb21, %sw.bb17, %sw.bb13, %sw.bb9, %sw.bb5, %sw.bb1, %sw.bb
-  %retval.0 = phi double [ %add68, %sw.bb65 ], [ %add64, %sw.bb61 ], [ %add60, %sw.bb57 ], [ %add56, %sw.bb53 ], [ %add52, %sw.bb49 ], [ %conv48, %sw.bb45 ], [ %conv44, %sw.bb41 ], [ %conv40, %sw.bb37 ], [ %conv36, %sw.bb33 ], [ %add32, %sw.bb29 ], [ %add28, %sw.bb25 ], [ %add24, %sw.bb21 ], [ %add20, %sw.bb17 ], [ %add16, %sw.bb13 ], [ %conv12, %sw.bb9 ], [ %conv8, %sw.bb5 ], [ %conv4, %sw.bb1 ], [ %conv, %sw.bb ], [ 0.000000e+00, %entry ]
-  ret double %retval.0
-}
-
-define internal double @FpLookup4(i32 %Arg) {
-entry:
-  switch i32 %Arg, label %return [
-    i32 0, label %sw.bb
-    i32 1, label %sw.bb1
-    i32 2, label %sw.bb5
-    i32 3, label %sw.bb9
-    i32 -1, label %sw.bb13
-    i32 -2, label %sw.bb17
-    i32 -3, label %sw.bb21
-    i32 10, label %sw.bb25
-    i32 -10, label %sw.bb29
-    i32 100, label %sw.bb33
-    i32 101, label %sw.bb37
-    i32 102, label %sw.bb41
-    i32 103, label %sw.bb45
-    i32 -101, label %sw.bb49
-    i32 -102, label %sw.bb53
-    i32 -103, label %sw.bb57
-    i32 110, label %sw.bb61
-    i32 -110, label %sw.bb65
-  ]
-
-sw.bb:                                            ; preds = %entry
-  %call = call float @Dummy(i32 0)
-  %add = fadd float %call, 1.000000e+00
-  %conv = fpext float %add to double
-  br label %return
-
-sw.bb1:                                           ; preds = %entry
-  %call2 = call float @Dummy(i32 1)
-  %add3 = fadd float %call2, 2.000000e+00
-  %conv4 = fpext float %add3 to double
-  br label %return
-
-sw.bb5:                                           ; preds = %entry
-  %call6 = call float @Dummy(i32 2)
-  %add7 = fadd float %call6, 4.000000e+00
-  %conv8 = fpext float %add7 to double
-  br label %return
-
-sw.bb9:                                           ; preds = %entry
-  %call10 = call float @Dummy(i32 3)
-  %add11 = fadd float %call10, 8.000000e+00
-  %conv12 = fpext float %add11 to double
-  br label %return
-
-sw.bb13:                                          ; preds = %entry
-  %call14 = call float @Dummy(i32 -1)
-  %conv15 = fpext float %call14 to double
-  %add16 = fadd double %conv15, 5.000000e-01
-  br label %return
-
-sw.bb17:                                          ; preds = %entry
-  %call18 = call float @Dummy(i32 -2)
-  %conv19 = fpext float %call18 to double
-  %add20 = fadd double %conv19, 0x3FD5555555555555
-  br label %return
-
-sw.bb21:                                          ; preds = %entry
-  %call22 = call float @Dummy(i32 -3)
-  %conv23 = fpext float %call22 to double
-  %add24 = fadd double %conv23, 2.500000e-01
-  br label %return
-
-sw.bb25:                                          ; preds = %entry
-  %call26 = call float @Dummy(i32 10)
-  %conv27 = fpext float %call26 to double
-  %add28 = fadd double %conv27, 0x7FF8000000000000
-  br label %return
-
-sw.bb29:                                          ; preds = %entry
-  %call30 = call float @Dummy(i32 -10)
-  %conv31 = fpext float %call30 to double
-  %add32 = fadd double %conv31, 0xFFF8000000000000
-  br label %return
-
-sw.bb33:                                          ; preds = %entry
-  %call34 = call float @Dummy(i32 100)
-  %add35 = fadd float %call34, 1.000000e+00
-  %conv36 = fpext float %add35 to double
-  br label %return
-
-sw.bb37:                                          ; preds = %entry
-  %call38 = call float @Dummy(i32 101)
-  %add39 = fadd float %call38, 2.000000e+00
-  %conv40 = fpext float %add39 to double
-  br label %return
-
-sw.bb41:                                          ; preds = %entry
-  %call42 = call float @Dummy(i32 102)
-  %add43 = fadd float %call42, 4.000000e+00
-  %conv44 = fpext float %add43 to double
-  br label %return
-
-sw.bb45:                                          ; preds = %entry
-  %call46 = call float @Dummy(i32 103)
-  %add47 = fadd float %call46, 8.000000e+00
-  %conv48 = fpext float %add47 to double
-  br label %return
-
-sw.bb49:                                          ; preds = %entry
-  %call50 = call float @Dummy(i32 -101)
-  %conv51 = fpext float %call50 to double
-  %add52 = fadd double %conv51, 5.000000e-01
-  br label %return
-
-sw.bb53:                                          ; preds = %entry
-  %call54 = call float @Dummy(i32 -102)
-  %conv55 = fpext float %call54 to double
-  %add56 = fadd double %conv55, 0x3FD5555555555555
-  br label %return
-
-sw.bb57:                                          ; preds = %entry
-  %call58 = call float @Dummy(i32 -103)
-  %conv59 = fpext float %call58 to double
-  %add60 = fadd double %conv59, 2.500000e-01
-  br label %return
-
-sw.bb61:                                          ; preds = %entry
-  %call62 = call float @Dummy(i32 110)
-  %conv63 = fpext float %call62 to double
-  %add64 = fadd double %conv63, 0x7FF8000000000000
-  br label %return
-
-sw.bb65:                                          ; preds = %entry
-  %call66 = call float @Dummy(i32 -110)
-  %conv67 = fpext float %call66 to double
-  %add68 = fadd double %conv67, 0xFFF8000000000000
-  br label %return
-
-return:                                           ; preds = %entry, %sw.bb65, %sw.bb61, %sw.bb57, %sw.bb53, %sw.bb49, %sw.bb45, %sw.bb41, %sw.bb37, %sw.bb33, %sw.bb29, %sw.bb25, %sw.bb21, %sw.bb17, %sw.bb13, %sw.bb9, %sw.bb5, %sw.bb1, %sw.bb
-  %retval.0 = phi double [ %add68, %sw.bb65 ], [ %add64, %sw.bb61 ], [ %add60, %sw.bb57 ], [ %add56, %sw.bb53 ], [ %add52, %sw.bb49 ], [ %conv48, %sw.bb45 ], [ %conv44, %sw.bb41 ], [ %conv40, %sw.bb37 ], [ %conv36, %sw.bb33 ], [ %add32, %sw.bb29 ], [ %add28, %sw.bb25 ], [ %add24, %sw.bb21 ], [ %add20, %sw.bb17 ], [ %add16, %sw.bb13 ], [ %conv12, %sw.bb9 ], [ %conv8, %sw.bb5 ], [ %conv4, %sw.bb1 ], [ %conv, %sw.bb ], [ 0.000000e+00, %entry ]
-  ret double %retval.0
-}
-
-; Make sure the constants in pools are shuffled.
-
-; Check for float pool
-; X86-LABEL: .rodata.cst4
-; X86: 00000041 0000c0ff 0000803f 00008040
-; X86: 0000c07f 0000003f 0000803e 00000040
-
-; Check for double pool
-; X86-LABEL: .rodata.cst8
-; X86: 00000000 0000f8ff 00000000 0000f87f
-; X86: 00000000 0000e03f 55555555 5555d53f
-; X86: 00000000 0000d03f
-
-; X86-LABEL: .text
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/return_immediates.ll b/third_party/subzero/tests_lit/llvm2ice_tests/return_immediates.ll
deleted file mode 100644
index f551506..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/return_immediates.ll
+++ /dev/null
@@ -1,324 +0,0 @@
-; Simple test that returns various immediates. For fixed-width instruction
-; sets, some immediates are more complicated than others.
-; For x86-32, it shouldn't be a problem.
-
-; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \
-; RUN:      -allow-externally-defined-symbols | FileCheck %s
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -O2 \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 %s
-
-; TODO: Switch to --filetype=obj when possible.
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -O2 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-; Test 8-bits of all ones rotated right by various amounts (even vs odd).
-; ARM has a shifter that allows encoding 8-bits rotated right by even amounts.
-; The first few "rotate right" test cases are expressed as shift-left.
-
-define internal i32 @ret_8bits_shift_left0() {
-  ret i32 255
-}
-; CHECK-LABEL: ret_8bits_shift_left0
-; CHECK-NEXT: mov eax,0xff
-; ARM32-LABEL: ret_8bits_shift_left0
-; ARM32-NEXT: mov r0, #255
-; MIPS32-LABEL: ret_8bits_shift_left0
-; MIPS32-NEXT: li	v0,255
-
-define internal i32 @ret_8bits_shift_left1() {
-  ret i32 510
-}
-; CHECK-LABEL: ret_8bits_shift_left1
-; CHECK-NEXT: mov eax,0x1fe
-; ARM32-LABEL: ret_8bits_shift_left1
-; ARM32-NEXT: movw r0, #510
-; MIPS32-LABEL: ret_8bits_shift_left1
-; MIPS32-NEXT: li	v0,510
-
-define internal i32 @ret_8bits_shift_left2() {
-  ret i32 1020
-}
-; CHECK-LABEL: ret_8bits_shift_left2
-; CHECK-NEXT: mov eax,0x3fc
-; ARM32-LABEL: ret_8bits_shift_left2
-; ARM32-NEXT: mov r0, #1020
-; MIPS32-LABEL: ret_8bits_shift_left2
-; MIPS32-NEXT: li	v0,1020
-
-define internal i32 @ret_8bits_shift_left4() {
-  ret i32 4080
-}
-; CHECK-LABEL: ret_8bits_shift_left4
-; CHECK-NEXT: mov eax,0xff0
-; ARM32-LABEL: ret_8bits_shift_left4
-; ARM32-NEXT: mov r0, #4080
-; MIPS32-LABEL: ret_8bits_shift_left4
-; MIPS32-NEXT: li	v0,4080
-
-define internal i32 @ret_8bits_shift_left14() {
-  ret i32 4177920
-}
-; CHECK-LABEL: ret_8bits_shift_left14
-; CHECK-NEXT: mov eax,0x3fc000
-; ARM32-LABEL: ret_8bits_shift_left14
-; ARM32-NEXT: mov r0, #4177920
-; MIPS32-LABEL: ret_8bits_shift_left14
-; MIPS32-NEXT: lui	v0,0x3f
-; MIPS32-NEXT: ori	v0,v0,0xc000
-
-define internal i32 @ret_8bits_shift_left15() {
-  ret i32 8355840
-}
-; CHECK-LABEL: ret_8bits_shift_left15
-; CHECK-NEXT: mov eax,0x7f8000
-; ARM32-LABEL: ret_8bits_shift_left15
-; ARM32-NEXT: movw r0, #32768
-; ARM32-NEXT: movt r0, #127
-; MIPS32-LABEL: ret_8bits_shift_left15
-; MIPS32-NEXT: lui	v0,0x7f
-; MIPS32-NEXT: ori	v0,v0,0x8000
-
-; Shift 8 bits left by 24 to the i32 limit. This is also ror by 8 bits.
-
-define internal i32 @ret_8bits_shift_left24() {
-  ret i32 4278190080
-}
-; CHECK-LABEL: ret_8bits_shift_left24
-; CHECK-NEXT: mov eax,0xff000000
-; ARM32-LABEL: ret_8bits_shift_left24
-; ARM32-NEXT: mov r0, #-16777216
-; ARM32-NEXT: bx lr
-; MIPS32-LABEL: ret_8bits_shift_left24
-; MIPS32-NEXT: lui	v0,0xff00
-
-; The next few cases wrap around and actually demonstrate the rotation.
-
-define internal i32 @ret_8bits_ror7() {
-  ret i32 4261412865
-}
-; CHECK-LABEL: ret_8bits_ror7
-; CHECK-NEXT: mov eax,0xfe000001
-; ARM32-LABEL: ret_8bits_ror7
-; ARM32-NEXT: movw r0, #1
-; ARM32-NEXT: movt r0, #65024
-; MIPS32-LABEL: ret_8bits_ror7
-; MIPS32-NEXT: lui	v0,0xfe00
-; MIPS32-NEXT: ori	v0,v0,0x1
-
-define internal i32 @ret_8bits_ror6() {
-  ret i32 4227858435
-}
-; CHECK-LABEL: ret_8bits_ror6
-; CHECK-NEXT: mov eax,0xfc000003
-; ARM32-LABEL: ret_8bits_ror6
-; ARM32-NEXT: mov r0, #-67108861
-; ARM32-NEXT: bx lr
-; MIPS32-LABEL: ret_8bits_ror6
-; MIPS32-NEXT: lui	v0,0xfc00
-; MIPS32-NEXT: ori	v0,v0,0x3
-
-define internal i32 @ret_8bits_ror5() {
-  ret i32 4160749575
-}
-; CHECK-LABEL: ret_8bits_ror5
-; CHECK-NEXT: mov eax,0xf8000007
-; ARM32-LABEL: ret_8bits_ror5
-; ARM32-NEXT: movw r0, #7
-; ARM32-NEXT: movt r0, #63488
-; MIPS32-LABEL: ret_8bits_ror5
-; MIPS32-NEXT: lui	v0,0xf800
-; MIPS32-NEXT: ori	v0,v0,0x7
-
-define internal i32 @ret_8bits_ror4() {
-  ret i32 4026531855
-}
-; CHECK-LABEL: ret_8bits_ror4
-; CHECK-NEXT: mov eax,0xf000000f
-; ARM32-LABEL: ret_8bits_ror4
-; ARM32-NEXT: mov r0, #-268435441
-; ARM32-NEXT: bx lr
-; MIPS32-LABEL: ret_8bits_ror4
-; MIPS32-NEXT: lui	v0,0xf000
-; MIPS32-NEXT: ori	v0,v0,0xf
-
-define internal i32 @ret_8bits_ror3() {
-  ret i32 3758096415
-}
-; CHECK-LABEL: ret_8bits_ror3
-; CHECK-NEXT: mov eax,0xe000001f
-; ARM32-LABEL: ret_8bits_ror3
-; ARM32-NEXT: movw r0, #31
-; ARM32-NEXT: movt r0, #57344
-; MIPS32-LABEL: ret_8bits_ror3
-; MIPS32-NEXT: lui	v0,0xe000
-; MIPS32-NEXT: ori	v0,v0,0x1f
-
-
-define internal i32 @ret_8bits_ror2() {
-  ret i32 3221225535
-}
-; CHECK-LABEL: ret_8bits_ror2
-; CHECK-NEXT: mov eax,0xc000003f
-; ARM32-LABEL: ret_8bits_ror2
-; ARM32-NEXT: mov r0, #-1073741761
-; ARM32-NEXT: bx lr
-; MIPS32-LABEL: ret_8bits_ror2
-; MIPS32-NEXT: lui	v0,0xc000
-; MIPS32-NEXT: ori	v0,v0,0x3f
-
-define internal i32 @ret_8bits_ror1() {
-  ret i32 2147483775
-}
-; CHECK-LABEL: ret_8bits_ror1
-; CHECK-NEXT: mov eax,0x8000007f
-; ARM32-LABEL: ret_8bits_ror1
-; ARM32-NEXT: movw r0, #127
-; ARM32-NEXT: movt r0, #32768
-; MIPS32-LABEL: ret_8bits_ror1
-; MIPS32-NEXT: lui	v0,0x8000
-; MIPS32-NEXT: ori	v0,v0,0x7f
-
-; Some architectures can handle 16-bits at a time efficiently,
-; so also test those.
-
-define internal i32 @ret_16bits_lower() {
-  ret i32 65535
-}
-; CHECK-LABEL: ret_16bits_lower
-; CHECK-NEXT: mov eax,0xffff
-; ARM32-LABEL: ret_16bits_lower
-; ARM32-NEXT: movw r0, #65535
-; ARM32-NEXT: bx lr
-; MIPS32-LABEL: ret_16bits_lower
-; MIPS32-NEXT: lui	v0,0x0
-; MIPS32-NEXT: ori	v0,v0,0xffff
-
-define internal i32 @ret_17bits_lower() {
-  ret i32 131071
-}
-; CHECK-LABEL: ret_17bits_lower
-; CHECK-NEXT: mov eax,0x1ffff
-; ARM32-LABEL: ret_17bits_lower
-; ARM32-NEXT: movw r0, #65535
-; ARM32-NEXT: movt r0, #1
-; MIPS32-LABEL: ret_17bits_lower
-; MIPS32-NEXT: lui	v0,0x1
-; MIPS32-NEXT: ori	v0,v0,0xffff
-
-
-define internal i32 @ret_16bits_upper() {
-  ret i32 4294901760
-}
-; CHECK-LABEL: ret_16bits_upper
-; CHECK-NEXT: mov eax,0xffff0000
-; ARM32-LABEL: ret_16bits_upper
-; ARM32-NEXT: movw r0, #0
-; ARM32-NEXT: movt r0, #65535
-; MIPS32-LABEL: ret_16bits_upper
-; MIPS32-NEXT: lui	v0,0xffff
-
-
-; Some 32-bit immediates can be inverted, and moved in a single instruction.
-
-define internal i32 @ret_8bits_inverted_shift_left0() {
-  ret i32 4294967040
-}
-; CHECK-LABEL: ret_8bits_inverted_shift_left0
-; CHECK-NEXT: mov eax,0xffffff00
-; ARM32-LABEL: ret_8bits_inverted_shift_left0
-; ARM32-NEXT: mvn r0, #255
-; ARM32-NEXT: bx lr
-; MIPS32-LABEL: ret_8bits_inverted_shift_left0
-; MIPS32-NEXT: li	v0,-256
-
-define internal i32 @ret_8bits_inverted_shift_left24() {
-  ret i32 16777215
-}
-; CHECK-LABEL: ret_8bits_inverted_shift_left24
-; CHECK-NEXT: mov eax,0xffffff
-; ARM32-LABEL: ret_8bits_inverted_shift_left24
-; ARM32-NEXT: mvn r0, #-16777216
-; ARM32-NEXT: bx lr
-; MIPS32-LABEL: ret_8bits_inverted_shift_left24
-; MIPS32-NEXT: lui	v0,0xff
-; MIPS32-NEXT: ori	v0,v0,0xffff
-
-define internal i32 @ret_8bits_inverted_ror2() {
-  ret i32 1073741760
-}
-; CHECK-LABEL: ret_8bits_inverted_ror2
-; CHECK-NEXT: mov eax,0x3fffffc0
-; ARM32-LABEL: ret_8bits_inverted_ror2
-; ARM32-NEXT: mvn r0, #-1073741761
-; ARM32-NEXT: bx lr
-; MIPS32-LABEL: ret_8bits_inverted_ror2
-; MIPS32-NEXT: lui	v0,0x3fff
-; MIPS32-NEXT: ori	v0,v0,0xffc0
-
-define internal i32 @ret_8bits_inverted_ror6() {
-  ret i32 67108860
-}
-; CHECK-LABEL: ret_8bits_inverted_ror6
-; CHECK-NEXT: mov eax,0x3fffffc
-; ARM32-LABEL: ret_8bits_inverted_ror6
-; ARM32-NEXT: mvn r0, #-67108861
-; ARM32-NEXT: bx lr
-; MIPS32-LABEL: ret_8bits_inverted_ror6
-; MIPS32-NEXT: lui	v0,0x3ff
-; MIPS32-NEXT: ori	v0,v0,0xfffc
-
-
-define internal i32 @ret_8bits_inverted_ror7() {
-  ret i32 33554430
-}
-; CHECK-LABEL: ret_8bits_inverted_ror7
-; CHECK-NEXT: mov eax,0x1fffffe
-; ARM32-LABEL: ret_8bits_inverted_ror7
-; ARM32-NEXT: movw r0, #65534
-; ARM32-NEXT: movt r0, #511
-; MIPS32-LABEL: ret_8bits_inverted_ror7
-; MIPS32-NEXT: lui	v0,0x1ff
-; MIPS32-NEXT: ori	v0,v0,0xfffe
-
-; 64-bit immediates.
-
-define internal i64 @ret_64bits_shift_left0() {
-  ret i64 1095216660735
-}
-; CHECK-LABEL: ret_64bits_shift_left0
-; CHECK-NEXT: mov eax,0xff
-; CHECK-NEXT: mov edx,0xff
-; ARM32-LABEL: ret_64bits_shift_left0
-; ARM32-NEXT: mov r0, #255
-; ARM32-NEXT: mov r1, #255
-; MIPS32-LABEL: ret_64bits_shift_left0
-; MIPS32-NEXT: li	v0,255
-; MIPS32-NEXT: li	v1,255
-
-
-; A relocatable constant is assumed to require 32-bits along with
-; relocation directives.
-
-declare void @_start()
-
-define internal i32 @ret_addr() {
-  %ptr = ptrtoint void ()* @_start to i32
-  ret i32 %ptr
-}
-; CHECK-LABEL: ret_addr
-; CHECK-NEXT: mov eax,0x0 {{.*}} R_386_32 _start
-; ARM32-LABEL: ret_addr
-; ARM32-NEXT: movw r0, #0 {{.*}} R_ARM_MOVW_ABS_NC _start
-; ARM32-NEXT: movt r0, #0 {{.*}} R_ARM_MOVT_ABS    _start
-; TODO(RKotler) emitting proper li but in disassembly
-; it shows up only in the relocation records. Should emit
-; without the macro but we still need to add GOT implementation
-; to finish this case
-;
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/returns_twice_no_coalesce.ll b/third_party/subzero/tests_lit/llvm2ice_tests/returns_twice_no_coalesce.ll
deleted file mode 100644
index c9da9cb..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/returns_twice_no_coalesce.ll
+++ /dev/null
@@ -1,59 +0,0 @@
-; This file checks that SimpleCoalescing of local stack slots is not done
-; when calling a function with the "returns twice" attribute.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \
-; RUN:      -allow-externally-defined-symbols | FileCheck %s
-
-; Setjmp is a function with the "returns twice" attribute.
-declare i32 @llvm.nacl.setjmp(i8*)
-
-declare i32 @other(i32)
-declare void @user(i32)
-
-define internal i32 @call_returns_twice(i32 %iptr_jmpbuf, i32 %x) {
-entry:
-  %local = add i32 %x, 12345
-  %jmpbuf = inttoptr i32 %iptr_jmpbuf to i8*
-  %y = call i32 @llvm.nacl.setjmp(i8* %jmpbuf)
-  call void @user(i32 %local)
-  %cmp = icmp eq i32 %y, 0
-  br i1 %cmp, label %Zero, label %NonZero
-Zero:
-  %other_local = add i32 %x, 54321
-  call void @user(i32 %other_local)
-  ret i32 %other_local
-NonZero:
-  ret i32 1
-}
-
-; CHECK-LABEL: call_returns_twice
-; CHECK: add [[REG1:.*]],0x3039
-; CHECK: mov DWORD PTR [esp+[[OFF:.*]]],[[REG1]]
-; CHECK: add [[REG2:.*]],0xd431
-; There should not be sharing of the stack slot.
-; CHECK-NOT: mov DWORD PTR [esp + [[OFF]]], [[REG2]]
-
-define internal i32 @no_call_returns_twice(i32 %iptr_jmpbuf, i32 %x) {
-entry:
-  %local = add i32 %x, 12345
-  %y = call i32 @other(i32 %x)
-  call void @user(i32 %local)
-  %cmp = icmp eq i32 %y, 0
-  br i1 %cmp, label %Zero, label %NonZero
-Zero:
-  %other_local = add i32 %x, 54321
-  call void @user(i32 %other_local)
-  ret i32 %other_local
-NonZero:
-  ret i32 1
-}
-
-; CHECK-LABEL: no_call_returns_twice
-; CHECK: add [[REG1:.*]],0x3039
-; CHECK: mov DWORD PTR [esp+[[OFF:.*]]],[[REG1]]
-; CHECK: add [[REG2:.*]],0xd431
-; Now there should be sharing of the stack slot (OFF is the same).
-; Commenting out after disabling simple coalescing for -Om1.
-; TODO(stichnot): Add it back if/when we add a flag to enable simple
-; coalescing.
-; xCHECK: mov DWORD PTR [esp + [[OFF]]], [[REG2]]
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/rmw.ll b/third_party/subzero/tests_lit/llvm2ice_tests/rmw.ll
deleted file mode 100644
index 39f5a32..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/rmw.ll
+++ /dev/null
@@ -1,146 +0,0 @@
-; This tests Read-Modify-Write (RMW) detection and lowering at the O2
-; optimization level.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-define internal void @rmw_add_i32_var(i32 %addr_arg, i32 %var) {
-entry:
-  %addr = inttoptr i32 %addr_arg to i32*
-  %val = load i32, i32* %addr, align 1
-  %rmw = add i32 %val, %var
-  store i32 %rmw, i32* %addr, align 1
-  ret void
-}
-; Look for something like: add DWORD PTR [eax],ecx
-; CHECK-LABEL: rmw_add_i32_var
-; CHECK: add DWORD PTR [e{{ax|bx|cx|dx|bp|di|si}}],e{{ax|bx|cx|dx|bp|di|si}}
-
-define internal void @rmw_add_i32_imm(i32 %addr_arg) {
-entry:
-  %addr = inttoptr i32 %addr_arg to i32*
-  %val = load i32, i32* %addr, align 1
-  %rmw = add i32 %val, 19
-  store i32 %rmw, i32* %addr, align 1
-  ret void
-}
-; Look for something like: add DWORD PTR [eax],0x13
-; CHECK-LABEL: rmw_add_i32_imm
-; CHECK: add DWORD PTR [e{{ax|bx|cx|dx|bp|di|si}}],0x13
-
-define internal i32 @no_rmw_add_i32_var(i32 %addr_arg, i32 %var) {
-entry:
-  %addr = inttoptr i32 %addr_arg to i32*
-  %val = load i32, i32* %addr, align 1
-  %rmw = add i32 %val, %var
-  store i32 %rmw, i32* %addr, align 1
-  ret i32 %rmw
-}
-; CHECK-LABEL: no_rmw_add_i32_var
-; CHECK: add e{{ax|bx|cx|dx|bp|di|si}},DWORD PTR [e{{ax|bx|cx|dx|bp|di|si}}]
-
-define internal void @rmw_add_i16_var(i32 %addr_arg, i32 %var32) {
-entry:
-  %var = trunc i32 %var32 to i16
-  %addr = inttoptr i32 %addr_arg to i16*
-  %val = load i16, i16* %addr, align 1
-  %rmw = add i16 %val, %var
-  store i16 %rmw, i16* %addr, align 1
-  ret void
-}
-; Look for something like: add WORD PTR [eax],cx
-; CHECK-LABEL: rmw_add_i16_var
-; CHECK: add WORD PTR [e{{ax|bx|cx|dx|bp|di|si}}],{{ax|bx|cx|dx|bp|di|si}}
-
-define internal void @rmw_add_i16_imm(i32 %addr_arg) {
-entry:
-  %addr = inttoptr i32 %addr_arg to i16*
-  %val = load i16, i16* %addr, align 1
-  %rmw = add i16 %val, 19
-  store i16 %rmw, i16* %addr, align 1
-  ret void
-}
-; Look for something like: add WORD PTR [eax],0x13
-; CHECK-LABEL: rmw_add_i16_imm
-; CHECK: add WORD PTR [e{{ax|bx|cx|dx|bp|di|si}}],0x13
-
-define internal void @rmw_add_i8_var(i32 %addr_arg, i32 %var32) {
-entry:
-  %var = trunc i32 %var32 to i8
-  %addr = inttoptr i32 %addr_arg to i8*
-  %val = load i8, i8* %addr, align 1
-  %rmw = add i8 %val, %var
-  store i8 %rmw, i8* %addr, align 1
-  ret void
-}
-; Look for something like: add BYTE PTR [eax],cl
-; CHECK-LABEL: rmw_add_i8_var
-; CHECK: add BYTE PTR [e{{ax|bx|cx|dx|bp|di|si}}],{{al|bl|cl|dl}}
-
-define internal void @rmw_add_i8_imm(i32 %addr_arg) {
-entry:
-  %addr = inttoptr i32 %addr_arg to i8*
-  %val = load i8, i8* %addr, align 1
-  %rmw = add i8 %val, 19
-  store i8 %rmw, i8* %addr, align 1
-  ret void
-}
-; Look for something like: add BYTE PTR [eax],0x13
-; CHECK-LABEL: rmw_add_i8_imm
-; CHECK: add BYTE PTR [e{{ax|bx|cx|dx|bp|di|si}}],0x13
-
-define internal void @rmw_add_i32_var_addropt(i32 %addr_arg, i32 %var) {
-entry:
-  %addr_arg_plus_12 = add i32 %addr_arg, 12
-  %var_times_4 = mul i32 %var, 4
-  %addr_base = add i32 %addr_arg_plus_12 , %var_times_4
-  %addr = inttoptr i32 %addr_base to i32*
-  %val = load i32, i32* %addr, align 1
-  %rmw = add i32 %val, %var
-  store i32 %rmw, i32* %addr, align 1
-  ret void
-}
-; Look for something like: add DWORD PTR [eax+ecx*4+12],ecx
-; CHECK-LABEL: rmw_add_i32_var_addropt
-; CHECK: add DWORD PTR [e{{..}}+e{{..}}*4+0xc],e{{ax|bx|cx|dx|bp|di|si}}
-
-; Test for commutativity opportunities.  This is the same as rmw_add_i32_var
-; except with the "add" operands reversed.
-define internal void @rmw_add_i32_var_comm(i32 %addr_arg, i32 %var) {
-entry:
-  %addr = inttoptr i32 %addr_arg to i32*
-  %val = load i32, i32* %addr, align 1
-  %rmw = add i32 %var, %val
-  store i32 %rmw, i32* %addr, align 1
-  ret void
-}
-; Look for something like: add DWORD PTR [eax],ecx
-; CHECK-LABEL: rmw_add_i32_var_comm
-; CHECK: add DWORD PTR [e{{ax|bx|cx|dx|bp|di|si}}],e{{ax|bx|cx|dx|bp|di|si}}
-
-; Test that commutativity isn't triggered for a non-commutative arithmetic
-; operator (sub).  This is the same as rmw_add_i32_var_comm except with a
-; "sub" operation.
-define internal i32 @no_rmw_sub_i32_var(i32 %addr_arg, i32 %var) {
-entry:
-  %addr = inttoptr i32 %addr_arg to i32*
-  %val = load i32, i32* %addr, align 1
-  %rmw = sub i32 %var, %val
-  store i32 %rmw, i32* %addr, align 1
-  ret i32 %rmw
-}
-; CHECK-LABEL: no_rmw_sub_i32_var
-; CHECK: sub e{{ax|bx|cx|dx|bp|di|si}},DWORD PTR [e{{ax|bx|cx|dx|bp|di|si}}]
-
-define internal void @rmw_add_i64_undef(i32 %addr_arg) {
-entry:
-  %addr = inttoptr i32 %addr_arg to i64*
-  %val = load i64, i64* %addr, align 1
-  %rmw = add i64 %val, undef
-  store i64 %rmw, i64* %addr, align 1
-  ret void
-}
-; CHECK-LABEL: rmw_add_i64_undef
-; CHECK: add DWORD PTR [e{{ax|bx|cx|dx|bp|di|si}}],0x0
-; CHECK: adc DWORD PTR [e{{ax|bx|cx|dx|bp|di|si}}+0x4],0x0
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/rng.ll b/third_party/subzero/tests_lit/llvm2ice_tests/rng.ll
deleted file mode 100644
index 24140ea..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/rng.ll
+++ /dev/null
@@ -1,259 +0,0 @@
-; This is a smoke test of random number generator.
-; The random number generators for different randomization passes should be
-; decoupled. The random number used in one randomization pass should not be
-; influenced by the existence of other randomization passes.
-
-; REQUIRES: allow_dump, target_X8632
-
-; Command for checking constant blinding (Need to turn off nop-insertion)
-; RUN: %p2i --target x8632 -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:    -sz-seed=1 -randomize-pool-immediates=randomize \
-; RUN:    -randomize-pool-threshold=0x1 \
-; RUN:    -reorder-global-variables \
-; RUN:    -reorder-basic-blocks \
-; RUN:    -reorder-functions \
-; RUN:    -randomize-regalloc \
-; RUN:    -nop-insertion=0 \
-; RUN:    -reorder-pooled-constants \
-; RUN:    | FileCheck %s --check-prefix=BLINDINGO2
-
-; Command for checking global variable reordering
-; RUN: %p2i --target x8632 -i %s \
-; RUN:    --filetype=obj --disassemble --dis-flags=-rD \
-; RUN:    --args -O2 -sz-seed=1 \
-; RUN:    -randomize-pool-immediates=randomize \
-; RUN:    -randomize-pool-threshold=0x1 \
-; RUN:    -reorder-global-variables \
-; RUN:    -reorder-basic-blocks \
-; RUN:    -reorder-functions \
-; RUN:    -randomize-regalloc \
-; RUN:    -nop-insertion \
-; RUN:    -reorder-pooled-constants \
-; RUN:    | FileCheck %s --check-prefix=GLOBALVARS
-
-; Command for checking basic block reordering
-; RUN: %p2i --target x8632 -i %s --filetype=asm --args -O2 -sz-seed=1\
-; RUN:    -randomize-pool-immediates=randomize \
-; RUN:    -randomize-pool-threshold=0x1 \
-; RUN:    -reorder-global-variables \
-; RUN:    -reorder-basic-blocks \
-; RUN:    -reorder-functions \
-; RUN:    -randomize-regalloc \
-; RUN:    -nop-insertion \
-; RUN:    -reorder-pooled-constants \
-; RUN:    | FileCheck %s --check-prefix=BBREORDERING
-
-; Command for checking function reordering
-; RUN: %p2i --target x8632 -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:    -sz-seed=1 -randomize-pool-immediates=randomize \
-; RUN:    -randomize-pool-threshold=0x1 \
-; RUN:    -reorder-global-variables \
-; RUN:    -reorder-basic-blocks \
-; RUN:    -reorder-functions \
-; RUN:    -randomize-regalloc \
-; RUN:    -nop-insertion \
-; RUN:    -reorder-pooled-constants \
-; RUN:    | FileCheck %s --check-prefix=FUNCREORDERING
-
-; Command for checking regalloc randomization
-; RUN: %p2i --target x8632 -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:    -sz-seed=1 -randomize-pool-immediates=randomize \
-; RUN:    -randomize-pool-threshold=0x1 \
-; RUN:    -reorder-global-variables \
-; RUN:    -reorder-basic-blocks \
-; RUN:    -reorder-functions \
-; RUN:    -randomize-regalloc \
-; RUN:    -nop-insertion \
-; RUN:    -reorder-pooled-constants \
-; RUN:    -split-local-vars=0 \
-; RUN:    | FileCheck %s --check-prefix=REGALLOC
-
-; Command for checking nop insertion (Need to turn off randomize-regalloc)
-; RUN: %p2i --target x8632 -i %s --filetype=asm --args \
-; RUN:    -sz-seed=1 -randomize-pool-immediates=randomize \
-; RUN:    -reorder-global-variables \
-; RUN:    -reorder-basic-blocks \
-; RUN:    -reorder-functions \
-; RUN:    -randomize-regalloc=0 \
-; RUN:    -nop-insertion -nop-insertion-percentage=50\
-; RUN:    -reorder-pooled-constants \
-; RUN:    | FileCheck %s --check-prefix=NOPINSERTION
-
-; Command for checking pooled constants reordering
-; RUN: %p2i --target x8632 -i %s --filetype=obj --disassemble --dis-flags=-s \
-; RUN:    --args -O2 -sz-seed=1 \
-; RUN:    -randomize-pool-immediates=randomize \
-; RUN:    -randomize-pool-threshold=0x1 \
-; RUN:    -reorder-global-variables \
-; RUN:    -reorder-basic-blocks \
-; RUN:    -reorder-functions \
-; RUN:    -randomize-regalloc \
-; RUN:    -nop-insertion \
-; RUN:    -reorder-pooled-constants \
-; RUN:    | FileCheck %s --check-prefix=POOLEDCONSTANTS
-
-
-; Global variables copied from reorder-global-variables.ll
-@PrimitiveInit = internal global [4 x i8] c"\1B\00\00\00", align 4
-@PrimitiveInitConst = internal constant [4 x i8] c"\0D\00\00\00", align 4
-@ArrayInit = internal global [20 x i8] c"\0A\00\00\00\14\00\00\00\1E\00\00\00(\00\00\002\00\00\00", align 4
-@ArrayInitPartial = internal global [40 x i8] c"<\00\00\00F\00\00\00P\00\00\00Z\00\00\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 4
-@PrimitiveInitStatic = internal global [4 x i8] zeroinitializer, align 4
-@PrimitiveUninit = internal global [4 x i8] zeroinitializer, align 4
-@ArrayUninit = internal global [20 x i8] zeroinitializer, align 4
-@ArrayUninitConstDouble = internal constant [200 x i8] zeroinitializer, align 8
-@ArrayUninitConstInt = internal constant [20 x i8] zeroinitializer, align 4
-
-
-define internal <4 x i32> @func1(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %res = mul <4 x i32> %a, %b
-  ret <4 x i32> %res
-
-; NOPINSERTION-LABEL: func1
-; NOPINSERTION: nop /* variant = 1 */
-; NOPINSERTION: subl $60, %esp
-; NOPINSERTION: nop /* variant = 3 */
-; NOPINSERTION: movups %xmm0, 32(%esp)
-; NOPINSERTION: movups %xmm1, 16(%esp)
-; NOPINSERTION: movups 32(%esp), %xmm0
-; NOPINSERTION: nop /* variant = 1 */
-; NOPINSERTION: pshufd $49, 32(%esp), %xmm1
-; NOPINSERTION: nop /* variant = 4 */
-; NOPINSERTION: pshufd $49, 16(%esp), %xmm2
-; NOPINSERTION: nop /* variant = 1 */
-; NOPINSERTION: pmuludq 16(%esp), %xmm0
-; NOPINSERTION: pmuludq %xmm2, %xmm1
-; NOPINSERTION: nop /* variant = 0 */
-; NOPINSERTION: shufps $136, %xmm1, %xmm0
-; NOPINSERTION: nop /* variant = 3 */
-; NOPINSERTION: pshufd $216, %xmm0, %xmm0
-; NOPINSERTION: nop /* variant = 1 */
-; NOPINSERTION: movups %xmm0, (%esp)
-; NOPINSERTION: movups (%esp), %xmm0
-; NOPINSERTION: addl $60, %esp
-; NOPINSERTION: ret
-}
-
-
-
-define internal float @func2(float* %arg) {
-entry:
-  %arg.int = ptrtoint float* %arg to i32
-  %addr.int = add i32 %arg.int, 200000
-  %addr.ptr = inttoptr i32 %addr.int to float*
-  %addr.load = load float, float* %addr.ptr, align 4
-  ret float %addr.load
-
-; BLINDINGO2-LABEL: func2
-; BLINDINGO2: lea [[REG:e[a-z]*]],{{[[]}}{{e[a-z]*}}+0x69ed4ee7{{[]]}}
-}
-
-define internal float @func3(i32 %arg, float %input) {
-entry:
-  switch i32 %arg, label %return [
-    i32 0, label %sw.bb
-    i32 1, label %sw.bb1
-    i32 2, label %sw.bb2
-    i32 3, label %sw.bb3
-    i32 4, label %sw.bb4
-  ]
-
-sw.bb:
-  %rbb = fadd float %input, 1.000000e+00
-  br label %return
-
-sw.bb1:
-  %rbb1 = fadd float %input, 2.000000e+00
-  br label %return
-
-sw.bb2:
-  %rbb2 = fadd float %input, 4.000000e+00
-  br label %return
-
-sw.bb3:
-  %rbb3 = fadd float %input, 5.000000e-01
-  br label %return
-
-sw.bb4:
-  %rbb4 = fadd float %input, 2.500000e-01
-  br label %return
-
-return:
-  %retval.0 = phi float [ %rbb, %sw.bb ], [ %rbb1, %sw.bb1 ], [ %rbb2, %sw.bb2 ], [ %rbb3, %sw.bb3 ], [ %rbb4, %sw.bb4], [ 0.000000e+00, %entry ]
-  ret float %retval.0
-}
-
-define internal <4 x i32> @func4(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %res = mul <4 x i32> %a, %b
-  ret <4 x i32> %res
-
-; REGALLOC-LABEL: func4
-; REGALLOC: movups  xmm3,xmm0
-; REGALLOC-NEXT: pshufd  xmm0,xmm0,0x31
-; REGALLOC-NEXT: pshufd  xmm4,xmm1,0x31
-; REGALLOC-NEXT: pmuludq xmm3,xmm1
-; REGALLOC-NEXT: pmuludq xmm0,xmm4
-; REGALLOC-NEXT: shufps  xmm3,xmm0,0x88
-; REGALLOC-NEXT: pshufd  xmm3,xmm3,0xd8
-; REGALLOC-NEXT: movups  xmm0,xmm3
-; REGALLOC-NEXT: ret
-}
-
-define internal void @func5(i32 %foo, i32 %bar) {
-entry:
-  %r1 = icmp eq i32 %foo, %bar
-  br i1 %r1, label %BB1, label %BB2
-BB1:
-  %r2 = icmp sgt i32 %foo, %bar
-  br i1 %r2, label %BB3, label %BB4
-BB2:
-  %r3 = icmp slt i32 %foo, %bar
-  br i1 %r3, label %BB3, label %BB4
-BB3:
-  ret void
-BB4:
-  ret void
-
-; BBREORDERING-LABEL: func5:
-; BBREORDERING: .Lfunc5$entry:
-; BBREORDERING: .Lfunc5$BB1:
-; BBREORDERING: .Lfunc5$BB2:
-; BBREORDERING: .Lfunc5$BB4:
-; BBREORDERING: .Lfunc5$BB3
-}
-
-define internal i32 @func6(i32 %arg) {
-entry:
-  %res = add i32 200000, %arg
-  ret i32 %res
-
-; BLINDINGO2-LABEL: func6
-; BLINDINGO2: mov [[REG:e[a-z]*]],0x77254ee7
-; BLINDINGO2-NEXT: lea [[REG]],{{[[]}}[[REG]]-0x772241a7{{[]]}}
-}
-
-; Check for function reordering
-; FUNCREORDERING-LABEL: func1
-; FUNCREORDERING-LABEL: func4
-; FUNCREORDERING-LABEL: func5
-; FUNCREORDERING-LABEL: func2
-; FUNCREORDERING-LABEL: func6
-; FUNCREORDERING-LABEL: func3
-
-; Check for global variable reordering
-; GLOBALVARS-LABEL: ArrayInit
-; GLOBALVARS-LABEL: PrimitiveInit
-; GLOBALVARS-LABEL: ArrayInitPartial
-; GLOBALVARS-LABEL: PrimitiveUninit
-; GLOBALVARS-LABEL: ArrayUninit
-; GLOBALVARS-LABEL: PrimitiveInitStatic
-; GLOBALVARS-LABEL: ArrayUninitConstDouble
-; GLOBALVARS-LABEL: ArrayUninitConstInt
-; GLOBALVARS-LABEL: PrimitiveInitConst
-
-; Check for pooled constant reordering
-; POOLEDCONSTANTS-LABEL: .rodata.cst4
-; POOLEDCONSTANTS: 0000803e 0000803f 0000003f 00008040
-; POOLEDCONSTANTS: 00000040
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/sdiv.ll b/third_party/subzero/tests_lit/llvm2ice_tests/sdiv.ll
deleted file mode 100644
index 4097a55..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/sdiv.ll
+++ /dev/null
@@ -1,105 +0,0 @@
-; This checks the correctness of the lowering code for the small
-; integer variants of sdiv and srem.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 | FileCheck %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 | FileCheck %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:   mips32 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-define internal i32 @sdiv_i8(i32 %a.i32, i32 %b.i32) {
-entry:
-  %a = trunc i32 %a.i32 to i8
-  %b = trunc i32 %b.i32 to i8
-  %res = sdiv i8 %a, %b
-  %res.i32 = zext i8 %res to i32
-  ret i32 %res.i32
-; CHECK-LABEL: sdiv_i8
-; CHECK: cbw
-; CHECK: idiv
-; MIPS32-LABEL: sdiv_i8
-; MIPS32: 	div
-; MIPS32: 	teq
-; MIPS32: 	mflo
-; MIPS32: 	andi	{{.*}},0xff
-}
-
-define internal i32 @sdiv_i16(i32 %a.i32, i32 %b.i32) {
-entry:
-  %a = trunc i32 %a.i32 to i16
-  %b = trunc i32 %b.i32 to i16
-  %res = sdiv i16 %a, %b
-  %res.i32 = zext i16 %res to i32
-  ret i32 %res.i32
-; CHECK-LABEL: sdiv_i16
-; CHECK: cwd
-; CHECK: idiv
-; MIPS32-LABEL: sdiv_i16
-; MIPS32: 	div
-; MIPS32: 	teq
-; MIPS32: 	mflo
-; MIPS32: 	andi	{{.*}},0xffff
-}
-
-define internal i32 @sdiv_i32(i32 %a, i32 %b) {
-entry:
-  %res = sdiv i32 %a, %b
-  ret i32 %res
-; CHECK-LABEL: sdiv_i32
-; CHECK: cdq
-; CHECK: idiv
-; MIPS32-LABEL: sdiv_i32
-; MIPS32: 	div
-; MIPS32: 	teq
-; MIPS32: 	mflo
-}
-
-define internal i32 @srem_i8(i32 %a.i32, i32 %b.i32) {
-entry:
-  %a = trunc i32 %a.i32 to i8
-  %b = trunc i32 %b.i32 to i8
-  %res = srem i8 %a, %b
-  %res.i32 = zext i8 %res to i32
-  ret i32 %res.i32
-; CHECK-LABEL: srem_i8
-; CHECK: cbw
-; CHECK: idiv
-; MIPS32-LABEL: srem_i8
-; MIPS32: 	div
-; MIPS32: 	teq
-; MIPS32: 	mfhi
-; MIPS32: 	andi	{{.*}},0xff
-}
-
-define internal i32 @srem_i16(i32 %a.i32, i32 %b.i32) {
-entry:
-  %a = trunc i32 %a.i32 to i16
-  %b = trunc i32 %b.i32 to i16
-  %res = srem i16 %a, %b
-  %res.i32 = zext i16 %res to i32
-  ret i32 %res.i32
-; CHECK-LABEL: srem_i16
-; CHECK: cwd
-; CHECK: idiv
-; MIPS32-LABEL: srem_i16
-; MIPS32: 	div
-; MIPS32: 	teq
-; MIPS32: 	mfhi
-; MIPS32: 	andi	{{.*}},0xffff
-}
-
-define internal i32 @srem_i32(i32 %a, i32 %b) {
-entry:
-  %res = srem i32 %a, %b
-  ret i32 %res
-; CHECK-LABEL: srem_i32
-; CHECK: cdq
-; CHECK: idiv
-; MIPS32-LABEL: srem_i32
-; MIPS32: 	div
-; MIPS32: 	teq
-; MIPS32: 	mfhi
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/select-opt.ll b/third_party/subzero/tests_lit/llvm2ice_tests/select-opt.ll
deleted file mode 100644
index 2383f8b..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/select-opt.ll
+++ /dev/null
@@ -1,110 +0,0 @@
-; Simple test of the select instruction.  The CHECK lines are only
-; checking for basic instruction patterns that should be present
-; regardless of the optimization level, so there are no special OPTM1
-; match lines.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -Om1 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 --check-prefix ARM32-O2 %s
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 --check-prefix ARM32-OM1 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-define internal void @testSelect(i32 %a, i32 %b) {
-entry:
-  %cmp = icmp slt i32 %a, %b
-  %cond = select i1 %cmp, i32 %a, i32 %b
-  tail call void @useInt(i32 %cond)
-  %cmp1 = icmp sgt i32 %a, %b
-  %cond2 = select i1 %cmp1, i32 10, i32 20
-  tail call void @useInt(i32 %cond2)
-  ; Create "fake" uses of %cmp and %cmp1 to prevent O2 bool folding.
-  %d1 = zext i1 %cmp to i32
-  call void @useInt(i32 %d1)
-  %d2 = zext i1 %cmp1 to i32
-  call void @useInt(i32 %d2)
-  ret void
-}
-
-declare void @useInt(i32 %x)
-
-; CHECK-LABEL: testSelect
-; CHECK:      cmp
-; CHECK:      cmp
-; CHECK:      call {{.*}} R_{{.*}} useInt
-; CHECK:      cmp
-; CHECK:      cmp
-; CHECK:      call {{.*}} R_{{.*}} useInt
-; CHECK:      ret
-; ARM32-LABEL: testSelect
-; ARM32: cmp
-; ARM32: bl {{.*}} useInt
-; ARM32-Om1: mov {{.*}}, #20
-; ARM32-O2: mov [[REG:r[0-9]+]], #20
-; ARM32: tst
-; ARM32-Om1: movne {{.*}}, #10
-; ARM32-O2: movne [[REG]], #10
-; ARM32: bl {{.*}} useInt
-; ARM32: bl {{.*}} useInt
-; ARM32: bl {{.*}} useInt
-; ARM32: bx lr
-; MIPS32-LABEL: testSelect
-; MIPS32: slt {{.*}}
-; MIPS32: movn {{.*}}
-
-; Check for valid addressing mode in the cmp instruction when the
-; operand is an immediate.
-define internal i32 @testSelectImm32(i32 %a, i32 %b) {
-entry:
-  %cond = select i1 false, i32 %a, i32 %b
-  ret i32 %cond
-}
-; CHECK-LABEL: testSelectImm32
-; CHECK-NOT: cmp 0x{{[0-9a-f]+}},
-; ARM32-LABEL: testSelectImm32
-; ARM32-NOT: cmp #{{.*}},
-; MIPS32-LABEL: testSelectImm32
-; MIPS32: movn {{.*}}
-
-; Check for valid addressing mode in the cmp instruction when the
-; operand is an immediate.  There is a different x86-32 lowering
-; sequence for 64-bit operands.
-define internal i64 @testSelectImm64(i64 %a, i64 %b) {
-entry:
-  %cond = select i1 true, i64 %a, i64 %b
-  ret i64 %cond
-}
-; CHECK-LABEL: testSelectImm64
-; CHECK-NOT: cmp 0x{{[0-9a-f]+}},
-; ARM32-LABEL: testSelectImm64
-; ARM32-NOT: cmp #{{.*}},
-; MIPS32-LABEL: testSelectImm64
-; MIPS32: movn
-; MIPS32: movn
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/shift.ll b/third_party/subzero/tests_lit/llvm2ice_tests/shift.ll
deleted file mode 100644
index cb9aa92..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/shift.ll
+++ /dev/null
@@ -1,296 +0,0 @@
-; This is a test of C-level conversion operations that clang lowers
-; into pairs of shifts.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -Om1 \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -O2 \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 %s
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -Om1 \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -O2 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32-O2 --check-prefix MIPS32 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -Om1 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32-OM1 --check-prefix MIPS32 %s
-
-@i1 = internal global [4 x i8] zeroinitializer, align 4
-@i2 = internal global [4 x i8] zeroinitializer, align 4
-@u1 = internal global [4 x i8] zeroinitializer, align 4
-
-define internal void @conv1() {
-entry:
-  %__0 = bitcast [4 x i8]* @u1 to i32*
-  %v0 = load i32, i32* %__0, align 1
-  %sext = shl i32 %v0, 24
-  %v1 = ashr i32 %sext, 24
-  %__4 = bitcast [4 x i8]* @i1 to i32*
-  store i32 %v1, i32* %__4, align 1
-  ret void
-}
-; CHECK-LABEL: conv1
-; CHECK: shl {{.*}},0x18
-; CHECK: sar {{.*}},0x18
-
-; ARM32-LABEL: conv1
-; ARM32: lsl {{.*}}, #24
-; ARM32: asr {{.*}}, #24
-
-define internal void @conv2() {
-entry:
-  %__0 = bitcast [4 x i8]* @u1 to i32*
-  %v0 = load i32, i32* %__0, align 1
-  %sext1 = shl i32 %v0, 16
-  %v1 = lshr i32 %sext1, 16
-  %__4 = bitcast [4 x i8]* @i2 to i32*
-  store i32 %v1, i32* %__4, align 1
-  ret void
-}
-; CHECK-LABEL: conv2
-; CHECK: shl {{.*}},0x10
-; CHECK: shr {{.*}},0x10
-
-; ARM32-LABEL: conv2
-; ARM32: lsl {{.*}}, #16
-; ARM32: lsr {{.*}}, #16
-
-define internal i32 @shlImmLarge(i32 %val) {
-entry:
-  %result = shl i32 %val, 257
-  ret i32 %result
-}
-; CHECK-LABEL: shlImmLarge
-; CHECK: shl {{.*}},0x1
-
-; MIPS32-LABEL: shlImmLarge
-; MIPS32: sll
-
-define internal i32 @shlImmNeg(i32 %val) {
-entry:
-  %result = shl i32 %val, -1
-  ret i32 %result
-}
-; CHECK-LABEL: shlImmNeg
-; CHECK: shl {{.*}},0xff
-
-; MIPS32-LABEL: shlImmNeg
-; MIPS32: sll
-
-define internal i32 @lshrImmLarge(i32 %val) {
-entry:
-  %result = lshr i32 %val, 257
-  ret i32 %result
-}
-; CHECK-LABEL: lshrImmLarge
-; CHECK: shr {{.*}},0x1
-
-; MIPS32-LABEL: lshrImmLarge
-; MIPS32: srl
-
-define internal i32 @lshrImmNeg(i32 %val) {
-entry:
-  %result = lshr i32 %val, -1
-  ret i32 %result
-}
-; CHECK-LABEL: lshrImmNeg
-; CHECK: shr {{.*}},0xff
-
-; MIPS32-LABEL: lshrImmNeg
-; MIPS32: srl
-
-define internal i32 @ashrImmLarge(i32 %val) {
-entry:
-  %result = ashr i32 %val, 257
-  ret i32 %result
-}
-; CHECK-LABEL: ashrImmLarge
-; CHECK: sar {{.*}},0x1
-
-; MIPS32-LABEL: ashrImmLarge
-; MIPS32: sra
-
-define internal i32 @ashrImmNeg(i32 %val) {
-entry:
-  %result = ashr i32 %val, -1
-  ret i32 %result
-}
-; CHECK-LABEL: ashrImmNeg
-; CHECK: sar {{.*}},0xff
-
-; MIPS32-LABEL: ashrImmNeg
-; MIPS32: sra
-
-define internal i64 @shlImm64One(i64 %val) {
-entry:
-  %result = shl i64 %val, 1
-  ret i64 %result
-}
-; CHECK-LABEL: shlImm64One
-; CHECK: shl {{.*}},1
-; MIPS32-LABEL: shlImm64One
-; MIPS32: addu	[[T_LO:.*]],[[VAL_LO:.*]],[[VAL_LO]]
-; MIPS32: sltu	[[T1:.*]],[[T_LO]],[[VAL_LO]]
-; MIPS32: addu	[[T2:.*]],[[T1]],[[VAL_HI:.*]]
-; MIPS32: addu	{{.*}},[[VAL_HI]],[[T2]]
-
-define internal i64 @shlImm64LessThan32(i64 %val) {
-entry:
-  %result = shl i64 %val, 4
-  ret i64 %result
-}
-; CHECK-LABEL: shlImm64LessThan32
-; CHECK: shl {{.*}},0x4
-; MIPS32-LABEL: shlImm64LessThan32
-; MIPS32: srl	[[T1:.*]],[[VAL_LO:.*]],0x1c
-; MIPS32: sll	[[T2:.*]],{{.*}},0x4
-; MIPS32: or	{{.*}},[[T1]],[[T2]]
-; MIPS32: sll	{{.*}},[[VAL_LO]],0x4
-
-define internal i64 @shlImm64Equal32(i64 %val) {
-entry:
-  %result = shl i64 %val, 32
-  ret i64 %result
-}
-; CHECK-LABEL: shlImm64Equal32
-; CHECK-NOT: shl
-; MIPS32-LABEL: shlImm64Equal32
-; MIPS32: li	{{.*}},0
-; MIPS32-O2:	move
-; MIPS32-OM1:	sw
-; MIPS32-OM1:	lw
-
-define internal i64 @shlImm64GreaterThan32(i64 %val) {
-entry:
-  %result = shl i64 %val, 40
-  ret i64 %result
-}
-; CHECK-LABEL: shlImm64GreaterThan32
-; CHECK: shl {{.*}},0x8
-; MIPS32-LABEL: shlImm64GreaterThan32
-; MIPS32: sll	{{.*}},{{.*}},0x8
-; MIPS32: li	{{.*}},0
-
-define internal i64 @lshrImm64One(i64 %val) {
-entry:
-  %result = lshr i64 %val, 1
-  ret i64 %result
-}
-; CHECK-LABEL: lshrImm64One
-; CHECK: shr {{.*}},1
-; MIPS32-LABEL: lshrImm64One
-; MIPS32: sll	[[T1:.*]],[[VAL_HI:.*]],0x1f
-; MIPS32: srl	[[T2:.*]],{{.*}},0x1
-; MIPS32: or	{{.*}},[[T1]],[[T2]]
-; MIPS32: srl	{{.*}},[[VAL_HI]],0x1
-
-define internal i64 @lshrImm64LessThan32(i64 %val) {
-entry:
-  %result = lshr i64 %val, 4
-  ret i64 %result
-}
-; CHECK-LABEL: lshrImm64LessThan32
-; CHECK: shrd {{.*}},0x4
-; CHECK: shr {{.*}},0x4
-; MIPS32-LABEL: lshrImm64LessThan32
-; MIPS32: sll	[[T1:.*]],[[VAL_HI:.*]],0x1c
-; MIPS32: srl	[[T2:.*]],{{.*}},0x4
-; MIPS32: or	{{.*}},[[T1]],[[T2]]
-; MIPS32: srl	{{.*}},[[VAL_HI]],0x4
-
-define internal i64 @lshrImm64Equal32(i64 %val) {
-entry:
-  %result = lshr i64 %val, 32
-  ret i64 %result
-}
-; CHECK-LABEL: lshrImm64Equal32
-; CHECK-NOT: shr
-; MIPS32-LABEL: lshrImm64Equal32
-; MIPS32: li	{{.*}},0
-; MIPS32-O2: move
-; MIPS32-OM1: sw
-; MIPS32-OM1: lw
-
-define internal i64 @lshrImm64GreaterThan32(i64 %val) {
-entry:
-  %result = lshr i64 %val, 40
-  ret i64 %result
-}
-; CHECK-LABEL: lshrImm64GreaterThan32
-; CHECK-NOT: shrd
-; CHECK: shr {{.*}},0x8
-; MIPS32-LABEL: lshrImm64GreaterThan32
-; MIPS32: srl	{{.*}},{{.*}},0x8
-; MIPS32: li	{{.*}},0
-
-define internal i64 @ashrImm64One(i64 %val) {
-entry:
-  %result = ashr i64 %val, 1
-  ret i64 %result
-}
-; CHECK-LABEL: ashrImm64One
-; CHECK: shrd {{.*}},0x1
-; CHECK: sar {{.*}},1
-; MIPS32-LABEL: ashrImm64One
-; MIPS32: sll	[[T1:.*]],[[VAL_HI:.*]],0x1f
-; MIPS32: srl	[[T2:.*]],{{.*}},0x1
-; MIPS32: or	{{.*}},[[T1]],[[T2]]
-; MIPS32: sra	{{.*}},[[VAL_HI]],0x1
-
-define internal i64 @ashrImm64LessThan32(i64 %val) {
-entry:
-  %result = ashr i64 %val, 4
-  ret i64 %result
-}
-; CHECK-LABEL: ashrImm64LessThan32
-; CHECK: shrd {{.*}},0x4
-; CHECK: sar {{.*}},0x4
-; MIPS32-LABEL: ashrImm64LessThan32
-; MIPS32: sll   [[T1:.*]],[[VAL_HI:.*]],0x1c
-; MIPS32: srl   [[T2:.*]],{{.*}},0x4
-; MIPS32: or    {{.*}},[[T1]],[[T2]]
-; MIPS32: sra   {{.*}},[[VAL_HI]],0x4
-
-define internal i64 @ashrImm64Equal32(i64 %val) {
-entry:
-  %result = ashr i64 %val, 32
-  ret i64 %result
-}
-; CHECK-LABEL: ashrImm64Equal32
-; CHECK: sar {{.*}},0x1f
-; CHECK-NOT: shrd
-; MIPS32-LABEL: ashrImm64Equal32
-; MIPS32: sra	{{.*}},[[VAL_HI:.*]],0x1f
-; MIPS32-O2: move	{{.*}},[[VAL_HI]]
-; MIPS32-OM1:	sw [[VAL_HI]],{{.*}}
-; MIPS32-OM1:   lw {{.*}},{{.*}}
-
-define internal i64 @ashrImm64GreaterThan32(i64 %val) {
-entry:
-  %result = ashr i64 %val, 40
-  ret i64 %result
-}
-; CHECK-LABEL: ashrImm64GreaterThan32
-; CHECK: sar {{.*}},0x1f
-; CHECK: shrd {{.*}},0x8
-; MIPS32-LABEL: ashrImm64GreaterThan32
-; MIPS32: sra	{{.*}},[[VAL_HI:.*]],0x8
-; MIPS32: sra	{{.*}},[[VAL_HI]],0x1f
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/short-circuit.ll b/third_party/subzero/tests_lit/llvm2ice_tests/short-circuit.ll
deleted file mode 100644
index df0e1a9..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/short-circuit.ll
+++ /dev/null
@@ -1,42 +0,0 @@
-; Test on -enable-sc if basic blocks are split when short circuit evaluation
-; is possible for boolean expressions
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --filetype=asm --target x8632 --args \
-; RUN: -O2 -enable-sc | FileCheck %s --check-prefix=ENABLE \
-; RUN: --check-prefix=CHECK
-
-; RUN: %p2i -i %s --filetype=asm --target x8632 --args \
-; RUN: -O2 | FileCheck %s --check-prefix=NOENABLE \
-; RUN: --check-prefix=CHECK
-
-define internal i32 @short_circuit(i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4,
-                                   i32 %arg5) {
-  %t0 = trunc i32 %arg1 to i1
-  %t1 = trunc i32 %arg2 to i1
-  %t2 = trunc i32 %arg3 to i1
-  %t3 = trunc i32 %arg4 to i1
-  %t4 = trunc i32 %arg5 to i1
-
-  %t5 = or i1 %t0, %t1
-  %t6 = and i1 %t5, %t2
-  %t7 = and i1 %t3, %t4
-  %t8 = or i1 %t6, %t7
-
-  br i1 %t8, label %target_true, label %target_false
-
-target_true:
-  ret i32 1
-
-target_false:
-  ret i32 0
-}
-
-; CHECK-LABEL: short_circuit
-; NOENABLE: .Lshort_circuit$__0:
-; ENABLE: .Lshort_circuit$__0_1_1:
-; ENABLE: .Lshort_circuit$__0_1_2:
-; ENABLE: .Lshort_circuit$__0_2:
-; CHECK: .Lshort_circuit$target_true:
-; CHECK: .Lshort_circuit$target_false:
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/simple-loop.ll b/third_party/subzero/tests_lit/llvm2ice_tests/simple-loop.ll
deleted file mode 100644
index 95cb9b8..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/simple-loop.ll
+++ /dev/null
@@ -1,50 +0,0 @@
-; This tests a simple loop that sums the elements of an input array.
-; The O2 check patterns represent the best code currently achieved.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:   | FileCheck %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \
-; RUN:   | FileCheck --check-prefix=OPTM1 %s
-
-define internal i32 @simple_loop(i32 %a, i32 %n) {
-entry:
-  %cmp4 = icmp sgt i32 %n, 0
-  br i1 %cmp4, label %for.body, label %for.end
-
-for.body:
-  %i.06 = phi i32 [ %inc, %for.body ], [ 0, %entry ]
-  %sum.05 = phi i32 [ %add, %for.body ], [ 0, %entry ]
-  %gep_array = mul i32 %i.06, 4
-  %gep = add i32 %a, %gep_array
-  %__9 = inttoptr i32 %gep to i32*
-  %v0 = load i32, i32* %__9, align 1
-  %add = add i32 %v0, %sum.05
-  %inc = add i32 %i.06, 1
-  %cmp = icmp slt i32 %inc, %n
-  br i1 %cmp, label %for.body, label %for.end
-
-for.end:
-  %sum.0.lcssa = phi i32 [ 0, %entry ], [ %add, %for.body ]
-  ret i32 %sum.0.lcssa
-}
-
-; CHECK-LABEL: simple_loop
-; CHECK:      mov ecx,DWORD PTR [esp{{.*}}+0x{{[0-9a-f]+}}]
-; CHECK:      cmp ecx,0x0
-; CHECK-NEXT: j{{le|g}} {{[0-9]}}
-
-; Check for the combination of address mode inference, register
-; allocation, and load/arithmetic fusing.
-; CHECK: [[L:[0-9a-f]+]]{{.*}} add e{{..}},DWORD PTR [e{{..}}+[[IREG:e..]]*4]
-; Check for incrementing of the register-allocated induction variable.
-; CHECK-NEXT: add [[IREG]],0x1
-; Check for comparing the induction variable against the loop size.
-; CHECK-NEXT: cmp [[IREG]],
-; CHECK-NEXT: jl [[L]]
-;
-; There's nothing remarkable under Om1 to test for, since Om1 generates
-; such atrocious code (by design).
-; OPTM1-LABEL: simple_loop
-; OPTM1:      cmp {{.*}},0x0
-; OPTM1:      setl
-; OPTM1:      ret
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/square.ll b/third_party/subzero/tests_lit/llvm2ice_tests/square.ll
deleted file mode 100644
index 08e7d67..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/square.ll
+++ /dev/null
@@ -1,111 +0,0 @@
-; Test the a=b*b lowering sequence which can use a single temporary register
-; instead of two registers.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 -mattr=sse4.1 \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -Om1 -mattr=sse4.1 \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:   mips32 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-define internal float @Square_float(float %a) {
-entry:
-  %result = fmul float %a, %a
-  ret float %result
-}
-; CHECK-LABEL: Square_float
-; CHECK: mulss [[REG:xmm.]],[[REG]]
-; MIPS32-LABEL: Square_float
-; MIPS32: 	mov.s
-; MIPS32: 	mul.s
-
-define internal double @Square_double(double %a) {
-entry:
-  %result = fmul double %a, %a
-  ret double %result
-}
-; CHECK-LABEL: Square_double
-; CHECK: mulsd [[REG:xmm.]],[[REG]]
-; MIPS32-LABEL: Square_double
-; MIPS32: 	mov.d
-; MIPS32: 	mul.d
-
-define internal i32 @Square_i32(i32 %a) {
-entry:
-  %result = mul i32 %a, %a
-  ret i32 %result
-}
-; CHECK-LABEL: Square_i32
-; CHECK: imul [[REG:e..]],[[REG]]
-; MIPS32-LABEL: Square_i32
-; MIPS32: 	move
-; MIPS32: 	mul
-
-define internal i32 @Square_i16(i32 %a) {
-entry:
-  %a.16 = trunc i32 %a to i16
-  %result = mul i16 %a.16, %a.16
-  %result.i32 = sext i16 %result to i32
-  ret i32 %result.i32
-}
-; CHECK-LABEL: Square_i16
-; CHECK: imul [[REG:..]],[[REG]]
-; MIPS32-LABEL: Square_i16
-; MIPS32: 	move
-; MIPS32: 	mul
-; MIPS32: 	sll
-; MIPS32: 	sra
-
-define internal i32 @Square_i8(i32 %a) {
-entry:
-  %a.8 = trunc i32 %a to i8
-  %result = mul i8 %a.8, %a.8
-  %result.i32 = sext i8 %result to i32
-  ret i32 %result.i32
-}
-; CHECK-LABEL: Square_i8
-; CHECK: imul al
-; MIPS32-LABEL: Square_i8
-; MIPS32: 	move
-; MIPS32: 	mul
-; MIPS32: 	sll
-; MIPS32: 	sra
-
-define internal <4 x float> @Square_v4f32(<4 x float> %a) {
-entry:
-  %result = fmul <4 x float> %a, %a
-  ret <4 x float> %result
-}
-; CHECK-LABEL: Square_v4f32
-; CHECK: mulps [[REG:xmm.]],[[REG]]
-
-define internal <4 x i32> @Square_v4i32(<4 x i32> %a) {
-entry:
-  %result = mul <4 x i32> %a, %a
-  ret <4 x i32> %result
-}
-; CHECK-LABEL: Square_v4i32
-; CHECK: pmulld [[REG:xmm.]],[[REG]]
-
-define internal <8 x i16> @Square_v8i16(<8 x i16> %a) {
-entry:
-  %result = mul <8 x i16> %a, %a
-  ret <8 x i16> %result
-}
-; CHECK-LABEL: Square_v8i16
-; CHECK: pmullw [[REG:xmm.]],[[REG]]
-
-define internal <16 x i8> @Square_v16i8(<16 x i8> %a) {
-entry:
-  %result = mul <16 x i8> %a, %a
-  ret <16 x i8> %result
-}
-; CHECK-LABEL: Square_v16i8
-; CHECK-NOT: pmul
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/store.ll b/third_party/subzero/tests_lit/llvm2ice_tests/store.ll
deleted file mode 100644
index c0550cc..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/store.ll
+++ /dev/null
@@ -1,104 +0,0 @@
-; Simple test of the store instruction.
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i -i %s --args --verbose inst -threads=0 | FileCheck %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-define internal void @store_i64(i32 %addr_arg) {
-entry:
-  %__1 = inttoptr i32 %addr_arg to i64*
-  store i64 1, i64* %__1, align 1
-  ret void
-
-; CHECK:       Initial CFG
-; CHECK:     entry:
-; CHECK-NEXT:  store i64 1, i64* %addr_arg, align 1
-; CHECK-NEXT:  ret void
-}
-; MIPS32-LABEL: store_i64
-; MIPS32: li
-; MIPS32: li
-; MIPS32: sw
-; MIPS32: sw
-
-define internal void @store_i32(i32 %addr_arg) {
-entry:
-  %__1 = inttoptr i32 %addr_arg to i32*
-  store i32 1, i32* %__1, align 1
-  ret void
-
-; CHECK:       Initial CFG
-; CHECK:     entry:
-; CHECK-NEXT:  store i32 1, i32* %addr_arg, align 1
-; CHECK-NEXT:  ret void
-}
-; MIPS32-LABEL: store_i32
-; MIPS32: li
-; MIPS32: sw
-
-define internal void @store_i16(i32 %addr_arg) {
-entry:
-  %__1 = inttoptr i32 %addr_arg to i16*
-  store i16 1, i16* %__1, align 1
-  ret void
-
-; CHECK:       Initial CFG
-; CHECK:     entry:
-; CHECK-NEXT:  store i16 1, i16* %addr_arg, align 1
-; CHECK-NEXT:  ret void
-}
-; MIPS32-LABEL: store_i16
-; MIPS32: li
-; MIPS32: sh
-
-define internal void @store_i8(i32 %addr_arg) {
-entry:
-  %__1 = inttoptr i32 %addr_arg to i8*
-  store i8 1, i8* %__1, align 1
-  ret void
-
-; CHECK:       Initial CFG
-; CHECK:     entry:
-; CHECK-NEXT:  store i8 1, i8* %addr_arg, align 1
-; CHECK-NEXT:  ret void
-}
-; MIPS32-LABEL: store_i8
-; MIPS32: li
-; MIPS32: sb
-
-define internal void @store_f32(float* %faddr_arg) {
-entry:
-  store float 1.000000e+00, float* %faddr_arg, align 4
-  ret void
-
-; CHECK:       Initial CFG
-; CHECK:     entry:
-; CHECK-NEXT:  store float 1.000000e+00, float* %faddr_arg, align 4
-; CHECK-NEXT:  ret void
-}
-; MIPS32-LABEL: store_f32
-; MIPS32: lui
-; MIPS32: lwc1
-; MIPS32: swc1
-
-define internal void @store_f64(double* %daddr_arg) {
-entry:
-  store double 1.000000e+00, double* %daddr_arg, align 8
-  ret void
-
-; CHECK:       Initial CFG
-; CHECK:     entry:
-; CHECK-NEXT:  store double 1.000000e+00, double* %daddr_arg, align 8
-; CHECK-NEXT:  ret void
-}
-; MIPS32-LABEL: store_f64
-; MIPS32: lui
-; MIPS32: ldc1
-; MIPS32: sdc1
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/strength-reduce.ll b/third_party/subzero/tests_lit/llvm2ice_tests/strength-reduce.ll
deleted file mode 100644
index 09188f7..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/strength-reduce.ll
+++ /dev/null
@@ -1,71 +0,0 @@
-; This tests various strength reduction operations.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-define internal i32 @mul_i32_arg_5(i32 %arg) {
-  %result = mul i32 %arg, 5
-  ret i32 %result
-}
-; CHECK-LABEL: mul_i32_arg_5
-; CHECK: lea [[REG:e..]],{{\[}}[[REG]]+[[REG]]*4]
-
-define internal i32 @mul_i32_5_arg(i32 %arg) {
-  %result = mul i32 5, %arg
-  ret i32 %result
-}
-; CHECK-LABEL: mul_i32_5_arg
-; CHECK: lea [[REG:e..]],{{\[}}[[REG]]+[[REG]]*4]
-
-define internal i32 @mul_i32_arg_18(i32 %arg) {
-  %result = mul i32 %arg, 18
-  ret i32 %result
-}
-; CHECK-LABEL: mul_i32_arg_18
-; CHECK-DAG: lea [[REG:e..]],{{\[}}[[REG]]+[[REG]]*8]
-; CHECK-DAG: shl [[REG]],1
-
-define internal i32 @mul_i32_arg_27(i32 %arg) {
-  %result = mul i32 %arg, 27
-  ret i32 %result
-}
-; CHECK-LABEL: mul_i32_arg_27
-; CHECK-DAG: lea [[REG:e..]],{{\[}}[[REG]]+[[REG]]*2]
-; CHECK-DAG: lea [[REG]],{{\[}}[[REG]]+[[REG]]*8]
-
-define internal i32 @mul_i32_arg_m45(i32 %arg) {
-  %result = mul i32 %arg, -45
-  ret i32 %result
-}
-; CHECK-LABEL: mul_i32_arg_m45
-; CHECK-DAG: lea [[REG:e..]],{{\[}}[[REG]]+[[REG]]*8]
-; CHECK-DAG: lea [[REG]],{{\[}}[[REG]]+[[REG]]*4]
-; CHECK: neg [[REG]]
-
-define internal i32 @mul_i16_arg_18(i32 %arg) {
-  %arg.16 = trunc i32 %arg to i16
-  %result = mul i16 %arg.16, 18
-  %result.i32 = zext i16 %result to i32
-  ret i32 %result.i32
-}
-; CHECK-LABEL: mul_i16_arg_18
-; CHECK: imul
-
-define internal i32 @mul_i8_arg_16(i32 %arg) {
-  %arg.8 = trunc i32 %arg to i8
-  %result = mul i8 %arg.8, 16
-  %result.i32 = zext i8 %result to i32
-  ret i32 %result.i32
-}
-; CHECK-LABEL: mul_i8_arg_16
-; CHECK: shl {{.*}},0x4
-
-define internal i32 @mul_i8_arg_18(i32 %arg) {
-  %arg.8 = trunc i32 %arg to i8
-  %result = mul i8 %arg.8, 18
-  %result.i32 = zext i8 %result to i32
-  ret i32 %result.i32
-}
-; CHECK-LABEL: mul_i8_arg_18
-; CHECK: imul
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/struct-arith.pnacl.ll b/third_party/subzero/tests_lit/llvm2ice_tests/struct-arith.pnacl.ll
deleted file mode 100644
index acab66b..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/struct-arith.pnacl.ll
+++ /dev/null
@@ -1,48 +0,0 @@
-; This test is lowered from C code that does some simple aritmetic
-; with struct members.
-
-; REQUIRES: allow_dump
-; RUN: %p2i -i %s --args --verbose inst -threads=0 | FileCheck %s
-
-define internal i32 @compute_important_function(i32 %v1, i32 %v2) {
-entry:
-  %__2 = inttoptr i32 %v1 to i32*
-  %_v0 = load i32, i32* %__2, align 1
-
-; CHECK:        entry:
-; CHECK-NEXT:       %_v0 = load i32, i32* {{.*}}, align 1
-
-  %__4 = inttoptr i32 %v2 to i32*
-  %_v1 = load i32, i32* %__4, align 1
-  %gep = add i32 %v2, 12
-  %__7 = inttoptr i32 %gep to i32*
-  %_v2 = load i32, i32* %__7, align 1
-  %mul = mul i32 %_v2, %_v1
-  %gep6 = add i32 %v1, 4
-  %__11 = inttoptr i32 %gep6 to i32*
-  %_v3 = load i32, i32* %__11, align 1
-  %gep8 = add i32 %v2, 8
-  %__14 = inttoptr i32 %gep8 to i32*
-  %_v4 = load i32, i32* %__14, align 1
-  %gep10 = add i32 %v2, 4
-  %__17 = inttoptr i32 %gep10 to i32*
-  %_v5 = load i32, i32* %__17, align 1
-  %mul3 = mul i32 %_v5, %_v4
-  %gep12 = add i32 %v1, 8
-  %__21 = inttoptr i32 %gep12 to i32*
-  %_v6 = load i32, i32* %__21, align 1
-  %mul7 = mul i32 %_v6, %_v3
-  %mul9 = mul i32 %mul7, %_v6
-  %gep14 = add i32 %v1, 12
-  %__26 = inttoptr i32 %gep14 to i32*
-  %_v7 = load i32, i32* %__26, align 1
-  %mul11 = mul i32 %mul9, %_v7
-  %add4.neg = add i32 %mul, %_v0
-  %add = sub i32 %add4.neg, %_v3
-  %sub = sub i32 %add, %mul3
-  %sub12 = sub i32 %sub, %mul11
-  ret i32 %sub12
-
-; CHECK:        %sub12 = sub i32 %sub, %mul11
-; CHECK-NEXT:       ret i32 %sub12
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/switch-opt.ll b/third_party/subzero/tests_lit/llvm2ice_tests/switch-opt.ll
deleted file mode 100644
index 255bfe66..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/switch-opt.ll
+++ /dev/null
@@ -1,241 +0,0 @@
-; This tests a switch statement, including multiple branches to the
-; same label which also results in phi instructions with multiple
-; entries for the same incoming edge.
-
-; For x86 see adv-switch-opt.ll
-
-; TODO(jvoung): Update to -02 once the phi assignments is done for ARM
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj --disassemble \
-; RUN:   --target arm32 -i %s --args -Om1 \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:     --command FileCheck --check-prefix ARM32 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble \
-; RUN:   --target mips32 -i %s --args -Om1 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:     --command FileCheck --check-prefix MIPS32 %s
-
-define internal i32 @testSwitch(i32 %a) {
-entry:
-  switch i32 %a, label %sw.default [
-    i32 1, label %sw.epilog
-    i32 2, label %sw.epilog
-    i32 3, label %sw.epilog
-    i32 7, label %sw.bb1
-    i32 8, label %sw.bb1
-    i32 15, label %sw.bb2
-    i32 14, label %sw.bb2
-  ]
-
-sw.default:                                       ; preds = %entry
-  %add = add i32 %a, 27
-  br label %sw.epilog
-
-sw.bb1:                                           ; preds = %entry, %entry
-  %phitmp = sub i32 21, %a
-  br label %sw.bb2
-
-sw.bb2:                                           ; preds = %sw.bb1, %entry, %entry
-  %result.0 = phi i32 [ 1, %entry ], [ 1, %entry ], [ %phitmp, %sw.bb1 ]
-  br label %sw.epilog
-
-sw.epilog:                                        ; preds = %sw.bb2, %sw.default, %entry, %entry, %entry
-  %result.1 = phi i32 [ %add, %sw.default ], [ %result.0, %sw.bb2 ], [ 17, %entry ], [ 17, %entry ], [ 17, %entry ]
-  ret i32 %result.1
-}
-
-; MIPS32-LABEL: testSwitch
-; MIPS32: li	{{.*}},1
-; MIPS32: li	{{.*}},17
-; MIPS32: li	{{.*}},1
-; MIPS32: beq	{{.*}},{{.*}},{{.*}} <[[SW_EPILOG:.*]]>
-; MIPS32: li	{{.*}},2
-; MIPS32: beq	{{.*}},{{.*}},{{.*}} <[[SW_EPILOG]]>
-; MIPS32: li	{{.*}},3
-; MIPS32: beq	{{.*}},{{.*}},{{.*}} <[[SW_EPILOG]]>
-; MIPS32: li	{{.*}},7
-; MIPS32: beq	{{.*}},{{.*}},{{.*}} <[[SW_BB1:.*]]>
-; MIPS32: li	{{.*}},8
-; MIPS32: beq	{{.*}},{{.*}},{{.*}} <[[SW_BB1]]>
-; MIPS32: li	{{.*}},15
-; MIPS32: beq	{{.*}},{{.*}},{{.*}} <[[SW_BB2:.*]]>
-; MIPS32: li	{{.*}},14
-; MIPS32: beq	{{.*}},{{.*}},{{.*}} <[[SW_BB2]]>
-; MIPS32: b	{{.*}} <[[SW_DEFAULT:.*]]>
-; MIPS32: <[[SW_DEFAULT]]>
-; MIPS32: addiu	{{.*}},27
-; MIPS32: b	{{.*}} <[[SW_EPILOG]]>
-; MIPS32: <[[SW_BB1]]>
-; MIPS32: li	{{.*}},21
-; MIPS32: b	{{.*}} <[[SW_BB2]]>
-; MIPS32: <[[SW_BB2]]>
-; MIPS32: b	{{.*}} <[[SW_EPILOG]]>
-; MIPS32: <[[SW_EPILOG]]>
-; MIPS32: jr	ra
-
-; Check for a valid addressing mode when the switch operand is an
-; immediate.  It's important that there is exactly one case, because
-; for two or more cases the source operand is legalized into a
-; register.
-define internal i32 @testSwitchImm() {
-entry:
-  switch i32 10, label %sw.default [
-    i32 1, label %sw.default
-  ]
-
-sw.default:
-  ret i32 20
-}
-; ARM32-LABEL: testSwitchImm
-; ARM32: cmp {{r[0-9]+}}, #1
-; ARM32-NEXT: beq
-; ARM32-NEXT: b
-
-; MIPS32-LABEL: testSwitchImm
-; MIPS32: li	{{.*}},10
-; MIPS32: li	{{.*}},1
-; MIPS32: beq	{{.*}},{{.*}},{{.*}} <.LtestSwitchImm$sw.default>
-; MIPS32: .LtestSwitchImm$sw.default
-; MIPS32: li	v0,20
-; MIPS32: jr	ra
-
-; Test for correct 64-bit lowering.
-define internal i32 @testSwitch64(i64 %a) {
-entry:
-  switch i64 %a, label %sw.default [
-    i64 123, label %return
-    i64 234, label %sw.bb1
-    i64 345, label %sw.bb2
-    i64 78187493520, label %sw.bb3
-  ]
-
-sw.bb1:                                           ; preds = %entry
-  br label %return
-
-sw.bb2:                                           ; preds = %entry
-  br label %return
-
-sw.bb3:                                           ; preds = %entry
-  br label %return
-
-sw.default:                                       ; preds = %entry
-  br label %return
-
-return:                                           ; preds = %sw.default, %sw.bb3, %sw.bb2, %sw.bb1, %entry
-  %retval.0 = phi i32 [ 5, %sw.default ], [ 4, %sw.bb3 ], [ 3, %sw.bb2 ], [ 2, %sw.bb1 ], [ 1, %entry ]
-  ret i32 %retval.0
-}
-; ARM32-LABEL: testSwitch64
-; ARM32: cmp {{r[0-9]+}}, #123
-; ARM32-NEXT: cmpeq {{r[0-9]+}}, #0
-; ARM32-NEXT: beq
-; ARM32: cmp {{r[0-9]+}}, #234
-; ARM32-NEXT: cmpeq {{r[0-9]+}}, #0
-; ARM32-NEXT: beq
-; ARM32: movw [[REG:r[0-9]+]], #345
-; ARM32-NEXT: cmp {{r[0-9]+}}, [[REG]]
-; ARM32-NEXT: cmpeq {{r[0-9]+}}, #0
-; ARM32-NEXT: beq
-; ARM32: movw [[REG:r[0-9]+]], #30864
-; ARM32-NEXT: movt [[REG]], #13398
-; ARM32-NEXT: cmp {{r[0-9]+}}, [[REG]]
-; ARM32-NEXT: cmpeq {{r[0-9]+}}, #18
-; ARM32-NEXT: beq
-; ARM32-NEXT: b
-
-; MIPS32-LABEL: testSwitch64
-; MIPS32: bne	{{.*}},{{.*}},{{.*}} <.LtestSwitch64$local$__0>
-; MIPS32: li	{{.*}},123
-; MIPS32: beq	{{.*}},{{.*}},{{.*}} <.LtestSwitch64$return>
-; MIPS32: .LtestSwitch64$local$__0
-; MIPS32: li	{{.*}},0
-; MIPS32: bne	{{.*}},{{.*}},{{.*}} <.LtestSwitch64$local$__1>
-; MIPS32: li	{{.*}},234
-; MIPS32: beq	{{.*}},{{.*}},{{.*}} <.LtestSwitch64$sw.bb1>
-; MIPS32: .LtestSwitch64$local$__1
-; MIPS32: li	{{.*}},0
-; MIPS32: bne	{{.*}},{{.*}},{{.*}} <.LtestSwitch64$local$__2>
-; MIPS32: li	{{.*}},345
-; MIPS32: beq	{{.*}},{{.*}},{{.*}} <.LtestSwitch64$sw.bb2>
-; MIPS32: .LtestSwitch64$local$__2
-; MIPS32: li	{{.*}},18
-; MIPS32: bne	{{.*}},{{.*}},{{.*}} <.LtestSwitch64$local$__3>
-; MIPS32: lui	{{.*}},0x3456
-; MIPS32: ori	{{.*}},{{.*}},0x7890
-; MIPS32: beq	{{.*}},{{.*}},{{.*}} <.LtestSwitch64$sw.bb3>
-; MIPS32: .LtestSwitch64$local$__3
-; MIPS32: b	{{.*}} <.LtestSwitch64$sw.default>
-; MIPS32: .LtestSwitch64$sw.bb1
-; MIPS32: li	{{.*}},2
-; MIPS32: b	{{.*}} <.LtestSwitch64$return>
-; MIPS32: .LtestSwitch64$sw.bb2
-; MIPS32: li	{{.*}},3
-; MIPS32: b	{{.*}} <.LtestSwitch64$return>
-; MIPS32: .LtestSwitch64$sw.bb3
-; MIPS32: li	{{.*}},4
-; MIPS32: b	{{.*}} <.LtestSwitch64$return>
-; MIPS32: .LtestSwitch64$sw.default
-; MIPS32: li	{{.*}},5
-; MIPS32: b	{{.*}} <.LtestSwitch64$return>
-; MIPS32: .LtestSwitch64$return
-; MIPS32: jr	ra
-
-; Similar to testSwitchImm, make sure proper addressing modes are
-; used.  In reality, this is tested by running the output through the
-; assembler.
-define internal i32 @testSwitchImm64() {
-entry:
-  switch i64 10, label %sw.default [
-    i64 1, label %sw.default
-  ]
-
-sw.default:
-  ret i32 20
-}
-; ARM32-LABEL: testSwitchImm64
-; ARM32: cmp {{r[0-9]+}}, #1
-; ARM32-NEXT: cmpeq {{r[0-9]+}}, #0
-; ARM32-NEXT: beq [[ADDR:[0-9a-f]+]]
-; ARM32-NEXT: b [[ADDR]]
-
-; MIPS32-LABEL: testSwitchImm64
-; MIPS32: li	{{.*}},10
-; MIPS32: li	{{.*}},0
-; MIPS32: li	{{.*}},0
-; MIPS32: bne	{{.*}},{{.*}},{{.*}} <.LtestSwitchImm64$local$__0>
-; MIPS32: li	{{.*}},1
-; MIPS32: beq	{{.*}},{{.*}},{{.*}} <.LtestSwitchImm64$sw.default>
-; MIPS32: .LtestSwitchImm64$local$__0
-; MIPS32: b	{{.*}} <.LtestSwitchImm64$sw.default>
-; MIPS32: .LtestSwitchImm64$sw.default
-; MIPS32: li	{{.*}},20
-; MIPS32: jr	ra
-
-define internal i32 @testSwitchUndef64() {
-entry:
-  switch i64 undef, label %sw.default [
-    i64 1, label %sw.default
-  ]
-
-sw.default:
-  ret i32 20
-}
-; ARM32-LABEL: testSwitchUndef64
-; ARM32: mov {{.*}}, #0
-; ARM32: mov {{.*}}, #0
-
-; MIPS32-LABEL: testSwitchUndef64
-; MIPS32: li	{{.*}},0
-; MIPS32: li	{{.*}},0
-; MIPS32: li	{{.*}},0
-; MIPS32: bne	{{.*}},{{.*}},{{.*}} <.LtestSwitchUndef64$local$__0>
-; MIPS32: li	{{.*}},1
-; MIPS32: beq	{{.*}},{{.*}},{{.*}} <.LtestSwitchUndef64$sw.default>
-; MIPS32: .LtestSwitchUndef64$local$__0
-; MIPS32: b	{{.*}} <.LtestSwitchUndef64$sw.default>
-; MIPS32: .LtestSwitchUndef64$sw.default
-; MIPS32: li	{{.*}},20
-; MIPS32: jr	ra
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/test_i1.ll b/third_party/subzero/tests_lit/llvm2ice_tests/test_i1.ll
deleted file mode 100644
index 13d6b51..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/test_i1.ll
+++ /dev/null
@@ -1,348 +0,0 @@
-; Tests various aspects of i1 related lowering.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -Om1 \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; TODO(jpp): Switch to --filetype=obj when possible.
-; RUN: %if --need=target_ARM32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target arm32 -i %s --args -O2 \
-; RUN:   | %if --need=target_ARM32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix ARM32 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:   mips32 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-; Test that and with true uses immediate 1, not -1.
-define internal i32 @testAndTrue(i32 %arg) {
-entry:
-  %arg_i1 = trunc i32 %arg to i1
-  %result_i1 = and i1 %arg_i1, true
-  %result = zext i1 %result_i1 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testAndTrue
-; CHECK: and {{.*}},0x1
-; ARM32-LABEL: testAndTrue
-; ARM32: and {{.*}}, #1
-; MIPS32-LABEL: testAndTrue
-; MIPS32: 	andi	{{.*}},0x1
-
-; Test that or with true uses immediate 1, not -1.
-define internal i32 @testOrTrue(i32 %arg) {
-entry:
-  %arg_i1 = trunc i32 %arg to i1
-  %result_i1 = or i1 %arg_i1, true
-  %result = zext i1 %result_i1 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testOrTrue
-; CHECK: or {{.*}},0x1
-; ARM32-LABEL: testOrTrue
-; ARM32: orr {{.*}}, #1
-; MIPS32-LABEL: testOrTrue
-; MIPS32: 	ori	{{.*}},0x1
-
-; Test that xor with true uses immediate 1, not -1.
-define internal i32 @testXorTrue(i32 %arg) {
-entry:
-  %arg_i1 = trunc i32 %arg to i1
-  %result_i1 = xor i1 %arg_i1, true
-  %result = zext i1 %result_i1 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testXorTrue
-; CHECK: xor {{.*}},0x1
-; ARM32-LABEL: testXorTrue
-; ARM32: eor {{.*}}, #1
-; MIPS32-LABEL: testXorTrue
-; MIPS32: 	xori	{{.*}},0x1
-
-; Test that trunc to i1 masks correctly.
-define internal i32 @testTrunc(i32 %arg) {
-entry:
-  %arg_i1 = trunc i32 %arg to i1
-  %result = zext i1 %arg_i1 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testTrunc
-; CHECK: and {{.*}},0x1
-; ARM32-LABEL: testTrunc
-; ARM32: and {{.*}}, #1
-; MIPS32-LABEL: testTrunc
-; MIPS32: 	andi	{{.*}},0x1
-
-; Test zext to i8.
-define internal i32 @testZextI8(i32 %arg) {
-entry:
-  %arg_i1 = trunc i32 %arg to i1
-  %result_i8 = zext i1 %arg_i1 to i8
-  %result = zext i8 %result_i8 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testZextI8
-; match the trunc instruction
-; CHECK: and {{.*}},0x1
-; match the zext i1 instruction (NOTE: no mov need between i1 and i8).
-; CHECK-NOT: and {{.*}},0x1
-; ARM32-LABEL: testZextI8
-; ARM32: {{.*}}, #1
-; ARM32: uxtb
-; MIPS32-LABEL: testZextI8
-; MIPS32: 	andi	{{.*}},0x1
-; MIPS32: 	andi	{{.*}},0xff
-
-; Test zext to i16.
-define internal i32 @testZextI16(i32 %arg) {
-entry:
-  %arg_i1 = trunc i32 %arg to i1
-  %result_i16 = zext i1 %arg_i1 to i16
-  %result = zext i16 %result_i16 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testZextI16
-; match the trunc instruction
-; CHECK: and {{.*}},0x1
-; match the zext i1 instruction (note 32-bit reg is used because it's shorter).
-; CHECK: movzx [[REG:e.*]],{{[a-d]l|BYTE PTR}}
-; CHECK-NOT: and [[REG]],0x1
-
-; ARM32-LABEL: testZextI16
-; ARM32: and {{.*}}, #1
-; ARM32: uxth
-
-; MIPS32-LABEL: testZextI16
-; MIPS32: 	andi	{{.*}},0x1
-; MIPS32: 	andi	{{.*}},0xffff
-
-; Test zext to i32.
-define internal i32 @testZextI32(i32 %arg) {
-entry:
-  %arg_i1 = trunc i32 %arg to i1
-  %result_i32 = zext i1 %arg_i1 to i32
-  ret i32 %result_i32
-}
-; CHECK-LABEL: testZextI32
-; match the trunc instruction
-; CHECK: and {{.*}},0x1
-; match the zext i1 instruction
-; CHECK: movzx
-; CHECK-NOT: and {{.*}},0x1
-; ARM32-LABEL: testZextI32
-; ARM32: and {{.*}}, #1
-; MIPS32-LABEL: testZextI32
-; MIPS32: 	andi	{{.*}},0x1
-
-; Test zext to i64.
-define internal i64 @testZextI64(i32 %arg) {
-entry:
-  %arg_i1 = trunc i32 %arg to i1
-  %result_i64 = zext i1 %arg_i1 to i64
-  ret i64 %result_i64
-}
-; CHECK-LABEL: testZextI64
-; match the trunc instruction
-; CHECK: and {{.*}},0x1
-; match the zext i1 instruction
-; CHECK: movzx
-; CHECK: mov {{.*}},0x0
-; ARM32-LABEL: testZextI64
-; ARM32: and {{.*}}, #1
-; ARM32: mov {{.*}}, #0
-; MIPS32-LABEL: testZextI64
-; MIPS32: 	andi	{{.*}},0x1
-; MIPS32: 	li	{{.*}},0
-; MIPS32: 	move
-; MIPS32: 	move
-
-; Test sext to i8.
-define internal i32 @testSextI8(i32 %arg) {
-entry:
-  %arg_i1 = trunc i32 %arg to i1
-  %result_i8 = sext i1 %arg_i1 to i8
-  %result = sext i8 %result_i8 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testSextI8
-; match the trunc instruction
-; CHECK: and {{.*}},0x1
-; match the sext i1 instruction
-; CHECK: shl [[REG:.*]],0x7
-; CHECK-NEXT: sar [[REG]],0x7
-;
-; ARM32-LABEL: testSextI8
-; ARM32: mov {{.*}}, #0
-; ARM32: tst {{.*}}, #1
-; ARM32: mvn {{.*}}, #0
-; ARM32: movne
-; ARM32: sxtb
-;
-; MIPS32-LABEL: testSextI8
-; MIPS32: 	sll	{{.*}},0x1f
-; MIPS32: 	sra	{{.*}},0x1f
-; MIPS32: 	sll	{{.*}},0x18
-; MIPS32: 	sra	{{.*}},0x18
-
-; Test sext to i16.
-define internal i32 @testSextI16(i32 %arg) {
-entry:
-  %arg_i1 = trunc i32 %arg to i1
-  %result_i16 = sext i1 %arg_i1 to i16
-  %result = sext i16 %result_i16 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testSextI16
-; match the trunc instruction
-; CHECK: and {{.*}},0x1
-; match the sext i1 instruction
-; CHECK: movzx {{e*}}[[REG:.*]],{{[a-d]l|BYTE PTR}}
-; CHECK-NEXT: shl [[REG]],0xf
-; CHECK-NEXT: sar [[REG]],0xf
-
-; ARM32-LABEL: testSextI16
-; ARM32: mov {{.*}}, #0
-; ARM32: tst {{.*}}, #1
-; ARM32: mvn {{.*}}, #0
-; ARM32: movne
-; ARM32: sxth
-
-; MIPS32-LABEL: testSextI16
-; MIPS32: 	sll	{{.*}},0x1f
-; MIPS32: 	sra	{{.*}},0x1f
-; MIPS32: 	sll	{{.*}},0x10
-; MIPS32: 	sra	{{.*}},0x10
-
-; Test sext to i32.
-define internal i32 @testSextI32(i32 %arg) {
-entry:
-  %arg_i1 = trunc i32 %arg to i1
-  %result_i32 = sext i1 %arg_i1 to i32
-  ret i32 %result_i32
-}
-; CHECK-LABEL: testSextI32
-; match the trunc instruction
-; CHECK: and {{.*}},0x1
-; match the sext i1 instruction
-; CHECK: movzx [[REG:.*]],
-; CHECK-NEXT: shl [[REG]],0x1f
-; CHECK-NEXT: sar [[REG]],0x1f
-
-; ARM32-LABEL: testSextI32
-; ARM32: mov {{.*}}, #0
-; ARM32: tst {{.*}}, #1
-; ARM32: mvn {{.*}}, #0
-; ARM32: movne
-
-; MIPS32-LABEL: testSextI32
-; MIPS32: 	sll	{{.*}},0x1f
-; MIPS32: 	sra	{{.*}},0x1f
-
-; Test sext to i64.
-define internal i64 @testSextI64(i32 %arg) {
-entry:
-  %arg_i1 = trunc i32 %arg to i1
-  %result_i64 = sext i1 %arg_i1 to i64
-  ret i64 %result_i64
-}
-; CHECK-LABEL: testSextI64
-; match the trunc instruction
-; CHECK: and {{.*}},0x1
-; match the sext i1 instruction
-; CHECK: movzx [[REG:.*]],
-; CHECK-NEXT: shl [[REG]],0x1f
-; CHECK-NEXT: sar [[REG]],0x1f
-
-; ARM32-LABEL: testSextI64
-; ARM32: mov {{.*}}, #0
-; ARM32: tst {{.*}}, #1
-; ARM32: mvn {{.*}}, #0
-; ARM32: movne [[REG:r[0-9]+]]
-; ARM32: mov {{.*}}, [[REG]]
-
-; MIPS32-LABEL: testSextI64
-; MIPS32: 	sll	{{.*}},0x1f
-; MIPS32: 	sra	{{.*}},0x1f
-; MIPS32: 	move
-; MIPS32: 	move
-
-; Kind of like sext i1 to i32, but with an immediate source. On ARM,
-; sxtb cannot take an immediate operand, so make sure it's using a reg.
-; If we had optimized constants, this could just be mov dst, 0xffffffff
-; or mvn dst, #0.
-define internal i32 @testSextTrue() {
-  %result = sext i1 true to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testSextTrue
-; CHECK: movzx
-; CHECK-NEXT: shl
-; CHECK-NEXT: sar
-; ARM32-LABEL: testSextTrue
-; ARM32: mov {{.*}}, #0
-; ARM32: tst {{.*}}, #1
-; ARM32: mvn {{.*}}, #0
-; ARM32: movne
-; MIPS32-LABEL: testSextTrue
-; MIPS32: 	li	{{.*}},1
-; MIPS32: 	sll	{{.*}},0x1f
-; MIPS32: 	sra	{{.*}},0x1f
-
-define internal i32 @testZextTrue() {
-  %result = zext i1 true to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testZextTrue
-; CHECK: movzx
-; CHECK-NOT: and {{.*}},0x1
-; ARM32-LABEL: testZextTrue
-; ARM32: mov{{.*}}, #1
-; ARM32: and {{.*}}, #1
-; MIPS32-LABEL: testZextTrue
-; MIPS32: 	li	{{.*}},1
-; MIPS32: 	andi	{{.*}},0x1
-
-; Test fptosi float to i1.
-define internal i32 @testFptosiFloat(float %arg) {
-entry:
-  %arg_i1 = fptosi float %arg to i1
-  %result = sext i1 %arg_i1 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testFptosiFloat
-; CHECK: cvttss2si
-; CHECK: and {{.*}},0x1
-; CHECK: movzx [[REG:.*]],
-; CHECK-NEXT: shl [[REG]],0x1f
-; CHECK-NEXT: sar [[REG]],0x1f
-; MIPS32-LABEL: testFptosiFloat
-; MIPS32: 	trunc.w.s
-; MIPS32: 	mfc1
-; MIPS32: 	sll	{{.*}},0x1f
-; MIPS32: 	sra	{{.*}},0x1f
-
-; Test fptosi double to i1.
-define internal i32 @testFptosiDouble(double %arg) {
-entry:
-  %arg_i1 = fptosi double %arg to i1
-  %result = sext i1 %arg_i1 to i32
-  ret i32 %result
-}
-; CHECK-LABEL: testFptosiDouble
-; CHECK: cvttsd2si
-; CHECK: and {{.*}},0x1
-; CHECK: movzx [[REG:.*]],
-; CHECK-NEXT: shl [[REG]],0x1f
-; CHECK-NEXT: sar [[REG]],0x1f
-; MIPS32-LABEL: testFptosiDouble
-; MIPS32: 	trunc.w.d
-; MIPS32: 	mfc1
-; MIPS32: 	sll	{{.*}},0x1f
-; MIPS32: 	sra	{{.*}},0x1f
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/uncond_br.ll b/third_party/subzero/tests_lit/llvm2ice_tests/uncond_br.ll
deleted file mode 100644
index 4b1e091..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/uncond_br.ll
+++ /dev/null
@@ -1,26 +0,0 @@
-; TODO: Switch to --filetype=obj when possible.
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -O2 \
-; RUN:   -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-define internal void @uncond1(i32 %i) {
-  %1 = alloca i8, i32 4, align 4
-  %.bc = bitcast i8* %1 to i32*
-  store i32 %i, i32* %.bc, align 1
-  br label %target
-target:
-  %.bc1 = bitcast i8* %1 to i32*
-  %2 = load i32, i32* %.bc1, align 1
-  %3 = add i32 %2, 1
-  %.bc2 = bitcast i8* %1 to i32*
-  store i32 %3, i32* %.bc2, align 1
-  br label %target
-}
-
-; MIPS32-LABEL: uncond1
-; MIPS32: <.Luncond1$target>:
-; MIPS32: addiu {{.*}},1
-; MIPS32: b {{[0-9a-f]+}} <.Luncond1$target>
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/undef.ll b/third_party/subzero/tests_lit/llvm2ice_tests/undef.ll
deleted file mode 100644
index ba86d03..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/undef.ll
+++ /dev/null
@@ -1,311 +0,0 @@
-; This test checks that undef values are represented as zero.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:   | FileCheck %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \
-; RUN:   | FileCheck %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 -mattr=sse4.1 \
-; RUN:   | FileCheck %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 -mattr=sse4.1 \
-; RUN:   | FileCheck %s
-
-define internal i32 @undef_i32() {
-entry:
-  ret i32 undef
-; CHECK-LABEL: undef_i32
-; CHECK: mov eax,0x0
-}
-
-define internal i64 @undef_i64() {
-entry:
-  ret i64 undef
-; CHECK-LABEL: undef_i64
-; CHECK-DAG: mov eax,0x0
-; CHECK-DAG: mov edx,0x0
-; CHECK: ret
-}
-
-define internal i32 @trunc_undef_i64() {
-entry:
-  %ret = trunc i64 undef to i32
-  ret i32 %ret
-; CHECK-LABEL: trunc_undef_i64
-; CHECK: mov eax,0x0
-; CHECK: ret
-}
-
-define internal float @undef_float() {
-entry:
-  ret float undef
-; CHECK-LABEL: undef_float
-; CHECK: xorps [[REG:xmm.]],[[REG]]
-; CHECK: fld
-}
-
-define internal double @undef_double() {
-entry:
-  ret double undef
-; CHECK-LABEL: undef_double
-; CHECK: xorpd [[REG:xmm.]],[[REG]]
-; CHECK: fld
-}
-
-define internal <4 x i1> @undef_v4i1() {
-entry:
-  ret <4 x i1> undef
-; CHECK-LABEL: undef_v4i1
-; CHECK: pxor
-}
-
-define internal <8 x i1> @undef_v8i1() {
-entry:
-  ret <8 x i1> undef
-; CHECK-LABEL: undef_v8i1
-; CHECK: pxor
-}
-
-define internal <16 x i1> @undef_v16i1() {
-entry:
-  ret <16 x i1> undef
-; CHECK-LABEL: undef_v16i1
-; CHECK: pxor
-}
-
-define internal <16 x i8> @undef_v16i8() {
-entry:
-  ret <16 x i8> undef
-; CHECK-LABEL: undef_v16i8
-; CHECK: pxor
-}
-
-define internal <8 x i16> @undef_v8i16() {
-entry:
-  ret <8 x i16> undef
-; CHECK-LABEL: undef_v8i16
-; CHECK: pxor
-}
-
-define internal <4 x i32> @undef_v4i32() {
-entry:
-  ret <4 x i32> undef
-; CHECK-LABEL: undef_v4i32
-; CHECK: pxor
-}
-
-define internal <4 x float> @undef_v4f32() {
-entry:
-  ret <4 x float> undef
-; CHECK-LABEL: undef_v4f32
-; CHECK: pxor
-}
-
-define internal <4 x i32> @vector_arith(<4 x i32> %arg) {
-entry:
-  %val = add <4 x i32> undef, %arg
-  ret <4 x i32> %val
-; CHECK-LABEL: vector_arith
-; CHECK: pxor
-}
-
-define internal <4 x float> @vector_bitcast() {
-entry:
-  %val = bitcast <4 x i32> undef to <4 x float>
-  ret <4 x float> %val
-; CHECK-LABEL: vector_bitcast
-; CHECK: pxor
-}
-
-define internal <4 x i32> @vector_sext() {
-entry:
-  %val = sext <4 x i1> undef to <4 x i32>
-  ret <4 x i32> %val
-; CHECK-LABEL: vector_sext
-; CHECK: pxor
-}
-
-define internal <4 x i32> @vector_zext() {
-entry:
-  %val = zext <4 x i1> undef to <4 x i32>
-  ret <4 x i32> %val
-; CHECK-LABEL: vector_zext
-; CHECK: pxor
-}
-
-define internal <4 x i1> @vector_trunc() {
-entry:
-  %val = trunc <4 x i32> undef to <4 x i1>
-  ret <4 x i1> %val
-; CHECK-LABEL: vector_trunc
-; CHECK: pxor
-}
-
-define internal <4 x i1> @vector_icmp(<4 x i32> %arg) {
-entry:
-  %val = icmp eq <4 x i32> undef, %arg
-  ret <4 x i1> %val
-; CHECK-LABEL: vector_icmp
-; CHECK: pxor
-}
-
-define internal <4 x i1> @vector_fcmp(<4 x float> %arg) {
-entry:
-  %val = fcmp ueq <4 x float> undef, %arg
-  ret <4 x i1> %val
-; CHECK-LABEL: vector_fcmp
-; CHECK: pxor
-}
-
-define internal <4 x i32> @vector_fptosi() {
-entry:
-  %val = fptosi <4 x float> undef to <4 x i32>
-  ret <4 x i32> %val
-; CHECK-LABEL: vector_fptosi
-; CHECK: pxor
-}
-
-define internal <4 x i32> @vector_fptoui() {
-entry:
-  %val = fptoui <4 x float> undef to <4 x i32>
-  ret <4 x i32> %val
-; CHECK-LABEL: vector_fptoui
-; CHECK: pxor
-}
-
-define internal <4 x float> @vector_sitofp() {
-entry:
-  %val = sitofp <4 x i32> undef to <4 x float>
-  ret <4 x float> %val
-; CHECK-LABEL: vector_sitofp
-; CHECK: pxor
-}
-
-define internal <4 x float> @vector_uitofp() {
-entry:
-  %val = uitofp <4 x i32> undef to <4 x float>
-  ret <4 x float> %val
-; CHECK-LABEL: vector_uitofp
-; CHECK: pxor
-}
-
-define internal <4 x float> @vector_insertelement_arg1() {
-entry:
-  %val = insertelement <4 x float> undef, float 1.0, i32 0
-  ret <4 x float> %val
-; CHECK-LABEL: vector_insertelement_arg1
-; CHECK: pxor
-}
-
-define internal <4 x float> @vector_insertelement_arg2(<4 x float> %arg) {
-entry:
-  %val = insertelement <4 x float> %arg, float undef, i32 0
-  ret <4 x float> %val
-; CHECK-LABEL: vector_insertelement_arg2
-; CHECK: xorps [[REG:xmm.]],[[REG]]
-; CHECK: {{movss|insertps}} {{.*}},[[REG]]
-}
-
-define internal float @vector_extractelement_v4f32_index_0() {
-entry:
-  %val = extractelement <4 x float> undef, i32 0
-  ret float %val
-; CHECK-LABEL: vector_extractelement_v4f32_index_0
-; CHECK: pxor
-}
-
-define internal float @vector_extractelement_v4f32_index_1() {
-entry:
-  %val = extractelement <4 x float> undef, i32 1
-  ret float %val
-; CHECK-LABEL: vector_extractelement_v4f32_index_1
-; CHECK: pxor
-}
-
-define internal i32 @vector_extractelement_v16i1_index_7() {
-entry:
-  %val.trunc = extractelement <16 x i1> undef, i32 7
-  %val = sext i1 %val.trunc to i32
-  ret i32 %val
-; CHECK-LABEL: vector_extractelement_v16i1_index_7
-; CHECK: pxor
-}
-
-define internal <4 x i32> @vector_select_v4i32_cond(<4 x i32> %a,
-                                                    <4 x i32> %b) {
-entry:
-  %val = select <4 x i1> undef, <4 x i32> %a, <4 x i32> %b
-  ret <4 x i32> %val
-; CHECK-LABEL: vector_select_v4i32_cond
-; CHECK: pxor
-}
-
-define internal <4 x i32> @vector_select_v4i32_arg1(<4 x i1> %cond,
-                                                    <4 x i32> %b) {
-entry:
-  %val = select <4 x i1> %cond, <4 x i32> undef, <4 x i32> %b
-  ret <4 x i32> %val
-; CHECK-LABEL: vector_select_v4i32_arg1
-; CHECK: pxor
-}
-
-define internal <4 x i32> @vector_select_v4i32_arg2(<4 x i1> %cond,
-                                                    <4 x i32> %a) {
-entry:
-  %val = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> undef
-  ret <4 x i32> %val
-; CHECK-LABEL: vector_select_v4i32_arg2
-; CHECK: pxor
-}
-
-define internal <4 x i1> @vector_select_v4i1_cond(<4 x i1> %a,
-                                                  <4 x i1> %b) {
-entry:
-  %val = select <4 x i1> undef, <4 x i1> %a, <4 x i1> %b
-  ret <4 x i1> %val
-; CHECK-LABEL: vector_select_v4i1_cond
-; CHECK: pxor
-}
-
-define internal <4 x i1> @vector_select_v4i1_arg1(<4 x i1> %cond,
-                                                  <4 x i1> %b) {
-entry:
-  %val = select <4 x i1> %cond, <4 x i1> undef, <4 x i1> %b
-  ret <4 x i1> %val
-; CHECK-LABEL: vector_select_v4i1_arg1
-; CHECK: pxor
-}
-
-define internal <4 x i1> @vector_select_v4i1_arg2(<4 x i1> %cond,
-                                                  <4 x i1> %a) {
-entry:
-  %val = select <4 x i1> %cond, <4 x i1> %a, <4 x i1> undef
-  ret <4 x i1> %val
-; CHECK-LABEL: vector_select_v4i1_arg2
-; CHECK: pxor
-}
-
-define internal <4 x float> @vector_select_v4f32_cond(<4 x float> %a,
-                                                      <4 x float> %b) {
-entry:
-  %val = select <4 x i1> undef, <4 x float> %a, <4 x float> %b
-  ret <4 x float> %val
-; CHECK-LABEL: vector_select_v4f32_cond
-; CHECK: pxor
-}
-
-define internal <4 x float> @vector_select_v4f32_arg1(<4 x i1> %cond,
-                                                      <4 x float> %b) {
-entry:
-  %val = select <4 x i1> %cond, <4 x float> undef, <4 x float> %b
-  ret <4 x float> %val
-; CHECK-LABEL: vector_select_v4f32_arg1
-; CHECK: pxor
-}
-
-define internal <4 x float> @vector_select_v4f32_arg2(<4 x i1> %cond,
-                                                      <4 x float> %a) {
-entry:
-  %val = select <4 x i1> %cond, <4 x float> %a, <4 x float> undef
-  ret <4 x float> %val
-; CHECK-LABEL: vector_select_v4f32_arg2
-; CHECK: pxor
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/unknown-arm-reg.ll b/third_party/subzero/tests_lit/llvm2ice_tests/unknown-arm-reg.ll
deleted file mode 100644
index e25ea13..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/unknown-arm-reg.ll
+++ /dev/null
@@ -1,12 +0,0 @@
-; Show that we complain if an unknown register is specified on the command line.
-
-; Compile using standalone assembler.
-; RUN: %p2i --expect-fail --filetype=asm -i %s --target=arm32 --args -Om1 \
-; RUN:   -reg-use r2,xx9x,r5,yy28 -reg-exclude s1,sq5 2>&1 \
-; RUN:   | FileCheck %s
-
-define void @foo() {
-  ret void
-}
-
-; CHECK: LLVM ERROR: Unrecognized use/exclude registers: xx9x yy28 sq5
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/unreachable.ll b/third_party/subzero/tests_lit/llvm2ice_tests/unreachable.ll
deleted file mode 100644
index b80b249..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/unreachable.ll
+++ /dev/null
@@ -1,69 +0,0 @@
-; This tests the basic structure of the Unreachable instruction.
-
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -O2 \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
-; RUN:   --target x8632 -i %s --args -Om1 \
-; RUN:   | %if --need=target_X8632 --command FileCheck %s
-
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -O2 \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 %s
-; RUN: %if --need=target_ARM32 \
-; RUN:   --command %p2i --filetype=obj \
-; RUN:   --disassemble --target arm32 -i %s --args -Om1 \
-; RUN:   | %if --need=target_ARM32 \
-; RUN:   --command FileCheck --check-prefix ARM32 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -Om1 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble \
-; RUN:   --disassemble --target mips32 -i %s --args -O2 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32-O2 %s
-
-define internal i32 @divide(i32 %num, i32 %den) {
-entry:
-  %cmp = icmp ne i32 %den, 0
-  br i1 %cmp, label %return, label %abort
-
-abort:                                            ; preds = %entry
-  unreachable
-
-return:                                           ; preds = %entry
-  %div = sdiv i32 %num, %den
-  ret i32 %div
-}
-
-; CHECK-LABEL: divide
-; CHECK: cmp
-; CHECK: ud2
-; CHECK: cdq
-; CHECK: idiv
-; CHECK: ret
-
-; ARM32-LABEL: divide
-; ARM32: tst
-; ARM32: e7fedef0
-; ARM32: bl {{.*}} __divsi3
-; ARM32: bx lr
-
-; MIPS32-LABEL: divide
-; MIPS32: beqz
-; MIPS32: nop
-; MIPS32: teq zero,zero
-; MIPS32: div
-
-; MIPS32-O2-LABEL: divide
-; MIPS32-O2: bne
-; MIPS32-O2: nop
-; MIPS32-O2: teq zero,zero
-; MIPS32-O2: div
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/vector-align.ll b/third_party/subzero/tests_lit/llvm2ice_tests/vector-align.ll
deleted file mode 100644
index e578725..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/vector-align.ll
+++ /dev/null
@@ -1,133 +0,0 @@
-; This test checks that when SSE instructions access memory and require full
-; alignment, memory operands are limited to properly aligned stack operands.
-; This would only happen when we fuse a load instruction with another
-; instruction, which currently only happens with non-scalarized Arithmetic
-; instructions.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2  | FileCheck %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 | FileCheck %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target mips32\
-; RUN:   -i %s --args -O2 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-define internal <4 x i32> @test_add(i32 %addr_i, <4 x i32> %addend) {
-entry:
-  %addr = inttoptr i32 %addr_i to <4 x i32>*
-  %loaded = load <4 x i32>, <4 x i32>* %addr, align 4
-  %result = add <4 x i32> %addend, %loaded
-  ret <4 x i32> %result
-}
-; CHECK-LABEL: test_add
-; CHECK-NOT: paddd xmm{{.}},XMMWORD PTR [e{{ax|cx|dx|di|si|bx|bp}}
-; CHECK: paddd xmm{{.}},
-
-; MIPS32-LABEL: test_add
-; MIPS32: addu
-; MIPS32: addu
-; MIPS32: addu
-; MIPS32: addu
-
-define internal <4 x i32> @test_and(i32 %addr_i, <4 x i32> %addend) {
-entry:
-  %addr = inttoptr i32 %addr_i to <4 x i32>*
-  %loaded = load <4 x i32>, <4 x i32>* %addr, align 4
-  %result = and <4 x i32> %addend, %loaded
-  ret <4 x i32> %result
-}
-; CHECK-LABEL: test_and
-; CHECK-NOT: pand xmm{{.}},XMMWORD PTR [e{{ax|cx|dx|di|si|bx|bp}}
-; CHECK: pand xmm{{.}},
-
-; MIPS32-LABEL: test_and
-; MIPS32: and
-; MIPS32: and
-; MIPS32: and
-; MIPS32: and
-
-define internal <4 x i32> @test_or(i32 %addr_i, <4 x i32> %addend) {
-entry:
-  %addr = inttoptr i32 %addr_i to <4 x i32>*
-  %loaded = load <4 x i32>, <4 x i32>* %addr, align 4
-  %result = or <4 x i32> %addend, %loaded
-  ret <4 x i32> %result
-}
-; CHECK-LABEL: test_or
-; CHECK-NOT: por xmm{{.}},XMMWORD PTR [e{{ax|cx|dx|di|si|bx|bp}}
-; CHECK: por xmm{{.}},
-
-; MIPS32-LABEL: test_or
-; MIPS32: or
-; MIPS32: or
-; MIPS32: or
-; MIPS32: or
-
-define internal <4 x i32> @test_xor(i32 %addr_i, <4 x i32> %addend) {
-entry:
-  %addr = inttoptr i32 %addr_i to <4 x i32>*
-  %loaded = load <4 x i32>, <4 x i32>* %addr, align 4
-  %result = xor <4 x i32> %addend, %loaded
-  ret <4 x i32> %result
-}
-; CHECK-LABEL: test_xor
-; CHECK-NOT: pxor xmm{{.}},XMMWORD PTR [e{{ax|cx|dx|di|si|bx|bp}}
-; CHECK: pxor xmm{{.}},
-
-; MIPS32-LABEL: test_xor
-; MIPS32: xor
-; MIPS32: xor
-; MIPS32: xor
-; MIPS32: xor
-
-define internal <4 x i32> @test_sub(i32 %addr_i, <4 x i32> %addend) {
-entry:
-  %addr = inttoptr i32 %addr_i to <4 x i32>*
-  %loaded = load <4 x i32>, <4 x i32>* %addr, align 4
-  %result = sub <4 x i32> %addend, %loaded
-  ret <4 x i32> %result
-}
-; CHECK-LABEL: test_sub
-; CHECK-NOT: psubd xmm{{.}},XMMWORD PTR [e{{ax|cx|dx|di|si|bx|bp}}
-; CHECK: psubd xmm{{.}},
-
-; MIPS32-LABEL: test_sub
-; MIPS32: subu
-; MIPS32: subu
-; MIPS32: subu
-; MIPS32: subu
-
-define internal <4 x float> @test_fadd(i32 %addr_i, <4 x float> %addend) {
-entry:
-  %addr = inttoptr i32 %addr_i to <4 x float>*
-  %loaded = load <4 x float>, <4 x float>* %addr, align 4
-  %result = fadd <4 x float> %addend, %loaded
-  ret <4 x float> %result
-}
-; CHECK-LABEL: test_fadd
-; CHECK-NOT: addps xmm{{.}},XMMWORD PTR [e{{ax|cx|dx|di|si|bx|bp}}
-; CHECK: addps xmm{{.}},
-
-; MIPS32-LABEL: test_fadd
-; MIPS32: add.s
-; MIPS32: add.s
-; MIPS32: add.s
-; MIPS32: add.s
-
-define internal <4 x float> @test_fsub(i32 %addr_i, <4 x float> %addend) {
-entry:
-  %addr = inttoptr i32 %addr_i to <4 x float>*
-  %loaded = load <4 x float>, <4 x float>* %addr, align 4
-  %result = fsub <4 x float> %addend, %loaded
-  ret <4 x float> %result
-}
-; CHECK-LABEL: test_fsub
-; CHECK-NOT: subps xmm{{.}},XMMWORD PTR [e{{ax|cx|dx|di|si|bx|bp}}
-; CHECK: subps xmm{{.}},
-
-; MIPS32-LABEL: test_fsub
-; MIPS32: sub.s
-; MIPS32: sub.s
-; MIPS32: sub.s
-; MIPS32: sub.s
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/vector-arg.ll b/third_party/subzero/tests_lit/llvm2ice_tests/vector-arg.ll
deleted file mode 100644
index df97e65..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/vector-arg.ll
+++ /dev/null
@@ -1,581 +0,0 @@
-; This file checks that Subzero generates code in accordance with the
-; calling convention for vectors.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:   -allow-externally-defined-symbols | FileCheck %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \
-; RUN:   -allow-externally-defined-symbols | FileCheck --check-prefix=OPTM1 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:   mips32 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-; The first five functions test that vectors are moved from their
-; correct argument location to xmm0.
-
-define internal <4 x float> @test_returning_arg0(
-    <4 x float> %arg0, <4 x float> %arg1, <4 x float> %arg2, <4 x float> %arg3,
-    <4 x float> %arg4, <4 x float> %arg5) {
-entry:
-  ret <4 x float> %arg0
-; CHECK-LABEL: test_returning_arg0
-; CHECK-NOT: mov
-; CHECK: ret
-
-; OPTM1-LABEL: test_returning_arg0
-; OPTM1: movups XMMWORD PTR [[LOC:.*]],xmm0
-; OPTM1: movups xmm0,XMMWORD PTR [[LOC]]
-; OPTM1: ret
-; MIPS32-LABEL: test_returning_arg0
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v1,{{.*}}(sp)
-; MIPS32: 	move	a1,a0
-; MIPS32: 	sw	a2,0(a1)
-; MIPS32: 	sw	a3,4(a1)
-; MIPS32: 	sw	v0,8(a1)
-; MIPS32: 	sw	v1,12(a1)
-; MIPS32: 	move	v0,a0
-}
-
-define internal <4 x float> @test_returning_arg1(
-    <4 x float> %arg0, <4 x float> %arg1, <4 x float> %arg2, <4 x float> %arg3,
-    <4 x float> %arg4, <4 x float> %arg5) {
-entry:
-  ret <4 x float> %arg1
-; CHECK-LABEL: test_returning_arg1
-; CHECK: movups xmm0,xmm1
-; CHECK: ret
-
-; OPTM1-LABEL: test_returning_arg1
-; OPTM1: movups XMMWORD PTR [[LOC:.*]],xmm1
-; OPTM1: movups xmm0,XMMWORD PTR [[LOC]]
-; OPTM1: ret
-; MIPS32-LABEL: test_returning_arg1
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v1,{{.*}}(sp)
-; MIPS32: 	lw	a1,{{.*}}(sp)
-; MIPS32: 	lw	a2,{{.*}}(sp)
-; MIPS32: 	move	a3,a0
-; MIPS32: 	sw	v0,0(a3)
-; MIPS32: 	sw	v1,4(a3)
-; MIPS32: 	sw	a1,8(a3)
-; MIPS32: 	sw	a2,12(a3)
-; MIPS32: 	move	v0,a0
-}
-
-define internal <4 x float> @test_returning_arg2(
-    <4 x float> %arg0, <4 x float> %arg1, <4 x float> %arg2, <4 x float> %arg3,
-    <4 x float> %arg4, <4 x float> %arg5) {
-entry:
-  ret <4 x float> %arg2
-; CHECK-LABEL: test_returning_arg2
-; CHECK: movups xmm0,xmm2
-; CHECK: ret
-
-; OPTM1-LABEL: test_returning_arg2
-; OPTM1: movups XMMWORD PTR [[LOC:.*]],xmm2
-; OPTM1: movups xmm0,XMMWORD PTR [[LOC]]
-; OPTM1: ret
-; MIPS32-LABEL: test_returning_arg2
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v1,{{.*}}(sp)
-; MIPS32: 	lw	a1,{{.*}}(sp)
-; MIPS32: 	lw	a2,{{.*}}(sp)
-; MIPS32: 	move	a3,a0
-; MIPS32: 	sw	v0,0(a3)
-; MIPS32: 	sw	v1,4(a3)
-; MIPS32: 	sw	a1,8(a3)
-; MIPS32: 	sw	a2,12(a3)
-; MIPS32: 	move	v0,a0
-}
-
-define internal <4 x float> @test_returning_arg3(
-    <4 x float> %arg0, <4 x float> %arg1, <4 x float> %arg2, <4 x float> %arg3,
-    <4 x float> %arg4, <4 x float> %arg5) {
-entry:
-  ret <4 x float> %arg3
-; CHECK-LABEL: test_returning_arg3
-; CHECK: movups xmm0,xmm3
-; CHECK: ret
-
-; OPTM1-LABEL: test_returning_arg3
-; OPTM1: movups XMMWORD PTR [[LOC:.*]],xmm3
-; OPTM1: movups xmm0,XMMWORD PTR [[LOC]]
-; OPTM1: ret
-; MIPS32-LABEL: test_returning_arg3
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v1,{{.*}}(sp)
-; MIPS32: 	lw	a1,{{.*}}(sp)
-; MIPS32: 	lw	a2,{{.*}}(sp)
-; MIPS32: 	move	a3,a0
-; MIPS32: 	sw	v0,0(a3)
-; MIPS32: 	sw	v1,4(a3)
-; MIPS32: 	sw	a1,8(a3)
-; MIPS32: 	sw	a2,12(a3)
-; MIPS32: 	move	v0,a0
-}
-
-define internal <4 x float> @test_returning_arg4(
-    <4 x float> %arg0, <4 x float> %arg1, <4 x float> %arg2, <4 x float> %arg3,
-    <4 x float> %arg4, <4 x float> %arg5) {
-entry:
-  ret <4 x float> %arg4
-; CHECK-LABEL: test_returning_arg4
-; CHECK: movups xmm0,XMMWORD PTR [esp+0x4]
-; CHECK: ret
-
-; OPTM1-LABEL: test_returning_arg4
-; OPTM1: movups xmm0,XMMWORD PTR {{.*}}
-; OPTM1: ret
-; MIPS32-LABEL: test_returning_arg4
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v1,{{.*}}(sp)
-; MIPS32: 	lw	a1,{{.*}}(sp)
-; MIPS32: 	lw	a2,{{.*}}(sp)
-; MIPS32: 	move	a3,a0
-; MIPS32: 	sw	v0,0(a3)
-; MIPS32: 	sw	v1,4(a3)
-; MIPS32: 	sw	a1,8(a3)
-; MIPS32: 	sw	a2,12(a3)
-; MIPS32: 	move	v0,a0
-}
-
-; The next five functions check that xmm arguments are handled
-; correctly when interspersed with stack arguments in the argument
-; list.
-
-define internal <4 x float> @test_returning_interspersed_arg0(
-    i32 %i32arg0, double %doublearg0, <4 x float> %arg0, <4 x float> %arg1,
-    i32 %i32arg1, <4 x float> %arg2, double %doublearg1, <4 x float> %arg3,
-    i32 %i32arg2, double %doublearg2, float %floatarg0, <4 x float> %arg4,
-     <4 x float> %arg5, float %floatarg1) {
-entry:
-  ret <4 x float> %arg0
-; CHECK-LABEL: test_returning_interspersed_arg0
-; CHECK-NOT: mov
-; CHECK: ret
-
-; OPTM1-LABEL: test_returning_interspersed_arg0
-; OPTM1: movups XMMWORD PTR [[LOC:.*]],xmm0
-; OPTM1: movups xmm0,XMMWORD PTR [[LOC]]
-; OPTM1: ret
-; MIPS32-LABEL: test_returning_interspersed_arg0
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v1,{{.*}}(sp)
-; MIPS32: 	lw	a1,{{.*}}(sp)
-; MIPS32: 	lw	a2,{{.*}}(sp)
-; MIPS32: 	move	a3,a0
-; MIPS32: 	sw	v0,0(a3)
-; MIPS32: 	sw	v1,4(a3)
-; MIPS32: 	sw	a1,8(a3)
-; MIPS32: 	sw	a2,12(a3)
-; MIPS32: 	move	v0,a0
-}
-
-define internal <4 x float> @test_returning_interspersed_arg1(
-    i32 %i32arg0, double %doublearg0, <4 x float> %arg0, <4 x float> %arg1,
-    i32 %i32arg1, <4 x float> %arg2, double %doublearg1, <4 x float> %arg3,
-    i32 %i32arg2, double %doublearg2, float %floatarg0, <4 x float> %arg4,
-    <4 x float> %arg5, float %floatarg1) {
-entry:
-  ret <4 x float> %arg1
-; CHECK-LABEL: test_returning_interspersed_arg1
-; CHECK: movups xmm0,xmm1
-; CHECK: ret
-
-; OPTM1-LABEL: test_returning_interspersed_arg1
-; OPTM1: movups XMMWORD PTR [[LOC:.*]],xmm1
-; OPTM1: movups xmm0,XMMWORD PTR [[LOC]]
-; OPTM1: ret
-; MIPS32-LABEL: test_returning_interspersed_arg1
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v1,{{.*}}(sp)
-; MIPS32: 	lw	a1,{{.*}}(sp)
-; MIPS32: 	lw	a2,{{.*}}(sp)
-; MIPS32: 	move	a3,a0
-; MIPS32: 	sw	v0,0(a3)
-; MIPS32: 	sw	v1,4(a3)
-; MIPS32: 	sw	a1,8(a3)
-; MIPS32: 	sw	a2,12(a3)
-; MIPS32: 	move	v0,a0
-}
-
-define internal <4 x float> @test_returning_interspersed_arg2(
-    i32 %i32arg0, double %doublearg0, <4 x float> %arg0, <4 x float> %arg1,
-    i32 %i32arg1, <4 x float> %arg2, double %doublearg1, <4 x float> %arg3,
-    i32 %i32arg2, double %doublearg2, float %floatarg0, <4 x float> %arg4,
-    <4 x float> %arg5, float %floatarg1) {
-entry:
-  ret <4 x float> %arg2
-; CHECK-LABEL: test_returning_interspersed_arg2
-; CHECK: movups xmm0,xmm2
-; CHECK: ret
-
-; OPTM1-LABEL: test_returning_interspersed_arg2
-; OPTM1: movups XMMWORD PTR [[LOC:.*]],xmm2
-; OPTM1: movups xmm0,XMMWORD PTR [[LOC]]
-; OPTM1: ret
-; MIPS32-LABEL: test_returning_interspersed_arg2
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v1,{{.*}}(sp)
-; MIPS32: 	lw	a1,{{.*}}(sp)
-; MIPS32: 	lw	a2,{{.*}}(sp)
-; MIPS32: 	move	a3,a0
-; MIPS32: 	sw	v0,0(a3)
-; MIPS32: 	sw	v1,4(a3)
-; MIPS32: 	sw	a1,8(a3)
-; MIPS32: 	sw	a2,12(a3)
-; MIPS32: 	move	v0,a0
-}
-
-define internal <4 x float> @test_returning_interspersed_arg3(
-    i32 %i32arg0, double %doublearg0, <4 x float> %arg0, <4 x float> %arg1,
-    i32 %i32arg1, <4 x float> %arg2, double %doublearg1, <4 x float> %arg3,
-    i32 %i32arg2, double %doublearg2, float %floatarg0, <4 x float> %arg4,
-    <4 x float> %arg5, float %floatarg1) {
-entry:
-  ret <4 x float> %arg3
-; CHECK-LABEL: test_returning_interspersed_arg3
-; CHECK: movups xmm0,xmm3
-; CHECK: ret
-
-; OPTM1-LABEL: test_returning_interspersed_arg3
-; OPTM1: movups XMMWORD PTR [[LOC:.*]],xmm3
-; OPTM1: movups xmm0,XMMWORD PTR [[LOC]]
-; OPTM1: ret
-; MIPS32-LABEL: test_returning_interspersed_arg3
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v1,{{.*}}(sp)
-; MIPS32: 	lw	a1,{{.*}}(sp)
-; MIPS32: 	lw	a2,{{.*}}(sp)
-; MIPS32: 	move	a3,a0
-; MIPS32: 	sw	v0,0(a3)
-; MIPS32: 	sw	v1,4(a3)
-; MIPS32: 	sw	a1,8(a3)
-; MIPS32: 	sw	a2,12(a3)
-; MIPS32: 	move	v0,a0
-
-}
-
-define internal <4 x float> @test_returning_interspersed_arg4(
-    i32 %i32arg0, double %doublearg0, <4 x float> %arg0, <4 x float> %arg1,
-    i32 %i32arg1, <4 x float> %arg2, double %doublearg1, <4 x float> %arg3,
-    i32 %i32arg2, double %doublearg2, float %floatarg0, <4 x float> %arg4,
-    <4 x float> %arg5, float %floatarg1) {
-entry:
-  ret <4 x float> %arg4
-; CHECK-LABEL: test_returning_interspersed_arg4
-; CHECK: movups xmm0,XMMWORD PTR [esp+0x34]
-; CHECK: ret
-
-; OPTM1-LABEL: test_returning_interspersed_arg4
-; OPTM1: movups xmm0,XMMWORD PTR {{.*}}
-; OPTM1: ret
-; MIPS32-LABEL: test_returning_interspersed_arg4
-; MIPS32: 	lw	v0,1{{.*}}(sp)
-; MIPS32: 	lw	v1,1{{.*}}(sp)
-; MIPS32: 	lw	a1,1{{.*}}(sp)
-; MIPS32: 	lw	a2,1{{.*}}(sp)
-; MIPS32: 	move	a3,a0
-; MIPS32: 	sw	v0,0(a3)
-; MIPS32: 	sw	v1,4(a3)
-; MIPS32: 	sw	a1,8(a3)
-; MIPS32: 	sw	a2,12(a3)
-; MIPS32: 	move	v0,a0
-}
-
-; Test that vectors are passed correctly as arguments to a function.
-
-declare void @VectorArgs(<4 x float>, <4 x float>, <4 x float>, <4 x float>,
-                         <4 x float>, <4 x float>)
-
-declare void @killXmmRegisters()
-
-define internal void @test_passing_vectors(
-    <4 x float> %arg0, <4 x float> %arg1, <4 x float> %arg2, <4 x float> %arg3,
-    <4 x float> %arg4, <4 x float> %arg5, <4 x float> %arg6, <4 x float> %arg7,
-    <4 x float> %arg8, <4 x float> %arg9) {
-entry:
-  ; Kills XMM registers so that no in-arg lowering code interferes
-  ; with the test.
-  call void @killXmmRegisters()
-  call void @VectorArgs(<4 x float> %arg9, <4 x float> %arg8, <4 x float> %arg7,
-                        <4 x float> %arg6, <4 x float> %arg5, <4 x float> %arg4)
-  ret void
-; CHECK-LABEL: test_passing_vectors
-; CHECK-NEXT: sub esp,0x2c
-; CHECK: movups  [[ARG5:.*]],XMMWORD PTR [esp+0x40]
-; CHECK: movups  XMMWORD PTR [esp],[[ARG5]]
-; CHECK: movups  [[ARG6:.*]],XMMWORD PTR [esp+0x30]
-; CHECK: movups  XMMWORD PTR [esp+0x10],[[ARG6]]
-; CHECK: movups  xmm0,XMMWORD PTR [esp+0x80]
-; CHECK: movups  xmm1,XMMWORD PTR [esp+0x70]
-; CHECK: movups  xmm2,XMMWORD PTR [esp+0x60]
-; CHECK: movups  xmm3,XMMWORD PTR [esp+0x50]
-; CHECK: call {{.*}} R_{{.*}} VectorArgs
-; CHECK-NEXT: add esp,0x2c
-
-; OPTM1-LABEL: test_passing_vectors
-; OPTM1: sub esp,0x6c
-; OPTM1: movups  [[ARG5:.*]],XMMWORD PTR {{.*}}
-; OPTM1: movups  XMMWORD PTR [esp],[[ARG5]]
-; OPTM1: movups  [[ARG6:.*]],XMMWORD PTR {{.*}}
-; OPTM1: movups  XMMWORD PTR [esp+0x10],[[ARG6]]
-; OPTM1: movups  xmm0,XMMWORD PTR {{.*}}
-; OPTM1: movups  xmm1,XMMWORD PTR {{.*}}
-; OPTM1: movups  xmm2,XMMWORD PTR {{.*}}
-; OPTM1: movups  xmm3,XMMWORD PTR {{.*}}
-; OPTM1: call {{.*}} R_{{.*}} VectorArgs
-; OPTM1-NEXT: add esp,0x6c
-; MIPS32-LABEL: test_passing_vectors
-; MIPS32: 	sw	s7,{{.*}}(sp)
-; MIPS32: 	sw	s6,{{.*}}(sp)
-; MIPS32: 	sw	s5,{{.*}}(sp)
-; MIPS32: 	sw	s4,{{.*}}(sp)
-; MIPS32: 	sw	s3,{{.*}}(sp)
-; MIPS32: 	sw	s2,{{.*}}(sp)
-; MIPS32: 	sw	s1,{{.*}}(sp)
-; MIPS32: 	sw	s0,{{.*}}(sp)
-; MIPS32: 	lw	s0,{{.*}}(sp)
-; MIPS32: 	lw	s1,{{.*}}(sp)
-; MIPS32: 	lw	s2,{{.*}}(sp)
-; MIPS32: 	lw	s3,{{.*}}(sp)
-; MIPS32: 	lw	s4,{{.*}}(sp)
-; MIPS32: 	lw	s5,{{.*}}(sp)
-; MIPS32: 	lw	s6,{{.*}}(sp)
-; MIPS32: 	lw	s7,{{.*}}(sp)
-; MIPS32: 	jal	0 <test_returning_arg0>	228: R_MIPS_26	killXmmRegisters
-; MIPS32: 	nop
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	sw	s4,{{.*}}(sp)
-; MIPS32: 	sw	s5,{{.*}}(sp)
-; MIPS32: 	sw	s6,{{.*}}(sp)
-; MIPS32: 	sw	s7,{{.*}}(sp)
-; MIPS32: 	sw	s0,{{.*}}(sp)
-; MIPS32: 	sw	s1,{{.*}}(sp)
-; MIPS32: 	sw	s2,{{.*}}(sp)
-; MIPS32: 	sw	s3,{{.*}}(sp)
-; MIPS32: 	lw	a0,{{.*}}(sp)
-; MIPS32: 	lw	a1,{{.*}}(sp)
-; MIPS32: 	lw	a2,{{.*}}(sp)
-; MIPS32: 	lw	a3,{{.*}}(sp)
-; MIPS32: 	jal	0 <test_returning_arg0>	2c0: R_MIPS_26	VectorArgs
-; MIPS32: 	nop
-; MIPS32: 	lw	s0,{{.*}}(sp)
-; MIPS32: 	lw	s1,{{.*}}(sp)
-; MIPS32: 	lw	s2,{{.*}}(sp)
-; MIPS32: 	lw	s3,{{.*}}(sp)
-; MIPS32: 	lw	s4,{{.*}}(sp)
-; MIPS32: 	lw	s5,{{.*}}(sp)
-; MIPS32: 	lw	s6,{{.*}}(sp)
-; MIPS32: 	lw	s7,{{.*}}(sp)
-; MIPS32: 	lw	ra,{{.*}}(sp)
-
-}
-
-declare void @InterspersedVectorArgs(
-    <4 x float>, i64, <4 x float>, i64, <4 x float>, float, <4 x float>,
-    double, <4 x float>, i32, <4 x float>)
-
-define internal void @test_passing_vectors_interspersed(
-    <4 x float> %arg0, <4 x float> %arg1, <4 x float> %arg2, <4 x float> %arg3,
-    <4 x float> %arg4, <4 x float> %arg5, <4 x float> %arg6, <4 x float> %arg7,
-    <4 x float> %arg8, <4 x float> %arg9) {
-entry:
-  ; Kills XMM registers so that no in-arg lowering code interferes
-  ; with the test.
-  call void @killXmmRegisters()
-  call void @InterspersedVectorArgs(<4 x float> %arg9, i64 0, <4 x float> %arg8,
-                                    i64 1, <4 x float> %arg7, float 2.000000e+00,
-                                    <4 x float> %arg6, double 3.000000e+00,
-                                    <4 x float> %arg5, i32 4, <4 x float> %arg4)
-  ret void
-; CHECK-LABEL: test_passing_vectors_interspersed
-; CHECK: sub esp,0x5c
-; CHECK: movups  [[ARG9:.*]],XMMWORD PTR [esp+0x70]
-; CHECK: movups  XMMWORD PTR [esp+0x20],[[ARG9]]
-; CHECK: movups  [[ARG11:.*]],XMMWORD PTR [esp+0x60]
-; CHECK: movups  XMMWORD PTR [esp+0x40],[[ARG11]]
-; CHECK: movups  xmm0,XMMWORD PTR [esp+0xb0]
-; CHECK: movups  xmm1,XMMWORD PTR [esp+0xa0]
-; CHECK: movups  xmm2,XMMWORD PTR [esp+0x90]
-; CHECK: movups  xmm3,XMMWORD PTR [esp+0x80]
-; CHECK: call {{.*}} R_{{.*}} InterspersedVectorArgs
-; CHECK-NEXT: add esp,0x5c
-; CHECK: ret
-
-; OPTM1-LABEL: test_passing_vectors_interspersed
-; OPTM1: sub esp,0x9c
-; OPTM1: movups  [[ARG9:.*]],XMMWORD PTR {{.*}}
-; OPTM1: movups  XMMWORD PTR [esp+0x20],[[ARG9]]
-; OPTM1: movups  [[ARG11:.*]],XMMWORD PTR {{.*}}
-; OPTM1: movups  XMMWORD PTR [esp+0x40],[[ARG11]]
-; OPTM1: movups  xmm0,XMMWORD PTR {{.*}}
-; OPTM1: movups  xmm1,XMMWORD PTR {{.*}}
-; OPTM1: movups  xmm2,XMMWORD PTR {{.*}}
-; OPTM1: movups  xmm3,XMMWORD PTR {{.*}}
-; OPTM1: call {{.*}} R_{{.*}} InterspersedVectorArgs
-; OPTM1-NEXT: add esp,0x9c
-; OPTM1: ret
-; MIPS32-LABEL: test_passing_vectors_interspersed
-; MIPS32: 	sw	s7,{{.*}}(sp)
-; MIPS32: 	sw	s6,{{.*}}(sp)
-; MIPS32: 	sw	s5,{{.*}}(sp)
-; MIPS32: 	sw	s4,{{.*}}(sp)
-; MIPS32: 	sw	s3,{{.*}}(sp)
-; MIPS32: 	sw	s2,{{.*}}(sp)
-; MIPS32: 	sw	s1,{{.*}}(sp)
-; MIPS32: 	sw	s0,{{.*}}(sp)
-; MIPS32: 	lw	s0,{{.*}}(sp)
-; MIPS32: 	lw	s1,{{.*}}(sp)
-; MIPS32: 	lw	s2,{{.*}}(sp)
-; MIPS32: 	lw	s3,{{.*}}(sp)
-; MIPS32: 	lw	s4,{{.*}}(sp)
-; MIPS32: 	lw	s5,{{.*}}(sp)
-; MIPS32: 	lw	s6,{{.*}}(sp)
-; MIPS32: 	lw	s7,{{.*}}(sp)
-; MIPS32: 	jal	0 <test_returning_arg0>	348: R_MIPS_26	killXmmRegisters
-; MIPS32: 	nop
-; MIPS32: 	li	v0,0
-; MIPS32: 	li	v1,0
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v1,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	li	v0,0
-; MIPS32: 	li	v1,1
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v1,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lui	v0,0x0	    3b0: R_MIPS_HI16	.L$float$40000000
-; MIPS32: 	lwc1	$f0,0(v0)   3b4: R_MIPS_LO16	.L$float$40000000
-; MIPS32: 	swc1	$f0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lw	v0,{{.*}}(sp)
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	lui	v0,0x0	    3dc: R_MIPS_HI16  .L$double$4008000000000000
-; MIPS32: 	ldc1	$f0,0(v0)   3e0: R_MIPS_LO16  .L$double$4008000000000000
-; MIPS32: 	sdc1	$f0,{{.*}}(sp)
-; MIPS32: 	sw	s4,{{.*}}(sp)
-; MIPS32: 	sw	s5,{{.*}}(sp)
-; MIPS32: 	sw	s6,{{.*}}(sp)
-; MIPS32: 	sw	s7,{{.*}}(sp)
-; MIPS32: 	li	v0,4
-; MIPS32: 	sw	v0,{{.*}}(sp)
-; MIPS32: 	sw	s0,{{.*}}(sp)
-; MIPS32: 	sw	s1,{{.*}}(sp)
-; MIPS32: 	sw	s2,{{.*}}(sp)
-; MIPS32: 	sw	s3,{{.*}}(sp)
-; MIPS32: 	lw	a0,{{.*}}(sp)
-; MIPS32: 	lw	a1,{{.*}}(sp)
-; MIPS32: 	lw	a2,{{.*}}(sp)
-; MIPS32: 	lw	a3,{{.*}}(sp)
-; MIPS32: 	jal	0 <test_returning_arg0>	420: R_MIPS_26	InterspersedVectorArgs
-; MIPS32: 	nop
-; MIPS32: 	lw	s0,{{.*}}(sp)
-; MIPS32: 	lw	s1,{{.*}}(sp)
-; MIPS32: 	lw	s2,{{.*}}(sp)
-; MIPS32: 	lw	s3,{{.*}}(sp)
-; MIPS32: 	lw	s4,{{.*}}(sp)
-; MIPS32: 	lw	s5,{{.*}}(sp)
-; MIPS32: 	lw	s6,{{.*}}(sp)
-; MIPS32: 	lw	s7,{{.*}}(sp)
-; MIPS32: 	lw	ra,{{.*}}(sp)
-}
-
-; Test that a vector returned from a function is recognized to be in
-; xmm0.
-
-declare <4 x float> @VectorReturn(<4 x float> %arg0)
-
-define internal void @test_receiving_vectors(<4 x float> %arg0) {
-entry:
-  %result = call <4 x float> @VectorReturn(<4 x float> %arg0)
-  %result2 = call <4 x float> @VectorReturn(<4 x float> %result)
-  ret void
-; CHECK-LABEL: test_receiving_vectors
-; CHECK: call {{.*}} R_{{.*}} VectorReturn
-; CHECK-NOT: movups xmm0
-; CHECK: call {{.*}} R_{{.*}} VectorReturn
-; CHECK: ret
-
-; OPTM1-LABEL: test_receiving_vectors
-; OPTM1: call {{.*}} R_{{.*}} VectorReturn
-; OPTM1: movups {{.*}},xmm0
-; OPTM1: movups xmm0,{{.*}}
-; OPTM1: call {{.*}} R_{{.*}} VectorReturn
-; OPTM1: ret
-; MIPS32-LABEL: test_receiving_vectors
-; MIPS32: 	sw	s8,{{.*}}(sp)
-; MIPS32: 	sw	s0,{{.*}}(sp)
-; MIPS32: 	move	s8,sp
-; MIPS32: 	move	v0,a0
-; MIPS32: 	addiu	v1,sp,32
-; MIPS32: 	move	s0,v1
-; MIPS32: 	move	a0,s0
-; MIPS32: 	sw	a2,{{.*}}(sp)
-; MIPS32: 	sw	a3,{{.*}}(sp)
-; MIPS32: 	move	a2,v0
-; MIPS32: 	move	a3,a1
-; MIPS32: 	jal	0 <test_returning_arg0>	{{.*}} R_MIPS_26	VectorReturn
-; MIPS32: 	nop
-; MIPS32: 	lw	v0,0(s0)
-; MIPS32: 	lw	v1,4(s0)
-; MIPS32: 	lw	a0,8(s0)
-; MIPS32: 	move	a1,a0
-; MIPS32: 	lw	s0,12(s0)
-; MIPS32: 	addiu	a0,sp,48
-; MIPS32: 	sw	a1,{{.*}}(sp)
-; MIPS32: 	sw	s0,{{.*}}(sp)
-; MIPS32: 	move	a2,v0
-; MIPS32: 	move	a3,v1
-; MIPS32: 	jal	0 <test_returning_arg0>	{{.*}} R_MIPS_26	VectorReturn
-; MIPS32: 	nop
-; MIPS32: 	move	sp,s8
-; MIPS32: 	lw	s0,{{.*}}(sp)
-; MIPS32: 	lw	s8,{{.*}}(sp)
-; MIPS32: 	lw	ra,{{.*}}(sp)
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/vector-arith.ll b/third_party/subzero/tests_lit/llvm2ice_tests/vector-arith.ll
deleted file mode 100644
index a1b3126..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/vector-arith.ll
+++ /dev/null
@@ -1,991 +0,0 @@
-; This test checks support for vector arithmetic.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble -a -O2 \
-; RUN:   | FileCheck %s
-; RUN: %p2i -i %s --filetype=obj --disassemble -a -Om1 \
-; RUN:   | FileCheck %s
-; RUN: %p2i -i %s --filetype=obj --disassemble -a -O2 -mattr=sse4.1 \
-; RUN:   | FileCheck --check-prefix=SSE41 %s
-; RUN: %p2i -i %s --filetype=obj --disassemble -a -Om1 -mattr=sse4.1 \
-; RUN:   | FileCheck --check-prefix=SSE41 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:   mips32 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-define internal <4 x float> @test_fadd(<4 x float> %arg0, <4 x float> %arg1) {
-entry:
-  %res = fadd <4 x float> %arg0, %arg1
-  ret <4 x float> %res
-; CHECK-LABEL: test_fadd
-; CHECK: addps
-; MIPS32-LABEL: test_fadd
-; MIPS32: 	add.s
-; MIPS32: 	add.s
-; MIPS32: 	add.s
-; MIPS32: 	add.s
-}
-
-define internal <4 x float> @test_fsub(<4 x float> %arg0, <4 x float> %arg1) {
-entry:
-  %res = fsub <4 x float> %arg0, %arg1
-  ret <4 x float> %res
-; CHECK-LABEL: test_fsub
-; CHECK: subps
-; MIPS32-LABEL: test_fsub
-; MIPS32: 	sub.s
-; MIPS32: 	sub.s
-; MIPS32: 	sub.s
-; MIPS32: 	sub.s
-}
-
-define internal <4 x float> @test_fmul(<4 x float> %arg0, <4 x float> %arg1) {
-entry:
-  %res = fmul <4 x float> %arg0, %arg1
-  ret <4 x float> %res
-; CHECK-LABEL: test_fmul
-; CHECK: mulps
-; MIPS32-LABEL: test_fmul
-; MIPS32: 	mul.s
-; MIPS32: 	mul.s
-; MIPS32: 	mul.s
-; MIPS32: 	mul.s
-}
-
-define internal <4 x float> @test_fdiv(<4 x float> %arg0, <4 x float> %arg1) {
-entry:
-  %res = fdiv <4 x float> %arg0, %arg1
-  ret <4 x float> %res
-; CHECK-LABEL: test_fdiv
-; CHECK: divps
-; MIPS32-LABEL: test_fdiv
-; MIPS32: 	div.s
-; MIPS32: 	div.s
-; MIPS32: 	div.s
-; MIPS32: 	div.s
-}
-
-define internal <4 x float> @test_frem(<4 x float> %arg0, <4 x float> %arg1) {
-entry:
-  %res = frem <4 x float> %arg0, %arg1
-  ret <4 x float> %res
-; CHECK-LABEL: test_frem
-; CHECK: fmodf
-; CHECK: fmodf
-; CHECK: fmodf
-; CHECK: fmodf
-}
-
-define internal <16 x i8> @test_add_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
-entry:
-  %res = add <16 x i8> %arg0, %arg1
-  ret <16 x i8> %res
-; CHECK-LABEL: test_add_v16i8
-; CHECK: paddb
-; MIPS32-LABEL: test_add_v16i8
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-}
-
-define internal <16 x i8> @test_and_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
-entry:
-  %res = and <16 x i8> %arg0, %arg1
-  ret <16 x i8> %res
-; CHECK-LABEL: test_and_v16i8
-; CHECK: pand
-; MIPS32-LABEL: test_and_v16i8
-; MIPS32: 	and
-; MIPS32: 	and
-; MIPS32: 	and
-; MIPS32: 	and
-; MIPS32: 	and
-; MIPS32: 	and
-; MIPS32: 	and
-; MIPS32: 	and
-; MIPS32: 	and
-; MIPS32: 	and
-; MIPS32: 	and
-; MIPS32: 	and
-; MIPS32: 	and
-; MIPS32: 	and
-; MIPS32: 	and
-; MIPS32: 	and
-}
-
-define internal <16 x i8> @test_or_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
-entry:
-  %res = or <16 x i8> %arg0, %arg1
-  ret <16 x i8> %res
-; CHECK-LABEL: test_or_v16i8
-; CHECK: por
-; MIPS32-LABEL: test_or_v16i8
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-}
-
-define internal <16 x i8> @test_xor_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
-entry:
-  %res = xor <16 x i8> %arg0, %arg1
-  ret <16 x i8> %res
-; CHECK-LABEL: test_xor_v16i8
-; CHECK: pxor
-; MIPS32-LABEL: test_xor_v16i8
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-}
-
-define internal <16 x i8> @test_sub_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
-entry:
-  %res = sub <16 x i8> %arg0, %arg1
-  ret <16 x i8> %res
-; CHECK-LABEL: test_sub_v16i8
-; CHECK: psubb
-; MIPS32-LABEL: test_sub_v16i8
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-}
-
-define internal <16 x i8> @test_mul_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
-entry:
-  %res = mul <16 x i8> %arg0, %arg1
-  ret <16 x i8> %res
-; CHECK-LABEL: test_mul_v16i8
-; CHECK: imul
-; CHECK: imul
-; CHECK: imul
-; CHECK: imul
-; CHECK: imul
-; CHECK: imul
-; CHECK: imul
-; CHECK: imul
-; CHECK: imul
-; CHECK: imul
-; CHECK: imul
-; CHECK: imul
-; CHECK: imul
-; CHECK: imul
-; CHECK: imul
-; CHECK: imul
-; MIPS32-LABEL: test_mul_v16i8
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-}
-
-define internal <16 x i8> @test_shl_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
-entry:
-  %res = shl <16 x i8> %arg0, %arg1
-  ret <16 x i8> %res
-; CHECK-LABEL: test_shl_v16i8
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; MIPS32-LABEL: test_shl_v16i8
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-}
-
-define internal <16 x i8> @test_lshr_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
-entry:
-  %res = lshr <16 x i8> %arg0, %arg1
-  ret <16 x i8> %res
-; CHECK-LABEL: test_lshr_v16i8
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; MIPS32-LABEL: test_lshr_v16i8
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-}
-
-define internal <16 x i8> @test_ashr_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
-entry:
-  %res = ashr <16 x i8> %arg0, %arg1
-  ret <16 x i8> %res
-; CHECK-LABEL: test_ashr_v16i8
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; MIPS32-LABEL: test_ashr_v16i8
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-}
-
-define internal <16 x i8> @test_udiv_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
-entry:
-  %res = udiv <16 x i8> %arg0, %arg1
-  ret <16 x i8> %res
-; CHECK-LABEL: test_udiv_v16i8
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; MIPS32-LABEL: test_udiv_v16i8
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-}
-
-define internal <16 x i8> @test_sdiv_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
-entry:
-  %res = sdiv <16 x i8> %arg0, %arg1
-  ret <16 x i8> %res
-; CHECK-LABEL: test_sdiv_v16i8
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; MIPS32-LABEL: test_sdiv_v16i8
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-}
-
-define internal <16 x i8> @test_urem_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
-entry:
-  %res = urem <16 x i8> %arg0, %arg1
-  ret <16 x i8> %res
-; CHECK-LABEL: test_urem_v16i8
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; MIPS32-LABEL: test_urem_v16i8
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-}
-
-define internal <16 x i8> @test_srem_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
-entry:
-  %res = srem <16 x i8> %arg0, %arg1
-  ret <16 x i8> %res
-; CHECK-LABEL: test_srem_v16i8
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; MIPS32-LABEL: test_srem_v16i8
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-}
-
-define internal <8 x i16> @test_add_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
-entry:
-  %res = add <8 x i16> %arg0, %arg1
-  ret <8 x i16> %res
-; CHECK-LABEL: test_add_v8i16
-; CHECK: paddw
-; MIPS32-LABEL: test_add_v8i16
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-}
-
-define internal <8 x i16> @test_and_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
-entry:
-  %res = and <8 x i16> %arg0, %arg1
-  ret <8 x i16> %res
-; CHECK-LABEL: test_and_v8i16
-; CHECK: pand
-; MIPS32-LABEL: test_and_v8i16
-; MIPS32: 	andi
-; MIPS32: 	andi
-; MIPS32: 	andi
-; MIPS32: 	andi
-; MIPS32: 	andi
-; MIPS32: 	andi
-; MIPS32: 	andi
-; MIPS32: 	andi
-}
-
-define internal <8 x i16> @test_or_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
-entry:
-  %res = or <8 x i16> %arg0, %arg1
-  ret <8 x i16> %res
-; CHECK-LABEL: test_or_v8i16
-; CHECK: por
-; MIPS32-LABEL: test_or_v8i16
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-}
-
-define internal <8 x i16> @test_xor_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
-entry:
-  %res = xor <8 x i16> %arg0, %arg1
-  ret <8 x i16> %res
-; CHECK-LABEL: test_xor_v8i16
-; CHECK: pxor
-; MIPS32-LABEL: test_xor_v8i16
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-}
-
-define internal <8 x i16> @test_sub_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
-entry:
-  %res = sub <8 x i16> %arg0, %arg1
-  ret <8 x i16> %res
-; CHECK-LABEL: test_sub_v8i16
-; CHECK: psubw
-; MIPS32-LABEL: test_sub_v8i16
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-}
-
-define internal <8 x i16> @test_mul_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
-entry:
-  %res = mul <8 x i16> %arg0, %arg1
-  ret <8 x i16> %res
-; CHECK-LABEL: test_mul_v8i16
-; CHECK: pmullw
-; MIPS32-LABEL: test_mul_v8i16
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-}
-
-define internal <8 x i16> @test_shl_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
-entry:
-  %res = shl <8 x i16> %arg0, %arg1
-  ret <8 x i16> %res
-; CHECK-LABEL: test_shl_v8i16
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; MIPS32-LABEL: test_shl_v8i16
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-}
-
-define internal <8 x i16> @test_lshr_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
-entry:
-  %res = lshr <8 x i16> %arg0, %arg1
-  ret <8 x i16> %res
-; CHECK-LABEL: test_lshr_v8i16
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; MIPS32-LABEL: test_lshr_v8i16
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-}
-
-define internal <8 x i16> @test_ashr_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
-entry:
-  %res = ashr <8 x i16> %arg0, %arg1
-  ret <8 x i16> %res
-; CHECK-LABEL: test_ashr_v8i16
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; MIPS32-LABEL: test_ashr_v8i16
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-}
-
-define internal <8 x i16> @test_udiv_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
-entry:
-  %res = udiv <8 x i16> %arg0, %arg1
-  ret <8 x i16> %res
-; CHECK-LABEL: test_udiv_v8i16
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; MIPS32-LABEL: test_udiv_v8i16
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-}
-
-define internal <8 x i16> @test_sdiv_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
-entry:
-  %res = sdiv <8 x i16> %arg0, %arg1
-  ret <8 x i16> %res
-; CHECK-LABEL: test_sdiv_v8i16
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; MIPS32-LABEL: test_sdiv_v8i16
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-}
-
-define internal <8 x i16> @test_urem_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
-entry:
-  %res = urem <8 x i16> %arg0, %arg1
-  ret <8 x i16> %res
-; CHECK-LABEL: test_urem_v8i16
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; MIPS32-LABEL: test_urem_v8i16
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-}
-
-define internal <8 x i16> @test_srem_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
-entry:
-  %res = srem <8 x i16> %arg0, %arg1
-  ret <8 x i16> %res
-; CHECK-LABEL: test_srem_v8i16
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; MIPS32-LABEL: test_srem_v8i16
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-}
-
-define internal <4 x i32> @test_add_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
-entry:
-  %res = add <4 x i32> %arg0, %arg1
-  ret <4 x i32> %res
-; CHECK-LABEL: test_add_v4i32
-; CHECK: paddd
-; MIPS32-LABEL: test_add_v4i32
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-; MIPS32: 	addu
-}
-
-define internal <4 x i32> @test_and_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
-entry:
-  %res = and <4 x i32> %arg0, %arg1
-  ret <4 x i32> %res
-; CHECK-LABEL: test_and_v4i32
-; CHECK: pand
-; MIPS32-LABEL: test_and_v4i32
-; MIPS32: 	and
-; MIPS32: 	and
-; MIPS32: 	and
-; MIPS32: 	and
-}
-
-define internal <4 x i32> @test_or_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
-entry:
-  %res = or <4 x i32> %arg0, %arg1
-  ret <4 x i32> %res
-; CHECK-LABEL: test_or_v4i32
-; CHECK: por
-; MIPS32-LABEL: test_or_v4i32
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-; MIPS32: 	or
-}
-
-define internal <4 x i32> @test_xor_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
-entry:
-  %res = xor <4 x i32> %arg0, %arg1
-  ret <4 x i32> %res
-; CHECK-LABEL: test_xor_v4i32
-; CHECK: pxor
-; MIPS32-LABEL: test_xor_v4i32
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-; MIPS32: 	xor
-}
-
-define internal <4 x i32> @test_sub_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
-entry:
-  %res = sub <4 x i32> %arg0, %arg1
-  ret <4 x i32> %res
-; CHECK-LABEL: test_sub_v4i32
-; CHECK: psubd
-; MIPS32-LABEL: test_sub_v4i32
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-; MIPS32: 	subu
-}
-
-define internal <4 x i32> @test_mul_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
-entry:
-  %res = mul <4 x i32> %arg0, %arg1
-  ret <4 x i32> %res
-; CHECK-LABEL: test_mul_v4i32
-; CHECK: pmuludq
-; CHECK: pmuludq
-;
-; SSE41-LABEL: test_mul_v4i32
-; SSE41: pmulld
-; MIPS32-LABEL: test_mul_v4i32
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-; MIPS32: 	mul
-}
-
-define internal <4 x i32> @test_shl_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
-entry:
-  %res = shl <4 x i32> %arg0, %arg1
-  ret <4 x i32> %res
-; CHECK-LABEL: test_shl_v4i32
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-; CHECK: shl
-
-; This line is to ensure that pmulld is generated in test_mul_v4i32 above.
-; SSE41-LABEL: test_shl_v4i32
-; MIPS32-LABEL: test_shl_v4i32
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-; MIPS32: 	sllv
-}
-
-define internal <4 x i32> @test_lshr_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
-entry:
-  %res = lshr <4 x i32> %arg0, %arg1
-  ret <4 x i32> %res
-; CHECK-LABEL: test_lshr_v4i32
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; CHECK: shr
-; MIPS32-LABEL: test_lshr_v4i32
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-; MIPS32: 	srlv
-}
-
-define internal <4 x i32> @test_ashr_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
-entry:
-  %res = ashr <4 x i32> %arg0, %arg1
-  ret <4 x i32> %res
-; CHECK-LABEL: test_ashr_v4i32
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; CHECK: sar
-; MIPS32-LABEL: test_ashr_v4i32
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-; MIPS32: 	srav
-}
-
-define internal <4 x i32> @test_udiv_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
-entry:
-  %res = udiv <4 x i32> %arg0, %arg1
-  ret <4 x i32> %res
-; CHECK-LABEL: test_udiv_v4i32
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; MIPS32-LABEL: test_udiv_v4i32
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-}
-
-define internal <4 x i32> @test_sdiv_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
-entry:
-  %res = sdiv <4 x i32> %arg0, %arg1
-  ret <4 x i32> %res
-; CHECK-LABEL: test_sdiv_v4i32
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; MIPS32-LABEL: test_sdiv_v4i32
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-}
-
-define internal <4 x i32> @test_urem_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
-entry:
-  %res = urem <4 x i32> %arg0, %arg1
-  ret <4 x i32> %res
-; CHECK-LABEL: test_urem_v4i32
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; CHECK: div
-; MIPS32-LABEL: test_urem_v4i32
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-; MIPS32: 	divu
-}
-
-define internal <4 x i32> @test_srem_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
-entry:
-  %res = srem <4 x i32> %arg0, %arg1
-  ret <4 x i32> %res
-; CHECK-LABEL: test_srem_v4i32
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; CHECK: idiv
-; MIPS32-LABEL: test_srem_v4i32
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-; MIPS32: 	div
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/vector-bitcast.ll b/third_party/subzero/tests_lit/llvm2ice_tests/vector-bitcast.ll
deleted file mode 100644
index e7ac594..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/vector-bitcast.ll
+++ /dev/null
@@ -1,261 +0,0 @@
-; This file tests bitcasts of vector type. For most operations, these
-; should be lowered to a no-op on -O2.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --target=x8632 --args -O2 \
-; RUN:   | FileCheck --check-prefix=X86-O2 --check-prefix=X86 %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --target=x8632 --args -Om1 \
-; RUN:   | FileCheck --check-prefix=X86 %s
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --target=x8664 --args -O2 \
-; RUN:   | FileCheck --check-prefix=X86-O2 --check-prefix=X86 %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --target=x8664 --args -Om1 \
-; RUN:   | FileCheck --check-prefix=X86 %s
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --target=arm32 --args -O2 \
-; RUN:   | FileCheck --check-prefix=ARM32-O2-O2 --check-prefix=ARM32 %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --target=arm32 --args -Om1 \
-; RUN:   | FileCheck --check-prefix=ARM32 %s
-
-define internal <16 x i8> @test_bitcast_v16i8_to_v16i8(<16 x i8> %arg) {
-entry:
-  %res = bitcast <16 x i8> %arg to <16 x i8>
-  ret <16 x i8> %res
-
-; X86-O2-LABEL: test_bitcast_v16i8_to_v16i8
-; X86-O2-NEXT: ret
-
-; ARM32-O2-LABEL: test_bitcast_v16i8_to_v16i8
-; ARM32-O2-NEXT: bx
-}
-
-define internal <8 x i16> @test_bitcast_v16i8_to_v8i16(<16 x i8> %arg) {
-entry:
-  %res = bitcast <16 x i8> %arg to <8 x i16>
-  ret <8 x i16> %res
-
-; X86-O2-LABEL: test_bitcast_v16i8_to_v8i16
-; X86-O2-NEXT: ret
-
-; ARM32-O2-LABEL: test_bitcast_v16i8_to_v8i16
-; ARM32-O2-NEXT: bx
-}
-
-define internal <4 x i32> @test_bitcast_v16i8_to_v4i32(<16 x i8> %arg) {
-entry:
-  %res = bitcast <16 x i8> %arg to <4 x i32>
-  ret <4 x i32> %res
-
-; X86-O2-LABEL: test_bitcast_v16i8_to_v4i32
-; X86-O2-NEXT: ret
-
-; ARM32-O2-LABEL: test_bitcast_v16i8_to_v4i32
-; ARM32-O2-NEXT: bx
-}
-
-define internal <4 x float> @test_bitcast_v16i8_to_v4f32(<16 x i8> %arg) {
-entry:
-  %res = bitcast <16 x i8> %arg to <4 x float>
-  ret <4 x float> %res
-
-; X86-O2-LABEL: test_bitcast_v16i8_to_v4f32
-; X86-O2-NEXT: ret
-
-; ARM32-O2-LABEL: test_bitcast_v16i8_to_v4f32
-; ARM32-O2-NEXT: bx
-}
-
-define internal <16 x i8> @test_bitcast_v8i16_to_v16i8(<8 x i16> %arg) {
-entry:
-  %res = bitcast <8 x i16> %arg to <16 x i8>
-  ret <16 x i8> %res
-
-; X86-O2-LABEL: test_bitcast_v8i16_to_v16i8
-; X86-O2-NEXT: ret
-
-; ARM32-O2-LABEL: test_bitcast_v8i16_to_v16i8
-; ARM32-O2-NEXT: bx
-}
-
-define internal <8 x i16> @test_bitcast_v8i16_to_v8i16(<8 x i16> %arg) {
-entry:
-  %res = bitcast <8 x i16> %arg to <8 x i16>
-  ret <8 x i16> %res
-
-; X86-O2-LABEL: test_bitcast_v8i16_to_v8i16
-; X86-O2-NEXT: ret
-
-; ARM32-O2-LABEL: test_bitcast_v8i16_to_v8i16
-; ARM32-O2-NEXT: bx
-}
-
-define internal <4 x i32> @test_bitcast_v8i16_to_v4i32(<8 x i16> %arg) {
-entry:
-  %res = bitcast <8 x i16> %arg to <4 x i32>
-  ret <4 x i32> %res
-
-; X86-O2-LABEL: test_bitcast_v8i16_to_v4i32
-; X86-O2-NEXT: ret
-
-; ARM32-O2-LABEL: test_bitcast_v8i16_to_v4i32
-; ARM32-O2-NEXT: bx
-}
-
-define internal <4 x float> @test_bitcast_v8i16_to_v4f32(<8 x i16> %arg) {
-entry:
-  %res = bitcast <8 x i16> %arg to <4 x float>
-  ret <4 x float> %res
-
-; X86-O2-LABEL: test_bitcast_v8i16_to_v4f32
-; X86-O2-NEXT: ret
-
-; ARM32-O2-LABEL: test_bitcast_v8i16_to_v4f32
-; ARM32-O2-NEXT: bx
-}
-
-define internal <16 x i8> @test_bitcast_v4i32_to_v16i8(<4 x i32> %arg) {
-entry:
-  %res = bitcast <4 x i32> %arg to <16 x i8>
-  ret <16 x i8> %res
-
-; X86-O2-LABEL: test_bitcast_v4i32_to_v16i8
-; X86-O2-NEXT: ret
-
-; ARM32-O2-LABEL: test_bitcast_v4i32_to_v16i8
-; ARM32-O2-NEXT: bx
-}
-
-define internal <8 x i16> @test_bitcast_v4i32_to_v8i16(<4 x i32> %arg) {
-entry:
-  %res = bitcast <4 x i32> %arg to <8 x i16>
-  ret <8 x i16> %res
-
-; X86-O2-LABEL: test_bitcast_v4i32_to_v8i16
-; X86-O2-NEXT: ret
-
-; ARM32-O2-LABEL: test_bitcast_v4i32_to_v8i16
-; ARM32-O2-NEXT: bx
-}
-
-define internal <4 x i32> @test_bitcast_v4i32_to_v4i32(<4 x i32> %arg) {
-entry:
-  %res = bitcast <4 x i32> %arg to <4 x i32>
-  ret <4 x i32> %res
-
-; X86-O2-LABEL: test_bitcast_v4i32_to_v4i32
-; X86-O2-NEXT: ret
-
-; ARM32-O2-LABEL: test_bitcast_v4i32_to_v4i32
-; ARM32-O2-NEXT: bx
-}
-
-define internal <4 x float> @test_bitcast_v4i32_to_v4f32(<4 x i32> %arg) {
-entry:
-  %res = bitcast <4 x i32> %arg to <4 x float>
-  ret <4 x float> %res
-
-; X86-O2-LABEL: test_bitcast_v4i32_to_v4f32
-; X86-O2-NEXT: ret
-
-; ARM32-O2-LABEL: test_bitcast_v4i32_to_v4f32
-; ARM32-O2-NEXT: bx
-}
-
-define internal <16 x i8> @test_bitcast_v4f32_to_v16i8(<4 x float> %arg) {
-entry:
-  %res = bitcast <4 x float> %arg to <16 x i8>
-  ret <16 x i8> %res
-
-; X86-O2-LABEL: test_bitcast_v4f32_to_v16i8
-; X86-O2-NEXT: ret
-
-; ARM32-O2-LABEL: test_bitcast_v4f32_to_v16i8
-; ARM32-O2-NEXT: bx
-}
-
-define internal <8 x i16> @test_bitcast_v4f32_to_v8i16(<4 x float> %arg) {
-entry:
-  %res = bitcast <4 x float> %arg to <8 x i16>
-  ret <8 x i16> %res
-
-; X86-O2-LABEL: test_bitcast_v4f32_to_v8i16
-; X86-O2-NEXT: ret
-
-; ARM32-O2-LABEL: test_bitcast_v4f32_to_v8i16
-; ARM32-O2-NEXT: bx
-}
-
-define internal <4 x i32> @test_bitcast_v4f32_to_v4i32(<4 x float> %arg) {
-entry:
-  %res = bitcast <4 x float> %arg to <4 x i32>
-  ret <4 x i32> %res
-
-; X86-O2-LABEL: test_bitcast_v4f32_to_v4i32
-; X86-O2-NEXT: ret
-
-; ARM32-O2-LABEL: test_bitcast_v4f32_to_v4i32
-; ARM32-O2-NEXT: bx
-}
-
-define internal <4 x float> @test_bitcast_v4f32_to_v4f32(<4 x float> %arg) {
-entry:
-  %res = bitcast <4 x float> %arg to <4 x float>
-  ret <4 x float> %res
-
-; X86-O2-LABEL: test_bitcast_v4f32_to_v4f32
-; X86-O2-NEXT: ret
-
-; ARM32-O2-LABEL: test_bitcast_v4f32_to_v4f32
-; ARM32-O2-NEXT: bx
-}
-
-define internal i32 @test_bitcast_v8i1_to_i8(<8 x i1> %arg) {
-entry:
-  %res = bitcast <8 x i1> %arg to i8
-  %res.i32 = zext i8 %res to i32
-  ret i32 %res.i32
-
-; X86-LABEL: test_bitcast_v8i1_to_i8
-; X86: call {{.*}} R_{{.*}} __Sz_bitcast_8xi1_i8
-
-; ARM32-LABEL: test_bitcast_v8i1_to_i8
-; ARM32: bl {{.*}} __Sz_bitcast_8xi1_i8
-}
-
-define internal i32 @test_bitcast_v16i1_to_i16(<16 x i1> %arg) {
-entry:
-  %res = bitcast <16 x i1> %arg to i16
-  %res.i32 = zext i16 %res to i32
-  ret i32 %res.i32
-
-; X86-LABEL: test_bitcast_v16i1_to_i16
-; X86: call {{.*}} __Sz_bitcast_16xi1_i16
-
-; ARM32-LABEL: test_bitcast_v16i1_to_i16
-; ARM32: bl {{.*}} __Sz_bitcast_16xi1_i16
-}
-
-define internal <8 x i1> @test_bitcast_i8_to_v8i1(i32 %arg) {
-entry:
-  %arg.trunc = trunc i32 %arg to i8
-  %res = bitcast i8 %arg.trunc to <8 x i1>
-  ret <8 x i1> %res
-
-; X86-LABEL: test_bitcast_i8_to_v8i1
-; X86: call {{.*}} R_{{.*}} __Sz_bitcast_i8_8xi1
-
-; ARM32-LABEL: test_bitcast_i8_to_v8i1
-; ARM32: bl {{.*}} __Sz_bitcast_i8_8xi1
-}
-
-define internal <16 x i1> @test_bitcast_i16_to_v16i1(i32 %arg) {
-entry:
-  %arg.trunc = trunc i32 %arg to i16
-  %res = bitcast i16 %arg.trunc to <16 x i1>
-  ret <16 x i1> %res
-
-; X86-LABEL: test_bitcast_i16_to_v16i1
-; X86: call {{.*}} R_{{.*}} __Sz_bitcast_i16_16xi1
-
-; ARM32-LABEL: test_bitcast_i16_to_v16i1
-; ARM32: bl {{.*}} __Sz_bitcast_i16_16xi1
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/vector-cast.ll b/third_party/subzero/tests_lit/llvm2ice_tests/vector-cast.ll
deleted file mode 100644
index 13c2acd..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/vector-cast.ll
+++ /dev/null
@@ -1,847 +0,0 @@
-; This file tests casting / conversion operations that apply to vector types.
-; bitcast operations are in vector-bitcast.ll.
-
-; RUN: %p2i -i %s --target=x8632 --filetype=obj --disassemble --args -O2 \
-; RUN:     | FileCheck %s --check-prefix=X8632 --check-prefix=CHECK
-; RUN: %p2i -i %s --target=x8632 --filetype=obj --disassemble --args -Om1 \
-; RUN:     | FileCheck %s --check-prefix=X8632 --check-prefix=CHECK
-
-; RUN: %p2i -i %s --target=arm32 --filetype=obj --disassemble --args -O2 \
-; RUN:     | FileCheck %s --check-prefix=ARM32 --check-prefix=CHECK
-; RUN: %p2i -i %s --target=arm32 --filetype=obj --disassemble --args -Om1 \
-; RUN:     | FileCheck %s --check-prefix=ARM32 --check-prefix=CHECK
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:   mips32 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-; sext operations
-
-define internal <16 x i8> @test_sext_v16i1_to_v16i8(<16 x i1> %arg) {
-entry:
-  %res = sext <16 x i1> %arg to <16 x i8>
-  ret <16 x i8> %res
-
-; CHECK-LABEL: test_sext_v16i1_to_v16i8
-; X8632: pxor
-; X8632: pcmpeqb
-; X8632: psubb
-; X8632: pand
-; X8632: pxor
-; X8632: pcmpgtb
-; ARM32: vshl.s8
-; ARM32-NEXT: vshr.s8
-; MIPS32: 	move	t2,a0
-; MIPS32: 	andi	t2,t2,0xff
-; MIPS32: 	andi	t2,t2,0x1
-; MIPS32: 	sll	t2,t2,0x1f
-; MIPS32: 	sra	t2,t2,0x1f
-; MIPS32: 	andi	t2,t2,0xff
-; MIPS32: 	srl	v0,v0,0x8
-; MIPS32: 	sll	v0,v0,0x8
-; MIPS32: 	or	t2,t2,v0
-; MIPS32: 	move	v0,a0
-; MIPS32: 	srl	v0,v0,0x8
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	sll	v0,v0,0x1f
-; MIPS32: 	sra	v0,v0,0x1f
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	sll	v0,v0,0x8
-; MIPS32: 	lui	t3,0xffff
-; MIPS32: 	ori	t3,t3,0xff
-; MIPS32: 	and	t2,t2,t3
-; MIPS32: 	or	v0,v0,t2
-; MIPS32: 	move	t2,a0
-; MIPS32: 	srl	t2,t2,0x10
-; MIPS32: 	andi	t2,t2,0xff
-; MIPS32: 	andi	t2,t2,0x1
-; MIPS32: 	sll	t2,t2,0x1f
-; MIPS32: 	sra	t2,t2,0x1f
-; MIPS32: 	andi	t2,t2,0xff
-; MIPS32: 	sll	t2,t2,0x10
-; MIPS32: 	lui	t3,0xff00
-; MIPS32: 	ori	t3,t3,0xffff
-; MIPS32: 	and	v0,v0,t3
-; MIPS32: 	or	t2,t2,v0
-; MIPS32: 	srl	a0,a0,0x18
-; MIPS32: 	andi	a0,a0,0x1
-; MIPS32: 	sll	a0,a0,0x1f
-; MIPS32: 	sra	a0,a0,0x1f
-; MIPS32: 	sll	a0,a0,0x18
-; MIPS32: 	sll	t2,t2,0x8
-; MIPS32: 	srl	t2,t2,0x8
-; MIPS32: 	or	a0,a0,t2
-; MIPS32: 	move	v0,a1
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	sll	v0,v0,0x1f
-; MIPS32: 	sra	v0,v0,0x1f
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	srl	v1,v1,0x8
-; MIPS32: 	sll	v1,v1,0x8
-; MIPS32: 	or	v0,v0,v1
-; MIPS32: 	move	v1,a1
-; MIPS32: 	srl	v1,v1,0x8
-; MIPS32: 	andi	v1,v1,0xff
-; MIPS32: 	andi	v1,v1,0x1
-; MIPS32: 	sll	v1,v1,0x1f
-; MIPS32: 	sra	v1,v1,0x1f
-; MIPS32: 	andi	v1,v1,0xff
-; MIPS32: 	sll	v1,v1,0x8
-; MIPS32: 	lui	t2,0xffff
-; MIPS32: 	ori	t2,t2,0xff
-; MIPS32: 	and	v0,v0,t2
-; MIPS32: 	or	v1,v1,v0
-; MIPS32: 	move	v0,a1
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	sll	v0,v0,0x1f
-; MIPS32: 	sra	v0,v0,0x1f
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	lui	t2,0xff00
-; MIPS32: 	ori	t2,t2,0xffff
-; MIPS32: 	and	v1,v1,t2
-; MIPS32: 	or	v0,v0,v1
-; MIPS32: 	srl	a1,a1,0x18
-; MIPS32: 	andi	a1,a1,0x1
-; MIPS32: 	sll	a1,a1,0x1f
-; MIPS32: 	sra	a1,a1,0x1f
-; MIPS32: 	sll	a1,a1,0x18
-; MIPS32: 	sll	v0,v0,0x8
-; MIPS32: 	srl	v0,v0,0x8
-; MIPS32: 	or	a1,a1,v0
-; MIPS32: 	move	v0,a2
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	sll	v0,v0,0x1f
-; MIPS32: 	sra	v0,v0,0x1f
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	srl	t0,t0,0x8
-; MIPS32: 	sll	t0,t0,0x8
-; MIPS32: 	or	v0,v0,t0
-; MIPS32: 	move	v1,a2
-; MIPS32: 	srl	v1,v1,0x8
-; MIPS32: 	andi	v1,v1,0xff
-; MIPS32: 	andi	v1,v1,0x1
-; MIPS32: 	sll	v1,v1,0x1f
-; MIPS32: 	sra	v1,v1,0x1f
-; MIPS32: 	andi	v1,v1,0xff
-; MIPS32: 	sll	v1,v1,0x8
-; MIPS32: 	lui	t0,0xffff
-; MIPS32: 	ori	t0,t0,0xff
-; MIPS32: 	and	v0,v0,t0
-; MIPS32: 	or	v1,v1,v0
-; MIPS32: 	move	v0,a2
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	sll	v0,v0,0x1f
-; MIPS32: 	sra	v0,v0,0x1f
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	lui	t0,0xff00
-; MIPS32: 	ori	t0,t0,0xffff
-; MIPS32: 	and	v1,v1,t0
-; MIPS32: 	or	v0,v0,v1
-; MIPS32: 	srl	a2,a2,0x18
-; MIPS32: 	andi	a2,a2,0x1
-; MIPS32: 	sll	a2,a2,0x1f
-; MIPS32: 	sra	a2,a2,0x1f
-; MIPS32: 	sll	a2,a2,0x18
-; MIPS32: 	sll	v0,v0,0x8
-; MIPS32: 	srl	v0,v0,0x8
-; MIPS32: 	or	a2,a2,v0
-; MIPS32: 	move	v0,a3
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	sll	v0,v0,0x1f
-; MIPS32: 	sra	v0,v0,0x1f
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	srl	t1,t1,0x8
-; MIPS32: 	sll	t1,t1,0x8
-; MIPS32: 	or	v0,v0,t1
-; MIPS32: 	move	v1,a3
-; MIPS32: 	srl	v1,v1,0x8
-; MIPS32: 	andi	v1,v1,0xff
-; MIPS32: 	andi	v1,v1,0x1
-; MIPS32: 	sll	v1,v1,0x1f
-; MIPS32: 	sra	v1,v1,0x1f
-; MIPS32: 	andi	v1,v1,0xff
-; MIPS32: 	sll	v1,v1,0x8
-; MIPS32: 	lui	t0,0xffff
-; MIPS32: 	ori	t0,t0,0xff
-; MIPS32: 	and	v0,v0,t0
-; MIPS32: 	or	v1,v1,v0
-; MIPS32: 	move	v0,a3
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	sll	v0,v0,0x1f
-; MIPS32: 	sra	v0,v0,0x1f
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	lui	t0,0xff00
-; MIPS32: 	ori	t0,t0,0xffff
-; MIPS32: 	and	v1,v1,t0
-; MIPS32: 	or	v0,v0,v1
-; MIPS32: 	srl	a3,a3,0x18
-; MIPS32: 	andi	a3,a3,0x1
-; MIPS32: 	sll	a3,a3,0x1f
-; MIPS32: 	sra	a3,a3,0x1f
-; MIPS32: 	sll	a3,a3,0x18
-; MIPS32: 	sll	v0,v0,0x8
-; MIPS32: 	srl	v0,v0,0x8
-; MIPS32: 	or	a3,a3,v0
-}
-
-define internal <8 x i16> @test_sext_v8i1_to_v8i16(<8 x i1> %arg) {
-entry:
-  %res = sext <8 x i1> %arg to <8 x i16>
-  ret <8 x i16> %res
-
-; CHECK-LABEL: test_sext_v8i1_to_v8i16
-; X8632: psllw {{.*}},0xf
-; X8632: psraw {{.*}},0xf
-; ARM32: vshl.s16
-; ARM32-NEXT: vshr.s16
-; MIPS32: 	move	v0,zero
-; MIPS32: 	move	v1,zero
-; MIPS32: 	move	t0,zero
-; MIPS32: 	move	t1,zero
-; MIPS32: 	move	t2,a0
-; MIPS32: 	andi	t2,t2,0xffff
-; MIPS32: 	andi	t2,t2,0x1
-; MIPS32: 	sll	t2,t2,0x1f
-; MIPS32: 	sra	t2,t2,0x1f
-; MIPS32: 	andi	t2,t2,0xffff
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	or	t2,t2,v0
-; MIPS32: 	srl	a0,a0,0x10
-; MIPS32: 	andi	a0,a0,0x1
-; MIPS32: 	sll	a0,a0,0x1f
-; MIPS32: 	sra	a0,a0,0x1f
-; MIPS32: 	sll	a0,a0,0x10
-; MIPS32: 	sll	t2,t2,0x10
-; MIPS32: 	srl	t2,t2,0x10
-; MIPS32: 	or	a0,a0,t2
-; MIPS32: 	move	v0,a1
-; MIPS32: 	andi	v0,v0,0xffff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	sll	v0,v0,0x1f
-; MIPS32: 	sra	v0,v0,0x1f
-; MIPS32: 	andi	v0,v0,0xffff
-; MIPS32: 	srl	v1,v1,0x10
-; MIPS32: 	sll	v1,v1,0x10
-; MIPS32: 	or	v0,v0,v1
-; MIPS32: 	srl	a1,a1,0x10
-; MIPS32: 	andi	a1,a1,0x1
-; MIPS32: 	sll	a1,a1,0x1f
-; MIPS32: 	sra	a1,a1,0x1f
-; MIPS32: 	sll	a1,a1,0x10
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	or	a1,a1,v0
-; MIPS32: 	move	v0,a2
-; MIPS32: 	andi	v0,v0,0xffff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	sll	v0,v0,0x1f
-; MIPS32: 	sra	v0,v0,0x1f
-; MIPS32: 	andi	v0,v0,0xffff
-; MIPS32: 	srl	t0,t0,0x10
-; MIPS32: 	sll	t0,t0,0x10
-; MIPS32: 	or	v0,v0,t0
-; MIPS32: 	srl	a2,a2,0x10
-; MIPS32: 	andi	a2,a2,0x1
-; MIPS32: 	sll	a2,a2,0x1f
-; MIPS32: 	sra	a2,a2,0x1f
-; MIPS32: 	sll	a2,a2,0x10
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	or	a2,a2,v0
-; MIPS32: 	move	v0,a3
-; MIPS32: 	andi	v0,v0,0xffff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	sll	v0,v0,0x1f
-; MIPS32: 	sra	v0,v0,0x1f
-; MIPS32: 	andi	v0,v0,0xffff
-; MIPS32: 	srl	t1,t1,0x10
-; MIPS32: 	sll	t1,t1,0x10
-; MIPS32: 	or	v0,v0,t1
-; MIPS32: 	srl	a3,a3,0x10
-; MIPS32: 	andi	a3,a3,0x1
-; MIPS32: 	sll	a3,a3,0x1f
-; MIPS32: 	sra	a3,a3,0x1f
-; MIPS32: 	sll	a3,a3,0x10
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	or	a3,a3,v0
-}
-
-define internal <4 x i32> @test_sext_v4i1_to_v4i32(<4 x i1> %arg) {
-entry:
-  %res = sext <4 x i1> %arg to <4 x i32>
-  ret <4 x i32> %res
-
-; CHECK-LABEL: test_sext_v4i1_to_v4i32
-; X8632: pslld {{.*}},0x1f
-; X8632: psrad {{.*}},0x1f
-; ARM32: vshl.s32
-; ARM32-NEXT: vshr.s32
-; MIPS32: 	andi	a0,a0,0x1
-; MIPS32: 	sll	a0,a0,0x1f
-; MIPS32: 	sra	a0,a0,0x1f
-; MIPS32: 	andi	a1,a1,0x1
-; MIPS32: 	sll	a1,a1,0x1f
-; MIPS32: 	sra	a1,a1,0x1f
-; MIPS32: 	andi	a2,a2,0x1
-; MIPS32: 	sll	a2,a2,0x1f
-; MIPS32: 	sra	a2,a2,0x1f
-; MIPS32: 	andi	a3,a3,0x1
-; MIPS32: 	sll	a3,a3,0x1f
-; MIPS32: 	sra	a3,a3,0x1f
-}
-
-; zext operations
-
-define internal <16 x i8> @test_zext_v16i1_to_v16i8(<16 x i1> %arg) {
-entry:
-  %res = zext <16 x i1> %arg to <16 x i8>
-  ret <16 x i8> %res
-
-; CHECK-LABEL: test_zext_v16i1_to_v16i8
-; X8632: pxor
-; X8632: pcmpeqb
-; X8632: psubb
-; X8632: pand
-; ARM32: vmov.i8 [[S:.*]], #1
-; ARM32-NEXT: vand {{.*}}, [[S]]
-; MIPS32: 	move	t2,a0
-; MIPS32: 	andi	t2,t2,0xff
-; MIPS32: 	andi	t2,t2,0x1
-; MIPS32: 	andi	t2,t2,0x1
-; MIPS32: 	andi	t2,t2,0xff
-; MIPS32: 	srl	v0,v0,0x8
-; MIPS32: 	sll	v0,v0,0x8
-; MIPS32: 	or	t2,t2,v0
-; MIPS32: 	move	v0,a0
-; MIPS32: 	srl	v0,v0,0x8
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	sll	v0,v0,0x8
-; MIPS32: 	lui	t3,0xffff
-; MIPS32: 	ori	t3,t3,0xff
-; MIPS32: 	and	t2,t2,t3
-; MIPS32: 	or	v0,v0,t2
-; MIPS32: 	move	t2,a0
-; MIPS32: 	srl	t2,t2,0x10
-; MIPS32: 	andi	t2,t2,0xff
-; MIPS32: 	andi	t2,t2,0x1
-; MIPS32: 	andi	t2,t2,0x1
-; MIPS32: 	andi	t2,t2,0xff
-; MIPS32: 	sll	t2,t2,0x10
-; MIPS32: 	lui	t3,0xff00
-; MIPS32: 	ori	t3,t3,0xffff
-; MIPS32: 	and	v0,v0,t3
-; MIPS32: 	or	t2,t2,v0
-; MIPS32: 	srl	a0,a0,0x18
-; MIPS32: 	andi	a0,a0,0x1
-; MIPS32: 	andi	a0,a0,0x1
-; MIPS32: 	sll	a0,a0,0x18
-; MIPS32: 	sll	t2,t2,0x8
-; MIPS32: 	srl	t2,t2,0x8
-; MIPS32: 	or	a0,a0,t2
-; MIPS32: 	move	v0,a1
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	srl	v1,v1,0x8
-; MIPS32: 	sll	v1,v1,0x8
-; MIPS32: 	or	v0,v0,v1
-; MIPS32: 	move	v1,a1
-; MIPS32: 	srl	v1,v1,0x8
-; MIPS32: 	andi	v1,v1,0xff
-; MIPS32: 	andi	v1,v1,0x1
-; MIPS32: 	andi	v1,v1,0x1
-; MIPS32: 	andi	v1,v1,0xff
-; MIPS32: 	sll	v1,v1,0x8
-; MIPS32: 	lui	t2,0xffff
-; MIPS32: 	ori	t2,t2,0xff
-; MIPS32: 	and	v0,v0,t2
-; MIPS32: 	or	v1,v1,v0
-; MIPS32: 	move	v0,a1
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	lui	t2,0xff00
-; MIPS32: 	ori	t2,t2,0xffff
-; MIPS32: 	and	v1,v1,t2
-; MIPS32: 	or	v0,v0,v1
-; MIPS32: 	srl	a1,a1,0x18
-; MIPS32: 	andi	a1,a1,0x1
-; MIPS32: 	andi	a1,a1,0x1
-; MIPS32: 	sll	a1,a1,0x18
-; MIPS32: 	sll	v0,v0,0x8
-; MIPS32: 	srl	v0,v0,0x8
-; MIPS32: 	or	a1,a1,v0
-; MIPS32: 	move	v0,a2
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	srl	t0,t0,0x8
-; MIPS32: 	sll	t0,t0,0x8
-; MIPS32: 	or	v0,v0,t0
-; MIPS32: 	move	v1,a2
-; MIPS32: 	srl	v1,v1,0x8
-; MIPS32: 	andi	v1,v1,0xff
-; MIPS32: 	andi	v1,v1,0x1
-; MIPS32: 	andi	v1,v1,0x1
-; MIPS32: 	andi	v1,v1,0xff
-; MIPS32: 	sll	v1,v1,0x8
-; MIPS32: 	lui	t0,0xffff
-; MIPS32: 	ori	t0,t0,0xff
-; MIPS32: 	and	v0,v0,t0
-; MIPS32: 	or	v1,v1,v0
-; MIPS32: 	move	v0,a2
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	lui	t0,0xff00
-; MIPS32: 	ori	t0,t0,0xffff
-; MIPS32: 	and	v1,v1,t0
-; MIPS32: 	or	v0,v0,v1
-; MIPS32: 	srl	a2,a2,0x18
-; MIPS32: 	andi	a2,a2,0x1
-; MIPS32: 	andi	a2,a2,0x1
-; MIPS32: 	sll	a2,a2,0x18
-; MIPS32: 	sll	v0,v0,0x8
-; MIPS32: 	srl	v0,v0,0x8
-; MIPS32: 	or	a2,a2,v0
-; MIPS32: 	move	v0,a3
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	srl	t1,t1,0x8
-; MIPS32: 	sll	t1,t1,0x8
-; MIPS32: 	or	v0,v0,t1
-; MIPS32: 	move	v1,a3
-; MIPS32: 	srl	v1,v1,0x8
-; MIPS32: 	andi	v1,v1,0xff
-; MIPS32: 	andi	v1,v1,0x1
-; MIPS32: 	andi	v1,v1,0x1
-; MIPS32: 	andi	v1,v1,0xff
-; MIPS32: 	sll	v1,v1,0x8
-; MIPS32: 	lui	t0,0xffff
-; MIPS32: 	ori	t0,t0,0xff
-; MIPS32: 	and	v0,v0,t0
-; MIPS32: 	or	v1,v1,v0
-; MIPS32: 	move	v0,a3
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	lui	t0,0xff00
-; MIPS32: 	ori	t0,t0,0xffff
-; MIPS32: 	and	v1,v1,t0
-; MIPS32: 	or	v0,v0,v1
-; MIPS32: 	srl	a3,a3,0x18
-; MIPS32: 	andi	a3,a3,0x1
-; MIPS32: 	andi	a3,a3,0x1
-; MIPS32: 	sll	a3,a3,0x18
-; MIPS32: 	sll	v0,v0,0x8
-; MIPS32: 	srl	v0,v0,0x8
-; MIPS32: 	or	a3,a3,v0
-}
-
-define internal <8 x i16> @test_zext_v8i1_to_v8i16(<8 x i1> %arg) {
-entry:
-  %res = zext <8 x i1> %arg to <8 x i16>
-  ret <8 x i16> %res
-
-; CHECK-LABEL: test_zext_v8i1_to_v8i16
-; X8632: pxor
-; X8632: pcmpeqw
-; X8632: psubw
-; X8632: pand
-; ARM32: vmov.i16 [[S:.*]], #1
-; ARM32-NEXT: vand {{.*}}, [[S]]
-; MIPS32: 	move	t2,a0
-; MIPS32: 	andi	t2,t2,0xffff
-; MIPS32: 	andi	t2,t2,0x1
-; MIPS32: 	andi	t2,t2,0x1
-; MIPS32: 	andi	t2,t2,0xffff
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	or	t2,t2,v0
-; MIPS32: 	srl	a0,a0,0x10
-; MIPS32: 	andi	a0,a0,0x1
-; MIPS32: 	andi	a0,a0,0x1
-; MIPS32: 	sll	a0,a0,0x10
-; MIPS32: 	sll	t2,t2,0x10
-; MIPS32: 	srl	t2,t2,0x10
-; MIPS32: 	or	a0,a0,t2
-; MIPS32: 	move	v0,a1
-; MIPS32: 	andi	v0,v0,0xffff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0xffff
-; MIPS32: 	srl	v1,v1,0x10
-; MIPS32: 	sll	v1,v1,0x10
-; MIPS32: 	or	v0,v0,v1
-; MIPS32: 	srl	a1,a1,0x10
-; MIPS32: 	andi	a1,a1,0x1
-; MIPS32: 	andi	a1,a1,0x1
-; MIPS32: 	sll	a1,a1,0x10
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	or	a1,a1,v0
-; MIPS32: 	move	v0,a2
-; MIPS32: 	andi	v0,v0,0xffff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0xffff
-; MIPS32: 	srl	t0,t0,0x10
-; MIPS32: 	sll	t0,t0,0x10
-; MIPS32: 	or	v0,v0,t0
-; MIPS32: 	srl	a2,a2,0x10
-; MIPS32: 	andi	a2,a2,0x1
-; MIPS32: 	andi	a2,a2,0x1
-; MIPS32: 	sll	a2,a2,0x10
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	or	a2,a2,v0
-; MIPS32: 	move	v0,a3
-; MIPS32: 	andi	v0,v0,0xffff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0xffff
-; MIPS32: 	srl	t1,t1,0x10
-; MIPS32: 	sll	t1,t1,0x10
-; MIPS32: 	or	v0,v0,t1
-; MIPS32: 	srl	a3,a3,0x10
-; MIPS32: 	andi	a3,a3,0x1
-; MIPS32: 	andi	a3,a3,0x1
-; MIPS32: 	sll	a3,a3,0x10
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	or	a3,a3,v0
-}
-
-define internal <4 x i32> @test_zext_v4i1_to_v4i32(<4 x i1> %arg) {
-entry:
-  %res = zext <4 x i1> %arg to <4 x i32>
-  ret <4 x i32> %res
-
-; CHECK-LABEL: test_zext_v4i1_to_v4i32
-; X8632: pxor
-; X8632: pcmpeqd
-; X8632: psubd
-; X8632: pand
-; ARM32: vmov.i32 [[S:.*]], #1
-; ARM32-NEXT: vand {{.*}}, [[S]]
-; MIPS32: 	andi	a0,a0,0x1
-; MIPS32: 	andi	a0,a0,0x1
-; MIPS32: 	andi	a1,a1,0x1
-; MIPS32: 	andi	a1,a1,0x1
-; MIPS32: 	andi	a2,a2,0x1
-; MIPS32: 	andi	a2,a2,0x1
-; MIPS32: 	andi	a3,a3,0x1
-; MIPS32: 	andi	a3,a3,0x1
-}
-
-; trunc operations
-
-define internal <16 x i1> @test_trunc_v16i8_to_v16i1(<16 x i8> %arg) {
-entry:
-  %res = trunc <16 x i8> %arg to <16 x i1>
-  ret <16 x i1> %res
-
-; CHECK-LABEL: test_trunc_v16i8_to_v16i1
-; X8632: pxor
-; X8632: pcmpeqb
-; X8632: psubb
-; X8632: pand
-; MIPS32: 	move	t2,a0
-; MIPS32: 	andi	t2,t2,0xff
-; MIPS32: 	andi	t2,t2,0x1
-; MIPS32: 	andi	t2,t2,0xff
-; MIPS32: 	srl	v0,v0,0x8
-; MIPS32: 	sll	v0,v0,0x8
-; MIPS32: 	or	t2,t2,v0
-; MIPS32: 	move	v0,a0
-; MIPS32: 	srl	v0,v0,0x8
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	sll	v0,v0,0x8
-; MIPS32: 	lui	t3,0xffff
-; MIPS32: 	ori	t3,t3,0xff
-; MIPS32: 	and	t2,t2,t3
-; MIPS32: 	or	v0,v0,t2
-; MIPS32: 	move	t2,a0
-; MIPS32: 	srl	t2,t2,0x10
-; MIPS32: 	andi	t2,t2,0xff
-; MIPS32: 	andi	t2,t2,0x1
-; MIPS32: 	andi	t2,t2,0xff
-; MIPS32: 	sll	t2,t2,0x10
-; MIPS32: 	lui	t3,0xff00
-; MIPS32: 	ori	t3,t3,0xffff
-; MIPS32: 	and	v0,v0,t3
-; MIPS32: 	or	t2,t2,v0
-; MIPS32: 	srl	a0,a0,0x18
-; MIPS32: 	andi	a0,a0,0x1
-; MIPS32: 	sll	a0,a0,0x18
-; MIPS32: 	sll	t2,t2,0x8
-; MIPS32: 	srl	t2,t2,0x8
-; MIPS32: 	or	a0,a0,t2
-; MIPS32: 	move	v0,a1
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	srl	v1,v1,0x8
-; MIPS32: 	sll	v1,v1,0x8
-; MIPS32: 	or	v0,v0,v1
-; MIPS32: 	move	v1,a1
-; MIPS32: 	srl	v1,v1,0x8
-; MIPS32: 	andi	v1,v1,0xff
-; MIPS32: 	andi	v1,v1,0x1
-; MIPS32: 	andi	v1,v1,0xff
-; MIPS32: 	sll	v1,v1,0x8
-; MIPS32: 	lui	t2,0xffff
-; MIPS32: 	ori	t2,t2,0xff
-; MIPS32: 	and	v0,v0,t2
-; MIPS32: 	or	v1,v1,v0
-; MIPS32: 	move	v0,a1
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	lui	t2,0xff00
-; MIPS32: 	ori	t2,t2,0xffff
-; MIPS32: 	and	v1,v1,t2
-; MIPS32: 	or	v0,v0,v1
-; MIPS32: 	srl	a1,a1,0x18
-; MIPS32: 	andi	a1,a1,0x1
-; MIPS32: 	sll	a1,a1,0x18
-; MIPS32: 	sll	v0,v0,0x8
-; MIPS32: 	srl	v0,v0,0x8
-; MIPS32: 	or	a1,a1,v0
-; MIPS32: 	move	v0,a2
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	srl	t0,t0,0x8
-; MIPS32: 	sll	t0,t0,0x8
-; MIPS32: 	or	v0,v0,t0
-; MIPS32: 	move	v1,a2
-; MIPS32: 	srl	v1,v1,0x8
-; MIPS32: 	andi	v1,v1,0xff
-; MIPS32: 	andi	v1,v1,0x1
-; MIPS32: 	andi	v1,v1,0xff
-; MIPS32: 	sll	v1,v1,0x8
-; MIPS32: 	lui	t0,0xffff
-; MIPS32: 	ori	t0,t0,0xff
-; MIPS32: 	and	v0,v0,t0
-; MIPS32: 	or	v1,v1,v0
-; MIPS32: 	move	v0,a2
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	lui	t0,0xff00
-; MIPS32: 	ori	t0,t0,0xffff
-; MIPS32: 	and	v1,v1,t0
-; MIPS32: 	or	v0,v0,v1
-; MIPS32: 	srl	a2,a2,0x18
-; MIPS32: 	andi	a2,a2,0x1
-; MIPS32: 	sll	a2,a2,0x18
-; MIPS32: 	sll	v0,v0,0x8
-; MIPS32: 	srl	v0,v0,0x8
-; MIPS32: 	or	a2,a2,v0
-; MIPS32: 	move	v0,a3
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	srl	t1,t1,0x8
-; MIPS32: 	sll	t1,t1,0x8
-; MIPS32: 	or	v0,v0,t1
-; MIPS32: 	move	v1,a3
-; MIPS32: 	srl	v1,v1,0x8
-; MIPS32: 	andi	v1,v1,0xff
-; MIPS32: 	andi	v1,v1,0x1
-; MIPS32: 	andi	v1,v1,0xff
-; MIPS32: 	sll	v1,v1,0x8
-; MIPS32: 	lui	t0,0xffff
-; MIPS32: 	ori	t0,t0,0xff
-; MIPS32: 	and	v0,v0,t0
-; MIPS32: 	or	v1,v1,v0
-; MIPS32: 	move	v0,a3
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	andi	v0,v0,0x1
-; MIPS32: 	andi	v0,v0,0xff
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	lui	t0,0xff00
-; MIPS32: 	ori	t0,t0,0xffff
-; MIPS32: 	and	v1,v1,t0
-; MIPS32: 	or	v0,v0,v1
-; MIPS32: 	srl	a3,a3,0x18
-; MIPS32: 	andi	a3,a3,0x1
-; MIPS32: 	sll	a3,a3,0x18
-; MIPS32: 	sll	v0,v0,0x8
-; MIPS32: 	srl	v0,v0,0x8
-; MIPS32: 	or	a3,a3,v0
-}
-
-define internal <8 x i1> @test_trunc_v8i16_to_v8i1(<8 x i16> %arg) {
-entry:
-  %res = trunc <8 x i16> %arg to <8 x i1>
-  ret <8 x i1> %res
-
-; CHECK-LABEL: test_trunc_v8i16_to_v8i1
-; X8632: pxor
-; X8632: pcmpeqw
-; X8632: psubw
-; X8632: pand
-; MIPS32: 	move	t2,a0
-; MIPS32: 	andi	t2,t2,0xffff
-; MIPS32: 	andi	t2,t2,0xffff
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	or	t2,t2,v0
-; MIPS32: 	srl	a0,a0,0x10
-; MIPS32: 	sll	a0,a0,0x10
-; MIPS32: 	sll	t2,t2,0x10
-; MIPS32: 	srl	t2,t2,0x10
-; MIPS32: 	or	a0,a0,t2
-; MIPS32: 	move	v0,a1
-; MIPS32: 	andi	v0,v0,0xffff
-; MIPS32: 	andi	v0,v0,0xffff
-; MIPS32: 	srl	v1,v1,0x10
-; MIPS32: 	sll	v1,v1,0x10
-; MIPS32: 	or	v0,v0,v1
-; MIPS32: 	srl	a1,a1,0x10
-; MIPS32: 	sll	a1,a1,0x10
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	or	a1,a1,v0
-; MIPS32: 	move	v0,a2
-; MIPS32: 	andi	v0,v0,0xffff
-; MIPS32: 	andi	v0,v0,0xffff
-; MIPS32: 	srl	t0,t0,0x10
-; MIPS32: 	sll	t0,t0,0x10
-; MIPS32: 	or	v0,v0,t0
-; MIPS32: 	srl	a2,a2,0x10
-; MIPS32: 	sll	a2,a2,0x10
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	or	a2,a2,v0
-; MIPS32: 	move	v0,a3
-; MIPS32: 	andi	v0,v0,0xffff
-; MIPS32: 	andi	v0,v0,0xffff
-; MIPS32: 	srl	t1,t1,0x10
-; MIPS32: 	sll	t1,t1,0x10
-; MIPS32: 	or	v0,v0,t1
-; MIPS32: 	srl	a3,a3,0x10
-; MIPS32: 	sll	a3,a3,0x10
-; MIPS32: 	sll	v0,v0,0x10
-; MIPS32: 	srl	v0,v0,0x10
-; MIPS32: 	or	a3,a3,v0
-}
-
-define internal <4 x i1> @test_trunc_v4i32_to_v4i1(<4 x i32> %arg) {
-entry:
-  %res = trunc <4 x i32> %arg to <4 x i1>
-  ret <4 x i1> %res
-
-; CHECK-LABEL: test_trunc_v4i32_to_v4i1
-; X8632: pxor
-; X8632: pcmpeqd
-; X8632: psubd
-; X8632: pand
-; MIPS32: 	move	v0,a0
-; MIPS32: 	move	v1,a1
-; MIPS32: 	move	a0,a2
-; MIPS32: 	move	a1,a3
-}
-
-; fpto[us]i operations
-
-define internal <4 x i32> @test_fptosi_v4f32_to_v4i32(<4 x float> %arg) {
-entry:
-  %res = fptosi <4 x float> %arg to <4 x i32>
-  ret <4 x i32> %res
-
-; CHECK-LABEL: test_fptosi_v4f32_to_v4i32
-; X8632: cvttps2dq
-; ARM32: vcvt.s32.f32
-; MIPS32: 	trunc.w.s	$f0,$f0
-; MIPS32: 	trunc.w.s	$f0,$f0
-; MIPS32: 	trunc.w.s	$f0,$f0
-; MIPS32: 	trunc.w.s	$f0,$f0
-}
-
-define internal <4 x i32> @test_fptoui_v4f32_to_v4i32(<4 x float> %arg) {
-entry:
-  %res = fptoui <4 x float> %arg to <4 x i32>
-  ret <4 x i32> %res
-
-; CHECK-LABEL: test_fptoui_v4f32_to_v4i32
-; X8632: call {{.*}} R_{{.*}} __Sz_fptoui_4xi32_f32
-; ARM32: vcvt.u32.f32
-; MIPS32: 	trunc.w.s	$f0,$f0
-; MIPS32: 	trunc.w.s	$f0,$f0
-; MIPS32: 	trunc.w.s	$f0,$f0
-; MIPS32: 	trunc.w.s	$f0,$f0
-}
-
-; [su]itofp operations
-
-define internal <4 x float> @test_sitofp_v4i32_to_v4f32(<4 x i32> %arg) {
-entry:
-  %res = sitofp <4 x i32> %arg to <4 x float>
-  ret <4 x float> %res
-
-; CHECK-LABEL: test_sitofp_v4i32_to_v4f32
-; X8632: cvtdq2ps
-; ARM32: vcvt.f32.s32
-; MIPS32: 	cvt.s.w	$f0,$f0
-; MIPS32: 	cvt.s.w	$f0,$f0
-; MIPS32: 	cvt.s.w	$f0,$f0
-; MIPS32: 	cvt.s.w	$f0,$f0
-
-}
-
-define internal <4 x float> @test_uitofp_v4i32_to_v4f32(<4 x i32> %arg) {
-entry:
-  %res = uitofp <4 x i32> %arg to <4 x float>
-  ret <4 x float> %res
-
-; CHECK-LABEL: test_uitofp_v4i32_to_v4f32
-; X8632: call {{.*}} R_{{.*}} __Sz_uitofp_4xi32_4xf32
-; ARM32: vcvt.f32.u32
-; MIPS32: 	cvt.s.w	$f0,$f0
-; MIPS32: 	cvt.s.w	$f0,$f0
-; MIPS32: 	cvt.s.w	$f0,$f0
-; MIPS32: 	cvt.s.w	$f0,$f0
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/vector-fcmp.ll b/third_party/subzero/tests_lit/llvm2ice_tests/vector-fcmp.ll
deleted file mode 100644
index d092fbc..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/vector-fcmp.ll
+++ /dev/null
@@ -1,377 +0,0 @@
-; This file checks support for comparing vector values with the fcmp
-; instruction.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble -a -O2 | FileCheck %s
-; RUN: %p2i -i %s --filetype=obj --disassemble -a -Om1 | FileCheck %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target mips32\
-; RUN:   -i %s --args -O2 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-; Check that sext elimination occurs when the result of the comparison
-; instruction is alrady sign extended.  Sign extension to 4 x i32 uses
-; the pslld instruction.
-define internal <4 x i32> @sextElimination(<4 x float> %a, <4 x float> %b) {
-entry:
-  %res.trunc = fcmp oeq <4 x float> %a, %b
-  %res = sext <4 x i1> %res.trunc to <4 x i32>
-  ret <4 x i32> %res
-; CHECK-LABEL: sextElimination
-; CHECK: cmpeqps
-; CHECK-NOT: pslld
-}
-; MIPS32-LABEL: sextElimination
-; MIPS32: c.eq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.eq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.eq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.eq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-
-define internal <4 x i32> @fcmpFalseVector(<4 x float> %a, <4 x float> %b) {
-entry:
-  %res.trunc = fcmp false <4 x float> %a, %b
-  %res = sext <4 x i1> %res.trunc to <4 x i32>
-  ret <4 x i32> %res
-; CHECK-LABEL: fcmpFalseVector
-; CHECK: pxor
-}
-; MIPS32-LABEL: fcmpFalseVector
-; MIPS32: li v0,0
-; MIPS32: li v1,0
-; MIPS32: li a0,0
-; MIPS32: li a1,0
-
-define internal <4 x i32> @fcmpOeqVector(<4 x float> %a, <4 x float> %b) {
-entry:
-  %res.trunc = fcmp oeq <4 x float> %a, %b
-  %res = sext <4 x i1> %res.trunc to <4 x i32>
-  ret <4 x i32> %res
-; CHECK-LABEL: fcmpOeqVector
-; CHECK: cmpeqps
-}
-; MIPS32-LABEL: fcmpOeqVector
-; MIPS32: c.eq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.eq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.eq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.eq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-
-define internal <4 x i32> @fcmpOgeVector(<4 x float> %a, <4 x float> %b) {
-entry:
-  %res.trunc = fcmp oge <4 x float> %a, %b
-  %res = sext <4 x i1> %res.trunc to <4 x i32>
-  ret <4 x i32> %res
-; CHECK-LABEL: fcmpOgeVector
-; CHECK: cmpleps
-}
-; MIPS32-LABEL: fcmpOgeVector
-; MIPS32: c.ult.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.ult.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.ult.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.ult.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-
-define internal <4 x i32> @fcmpOgtVector(<4 x float> %a, <4 x float> %b) {
-entry:
-  %res.trunc = fcmp ogt <4 x float> %a, %b
-  %res = sext <4 x i1> %res.trunc to <4 x i32>
-  ret <4 x i32> %res
-; CHECK-LABEL: fcmpOgtVector
-; CHECK: cmpltps
-}
-; MIPS32-LABEL: fcmpOgtVector
-; MIPS32: c.ule.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.ule.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.ule.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.ule.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-
-define internal <4 x i32> @fcmpOleVector(<4 x float> %a, <4 x float> %b) {
-entry:
-  %res.trunc = fcmp ole <4 x float> %a, %b
-  %res = sext <4 x i1> %res.trunc to <4 x i32>
-  ret <4 x i32> %res
-; CHECK-LABEL: fcmpOleVector
-; CHECK: cmpleps
-}
-; MIPS32-LABEL: fcmpOleVector
-; MIPS32: c.ole.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.ole.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.ole.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.ole.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-
-define internal <4 x i32> @fcmpOltVector(<4 x float> %a, <4 x float> %b) {
-entry:
-  %res.trunc = fcmp olt <4 x float> %a, %b
-  %res = sext <4 x i1> %res.trunc to <4 x i32>
-  ret <4 x i32> %res
-; CHECK-LABEL: fcmpOltVector
-; CHECK: cmpltps
-}
-; MIPS32-LABEL: fcmpOltVector
-; MIPS32: c.olt.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.olt.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.olt.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.olt.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-
-define internal <4 x i32> @fcmpOneVector(<4 x float> %a, <4 x float> %b) {
-entry:
-  %res.trunc = fcmp one <4 x float> %a, %b
-  %res = sext <4 x i1> %res.trunc to <4 x i32>
-  ret <4 x i32> %res
-; CHECK-LABEL: fcmpOneVector
-; CHECK: cmpneqps
-; CHECK: cmpordps
-; CHECK: pand
-}
-; MIPS32-LABEL: fcmpOneVector
-; MIPS32: c.ueq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.ueq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.ueq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.ueq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-
-define internal <4 x i32> @fcmpOrdVector(<4 x float> %a, <4 x float> %b) {
-entry:
-  %res.trunc = fcmp ord <4 x float> %a, %b
-  %res = sext <4 x i1> %res.trunc to <4 x i32>
-  ret <4 x i32> %res
-; CHECK-LABEL: fcmpOrdVector
-; CHECK: cmpordps
-}
-; MIPS32-LABEL: fcmpOrdVector
-; MIPS32: c.un.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.un.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.un.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.un.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-
-define internal <4 x i32> @fcmpTrueVector(<4 x float> %a, <4 x float> %b) {
-entry:
-  %res.trunc = fcmp true <4 x float> %a, %b
-  %res = sext <4 x i1> %res.trunc to <4 x i32>
-  ret <4 x i32> %res
-; CHECK-LABEL: fcmpTrueVector
-; CHECK: pcmpeqd
-}
-; MIPS32-LABEL: fcmpTrueVector
-; MIPS32: li v0,1
-; MIPS32: li v1,1
-; MIPS32: li a0,1
-; MIPS32: li a1,1
-
-define internal <4 x i32> @fcmpUeqVector(<4 x float> %a, <4 x float> %b) {
-entry:
-  %res.trunc = fcmp ueq <4 x float> %a, %b
-  %res = sext <4 x i1> %res.trunc to <4 x i32>
-  ret <4 x i32> %res
-; CHECK-LABEL: fcmpUeqVector
-; CHECK: cmpeqps
-; CHECK: cmpunordps
-; CHECK: por
-}
-; MIPS32-LABEL: fcmpUeqVector
-; MIPS32: c.ueq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.ueq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.ueq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.ueq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-
-define internal <4 x i32> @fcmpUgeVector(<4 x float> %a, <4 x float> %b) {
-entry:
-  %res.trunc = fcmp uge <4 x float> %a, %b
-  %res = sext <4 x i1> %res.trunc to <4 x i32>
-  ret <4 x i32> %res
-; CHECK-LABEL: fcmpUgeVector
-; CHECK: cmpnltps
-}
-; MIPS32-LABEL: fcmpUgeVector
-; MIPS32: c.olt.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.olt.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.olt.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.olt.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-
-define internal <4 x i32> @fcmpUgtVector(<4 x float> %a, <4 x float> %b) {
-entry:
-  %res.trunc = fcmp ugt <4 x float> %a, %b
-  %res = sext <4 x i1> %res.trunc to <4 x i32>
-  ret <4 x i32> %res
-; CHECK-LABEL: fcmpUgtVector
-; CHECK: cmpnleps
-}
-; MIPS32-LABEL: fcmpUgtVector
-; MIPS32: c.ole.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.ole.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.ole.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.ole.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-
-define internal <4 x i32> @fcmpUleVector(<4 x float> %a, <4 x float> %b) {
-entry:
-  %res.trunc = fcmp ule <4 x float> %a, %b
-  %res = sext <4 x i1> %res.trunc to <4 x i32>
-  ret <4 x i32> %res
-; CHECK-LABEL: fcmpUleVector
-; CHECK: cmpnltps
-}
-; MIPS32-LABEL: fcmpUleVector
-; MIPS32: c.ule.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.ule.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.ule.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.ule.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-
-define internal <4 x i32> @fcmpUltVector(<4 x float> %a, <4 x float> %b) {
-entry:
-  %res.trunc = fcmp ult <4 x float> %a, %b
-  %res = sext <4 x i1> %res.trunc to <4 x i32>
-  ret <4 x i32> %res
-; CHECK-LABEL: fcmpUltVector
-; CHECK: cmpnleps
-}
-; MIPS32-LABEL: fcmpUltVector
-; MIPS32: c.ult.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.ult.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.ult.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.ult.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-
-define internal <4 x i32> @fcmpUneVector(<4 x float> %a, <4 x float> %b) {
-entry:
-  %res.trunc = fcmp une <4 x float> %a, %b
-  %res = sext <4 x i1> %res.trunc to <4 x i32>
-  ret <4 x i32> %res
-; CHECK-LABEL: fcmpUneVector
-; CHECK: cmpneqps
-}
-; MIPS32-LABEL: fcmpUneVector
-; MIPS32: c.eq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.eq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.eq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-; MIPS32: c.eq.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movt [[R]],zero,$fcc0
-
-define internal <4 x i32> @fcmpUnoVector(<4 x float> %a, <4 x float> %b) {
-entry:
-  %res.trunc = fcmp uno <4 x float> %a, %b
-  %res = sext <4 x i1> %res.trunc to <4 x i32>
-  ret <4 x i32> %res
-; CHECK-LABEL: fcmpUnoVector
-; CHECK: cmpunordps
-}
-; MIPS32-LABEL: fcmpUnoVector
-; MIPS32: c.un.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.un.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.un.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
-; MIPS32: c.un.s
-; MIPS32: li [[R:.*]],1
-; MIPS32: movf [[R]],zero,$fcc0
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/vector-icmp.ll b/third_party/subzero/tests_lit/llvm2ice_tests/vector-icmp.ll
deleted file mode 100644
index 54fba56..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/vector-icmp.ll
+++ /dev/null
@@ -1,7137 +0,0 @@
-; This file checks support for comparing vector values with the icmp
-; instruction.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 | FileCheck %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 | FileCheck %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target mips32\
-; RUN:   -i %s --args -O2 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-; Check that sext elimination occurs when the result of the comparison
-; instruction is already sign extended.  Sign extension to 4 x i32 uses
-; the pslld instruction on x86.
-define internal <4 x i32> @test_sext_elimination(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %res.trunc = icmp eq <4 x i32> %a, %b
-  %res = sext <4 x i1> %res.trunc to <4 x i32>
-  ret <4 x i32> %res
-; CHECK-LABEL: test_sext_elimination
-; CHECK: pcmpeqd
-; CHECK-NOT: pslld
-
-; MIPS32-LABEL: test_sext_elimination
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: xor [[T4:.*]],a0,[[T0]]
-; MIPS32: sltiu [[T4]],[[T4]],1
-; MIPS32: xor [[T5:.*]],a1,[[T1]]
-; MIPS32: sltiu [[T5]],[[T5]],1
-; MIPS32: xor [[T6:.*]],a2,[[T2]]
-; MIPS32: sltiu [[T6]],[[T6]],1
-; MIPS32: xor [[T7:.*]],a3,[[T3]]
-; MIPS32: sltiu [[T7]],[[T7]],1
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sra [[T4]],[[T4]],0x1f
-; MIPS32: andi [[T5]],[[T5]],0x1
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: sra [[T5]],[[T5]],0x1f
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: sll [[T6]],[[T6]],0x1f
-; MIPS32: sra [[T6]],[[T6]],0x1f
-; MIPS32: andi [[T7]],[[T7]],0x1
-; MIPS32: sll [[T7]],[[T7]],0x1f
-; MIPS32: sra [[T7]],[[T7]],0x1f
-; MIPS32: move v0,[[T4]]
-; MIPS32: move v1,[[T5]]
-; MIPS32: move a0,[[T6]]
-; MIPS32: move a1,[[T7]]
-}
-
-define internal <4 x i1> @test_icmp_v4i32_eq(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %res = icmp eq <4 x i32> %a, %b
-  ret <4 x i1> %res
-; CHECK-LABEL: test_icmp_v4i32_eq
-; CHECK: pcmpeqd
-
-; MIPS32-LABEL: test_icmp_v4i32_eq
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: xor [[T4:.*]],a0,[[T0]]
-; MIPS32: sltiu [[T4]],[[T4]],1
-; MIPS32: xor [[T5:.*]],a1,[[T1]]
-; MIPS32: sltiu [[T5]],[[T5]],1
-; MIPS32: xor [[T6:.*]],a2,[[T2]]
-; MIPS32: sltiu [[T6]],[[T6]],1
-; MIPS32: xor [[T7:.*]],a3,[[T3]]
-; MIPS32: sltiu [[T7]],[[T7]],1
-; MIPS32: move v0,[[T4]]
-; MIPS32: move v1,[[T5]]
-; MIPS32: move a0,[[T6]]
-; MIPS32: move a1,[[T7]]
-}
-
-define internal <4 x i1> @test_icmp_v4i32_ne(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %res = icmp ne <4 x i32> %a, %b
-  ret <4 x i1> %res
-; CHECK-LABEL: test_icmp_v4i32_ne
-; CHECK: pcmpeqd
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v4i32_ne
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: xor [[T4:.*]],a0,[[T0]]
-; MIPS32: sltu [[T4]],zero,[[T4]]
-; MIPS32: xor [[T5:.*]],a1,[[T1]]
-; MIPS32: sltu [[T5]],zero,[[T5]]
-; MIPS32: xor [[T6:.*]],a2,[[T2]]
-; MIPS32: sltu [[T6]],zero,[[T6]]
-; MIPS32: xor [[T7:.*]],a3,[[T3]]
-; MIPS32: sltu [[T7]],zero,[[T7]]
-; MIPS32: move v0,[[T4]]
-; MIPS32: move v1,[[T5]]
-; MIPS32: move a0,[[T6]]
-; MIPS32: move a1,[[T7]]
-}
-
-define internal <4 x i1> @test_icmp_v4i32_sgt(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %res = icmp sgt <4 x i32> %a, %b
-  ret <4 x i1> %res
-; CHECK: pcmpgtd
-
-; MIPS32-LABEL: test_icmp_v4i32_sgt
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: slt v0,[[T0]],[[T4:.*]]
-; MIPS32: slt v1,[[T1]],[[T5:.*]]
-; MIPS32: slt [[T2]],[[T2]],[[T6:.*]]
-; MIPS32: slt [[T3]],[[T3]],[[T7:.*]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <4 x i1> @test_icmp_v4i32_sle(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %res = icmp sle <4 x i32> %a, %b
-  ret <4 x i1> %res
-; CHECK-LABEL: test_icmp_v4i32_sle
-; CHECK: pcmpgtd
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v4i32_sle
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: slt [[T0]],[[T0]],[[T4:.*]]
-; MIPS32: xori v0,[[T0]],0x1
-; MIPS32: slt [[T1]],[[T1]],[[T5:.*]]
-; MIPS32: xori v1,[[T1]],0x1
-; MIPS32: slt [[T2]],[[T2]],[[T6:.*]]
-; MIPS32: xori [[T2]],[[T2]],0x1
-; MIPS32: slt [[T3]],[[T3]],[[T7:.*]]
-; MIPS32: xori [[T3]],[[T3]],0x1
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <4 x i1> @test_icmp_v4i32_slt(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %res = icmp slt <4 x i32> %a, %b
-  ret <4 x i1> %res
-; CHECK-LABEL: test_icmp_v4i32_slt
-; CHECK: pcmpgtd
-
-; MIPS32-LABEL: test_icmp_v4i32_slt
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: slt [[T4:.*]],a0,[[T0]]
-; MIPS32: slt [[T5:.*]],a1,[[T1]]
-; MIPS32: slt [[T6:.*]],a2,[[T2]]
-; MIPS32: slt [[T7:.*]],a3,[[T3]]
-; MIPS32: move v0,[[T4]]
-; MIPS32: move v1,[[T5]]
-; MIPS32: move a0,[[T6]]
-; MIPS32: move a1,[[T7]]
-}
-
-define internal <4 x i1> @test_icmp_v4i32_uge(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %res = icmp uge <4 x i32> %a, %b
-  ret <4 x i1> %res
-; CHECK-LABEL: test_icmp_v4i32_uge
-; CHECK: pxor
-; CHECK: pcmpgtd
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v4i32_uge
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: sltu [[T4:.*]],a0,[[T0]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: sltu [[T5:.*]],a1,[[T1]]
-; MIPS32: xori [[T5]],[[T5]],0x1
-; MIPS32: sltu [[T6:.*]],a2,[[T2]]
-; MIPS32: xori [[T6]],[[T6]],0x1
-; MIPS32: sltu [[T7:.*]],a3,[[T3]]
-; MIPS32: xori [[T7]],[[T7]],0x1
-; MIPS32: move v0,[[T4]]
-; MIPS32: move v1,[[T5]]
-; MIPS32: move a0,[[T6]]
-; MIPS32: move a1,[[T7]]
-}
-
-define internal <4 x i1> @test_icmp_v4i32_ugt(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %res = icmp ugt <4 x i32> %a, %b
-  ret <4 x i1> %res
-; CHECK-LABEL: test_icmp_v4i32_ugt
-; CHECK: pxor
-; CHECK: pcmpgtd
-
-; MIPS32-LABEL: test_icmp_v4i32_ugt
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: sltu v0,[[T0]],[[T4:.*]]
-; MIPS32: sltu v1,[[T1]],[[T5:.*]]
-; MIPS32: sltu [[T2]],[[T2]],[[T6:.*]]
-; MIPS32: sltu [[T3]],[[T3]],[[T7:.*]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <4 x i1> @test_icmp_v4i32_ule(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %res = icmp ule <4 x i32> %a, %b
-  ret <4 x i1> %res
-; CHECK-LABEL: test_icmp_v4i32_ule
-; CHECK: pxor
-; CHECK: pcmpgtd
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v4i32_ule
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: sltu [[T0]],[[T0]],[[T4:.*]]
-; MIPS32: xori v0,[[T0]],0x1
-; MIPS32: sltu [[T1]],[[T1]],[[T5:.*]]
-; MIPS32: xori v1,[[T1]],0x1
-; MIPS32: sltu [[T2]],[[T2]],[[T6:.*]]
-; MIPS32: xori [[T2]],[[T2]],0x1
-; MIPS32: sltu [[T3]],[[T3]],[[T7:.*]]
-; MIPS32: xori [[T3]],[[T3]],0x1
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <4 x i1> @test_icmp_v4i32_ult(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %res = icmp ult <4 x i32> %a, %b
-  ret <4 x i1> %res
-; CHECK-LABEL: test_icmp_v4i32_ult
-; CHECK: pxor
-; CHECK: pcmpgtd
-
-; MIPS32-LABEL: test_icmp_v4i32_ult
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: sltu [[T4:.*]],a0,[[T0]]
-; MIPS32: sltu [[T5:.*]],a1,[[T1]]
-; MIPS32: sltu [[T6:.*]],a2,[[T2]]
-; MIPS32: sltu [[T7:.*]],a3,[[T3]]
-; MIPS32: move v0,[[T4]]
-; MIPS32: move v1,[[T5]]
-; MIPS32: move a0,[[T6]]
-; MIPS32: move a1,[[T7]]
-}
-
-define internal <4 x i1> @test_icmp_v4i1_eq(<4 x i1> %a, <4 x i1> %b) {
-entry:
-  %res = icmp eq <4 x i1> %a, %b
-  ret <4 x i1> %res
-; CHECK-LABEL: test_icmp_v4i1_eq
-; CHECK: pcmpeqd
-
-; MIPS32-LABEL: test_icmp_v4i1_eq
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: andi [[T4:.*]],a0,0x1
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: xor [[T4]],[[T4]],[[T0]]
-; MIPS32: sltiu [[T4]],[[T4]],1
-; MIPS32: andi [[T5:.*]],a1,0x1
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: xor [[T5]],[[T5]],[[T1]]
-; MIPS32: sltiu [[T5]],[[T5]],1
-; MIPS32: andi [[T6:.*]],a2,0x1
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T6]],[[T6]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: xor [[T6]],[[T6]],[[T2]]
-; MIPS32: sltiu [[T6]],[[T6]],1
-; MIPS32: andi [[T7:.*]],a3,0x1
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T7]],[[T7]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: xor [[T7]],[[T7]],[[T3]]
-; MIPS32: sltiu [[T7]],[[T7]],1
-; MIPS32: move v0,[[T4]]
-; MIPS32: move v1,[[T5]]
-; MIPS32: move a0,[[T6]]
-; MIPS32: move a1,[[T7]]
-}
-
-define internal <4 x i1> @test_icmp_v4i1_ne(<4 x i1> %a, <4 x i1> %b) {
-entry:
-  %res = icmp ne <4 x i1> %a, %b
-  ret <4 x i1> %res
-; CHECK-LABEL: test_icmp_v4i1_ne
-; CHECK: pcmpeqd
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v4i1_ne
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: andi [[T4:.*]],a0,0x1
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: xor [[T4]],[[T4]],[[T0]]
-; MIPS32: sltu [[T4]],zero,[[T4]]
-; MIPS32: andi [[T5:.*]],a1,0x1
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: xor [[T5]],[[T5]],[[T1]]
-; MIPS32: sltu [[T5]],zero,[[T5]]
-; MIPS32: andi [[T6:.*]],a2,0x1
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T6]],[[T6]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: xor [[T6]],[[T6]],[[T2]]
-; MIPS32: sltu [[T6]],zero,[[T6]]
-; MIPS32: andi [[T7:.*]],a3,0x1
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T7]],[[T7]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: xor [[T7]],[[T7]],[[T3]]
-; MIPS32: sltu [[T7]],zero,[[T7]]
-; MIPS32: move v0,[[T4]]
-; MIPS32: move v1,[[T5]]
-; MIPS32: move a0,[[T6]]
-; MIPS32: move a1,[[T7]]
-}
-
-define internal <4 x i1> @test_icmp_v4i1_sgt(<4 x i1> %a, <4 x i1> %b) {
-entry:
-  %res = icmp sgt <4 x i1> %a, %b
-  ret <4 x i1> %res
-; CHECK-LABEL: test_icmp_v4i1_sgt
-; CHECK: pcmpgtd
-
-; MIPS32-LABEL: test_icmp_v4i1_sgt
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: andi [[T4:.*]],a0,0x1
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: slt v0,[[T0]],[[T4]]
-; MIPS32: andi [[T5:.*]],a1,0x1
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: slt v1,[[T1]],[[T5]]
-; MIPS32: andi [[T6:.*]],a2,0x1
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T6]],[[T6]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: slt [[T2]],[[T2]],[[T6]]
-; MIPS32: andi [[T7:.*]],a3,0x1
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T7]],[[T7]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: slt [[T3]],[[T3]],[[T7]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <4 x i1> @test_icmp_v4i1_sle(<4 x i1> %a, <4 x i1> %b) {
-entry:
-  %res = icmp sle <4 x i1> %a, %b
-  ret <4 x i1> %res
-; CHECK-LABEL: test_icmp_v4i1_sle
-; CHECK: pcmpgtd
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v4i1_sle
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: andi [[T4:.*]],a0,0x1
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: slt [[T0]],[[T0]],[[T4]]
-; MIPS32: xori v0,[[T0]],0x1
-; MIPS32: andi [[T5:.*]],a1,0x1
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: slt [[T1]],[[T1]],[[T5]]
-; MIPS32: xori v1,[[T1]],0x1
-; MIPS32: andi [[T6:.*]],a2,0x1
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T6]],[[T6]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: slt [[T2]],[[T2]],[[T6]]
-; MIPS32: xori [[T2]],[[T2]],0x1
-; MIPS32: andi [[T7:.*]],a3,0x1
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T7]],[[T7]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: slt [[T3]],[[T3]],[[T7]]
-; MIPS32: xori [[T3]],[[T3]],0x1
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <4 x i1> @test_icmp_v4i1_slt(<4 x i1> %a, <4 x i1> %b) {
-entry:
-  %res = icmp slt <4 x i1> %a, %b
-  ret <4 x i1> %res
-; CHECK-LABEL: test_icmp_v4i1_slt
-; CHECK: pcmpgtd
-
-; MIPS32-LABEL: test_icmp_v4i1_slt
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: andi [[T4:.*]],a0,0x1
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: slt [[T4]],[[T4]],[[T0]]
-; MIPS32: andi [[T5:.*]],a1,0x1
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: slt [[T5]],[[T5]],[[T1]]
-; MIPS32: andi [[T6:.*]],a2,0x1
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T6]],[[T6]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: slt [[T6]],[[T6]],[[T2]]
-; MIPS32: andi [[T7:.*]],a3,0x1
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T7]],[[T7]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: slt [[T7]],[[T7]],[[T3]]
-; MIPS32: move v0,[[T4]]
-; MIPS32: move v1,[[T5]]
-; MIPS32: move a0,[[T6]]
-; MIPS32: move a1,[[T7]]
-}
-
-define internal <4 x i1> @test_icmp_v4i1_uge(<4 x i1> %a, <4 x i1> %b) {
-entry:
-  %res = icmp uge <4 x i1> %a, %b
-  ret <4 x i1> %res
-; CHECK-LABEL: test_icmp_v4i1_uge
-; CHECK: pxor
-; CHECK: pcmpgtd
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v4i1_uge
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: andi [[T4:.*]],a0,0x1
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sltu [[T4]],[[T4]],[[T0]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T5:.*]],a1,0x1
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T5]],[[T5]],[[T1]]
-; MIPS32: xori [[T5]],[[T5]],0x1
-; MIPS32: andi [[T6:.*]],a2,0x1
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T6]],[[T6]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: sltu [[T6]],[[T6]],[[T2]]
-; MIPS32: xori [[T6]],[[T6]],0x1
-; MIPS32: andi [[T7:.*]],a3,0x1
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T7]],[[T7]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: sltu [[T7]],[[T7]],[[T3]]
-; MIPS32: xori [[T7]],[[T7]],0x1
-; MIPS32: move v0,[[T4]]
-; MIPS32: move v1,[[T5]]
-; MIPS32: move a0,[[T6]]
-; MIPS32: move a1,[[T7]]
-}
-
-define internal <4 x i1> @test_icmp_v4i1_ugt(<4 x i1> %a, <4 x i1> %b) {
-entry:
-  %res = icmp ugt <4 x i1> %a, %b
-  ret <4 x i1> %res
-; CHECK-LABEL: test_icmp_v4i1_ugt
-; CHECK: pxor
-; CHECK: pcmpgtd
-
-; MIPS32-LABEL: test_icmp_v4i1_ugt
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: andi [[T4:.*]],a0,0x1
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sltu v0,[[T0]],[[T4]]
-; MIPS32: andi [[T5:.*]],a1,0x1
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu v1,[[T1]],[[T5]]
-; MIPS32: andi [[T6:.*]],a2,0x1
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T6]],[[T6]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: sltu [[T2]],[[T2]],[[T6]]
-; MIPS32: andi [[T7:.*]],a3,0x1
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T7]],[[T7]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: sltu [[T3]],[[T3]],[[T7]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <4 x i1> @test_icmp_v4i1_ule(<4 x i1> %a, <4 x i1> %b) {
-entry:
-  %res = icmp ule <4 x i1> %a, %b
-  ret <4 x i1> %res
-; CHECK-LABEL: test_icmp_v4i1_ule
-; CHECK: pxor
-; CHECK: pcmpgtd
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v4i1_ule
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: andi [[T4:.*]],a0,0x1
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T4]]
-; MIPS32: xori v0,[[T0]],0x1
-; MIPS32: andi [[T5:.*]],a1,0x1
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T1]],[[T1]],[[T5]]
-; MIPS32: xori v1,[[T1]],0x1
-; MIPS32: andi [[T6:.*]],a2,0x1
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T6]],[[T6]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: sltu [[T2]],[[T2]],[[T6]]
-; MIPS32: xori [[T2]],[[T2]],0x1
-; MIPS32: andi [[T7:.*]],a3,0x1
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T7]],[[T7]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: sltu [[T3]],[[T3]],[[T7]]
-; MIPS32: xori [[T3]],[[T3]],0x1
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <4 x i1> @test_icmp_v4i1_ult(<4 x i1> %a, <4 x i1> %b) {
-entry:
-  %res = icmp ult <4 x i1> %a, %b
-  ret <4 x i1> %res
-; CHECK-LABEL: test_icmp_v4i1_ult
-; CHECK: pxor
-; CHECK: pcmpgtd
-
-; MIPS32-LABEL: test_icmp_v4i1_ult
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: andi [[T4:.*]],a0,0x1
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sltu [[T4]],[[T4]],[[T0]]
-; MIPS32: andi [[T5:.*]],a1,0x1
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T5]],[[T5]],[[T1]]
-; MIPS32: andi [[T6:.*]],a2,0x1
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T6]],[[T6]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: sltu [[T6]],[[T6]],[[T2]]
-; MIPS32: andi [[T7:.*]],a3,0x1
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T7]],[[T7]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: sltu [[T7]],[[T7]],[[T3]]
-; MIPS32: move v0,[[T4]]
-; MIPS32: move v1,[[T5]]
-; MIPS32: move a0,[[T6]]
-; MIPS32: move a1,[[T7]]
-}
-
-define internal <8 x i1> @test_icmp_v8i16_eq(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %res = icmp eq <8 x i16> %a, %b
-  ret <8 x i1> %res
-; CHECK-LABEL: test_icmp_v8i16_eq
-; CHECK: pcmpeqw
-
-; MIPS32-LABEL: test_icmp_v8i16_eq
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: xor [[T8]],[[T8]],[[T9]]
-; MIPS32: sltiu [[T8]],[[T8]],1
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: xor [[T10]],[[T10]],[[T0]]
-; MIPS32: sltiu [[T10]],[[T10]],1
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: xor [[T0]],[[T0]],[[T4]]
-; MIPS32: sltiu [[T0]],[[T0]],1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x10
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: xor [[T11]],[[T11]],[[T1]]
-; MIPS32: sltiu [[T11]],[[T11]],1
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: xor [[T0]],[[T0]],[[T1]]
-; MIPS32: sltiu [[T0]],[[T0]],1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: sll [[T6]],[[T6]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: srl [[T12:.*]],a2,0x10
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T2]],[[T2]],0x10
-; MIPS32: xor [[T12]],[[T12]],[[T2]]
-; MIPS32: sltiu [[T12]],[[T12]],1
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: xor [[T0]],[[T0]],[[T1]]
-; MIPS32: sltiu [[T0]],[[T0]],1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: sll [[T7]],[[T7]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: srl [[T13:.*]],a3,0x10
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T3]],[[T3]],0x10
-; MIPS32: xor [[T13]],[[T13]],[[T3]]
-; MIPS32: sltiu [[T13]],[[T13]],1
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <8 x i1> @test_icmp_v8i16_ne(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %res = icmp ne <8 x i16> %a, %b
-  ret <8 x i1> %res
-; CHECK-LABEL: test_icmp_v8i16_ne
-; CHECK: pcmpeqw
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v8i16_ne
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: xor [[T8]],[[T8]],[[T9]]
-; MIPS32: sltu [[T8]],zero,[[T8]]
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: xor [[T10]],[[T10]],[[T0]]
-; MIPS32: sltu [[T10]],zero,[[T10]]
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: xor [[T0]],[[T0]],[[T4]]
-; MIPS32: sltu [[T0]],zero,[[T0]]
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x10
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: xor [[T11]],[[T11]],[[T1]]
-; MIPS32: sltu [[T11]],zero,[[T11]]
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: xor [[T0]],[[T0]],[[T1]]
-; MIPS32: sltu [[T0]],zero,[[T0]]
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: sll [[T6]],[[T6]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: srl [[T12:.*]],a2,0x10
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T2]],[[T2]],0x10
-; MIPS32: xor [[T12]],[[T12]],[[T2]]
-; MIPS32: sltu [[T12]],zero,[[T12]]
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: xor [[T0]],[[T0]],[[T1]]
-; MIPS32: sltu [[T0]],zero,[[T0]]
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: sll [[T7]],[[T7]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: srl [[T13:.*]],a3,0x10
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T3]],[[T3]],0x10
-; MIPS32: xor [[T13]],[[T13]],[[T3]]
-; MIPS32: sltu [[T13]],zero,[[T13]]
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <8 x i1> @test_icmp_v8i16_sgt(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %res = icmp sgt <8 x i16> %a, %b
-  ret <8 x i1> %res
-; CHECK-LABEL: test_icmp_v8i16_sgt
-; CHECK: pcmpgtw
-
-; MIPS32-LABEL: test_icmp_v8i16_sgt
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: slt [[T9]],[[T9]],[[T8]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T9]],[[T9]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: slt [[T0]],[[T0]],[[T10]]
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: or v0,[[T0]],[[T9]]
-; MIPS32: move [[T10]],a1
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: slt [[T4]],[[T4]],[[T10]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x10
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: slt [[T1]],[[T1]],[[T11]]
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: or v1,[[T1]],[[T4]]
-; MIPS32: move [[T10]],a2
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: sll [[T6]],[[T6]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T6]]
-; MIPS32: srl [[T12:.*]],a2,0x10
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T2]],[[T2]],0x10
-; MIPS32: slt [[T2]],[[T2]],[[T12]]
-; MIPS32: sll [[T2]],[[T2]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: or [[T2]],[[T2]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: sll [[T7]],[[T7]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T7]]
-; MIPS32: srl [[T13:.*]],a3,0x10
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T3]],[[T3]],0x10
-; MIPS32: slt [[T3]],[[T3]],[[T13]]
-; MIPS32: sll [[T3]],[[T3]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: or [[T3]],[[T3]],[[T11]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <8 x i1> @test_icmp_v8i16_sle(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %res = icmp sle <8 x i16> %a, %b
-  ret <8 x i1> %res
-; CHECK-LABEL: test_icmp_v8i16_sle
-; CHECK: pcmpgtw
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v8i16_sle
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: slt [[T9]],[[T9]],[[T8]]
-; MIPS32: xori [[T9]],[[T9]],0x1
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T9]],[[T9]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: slt [[T0]],[[T0]],[[T10]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: or v0,[[T0]],[[T9]]
-; MIPS32: move [[T10]],a1
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: slt [[T4]],[[T4]],[[T10]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x10
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: slt [[T1]],[[T1]],[[T11]]
-; MIPS32: xori [[T1]],[[T1]],0x1
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: or v1,[[T1]],[[T4]]
-; MIPS32: move [[T10]],a2
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: sll [[T6]],[[T6]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T6]]
-; MIPS32: srl [[T12:.*]],a2,0x10
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T2]],[[T2]],0x10
-; MIPS32: slt [[T2]],[[T2]],[[T12]]
-; MIPS32: xori [[T2]],[[T2]],0x1
-; MIPS32: sll [[T2]],[[T2]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: or [[T2]],[[T2]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: sll [[T7]],[[T7]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T7]]
-; MIPS32: srl [[T13:.*]],a3,0x10
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T3]],[[T3]],0x10
-; MIPS32: slt [[T3]],[[T3]],[[T13]]
-; MIPS32: xori [[T3]],[[T3]],0x1
-; MIPS32: sll [[T3]],[[T3]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: or [[T3]],[[T3]],[[T11]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <8 x i1> @test_icmp_v8i16_slt(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %res = icmp slt <8 x i16> %a, %b
-  ret <8 x i1> %res
-; CHECK-LABEL: test_icmp_v8i16_slt
-; CHECK: pcmpgtw
-
-; MIPS32-LABEL: test_icmp_v8i16_slt
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: slt [[T8]],[[T8]],[[T9]]
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: slt [[T10]],[[T10]],[[T0]]
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: slt [[T0]],[[T0]],[[T4]]
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x10
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: slt [[T11]],[[T11]],[[T1]]
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: slt [[T0]],[[T0]],[[T1]]
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: sll [[T6]],[[T6]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: srl [[T12:.*]],a2,0x10
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T2]],[[T2]],0x10
-; MIPS32: slt [[T12]],[[T12]],[[T2]]
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: slt [[T0]],[[T0]],[[T1]]
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: sll [[T7]],[[T7]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: srl [[T13:.*]],a3,0x10
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T3]],[[T3]],0x10
-; MIPS32: slt [[T13]],[[T13]],[[T3]]
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <8 x i1> @test_icmp_v8i16_uge(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %res = icmp uge <8 x i16> %a, %b
-  ret <8 x i1> %res
-; CHECK-LABEL: test_icmp_v8i16_uge
-; CHECK: pxor
-; CHECK: pcmpgtw
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v8i16_uge
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: sltu [[T8]],[[T8]],[[T9]]
-; MIPS32: xori [[T8]],[[T8]],0x1
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sltu [[T10]],[[T10]],[[T0]]
-; MIPS32: xori [[T10]],[[T10]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: sltu [[T0]],[[T0]],[[T4]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x10
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: sltu [[T11]],[[T11]],[[T1]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: sltu [[T0]],[[T0]],[[T1]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: sll [[T6]],[[T6]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: srl [[T12:.*]],a2,0x10
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T2]],[[T2]],0x10
-; MIPS32: sltu [[T12]],[[T12]],[[T2]]
-; MIPS32: xori [[T12]],[[T12]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: sltu [[T0]],[[T0]],[[T1]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: sll [[T7]],[[T7]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: srl [[T13:.*]],a3,0x10
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T3]],[[T3]],0x10
-; MIPS32: sltu [[T13]],[[T13]],[[T3]]
-; MIPS32: xori [[T13]],[[T13]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <8 x i1> @test_icmp_v8i16_ugt(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %res = icmp ugt <8 x i16> %a, %b
-  ret <8 x i1> %res
-; CHECK-LABEL: test_icmp_v8i16_ugt
-; CHECK: pxor
-; CHECK: pcmpgtw
-
-; MIPS32-LABEL: test_icmp_v8i16_ugt
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: sltu [[T9]],[[T9]],[[T8]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T9]],[[T9]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sltu [[T0]],[[T0]],[[T10]]
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: or v0,[[T0]],[[T9]]
-; MIPS32: move [[T10]],a1
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: sltu [[T4]],[[T4]],[[T10]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x10
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: sltu [[T1]],[[T1]],[[T11]]
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: or v1,[[T1]],[[T4]]
-; MIPS32: move [[T10]],a2
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: sll [[T6]],[[T6]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T6]]
-; MIPS32: srl [[T12:.*]],a2,0x10
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T2]],[[T2]],0x10
-; MIPS32: sltu [[T2]],[[T2]],[[T12]]
-; MIPS32: sll [[T2]],[[T2]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: or [[T2]],[[T2]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: sll [[T7]],[[T7]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T7]]
-; MIPS32: srl [[T13:.*]],a3,0x10
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T3]],[[T3]],0x10
-; MIPS32: sltu [[T3]],[[T3]],[[T13]]
-; MIPS32: sll [[T3]],[[T3]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: or [[T3]],[[T3]],[[T11]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <8 x i1> @test_icmp_v8i16_ule(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %res = icmp ule <8 x i16> %a, %b
-  ret <8 x i1> %res
-; CHECK-LABEL: test_icmp_v8i16_ule
-; CHECK: pxor
-; CHECK: pcmpgtw
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v8i16_ule
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: sltu [[T9]],[[T9]],[[T8]]
-; MIPS32: xori [[T9]],[[T9]],0x1
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T9]],[[T9]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sltu [[T0]],[[T0]],[[T10]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: or v0,[[T0]],[[T9]]
-; MIPS32: move [[T10]],a1
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: sltu [[T4]],[[T4]],[[T10]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x10
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: sltu [[T1]],[[T1]],[[T11]]
-; MIPS32: xori [[T1]],[[T1]],0x1
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: or v1,[[T1]],[[T4]]
-; MIPS32: move [[T10]],a2
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: sll [[T6]],[[T6]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T6]]
-; MIPS32: srl [[T12:.*]],a2,0x10
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T2]],[[T2]],0x10
-; MIPS32: sltu [[T2]],[[T2]],[[T12]]
-; MIPS32: xori [[T2]],[[T2]],0x1
-; MIPS32: sll [[T2]],[[T2]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: or [[T2]],[[T2]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: sll [[T7]],[[T7]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T7]]
-; MIPS32: srl [[T13:.*]],a3,0x10
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T3]],[[T3]],0x10
-; MIPS32: sltu [[T3]],[[T3]],[[T13]]
-; MIPS32: xori [[T3]],[[T3]],0x1
-; MIPS32: sll [[T3]],[[T3]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: or [[T3]],[[T3]],[[T11]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <8 x i1> @test_icmp_v8i16_ult(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %res = icmp ult <8 x i16> %a, %b
-  ret <8 x i1> %res
-; CHECK-LABEL: test_icmp_v8i16_ult
-; CHECK: pxor
-; CHECK: pcmpgtw
-
-; MIPS32-LABEL: test_icmp_v8i16_ult
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: sltu [[T8]],[[T8]],[[T9]]
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sltu [[T10]],[[T10]],[[T0]]
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: sltu [[T0]],[[T0]],[[T4]]
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x10
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: sltu [[T11]],[[T11]],[[T1]]
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: sltu [[T0]],[[T0]],[[T1]]
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: sll [[T6]],[[T6]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: srl [[T12:.*]],a2,0x10
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T2]],[[T2]],0x10
-; MIPS32: sltu [[T12]],[[T12]],[[T2]]
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: sltu [[T0]],[[T0]],[[T1]]
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: sll [[T7]],[[T7]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: srl [[T13:.*]],a3,0x10
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T3]],[[T3]],0x10
-; MIPS32: sltu [[T13]],[[T13]],[[T3]]
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <8 x i1> @test_icmp_v8i1_eq(<8 x i1> %a, <8 x i1> %b) {
-entry:
-  %res = icmp eq <8 x i1> %a, %b
-  ret <8 x i1> %res
-; CHECK-LABEL: test_icmp_v8i1_eq
-; CHECK: pcmpeqw
-
-; MIPS32-LABEL: test_icmp_v8i1_eq
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: xor [[T8]],[[T8]],[[T9]]
-; MIPS32: sltiu [[T8]],[[T8]],1
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x10
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: xor [[T10]],[[T10]],[[T0]]
-; MIPS32: sltiu [[T10]],[[T10]],1
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: xor [[T0]],[[T0]],[[T4]]
-; MIPS32: sltiu [[T0]],[[T0]],1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x10
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: xor [[T11]],[[T11]],[[T1]]
-; MIPS32: sltiu [[T11]],[[T11]],1
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: xor [[T0]],[[T0]],[[T1]]
-; MIPS32: sltiu [[T0]],[[T0]],1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: sll [[T6]],[[T6]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: srl [[T12:.*]],a2,0x10
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: xor [[T12]],[[T12]],[[T2]]
-; MIPS32: sltiu [[T12]],[[T12]],1
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: xor [[T0]],[[T0]],[[T1]]
-; MIPS32: sltiu [[T0]],[[T0]],1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: sll [[T7]],[[T7]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: srl [[T13:.*]],a3,0x10
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: xor [[T13]],[[T13]],[[T3]]
-; MIPS32: sltiu [[T13]],[[T13]],1
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <8 x i1> @test_icmp_v8i1_ne(<8 x i1> %a, <8 x i1> %b) {
-entry:
-  %res = icmp ne <8 x i1> %a, %b
-  ret <8 x i1> %res
-; CHECK-LABEL: test_icmp_v8i1_ne
-; CHECK: pcmpeqw
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v8i1_ne
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: xor [[T8]],[[T8]],[[T9]]
-; MIPS32: sltu [[T8]],zero,[[T8]]
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x10
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: xor [[T10]],[[T10]],[[T0]]
-; MIPS32: sltu [[T10]],zero,[[T10]]
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: xor [[T0]],[[T0]],[[T4]]
-; MIPS32: sltu [[T0]],zero,[[T0]]
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x10
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: xor [[T11]],[[T11]],[[T1]]
-; MIPS32: sltu [[T11]],zero,[[T11]]
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: xor [[T0]],[[T0]],[[T1]]
-; MIPS32: sltu [[T0]],zero,[[T0]]
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: sll [[T6]],[[T6]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: srl [[T12:.*]],a2,0x10
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: xor [[T12]],[[T12]],[[T2]]
-; MIPS32: sltu [[T12]],zero,[[T12]]
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: xor [[T0]],[[T0]],[[T1]]
-; MIPS32: sltu [[T0]],zero,[[T0]]
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: sll [[T7]],[[T7]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: srl [[T13:.*]],a3,0x10
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: xor [[T13]],[[T13]],[[T3]]
-; MIPS32: sltu [[T13]],zero,[[T13]]
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <8 x i1> @test_icmp_v8i1_sgt(<8 x i1> %a, <8 x i1> %b) {
-entry:
-  %res = icmp sgt <8 x i1> %a, %b
-  ret <8 x i1> %res
-; CHECK-LABEL: test_icmp_v8i1_sgt
-; CHECK: pcmpgtw
-
-; MIPS32-LABEL: test_icmp_v8i1_sgt
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: slt [[T9]],[[T9]],[[T8]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T9]],[[T9]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x10
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: slt [[T0]],[[T0]],[[T10]]
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: or v0,[[T0]],[[T9]]
-; MIPS32: move [[T10]],a1
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: slt [[T4]],[[T4]],[[T10]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x10
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: slt [[T1]],[[T1]],[[T11]]
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: or v1,[[T1]],[[T4]]
-; MIPS32: move [[T10]],a2
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: sll [[T6]],[[T6]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T6]]
-; MIPS32: srl [[T12:.*]],a2,0x10
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: slt [[T2]],[[T2]],[[T12]]
-; MIPS32: sll [[T2]],[[T2]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: or [[T2]],[[T2]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: sll [[T7]],[[T7]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T7]]
-; MIPS32: srl [[T13:.*]],a3,0x10
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: slt [[T3]],[[T3]],[[T13]]
-; MIPS32: sll [[T3]],[[T3]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: or [[T3]],[[T3]],[[T11]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <8 x i1> @test_icmp_v8i1_sle(<8 x i1> %a, <8 x i1> %b) {
-entry:
-  %res = icmp sle <8 x i1> %a, %b
-  ret <8 x i1> %res
-; CHECK-LABEL: test_icmp_v8i1_sle
-; CHECK: pcmpgtw
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v8i1_sle
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: slt [[T9]],[[T9]],[[T8]]
-; MIPS32: xori [[T9]],[[T9]],0x1
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T9]],[[T9]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x10
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: slt [[T0]],[[T0]],[[T10]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: or v0,[[T0]],[[T9]]
-; MIPS32: move [[T10]],a1
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: slt [[T4]],[[T4]],[[T10]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x10
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: slt [[T1]],[[T1]],[[T11]]
-; MIPS32: xori [[T1]],[[T1]],0x1
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: or v1,[[T1]],[[T4]]
-; MIPS32: move [[T10]],a2
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: sll [[T6]],[[T6]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T6]]
-; MIPS32: srl [[T12:.*]],a2,0x10
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: slt [[T2]],[[T2]],[[T12]]
-; MIPS32: xori [[T2]],[[T2]],0x1
-; MIPS32: sll [[T2]],[[T2]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: or [[T2]],[[T2]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: sll [[T7]],[[T7]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T7]]
-; MIPS32: srl [[T13:.*]],a3,0x10
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: slt [[T3]],[[T3]],[[T13]]
-; MIPS32: xori [[T3]],[[T3]],0x1
-; MIPS32: sll [[T3]],[[T3]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: or [[T3]],[[T3]],[[T11]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <8 x i1> @test_icmp_v8i1_slt(<8 x i1> %a, <8 x i1> %b) {
-entry:
-  %res = icmp slt <8 x i1> %a, %b
-  ret <8 x i1> %res
-; CHECK-LABEL: test_icmp_v8i1_slt
-; CHECK: pcmpgtw
-
-; MIPS32-LABEL: test_icmp_v8i1_slt
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: slt [[T8]],[[T8]],[[T9]]
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x10
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: slt [[T10]],[[T10]],[[T0]]
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: slt [[T0]],[[T0]],[[T4]]
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x10
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: slt [[T11]],[[T11]],[[T1]]
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: slt [[T0]],[[T0]],[[T1]]
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: sll [[T6]],[[T6]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: srl [[T12:.*]],a2,0x10
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: slt [[T12]],[[T12]],[[T2]]
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: slt [[T0]],[[T0]],[[T1]]
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: sll [[T7]],[[T7]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: srl [[T13:.*]],a3,0x10
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: slt [[T13]],[[T13]],[[T3]]
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <8 x i1> @test_icmp_v8i1_uge(<8 x i1> %a, <8 x i1> %b) {
-entry:
-  %res = icmp uge <8 x i1> %a, %b
-  ret <8 x i1> %res
-; CHECK-LABEL: test_icmp_v8i1_uge
-; CHECK: pxor
-; CHECK: pcmpgtw
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v8i1_uge
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: sltu [[T8]],[[T8]],[[T9]]
-; MIPS32: xori [[T8]],[[T8]],0x1
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x10
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sltu [[T10]],[[T10]],[[T0]]
-; MIPS32: xori [[T10]],[[T10]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T4]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x10
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T11]],[[T11]],[[T1]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T1]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: sll [[T6]],[[T6]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: srl [[T12:.*]],a2,0x10
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: sltu [[T12]],[[T12]],[[T2]]
-; MIPS32: xori [[T12]],[[T12]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T1]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: sll [[T7]],[[T7]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: srl [[T13:.*]],a3,0x10
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: sltu [[T13]],[[T13]],[[T3]]
-; MIPS32: xori [[T13]],[[T13]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <8 x i1> @test_icmp_v8i1_ugt(<8 x i1> %a, <8 x i1> %b) {
-entry:
-  %res = icmp ugt <8 x i1> %a, %b
-  ret <8 x i1> %res
-; CHECK-LABEL: test_icmp_v8i1_ugt
-; CHECK: pxor
-; CHECK: pcmpgtw
-
-; MIPS32-LABEL: test_icmp_v8i1_ugt
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: sltu [[T9]],[[T9]],[[T8]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T9]],[[T9]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x10
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T10]]
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: or v0,[[T0]],[[T9]]
-; MIPS32: move [[T10]],a1
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sltu [[T4]],[[T4]],[[T10]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x10
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T1]],[[T1]],[[T11]]
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: or v1,[[T1]],[[T4]]
-; MIPS32: move [[T10]],a2
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: sll [[T6]],[[T6]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T6]]
-; MIPS32: srl [[T12:.*]],a2,0x10
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: sltu [[T2]],[[T2]],[[T12]]
-; MIPS32: sll [[T2]],[[T2]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: or [[T2]],[[T2]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: sll [[T7]],[[T7]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T7]]
-; MIPS32: srl [[T13:.*]],a3,0x10
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: sltu [[T3]],[[T3]],[[T13]]
-; MIPS32: sll [[T3]],[[T3]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: or [[T3]],[[T3]],[[T11]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <8 x i1> @test_icmp_v8i1_ule(<8 x i1> %a, <8 x i1> %b) {
-entry:
-  %res = icmp ule <8 x i1> %a, %b
-  ret <8 x i1> %res
-; CHECK-LABEL: test_icmp_v8i1_ule
-; CHECK: pxor
-; CHECK: pcmpgtw
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v8i1_ule
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: sltu [[T9]],[[T9]],[[T8]]
-; MIPS32: xori [[T9]],[[T9]],0x1
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T9]],[[T9]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x10
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T10]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: or v0,[[T0]],[[T9]]
-; MIPS32: move [[T10]],a1
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sltu [[T4]],[[T4]],[[T10]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x10
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T1]],[[T1]],[[T11]]
-; MIPS32: xori [[T1]],[[T1]],0x1
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: or v1,[[T1]],[[T4]]
-; MIPS32: move [[T10]],a2
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: sll [[T6]],[[T6]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T6]]
-; MIPS32: srl [[T12:.*]],a2,0x10
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: sltu [[T2]],[[T2]],[[T12]]
-; MIPS32: xori [[T2]],[[T2]],0x1
-; MIPS32: sll [[T2]],[[T2]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: or [[T2]],[[T2]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: andi [[T10]],[[T10]],0xffff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xffff
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: sll [[T7]],[[T7]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T7]]
-; MIPS32: srl [[T13:.*]],a3,0x10
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: sltu [[T3]],[[T3]],[[T13]]
-; MIPS32: xori [[T3]],[[T3]],0x1
-; MIPS32: sll [[T3]],[[T3]],0x10
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: or [[T3]],[[T3]],[[T11]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <8 x i1> @test_icmp_v8i1_ult(<8 x i1> %a, <8 x i1> %b) {
-entry:
-  %res = icmp ult <8 x i1> %a, %b
-  ret <8 x i1> %res
-; CHECK-LABEL: test_icmp_v8i1_ult
-; CHECK: pxor
-; CHECK: pcmpgtw
-
-; MIPS32-LABEL: test_icmp_v8i1_ult
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xffff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: sltu [[T8]],[[T8]],[[T9]]
-; MIPS32: andi [[T8]],[[T8]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x10
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sltu [[T10]],[[T10]],[[T0]]
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xffff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T4]]
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x10
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T11]],[[T11]],[[T1]]
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T1]]
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: sll [[T6]],[[T6]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: srl [[T12:.*]],a2,0x10
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: sltu [[T12]],[[T12]],[[T2]]
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T1]]
-; MIPS32: andi [[T0]],[[T0]],0xffff
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: sll [[T7]],[[T7]],0x10
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: srl [[T13:.*]],a3,0x10
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: sltu [[T13]],[[T13]],[[T3]]
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <16 x i1> @test_icmp_v16i8_eq(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %res = icmp eq <16 x i8> %a, %b
-  ret <16 x i1> %res
-; CHECK-LABEL: test_icmp_v16i8_eq
-; CHECK: pcmpeqb
-
-; MIPS32-LABEL: test_icmp_v16i8_eq
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: xor [[T8]],[[T8]],[[T9]]
-; MIPS32: sltiu [[T8]],[[T8]],1
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x8
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: xor [[T4]],[[T4]],[[T9]]
-; MIPS32: sltiu [[T4]],[[T4]],1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T9]],0xffff
-; MIPS32: ori [[T9]],[[T9]],0xff
-; MIPS32: and [[T8]],[[T8]],[[T9]]
-; MIPS32: or [[T4]],[[T4]],[[T8]]
-; MIPS32: move [[T8]],a0
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: xor [[T8]],[[T8]],[[T9]]
-; MIPS32: sltiu [[T8]],[[T8]],1
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: lui [[T9]],0xff00
-; MIPS32: ori [[T9]],[[T9]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T9]]
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x18
-; MIPS32: srl [[T0]],[[T0]],0x18
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: xor [[T10]],[[T10]],[[T0]]
-; MIPS32: sltiu [[T10]],[[T10]],1
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T8]],[[T8]],0x8
-; MIPS32: srl [[T8]],[[T8]],0x8
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: xor [[T0]],[[T0]],[[T4]]
-; MIPS32: sltiu [[T0]],[[T0]],1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: move [[T4]],a1
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sll [[T5]],[[T5]],0x18
-; MIPS32: xor [[T4]],[[T4]],[[T5]]
-; MIPS32: sltiu [[T4]],[[T4]],1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T5]],0xffff
-; MIPS32: ori [[T5]],[[T5]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T5]]
-; MIPS32: or [[T4]],[[T4]],[[T0]]
-; MIPS32: move [[T0]],a1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T5]],[[T5]],0x18
-; MIPS32: xor [[T0]],[[T0]],[[T5]]
-; MIPS32: sltiu [[T0]],[[T0]],1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T5]],0xff00
-; MIPS32: ori [[T5]],[[T5]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T5]]
-; MIPS32: or [[T0]],[[T0]],[[T4]]
-; MIPS32: srl [[T11:.*]],a1,0x18
-; MIPS32: srl [[T1]],[[T1]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: xor [[T11]],[[T11]],[[T1]]
-; MIPS32: sltiu [[T11]],[[T11]],1
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: xor [[T0]],[[T0]],[[T1]]
-; MIPS32: sltiu [[T0]],[[T0]],1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: sll [[T6]],[[T6]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: move [[T1]],a2
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: xor [[T1]],[[T1]],[[T4]]
-; MIPS32: sltiu [[T1]],[[T1]],1
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T4]],0xffff
-; MIPS32: ori [[T4]],[[T4]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T4]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: xor [[T0]],[[T0]],[[T4]]
-; MIPS32: sltiu [[T0]],[[T0]],1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T4]],0xff00
-; MIPS32: ori [[T4]],[[T4]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T4]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T12:.*]],a2,0x18
-; MIPS32: srl [[T2]],[[T2]],0x18
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: xor [[T12]],[[T12]],[[T2]]
-; MIPS32: sltiu [[T12]],[[T12]],1
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: xor [[T0]],[[T0]],[[T1]]
-; MIPS32: sltiu [[T0]],[[T0]],1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: sll [[T7]],[[T7]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: move [[T1]],a3
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x8
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: xor [[T1]],[[T1]],[[T2]]
-; MIPS32: sltiu [[T1]],[[T1]],1
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T2]],0xffff
-; MIPS32: ori [[T2]],[[T2]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T2]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: xor [[T0]],[[T0]],[[T2]]
-; MIPS32: sltiu [[T0]],[[T0]],1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T2]],0xff00
-; MIPS32: ori [[T2]],[[T2]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T2]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T13:.*]],a3,0x18
-; MIPS32: srl [[T3]],[[T3]],0x18
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T3]],[[T3]],0x18
-; MIPS32: xor [[T13]],[[T13]],[[T3]]
-; MIPS32: sltiu [[T13]],[[T13]],1
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <16 x i1> @test_icmp_v16i8_ne(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %res = icmp ne <16 x i8> %a, %b
-  ret <16 x i1> %res
-; CHECK-LABEL: test_icmp_v16i8_ne
-; CHECK: pcmpeqb
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v16i8_ne
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: xor [[T8]],[[T8]],[[T9]]
-; MIPS32: sltu [[T8]],zero,[[T8]]
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x8
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: xor [[T4]],[[T4]],[[T9]]
-; MIPS32: sltu [[T4]],zero,[[T4]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T9]],0xffff
-; MIPS32: ori [[T9]],[[T9]],0xff
-; MIPS32: and [[T8]],[[T8]],[[T9]]
-; MIPS32: or [[T4]],[[T4]],[[T8]]
-; MIPS32: move [[T8]],a0
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: xor [[T8]],[[T8]],[[T9]]
-; MIPS32: sltu [[T8]],zero,[[T8]]
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: lui [[T9]],0xff00
-; MIPS32: ori [[T9]],[[T9]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T9]]
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x18
-; MIPS32: srl [[T0]],[[T0]],0x18
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: xor [[T10]],[[T10]],[[T0]]
-; MIPS32: sltu [[T10]],zero,[[T10]]
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T8]],[[T8]],0x8
-; MIPS32: srl [[T8]],[[T8]],0x8
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: xor [[T0]],[[T0]],[[T4]]
-; MIPS32: sltu [[T0]],zero,[[T0]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: move [[T4]],a1
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sll [[T5]],[[T5]],0x18
-; MIPS32: xor [[T4]],[[T4]],[[T5]]
-; MIPS32: sltu [[T4]],zero,[[T4]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T5]],0xffff
-; MIPS32: ori [[T5]],[[T5]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T5]]
-; MIPS32: or [[T4]],[[T4]],[[T0]]
-; MIPS32: move [[T0]],a1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T5]],[[T5]],0x18
-; MIPS32: xor [[T0]],[[T0]],[[T5]]
-; MIPS32: sltu [[T0]],zero,[[T0]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T5]],0xff00
-; MIPS32: ori [[T5]],[[T5]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T5]]
-; MIPS32: or [[T0]],[[T0]],[[T4]]
-; MIPS32: srl [[T11:.*]],a1,0x18
-; MIPS32: srl [[T1]],[[T1]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: xor [[T11]],[[T11]],[[T1]]
-; MIPS32: sltu [[T11]],zero,[[T11]]
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: xor [[T0]],[[T0]],[[T1]]
-; MIPS32: sltu [[T0]],zero,[[T0]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: sll [[T6]],[[T6]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: move [[T1]],a2
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: xor [[T1]],[[T1]],[[T4]]
-; MIPS32: sltu [[T1]],zero,[[T1]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T4]],0xffff
-; MIPS32: ori [[T4]],[[T4]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T4]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: xor [[T0]],[[T0]],[[T4]]
-; MIPS32: sltu [[T0]],zero,[[T0]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T4]],0xff00
-; MIPS32: ori [[T4]],[[T4]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T4]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T12:.*]],a2,0x18
-; MIPS32: srl [[T2]],[[T2]],0x18
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: xor [[T12]],[[T12]],[[T2]]
-; MIPS32: sltu [[T12]],zero,[[T12]]
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: xor [[T0]],[[T0]],[[T1]]
-; MIPS32: sltu [[T0]],zero,[[T0]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: sll [[T7]],[[T7]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: move [[T1]],a3
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x8
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: xor [[T1]],[[T1]],[[T2]]
-; MIPS32: sltu [[T1]],zero,[[T1]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T2]],0xffff
-; MIPS32: ori [[T2]],[[T2]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T2]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: xor [[T0]],[[T0]],[[T2]]
-; MIPS32: sltu [[T0]],zero,[[T0]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T2]],0xff00
-; MIPS32: ori [[T2]],[[T2]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T2]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T13:.*]],a3,0x18
-; MIPS32: srl [[T3]],[[T3]],0x18
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T3]],[[T3]],0x18
-; MIPS32: xor [[T13]],[[T13]],[[T3]]
-; MIPS32: sltu [[T13]],zero,[[T13]]
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <16 x i1> @test_icmp_v16i8_sgt(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %res = icmp sgt <16 x i8> %a, %b
-  ret <16 x i1> %res
-; CHECK-LABEL: test_icmp_v16i8_sgt
-; CHECK: pcmpgtb
-
-; MIPS32-LABEL: test_icmp_v16i8_sgt
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: slt [[T9]],[[T9]],[[T8]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T9]],[[T9]],[[T4]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: move [[T8]],[[T0]]
-; MIPS32: srl [[T8]],[[T8]],0x8
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sll [[T8]],[[T8]],0x18
-; MIPS32: slt [[T8]],[[T8]],[[T4]]
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x8
-; MIPS32: lui [[T4]],0xffff
-; MIPS32: ori [[T4]],[[T4]],0xff
-; MIPS32: and [[T9]],[[T9]],[[T4]]
-; MIPS32: or [[T8]],[[T8]],[[T9]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: slt [[T9]],[[T9]],[[T4]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: lui [[T4]],0xff00
-; MIPS32: ori [[T4]],[[T4]],0xffff
-; MIPS32: and [[T8]],[[T8]],[[T4]]
-; MIPS32: or [[T9]],[[T9]],[[T8]]
-; MIPS32: srl [[T10:.*]],a0,0x18
-; MIPS32: srl [[T0]],[[T0]],0x18
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: slt [[T0]],[[T0]],[[T10]]
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x8
-; MIPS32: srl [[T9]],[[T9]],0x8
-; MIPS32: or v0,[[T0]],[[T9]]
-; MIPS32: move [[T10]],a1
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: slt [[T4]],[[T4]],[[T10]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: move [[T10]],a1
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T5]],[[T5]],0x18
-; MIPS32: slt [[T5]],[[T5]],[[T10]]
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T4]],[[T4]],[[T10]]
-; MIPS32: or [[T5]],[[T5]],[[T4]]
-; MIPS32: move [[T10]],a1
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: slt [[T4]],[[T4]],[[T10]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T5]],[[T5]],[[T10]]
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x18
-; MIPS32: srl [[T1]],[[T1]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: slt [[T1]],[[T1]],[[T11]]
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: or v1,[[T1]],[[T4]]
-; MIPS32: move [[T10]],a2
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: sll [[T6]],[[T6]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T6]]
-; MIPS32: move [[T10]],a2
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: slt [[T4]],[[T4]],[[T10]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T11]],[[T11]],[[T10]]
-; MIPS32: or [[T4]],[[T4]],[[T11]]
-; MIPS32: move [[T10]],a2
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T10]]
-; MIPS32: or [[T11]],[[T11]],[[T4]]
-; MIPS32: srl [[T12:.*]],a2,0x18
-; MIPS32: srl [[T2]],[[T2]],0x18
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: slt [[T2]],[[T2]],[[T12]]
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x8
-; MIPS32: srl [[T11]],[[T11]],0x8
-; MIPS32: or [[T2]],[[T2]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: sll [[T7]],[[T7]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T7]]
-; MIPS32: move [[T10]],a3
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T12]],[[T3]]
-; MIPS32: srl [[T12]],[[T12]],0x8
-; MIPS32: andi [[T12]],[[T12]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: slt [[T12]],[[T12]],[[T10]]
-; MIPS32: andi [[T12]],[[T12]],0xff
-; MIPS32: sll [[T12]],[[T12]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T11]],[[T11]],[[T10]]
-; MIPS32: or [[T12]],[[T12]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T12]],[[T12]],[[T10]]
-; MIPS32: or [[T11]],[[T11]],[[T12]]
-; MIPS32: srl [[T13:.*]],a3,0x18
-; MIPS32: srl [[T3]],[[T3]],0x18
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T3]],[[T3]],0x18
-; MIPS32: slt [[T3]],[[T3]],[[T13]]
-; MIPS32: sll [[T3]],[[T3]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x8
-; MIPS32: srl [[T11]],[[T11]],0x8
-; MIPS32: or [[T3]],[[T3]],[[T11]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <16 x i1> @test_icmp_v16i8_sle(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %res = icmp sle <16 x i8> %a, %b
-  ret <16 x i1> %res
-; CHECK-LABEL: test_icmp_v16i8_sle
-; CHECK: pcmpgtb
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v16i8_sle
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: slt [[T9]],[[T9]],[[T8]]
-; MIPS32: xori [[T9]],[[T9]],0x1
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T9]],[[T9]],[[T4]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: move [[T8]],[[T0]]
-; MIPS32: srl [[T8]],[[T8]],0x8
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sll [[T8]],[[T8]],0x18
-; MIPS32: slt [[T8]],[[T8]],[[T4]]
-; MIPS32: xori [[T8]],[[T8]],0x1
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x8
-; MIPS32: lui [[T4]],0xffff
-; MIPS32: ori [[T4]],[[T4]],0xff
-; MIPS32: and [[T9]],[[T9]],[[T4]]
-; MIPS32: or [[T8]],[[T8]],[[T9]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: slt [[T9]],[[T9]],[[T4]]
-; MIPS32: xori [[T9]],[[T9]],0x1
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: lui [[T4]],0xff00
-; MIPS32: ori [[T4]],[[T4]],0xffff
-; MIPS32: and [[T8]],[[T8]],[[T4]]
-; MIPS32: or [[T9]],[[T9]],[[T8]]
-; MIPS32: srl [[T10:.*]],a0,0x18
-; MIPS32: srl [[T0]],[[T0]],0x18
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: slt [[T0]],[[T0]],[[T10]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x8
-; MIPS32: srl [[T9]],[[T9]],0x8
-; MIPS32: or v0,[[T0]],[[T9]]
-; MIPS32: move [[T10]],a1
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: slt [[T4]],[[T4]],[[T10]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: move [[T10]],a1
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T5]],[[T5]],0x18
-; MIPS32: slt [[T5]],[[T5]],[[T10]]
-; MIPS32: xori [[T5]],[[T5]],0x1
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T4]],[[T4]],[[T10]]
-; MIPS32: or [[T5]],[[T5]],[[T4]]
-; MIPS32: move [[T10]],a1
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: slt [[T4]],[[T4]],[[T10]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T5]],[[T5]],[[T10]]
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x18
-; MIPS32: srl [[T1]],[[T1]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: slt [[T1]],[[T1]],[[T11]]
-; MIPS32: xori [[T1]],[[T1]],0x1
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: or v1,[[T1]],[[T4]]
-; MIPS32: move [[T10]],a2
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: sll [[T6]],[[T6]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T6]]
-; MIPS32: move [[T10]],a2
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: slt [[T4]],[[T4]],[[T10]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T11]],[[T11]],[[T10]]
-; MIPS32: or [[T4]],[[T4]],[[T11]]
-; MIPS32: move [[T10]],a2
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T10]]
-; MIPS32: or [[T11]],[[T11]],[[T4]]
-; MIPS32: srl [[T12:.*]],a2,0x18
-; MIPS32: srl [[T2]],[[T2]],0x18
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: slt [[T2]],[[T2]],[[T12]]
-; MIPS32: xori [[T2]],[[T2]],0x1
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x8
-; MIPS32: srl [[T11]],[[T11]],0x8
-; MIPS32: or [[T2]],[[T2]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: sll [[T7]],[[T7]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T7]]
-; MIPS32: move [[T10]],a3
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T12]],[[T3]]
-; MIPS32: srl [[T12]],[[T12]],0x8
-; MIPS32: andi [[T12]],[[T12]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: slt [[T12]],[[T12]],[[T10]]
-; MIPS32: xori [[T12]],[[T12]],0x1
-; MIPS32: andi [[T12]],[[T12]],0xff
-; MIPS32: sll [[T12]],[[T12]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T11]],[[T11]],[[T10]]
-; MIPS32: or [[T12]],[[T12]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T12]],[[T12]],[[T10]]
-; MIPS32: or [[T11]],[[T11]],[[T12]]
-; MIPS32: srl [[T13:.*]],a3,0x18
-; MIPS32: srl [[T3]],[[T3]],0x18
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T3]],[[T3]],0x18
-; MIPS32: slt [[T3]],[[T3]],[[T13]]
-; MIPS32: xori [[T3]],[[T3]],0x1
-; MIPS32: sll [[T3]],[[T3]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x8
-; MIPS32: srl [[T11]],[[T11]],0x8
-; MIPS32: or [[T3]],[[T3]],[[T11]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <16 x i1> @test_icmp_v16i8_slt(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %res = icmp slt <16 x i8> %a, %b
-  ret <16 x i1> %res
-; CHECK-LABEL: test_icmp_v16i8_slt
-; CHECK: pcmpgtb
-
-; MIPS32-LABEL: test_icmp_v16i8_slt
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: slt [[T8]],[[T8]],[[T9]]
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x8
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: slt [[T4]],[[T4]],[[T9]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T9]],0xffff
-; MIPS32: ori [[T9]],[[T9]],0xff
-; MIPS32: and [[T8]],[[T8]],[[T9]]
-; MIPS32: or [[T4]],[[T4]],[[T8]]
-; MIPS32: move [[T8]],a0
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: slt [[T8]],[[T8]],[[T9]]
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: lui [[T9]],0xff00
-; MIPS32: ori [[T9]],[[T9]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T9]]
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x18
-; MIPS32: srl [[T0]],[[T0]],0x18
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: slt [[T10]],[[T10]],[[T0]]
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T8]],[[T8]],0x8
-; MIPS32: srl [[T8]],[[T8]],0x8
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: slt [[T0]],[[T0]],[[T4]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: move [[T4]],a1
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sll [[T5]],[[T5]],0x18
-; MIPS32: slt [[T4]],[[T4]],[[T5]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T5]],0xffff
-; MIPS32: ori [[T5]],[[T5]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T5]]
-; MIPS32: or [[T4]],[[T4]],[[T0]]
-; MIPS32: move [[T0]],a1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T5]],[[T5]],0x18
-; MIPS32: slt [[T0]],[[T0]],[[T5]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T5]],0xff00
-; MIPS32: ori [[T5]],[[T5]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T5]]
-; MIPS32: or [[T0]],[[T0]],[[T4]]
-; MIPS32: srl [[T11:.*]],a1,0x18
-; MIPS32: srl [[T1]],[[T1]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: slt [[T11]],[[T11]],[[T1]]
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: slt [[T0]],[[T0]],[[T1]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: sll [[T6]],[[T6]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: move [[T1]],a2
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: slt [[T1]],[[T1]],[[T4]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T4]],0xffff
-; MIPS32: ori [[T4]],[[T4]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T4]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: slt [[T0]],[[T0]],[[T4]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T4]],0xff00
-; MIPS32: ori [[T4]],[[T4]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T4]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T12:.*]],a2,0x18
-; MIPS32: srl [[T2]],[[T2]],0x18
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: slt [[T12]],[[T12]],[[T2]]
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: slt [[T0]],[[T0]],[[T1]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: sll [[T7]],[[T7]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: move [[T1]],a3
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x8
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: slt [[T1]],[[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T2]],0xffff
-; MIPS32: ori [[T2]],[[T2]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T2]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: slt [[T0]],[[T0]],[[T2]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T2]],0xff00
-; MIPS32: ori [[T2]],[[T2]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T2]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T13:.*]],a3,0x18
-; MIPS32: srl [[T3]],[[T3]],0x18
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T3]],[[T3]],0x18
-; MIPS32: slt [[T13]],[[T13]],[[T3]]
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <16 x i1> @test_icmp_v16i8_uge(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %res = icmp uge <16 x i8> %a, %b
-  ret <16 x i1> %res
-; CHECK-LABEL: test_icmp_v16i8_uge
-; CHECK: pxor
-; CHECK: pcmpgtb
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v16i8_uge
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: sltu [[T8]],[[T8]],[[T9]]
-; MIPS32: xori [[T8]],[[T8]],0x1
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x8
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: sltu [[T4]],[[T4]],[[T9]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T9]],0xffff
-; MIPS32: ori [[T9]],[[T9]],0xff
-; MIPS32: and [[T8]],[[T8]],[[T9]]
-; MIPS32: or [[T4]],[[T4]],[[T8]]
-; MIPS32: move [[T8]],a0
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: sltu [[T8]],[[T8]],[[T9]]
-; MIPS32: xori [[T8]],[[T8]],0x1
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: lui [[T9]],0xff00
-; MIPS32: ori [[T9]],[[T9]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T9]]
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x18
-; MIPS32: srl [[T0]],[[T0]],0x18
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sltu [[T10]],[[T10]],[[T0]]
-; MIPS32: xori [[T10]],[[T10]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T8]],[[T8]],0x8
-; MIPS32: srl [[T8]],[[T8]],0x8
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sltu [[T0]],[[T0]],[[T4]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: move [[T4]],a1
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sll [[T5]],[[T5]],0x18
-; MIPS32: sltu [[T4]],[[T4]],[[T5]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T5]],0xffff
-; MIPS32: ori [[T5]],[[T5]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T5]]
-; MIPS32: or [[T4]],[[T4]],[[T0]]
-; MIPS32: move [[T0]],a1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T5]],[[T5]],0x18
-; MIPS32: sltu [[T0]],[[T0]],[[T5]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T5]],0xff00
-; MIPS32: ori [[T5]],[[T5]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T5]]
-; MIPS32: or [[T0]],[[T0]],[[T4]]
-; MIPS32: srl [[T11:.*]],a1,0x18
-; MIPS32: srl [[T1]],[[T1]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sltu [[T11]],[[T11]],[[T1]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sltu [[T0]],[[T0]],[[T1]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: sll [[T6]],[[T6]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: move [[T1]],a2
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sltu [[T1]],[[T1]],[[T4]]
-; MIPS32: xori [[T1]],[[T1]],0x1
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T4]],0xffff
-; MIPS32: ori [[T4]],[[T4]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T4]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sltu [[T0]],[[T0]],[[T4]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T4]],0xff00
-; MIPS32: ori [[T4]],[[T4]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T4]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T12:.*]],a2,0x18
-; MIPS32: srl [[T2]],[[T2]],0x18
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: sltu [[T12]],[[T12]],[[T2]]
-; MIPS32: xori [[T12]],[[T12]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sltu [[T0]],[[T0]],[[T1]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: sll [[T7]],[[T7]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: move [[T1]],a3
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x8
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: sltu [[T1]],[[T1]],[[T2]]
-; MIPS32: xori [[T1]],[[T1]],0x1
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T2]],0xffff
-; MIPS32: ori [[T2]],[[T2]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T2]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: sltu [[T0]],[[T0]],[[T2]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T2]],0xff00
-; MIPS32: ori [[T2]],[[T2]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T2]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T13:.*]],a3,0x18
-; MIPS32: srl [[T3]],[[T3]],0x18
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T3]],[[T3]],0x18
-; MIPS32: sltu [[T13]],[[T13]],[[T3]]
-; MIPS32: xori [[T13]],[[T13]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <16 x i1> @test_icmp_v16i8_ugt(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %res = icmp ugt <16 x i8> %a, %b
-  ret <16 x i1> %res
-; CHECK-LABEL: test_icmp_v16i8_ugt
-; CHECK: pxor
-; CHECK: pcmpgtb
-
-; MIPS32-LABEL: test_icmp_v16i8_ugt
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: sltu [[T9]],[[T9]],[[T8]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T9]],[[T9]],[[T4]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: move [[T8]],[[T0]]
-; MIPS32: srl [[T8]],[[T8]],0x8
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sll [[T8]],[[T8]],0x18
-; MIPS32: sltu [[T8]],[[T8]],[[T4]]
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x8
-; MIPS32: lui [[T4]],0xffff
-; MIPS32: ori [[T4]],[[T4]],0xff
-; MIPS32: and [[T9]],[[T9]],[[T4]]
-; MIPS32: or [[T8]],[[T8]],[[T9]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: sltu [[T9]],[[T9]],[[T4]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: lui [[T4]],0xff00
-; MIPS32: ori [[T4]],[[T4]],0xffff
-; MIPS32: and [[T8]],[[T8]],[[T4]]
-; MIPS32: or [[T9]],[[T9]],[[T8]]
-; MIPS32: srl [[T10:.*]],a0,0x18
-; MIPS32: srl [[T0]],[[T0]],0x18
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sltu [[T0]],[[T0]],[[T10]]
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x8
-; MIPS32: srl [[T9]],[[T9]],0x8
-; MIPS32: or v0,[[T0]],[[T9]]
-; MIPS32: move [[T10]],a1
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sltu [[T4]],[[T4]],[[T10]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: move [[T10]],a1
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T5]],[[T5]],0x18
-; MIPS32: sltu [[T5]],[[T5]],[[T10]]
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T4]],[[T4]],[[T10]]
-; MIPS32: or [[T5]],[[T5]],[[T4]]
-; MIPS32: move [[T10]],a1
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sltu [[T4]],[[T4]],[[T10]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T5]],[[T5]],[[T10]]
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x18
-; MIPS32: srl [[T1]],[[T1]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sltu [[T1]],[[T1]],[[T11]]
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: or v1,[[T1]],[[T4]]
-; MIPS32: move [[T10]],a2
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: sll [[T6]],[[T6]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T6]]
-; MIPS32: move [[T10]],a2
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sltu [[T4]],[[T4]],[[T10]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T11]],[[T11]],[[T10]]
-; MIPS32: or [[T4]],[[T4]],[[T11]]
-; MIPS32: move [[T10]],a2
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T10]]
-; MIPS32: or [[T11]],[[T11]],[[T4]]
-; MIPS32: srl [[T12:.*]],a2,0x18
-; MIPS32: srl [[T2]],[[T2]],0x18
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: sltu [[T2]],[[T2]],[[T12]]
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x8
-; MIPS32: srl [[T11]],[[T11]],0x8
-; MIPS32: or [[T2]],[[T2]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: sll [[T7]],[[T7]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T7]]
-; MIPS32: move [[T10]],a3
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T12]],[[T3]]
-; MIPS32: srl [[T12]],[[T12]],0x8
-; MIPS32: andi [[T12]],[[T12]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sltu [[T12]],[[T12]],[[T10]]
-; MIPS32: andi [[T12]],[[T12]],0xff
-; MIPS32: sll [[T12]],[[T12]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T11]],[[T11]],[[T10]]
-; MIPS32: or [[T12]],[[T12]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T12]],[[T12]],[[T10]]
-; MIPS32: or [[T11]],[[T11]],[[T12]]
-; MIPS32: srl [[T13:.*]],a3,0x18
-; MIPS32: srl [[T3]],[[T3]],0x18
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T3]],[[T3]],0x18
-; MIPS32: sltu [[T3]],[[T3]],[[T13]]
-; MIPS32: sll [[T3]],[[T3]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x8
-; MIPS32: srl [[T11]],[[T11]],0x8
-; MIPS32: or [[T3]],[[T3]],[[T11]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <16 x i1> @test_icmp_v16i8_ule(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %res = icmp ule <16 x i8> %a, %b
-  ret <16 x i1> %res
-; CHECK-LABEL: test_icmp_v16i8_ule
-; CHECK: pxor
-; CHECK: pcmpgtb
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v16i8_ule
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: sltu [[T9]],[[T9]],[[T8]]
-; MIPS32: xori [[T9]],[[T9]],0x1
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T9]],[[T9]],[[T4]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: move [[T8]],[[T0]]
-; MIPS32: srl [[T8]],[[T8]],0x8
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sll [[T8]],[[T8]],0x18
-; MIPS32: sltu [[T8]],[[T8]],[[T4]]
-; MIPS32: xori [[T8]],[[T8]],0x1
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x8
-; MIPS32: lui [[T4]],0xffff
-; MIPS32: ori [[T4]],[[T4]],0xff
-; MIPS32: and [[T9]],[[T9]],[[T4]]
-; MIPS32: or [[T8]],[[T8]],[[T9]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: sltu [[T9]],[[T9]],[[T4]]
-; MIPS32: xori [[T9]],[[T9]],0x1
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: lui [[T4]],0xff00
-; MIPS32: ori [[T4]],[[T4]],0xffff
-; MIPS32: and [[T8]],[[T8]],[[T4]]
-; MIPS32: or [[T9]],[[T9]],[[T8]]
-; MIPS32: srl [[T10:.*]],a0,0x18
-; MIPS32: srl [[T0]],[[T0]],0x18
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sltu [[T0]],[[T0]],[[T10]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x8
-; MIPS32: srl [[T9]],[[T9]],0x8
-; MIPS32: or v0,[[T0]],[[T9]]
-; MIPS32: move [[T10]],a1
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sltu [[T4]],[[T4]],[[T10]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: move [[T10]],a1
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T5]],[[T5]],0x18
-; MIPS32: sltu [[T5]],[[T5]],[[T10]]
-; MIPS32: xori [[T5]],[[T5]],0x1
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T4]],[[T4]],[[T10]]
-; MIPS32: or [[T5]],[[T5]],[[T4]]
-; MIPS32: move [[T10]],a1
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sltu [[T4]],[[T4]],[[T10]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T5]],[[T5]],[[T10]]
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x18
-; MIPS32: srl [[T1]],[[T1]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sltu [[T1]],[[T1]],[[T11]]
-; MIPS32: xori [[T1]],[[T1]],0x1
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: or v1,[[T1]],[[T4]]
-; MIPS32: move [[T10]],a2
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: sll [[T6]],[[T6]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T6]]
-; MIPS32: move [[T10]],a2
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sltu [[T4]],[[T4]],[[T10]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T11]],[[T11]],[[T10]]
-; MIPS32: or [[T4]],[[T4]],[[T11]]
-; MIPS32: move [[T10]],a2
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T10]]
-; MIPS32: or [[T11]],[[T11]],[[T4]]
-; MIPS32: srl [[T12:.*]],a2,0x18
-; MIPS32: srl [[T2]],[[T2]],0x18
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: sltu [[T2]],[[T2]],[[T12]]
-; MIPS32: xori [[T2]],[[T2]],0x1
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x8
-; MIPS32: srl [[T11]],[[T11]],0x8
-; MIPS32: or [[T2]],[[T2]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: sll [[T7]],[[T7]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T7]]
-; MIPS32: move [[T10]],a3
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T12]],[[T3]]
-; MIPS32: srl [[T12]],[[T12]],0x8
-; MIPS32: andi [[T12]],[[T12]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sltu [[T12]],[[T12]],[[T10]]
-; MIPS32: xori [[T12]],[[T12]],0x1
-; MIPS32: andi [[T12]],[[T12]],0xff
-; MIPS32: sll [[T12]],[[T12]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T11]],[[T11]],[[T10]]
-; MIPS32: or [[T12]],[[T12]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T12]],[[T12]],[[T10]]
-; MIPS32: or [[T11]],[[T11]],[[T12]]
-; MIPS32: srl [[T13:.*]],a3,0x18
-; MIPS32: srl [[T3]],[[T3]],0x18
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T3]],[[T3]],0x18
-; MIPS32: sltu [[T3]],[[T3]],[[T13]]
-; MIPS32: xori [[T3]],[[T3]],0x1
-; MIPS32: sll [[T3]],[[T3]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x8
-; MIPS32: srl [[T11]],[[T11]],0x8
-; MIPS32: or [[T3]],[[T3]],[[T11]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <16 x i1> @test_icmp_v16i8_ult(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %res = icmp ult <16 x i8> %a, %b
-  ret <16 x i1> %res
-; CHECK-LABEL: test_icmp_v16i8_ult
-; CHECK: pxor
-; CHECK: pcmpgtb
-
-; MIPS32-LABEL: test_icmp_v16i8_ult
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: sltu [[T8]],[[T8]],[[T9]]
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x8
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: sltu [[T4]],[[T4]],[[T9]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T9]],0xffff
-; MIPS32: ori [[T9]],[[T9]],0xff
-; MIPS32: and [[T8]],[[T8]],[[T9]]
-; MIPS32: or [[T4]],[[T4]],[[T8]]
-; MIPS32: move [[T8]],a0
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x18
-; MIPS32: sltu [[T8]],[[T8]],[[T9]]
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: lui [[T9]],0xff00
-; MIPS32: ori [[T9]],[[T9]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T9]]
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x18
-; MIPS32: srl [[T0]],[[T0]],0x18
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sltu [[T10]],[[T10]],[[T0]]
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T8]],[[T8]],0x8
-; MIPS32: srl [[T8]],[[T8]],0x8
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sltu [[T0]],[[T0]],[[T4]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: move [[T4]],a1
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sll [[T5]],[[T5]],0x18
-; MIPS32: sltu [[T4]],[[T4]],[[T5]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T5]],0xffff
-; MIPS32: ori [[T5]],[[T5]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T5]]
-; MIPS32: or [[T4]],[[T4]],[[T0]]
-; MIPS32: move [[T0]],a1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T5]],[[T5]],0x18
-; MIPS32: sltu [[T0]],[[T0]],[[T5]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T5]],0xff00
-; MIPS32: ori [[T5]],[[T5]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T5]]
-; MIPS32: or [[T0]],[[T0]],[[T4]]
-; MIPS32: srl [[T11:.*]],a1,0x18
-; MIPS32: srl [[T1]],[[T1]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sltu [[T11]],[[T11]],[[T1]]
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sltu [[T0]],[[T0]],[[T1]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: sll [[T6]],[[T6]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: move [[T1]],a2
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sltu [[T1]],[[T1]],[[T4]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T4]],0xffff
-; MIPS32: ori [[T4]],[[T4]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T4]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x18
-; MIPS32: sltu [[T0]],[[T0]],[[T4]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T4]],0xff00
-; MIPS32: ori [[T4]],[[T4]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T4]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T12:.*]],a2,0x18
-; MIPS32: srl [[T2]],[[T2]],0x18
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: sltu [[T12]],[[T12]],[[T2]]
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sltu [[T0]],[[T0]],[[T1]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: sll [[T7]],[[T7]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: move [[T1]],a3
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x8
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: sltu [[T1]],[[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T2]],0xffff
-; MIPS32: ori [[T2]],[[T2]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T2]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: sltu [[T0]],[[T0]],[[T2]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T2]],0xff00
-; MIPS32: ori [[T2]],[[T2]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T2]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T13:.*]],a3,0x18
-; MIPS32: srl [[T3]],[[T3]],0x18
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T3]],[[T3]],0x18
-; MIPS32: sltu [[T13]],[[T13]],[[T3]]
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <16 x i1> @test_icmp_v16i1_eq(<16 x i1> %a, <16 x i1> %b) {
-entry:
-  %res = icmp eq <16 x i1> %a, %b
-  ret <16 x i1> %res
-; CHECK-LABEL: test_icmp_v16i1_eq
-; CHECK: pcmpeqb
-
-; MIPS32-LABEL: test_icmp_v16i1_eq
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: xor [[T8]],[[T8]],[[T9]]
-; MIPS32: sltiu [[T8]],[[T8]],1
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x8
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: xor [[T4]],[[T4]],[[T9]]
-; MIPS32: sltiu [[T4]],[[T4]],1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T9]],0xffff
-; MIPS32: ori [[T9]],[[T9]],0xff
-; MIPS32: and [[T8]],[[T8]],[[T9]]
-; MIPS32: or [[T4]],[[T4]],[[T8]]
-; MIPS32: move [[T8]],a0
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: xor [[T8]],[[T8]],[[T9]]
-; MIPS32: sltiu [[T8]],[[T8]],1
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: lui [[T9]],0xff00
-; MIPS32: ori [[T9]],[[T9]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T9]]
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x18
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x18
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: xor [[T10]],[[T10]],[[T0]]
-; MIPS32: sltiu [[T10]],[[T10]],1
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T8]],[[T8]],0x8
-; MIPS32: srl [[T8]],[[T8]],0x8
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: xor [[T0]],[[T0]],[[T4]]
-; MIPS32: sltiu [[T0]],[[T0]],1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: move [[T4]],a1
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: andi [[T5]],[[T5]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: xor [[T4]],[[T4]],[[T5]]
-; MIPS32: sltiu [[T4]],[[T4]],1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T5]],0xffff
-; MIPS32: ori [[T5]],[[T5]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T5]]
-; MIPS32: or [[T4]],[[T4]],[[T0]]
-; MIPS32: move [[T0]],a1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: andi [[T5]],[[T5]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: xor [[T0]],[[T0]],[[T5]]
-; MIPS32: sltiu [[T0]],[[T0]],1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T5]],0xff00
-; MIPS32: ori [[T5]],[[T5]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T5]]
-; MIPS32: or [[T0]],[[T0]],[[T4]]
-; MIPS32: srl [[T11:.*]],a1,0x18
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x18
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: xor [[T11]],[[T11]],[[T1]]
-; MIPS32: sltiu [[T11]],[[T11]],1
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: xor [[T0]],[[T0]],[[T1]]
-; MIPS32: sltiu [[T0]],[[T0]],1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: sll [[T6]],[[T6]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: move [[T1]],a2
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: xor [[T1]],[[T1]],[[T4]]
-; MIPS32: sltiu [[T1]],[[T1]],1
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T4]],0xffff
-; MIPS32: ori [[T4]],[[T4]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T4]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: xor [[T0]],[[T0]],[[T4]]
-; MIPS32: sltiu [[T0]],[[T0]],1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T4]],0xff00
-; MIPS32: ori [[T4]],[[T4]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T4]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T12:.*]],a2,0x18
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x18
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: xor [[T12]],[[T12]],[[T2]]
-; MIPS32: sltiu [[T12]],[[T12]],1
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: xor [[T0]],[[T0]],[[T1]]
-; MIPS32: sltiu [[T0]],[[T0]],1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: sll [[T7]],[[T7]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: move [[T1]],a3
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x8
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: xor [[T1]],[[T1]],[[T2]]
-; MIPS32: sltiu [[T1]],[[T1]],1
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T2]],0xffff
-; MIPS32: ori [[T2]],[[T2]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T2]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: xor [[T0]],[[T0]],[[T2]]
-; MIPS32: sltiu [[T0]],[[T0]],1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T2]],0xff00
-; MIPS32: ori [[T2]],[[T2]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T2]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T13:.*]],a3,0x18
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x18
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: xor [[T13]],[[T13]],[[T3]]
-; MIPS32: sltiu [[T13]],[[T13]],1
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <16 x i1> @test_icmp_v16i1_ne(<16 x i1> %a, <16 x i1> %b) {
-entry:
-  %res = icmp ne <16 x i1> %a, %b
-  ret <16 x i1> %res
-; CHECK-LABEL: test_icmp_v16i1_ne
-; CHECK: pcmpeqb
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v16i1_ne
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: xor [[T8]],[[T8]],[[T9]]
-; MIPS32: sltu [[T8]],zero,[[T8]]
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x8
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: xor [[T4]],[[T4]],[[T9]]
-; MIPS32: sltu [[T4]],zero,[[T4]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T9]],0xffff
-; MIPS32: ori [[T9]],[[T9]],0xff
-; MIPS32: and [[T8]],[[T8]],[[T9]]
-; MIPS32: or [[T4]],[[T4]],[[T8]]
-; MIPS32: move [[T8]],a0
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: xor [[T8]],[[T8]],[[T9]]
-; MIPS32: sltu [[T8]],zero,[[T8]]
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: lui [[T9]],0xff00
-; MIPS32: ori [[T9]],[[T9]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T9]]
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x18
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x18
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: xor [[T10]],[[T10]],[[T0]]
-; MIPS32: sltu [[T10]],zero,[[T10]]
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T8]],[[T8]],0x8
-; MIPS32: srl [[T8]],[[T8]],0x8
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: xor [[T0]],[[T0]],[[T4]]
-; MIPS32: sltu [[T0]],zero,[[T0]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: move [[T4]],a1
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: andi [[T5]],[[T5]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: xor [[T4]],[[T4]],[[T5]]
-; MIPS32: sltu [[T4]],zero,[[T4]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T5]],0xffff
-; MIPS32: ori [[T5]],[[T5]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T5]]
-; MIPS32: or [[T4]],[[T4]],[[T0]]
-; MIPS32: move [[T0]],a1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: andi [[T5]],[[T5]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: xor [[T0]],[[T0]],[[T5]]
-; MIPS32: sltu [[T0]],zero,[[T0]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T5]],0xff00
-; MIPS32: ori [[T5]],[[T5]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T5]]
-; MIPS32: or [[T0]],[[T0]],[[T4]]
-; MIPS32: srl [[T11:.*]],a1,0x18
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x18
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: xor [[T11]],[[T11]],[[T1]]
-; MIPS32: sltu [[T11]],zero,[[T11]]
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: xor [[T0]],[[T0]],[[T1]]
-; MIPS32: sltu [[T0]],zero,[[T0]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: sll [[T6]],[[T6]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: move [[T1]],a2
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: xor [[T1]],[[T1]],[[T4]]
-; MIPS32: sltu [[T1]],zero,[[T1]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T4]],0xffff
-; MIPS32: ori [[T4]],[[T4]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T4]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: xor [[T0]],[[T0]],[[T4]]
-; MIPS32: sltu [[T0]],zero,[[T0]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T4]],0xff00
-; MIPS32: ori [[T4]],[[T4]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T4]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T12:.*]],a2,0x18
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x18
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: xor [[T12]],[[T12]],[[T2]]
-; MIPS32: sltu [[T12]],zero,[[T12]]
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: xor [[T0]],[[T0]],[[T1]]
-; MIPS32: sltu [[T0]],zero,[[T0]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: sll [[T7]],[[T7]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: move [[T1]],a3
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x8
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: xor [[T1]],[[T1]],[[T2]]
-; MIPS32: sltu [[T1]],zero,[[T1]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T2]],0xffff
-; MIPS32: ori [[T2]],[[T2]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T2]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: xor [[T0]],[[T0]],[[T2]]
-; MIPS32: sltu [[T0]],zero,[[T0]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T2]],0xff00
-; MIPS32: ori [[T2]],[[T2]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T2]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T13:.*]],a3,0x18
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x18
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: xor [[T13]],[[T13]],[[T3]]
-; MIPS32: sltu [[T13]],zero,[[T13]]
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <16 x i1> @test_icmp_v16i1_sgt(<16 x i1> %a, <16 x i1> %b) {
-entry:
-  %res = icmp sgt <16 x i1> %a, %b
-  ret <16 x i1> %res
-; CHECK-LABEL: test_icmp_v16i1_sgt
-; CHECK: pcmpgtb
-
-; MIPS32-LABEL: test_icmp_v16i1_sgt
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: slt [[T9]],[[T9]],[[T8]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T9]],[[T9]],[[T4]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: move [[T8]],[[T0]]
-; MIPS32: srl [[T8]],[[T8]],0x8
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: slt [[T8]],[[T8]],[[T4]]
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x8
-; MIPS32: lui [[T4]],0xffff
-; MIPS32: ori [[T4]],[[T4]],0xff
-; MIPS32: and [[T9]],[[T9]],[[T4]]
-; MIPS32: or [[T8]],[[T8]],[[T9]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: slt [[T9]],[[T9]],[[T4]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: lui [[T4]],0xff00
-; MIPS32: ori [[T4]],[[T4]],0xffff
-; MIPS32: and [[T8]],[[T8]],[[T4]]
-; MIPS32: or [[T9]],[[T9]],[[T8]]
-; MIPS32: srl [[T10:.*]],a0,0x18
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x18
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: slt [[T0]],[[T0]],[[T10]]
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x8
-; MIPS32: srl [[T9]],[[T9]],0x8
-; MIPS32: or v0,[[T0]],[[T9]]
-; MIPS32: move [[T10]],a1
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: slt [[T4]],[[T4]],[[T10]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: move [[T10]],a1
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: andi [[T5]],[[T5]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: slt [[T5]],[[T5]],[[T10]]
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T4]],[[T4]],[[T10]]
-; MIPS32: or [[T5]],[[T5]],[[T4]]
-; MIPS32: move [[T10]],a1
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: slt [[T4]],[[T4]],[[T10]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T5]],[[T5]],[[T10]]
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x18
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x18
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: slt [[T1]],[[T1]],[[T11]]
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: or v1,[[T1]],[[T4]]
-; MIPS32: move [[T10]],a2
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: sll [[T6]],[[T6]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T6]]
-; MIPS32: move [[T10]],a2
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: slt [[T4]],[[T4]],[[T10]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T11]],[[T11]],[[T10]]
-; MIPS32: or [[T4]],[[T4]],[[T11]]
-; MIPS32: move [[T10]],a2
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T10]]
-; MIPS32: or [[T11]],[[T11]],[[T4]]
-; MIPS32: srl [[T12:.*]],a2,0x18
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x18
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: slt [[T2]],[[T2]],[[T12]]
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x8
-; MIPS32: srl [[T11]],[[T11]],0x8
-; MIPS32: or [[T2]],[[T2]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: sll [[T7]],[[T7]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T7]]
-; MIPS32: move [[T10]],a3
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T12]],[[T3]]
-; MIPS32: srl [[T12]],[[T12]],0x8
-; MIPS32: andi [[T12]],[[T12]],0xff
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: slt [[T12]],[[T12]],[[T10]]
-; MIPS32: andi [[T12]],[[T12]],0xff
-; MIPS32: sll [[T12]],[[T12]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T11]],[[T11]],[[T10]]
-; MIPS32: or [[T12]],[[T12]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T12]],[[T12]],[[T10]]
-; MIPS32: or [[T11]],[[T11]],[[T12]]
-; MIPS32: srl [[T13:.*]],a3,0x18
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x18
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: slt [[T3]],[[T3]],[[T13]]
-; MIPS32: sll [[T3]],[[T3]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x8
-; MIPS32: srl [[T11]],[[T11]],0x8
-; MIPS32: or [[T3]],[[T3]],[[T11]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <16 x i1> @test_icmp_v16i1_sle(<16 x i1> %a, <16 x i1> %b) {
-entry:
-  %res = icmp sle <16 x i1> %a, %b
-  ret <16 x i1> %res
-; CHECK-LABEL: test_icmp_v16i1_sle
-; CHECK: pcmpgtb
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v16i1_sle
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: slt [[T9]],[[T9]],[[T8]]
-; MIPS32: xori [[T9]],[[T9]],0x1
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T9]],[[T9]],[[T4]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: move [[T8]],[[T0]]
-; MIPS32: srl [[T8]],[[T8]],0x8
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: slt [[T8]],[[T8]],[[T4]]
-; MIPS32: xori [[T8]],[[T8]],0x1
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x8
-; MIPS32: lui [[T4]],0xffff
-; MIPS32: ori [[T4]],[[T4]],0xff
-; MIPS32: and [[T9]],[[T9]],[[T4]]
-; MIPS32: or [[T8]],[[T8]],[[T9]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: slt [[T9]],[[T9]],[[T4]]
-; MIPS32: xori [[T9]],[[T9]],0x1
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: lui [[T4]],0xff00
-; MIPS32: ori [[T4]],[[T4]],0xffff
-; MIPS32: and [[T8]],[[T8]],[[T4]]
-; MIPS32: or [[T9]],[[T9]],[[T8]]
-; MIPS32: srl [[T10:.*]],a0,0x18
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x18
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: slt [[T0]],[[T0]],[[T10]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x8
-; MIPS32: srl [[T9]],[[T9]],0x8
-; MIPS32: or v0,[[T0]],[[T9]]
-; MIPS32: move [[T10]],a1
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: slt [[T4]],[[T4]],[[T10]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: move [[T10]],a1
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: andi [[T5]],[[T5]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: slt [[T5]],[[T5]],[[T10]]
-; MIPS32: xori [[T5]],[[T5]],0x1
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T4]],[[T4]],[[T10]]
-; MIPS32: or [[T5]],[[T5]],[[T4]]
-; MIPS32: move [[T10]],a1
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: slt [[T4]],[[T4]],[[T10]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T5]],[[T5]],[[T10]]
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x18
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x18
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: slt [[T1]],[[T1]],[[T11]]
-; MIPS32: xori [[T1]],[[T1]],0x1
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: or v1,[[T1]],[[T4]]
-; MIPS32: move [[T10]],a2
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: sll [[T6]],[[T6]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T6]]
-; MIPS32: move [[T10]],a2
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: slt [[T4]],[[T4]],[[T10]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T11]],[[T11]],[[T10]]
-; MIPS32: or [[T4]],[[T4]],[[T11]]
-; MIPS32: move [[T10]],a2
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T10]]
-; MIPS32: or [[T11]],[[T11]],[[T4]]
-; MIPS32: srl [[T12:.*]],a2,0x18
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x18
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: slt [[T2]],[[T2]],[[T12]]
-; MIPS32: xori [[T2]],[[T2]],0x1
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x8
-; MIPS32: srl [[T11]],[[T11]],0x8
-; MIPS32: or [[T2]],[[T2]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: sll [[T7]],[[T7]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T7]]
-; MIPS32: move [[T10]],a3
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T12]],[[T3]]
-; MIPS32: srl [[T12]],[[T12]],0x8
-; MIPS32: andi [[T12]],[[T12]],0xff
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: slt [[T12]],[[T12]],[[T10]]
-; MIPS32: xori [[T12]],[[T12]],0x1
-; MIPS32: andi [[T12]],[[T12]],0xff
-; MIPS32: sll [[T12]],[[T12]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T11]],[[T11]],[[T10]]
-; MIPS32: or [[T12]],[[T12]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: slt [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T12]],[[T12]],[[T10]]
-; MIPS32: or [[T11]],[[T11]],[[T12]]
-; MIPS32: srl [[T13:.*]],a3,0x18
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x18
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: slt [[T3]],[[T3]],[[T13]]
-; MIPS32: xori [[T3]],[[T3]],0x1
-; MIPS32: sll [[T3]],[[T3]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x8
-; MIPS32: srl [[T11]],[[T11]],0x8
-; MIPS32: or [[T3]],[[T3]],[[T11]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <16 x i1> @test_icmp_v16i1_slt(<16 x i1> %a, <16 x i1> %b) {
-entry:
-  %res = icmp slt <16 x i1> %a, %b
-  ret <16 x i1> %res
-; CHECK-LABEL: test_icmp_v16i1_slt
-; CHECK: pcmpgtb
-
-; MIPS32-LABEL: test_icmp_v16i1_slt
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: slt [[T8]],[[T8]],[[T9]]
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x8
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: slt [[T4]],[[T4]],[[T9]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T9]],0xffff
-; MIPS32: ori [[T9]],[[T9]],0xff
-; MIPS32: and [[T8]],[[T8]],[[T9]]
-; MIPS32: or [[T4]],[[T4]],[[T8]]
-; MIPS32: move [[T8]],a0
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: slt [[T8]],[[T8]],[[T9]]
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: lui [[T9]],0xff00
-; MIPS32: ori [[T9]],[[T9]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T9]]
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x18
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x18
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: slt [[T10]],[[T10]],[[T0]]
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T8]],[[T8]],0x8
-; MIPS32: srl [[T8]],[[T8]],0x8
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: slt [[T0]],[[T0]],[[T4]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: move [[T4]],a1
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: andi [[T5]],[[T5]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: slt [[T4]],[[T4]],[[T5]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T5]],0xffff
-; MIPS32: ori [[T5]],[[T5]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T5]]
-; MIPS32: or [[T4]],[[T4]],[[T0]]
-; MIPS32: move [[T0]],a1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: andi [[T5]],[[T5]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: slt [[T0]],[[T0]],[[T5]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T5]],0xff00
-; MIPS32: ori [[T5]],[[T5]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T5]]
-; MIPS32: or [[T0]],[[T0]],[[T4]]
-; MIPS32: srl [[T11:.*]],a1,0x18
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x18
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: slt [[T11]],[[T11]],[[T1]]
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: slt [[T0]],[[T0]],[[T1]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: sll [[T6]],[[T6]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: move [[T1]],a2
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: slt [[T1]],[[T1]],[[T4]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T4]],0xffff
-; MIPS32: ori [[T4]],[[T4]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T4]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: slt [[T0]],[[T0]],[[T4]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T4]],0xff00
-; MIPS32: ori [[T4]],[[T4]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T4]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T12:.*]],a2,0x18
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x18
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: slt [[T12]],[[T12]],[[T2]]
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: slt [[T0]],[[T0]],[[T1]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: sll [[T7]],[[T7]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: move [[T1]],a3
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x8
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: slt [[T1]],[[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T2]],0xffff
-; MIPS32: ori [[T2]],[[T2]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T2]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: slt [[T0]],[[T0]],[[T2]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T2]],0xff00
-; MIPS32: ori [[T2]],[[T2]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T2]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T13:.*]],a3,0x18
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x18
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: slt [[T13]],[[T13]],[[T3]]
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <16 x i1> @test_icmp_v16i1_uge(<16 x i1> %a, <16 x i1> %b) {
-entry:
-  %res = icmp uge <16 x i1> %a, %b
-  ret <16 x i1> %res
-; CHECK-LABEL: test_icmp_v16i1_uge
-; CHECK: pxor
-; CHECK: pcmpgtb
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v16i1_uge
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: sltu [[T8]],[[T8]],[[T9]]
-; MIPS32: xori [[T8]],[[T8]],0x1
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x8
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: sltu [[T4]],[[T4]],[[T9]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T9]],0xffff
-; MIPS32: ori [[T9]],[[T9]],0xff
-; MIPS32: and [[T8]],[[T8]],[[T9]]
-; MIPS32: or [[T4]],[[T4]],[[T8]]
-; MIPS32: move [[T8]],a0
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: sltu [[T8]],[[T8]],[[T9]]
-; MIPS32: xori [[T8]],[[T8]],0x1
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: lui [[T9]],0xff00
-; MIPS32: ori [[T9]],[[T9]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T9]]
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x18
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x18
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sltu [[T10]],[[T10]],[[T0]]
-; MIPS32: xori [[T10]],[[T10]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T8]],[[T8]],0x8
-; MIPS32: srl [[T8]],[[T8]],0x8
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T4]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: move [[T4]],a1
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: andi [[T5]],[[T5]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: sltu [[T4]],[[T4]],[[T5]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T5]],0xffff
-; MIPS32: ori [[T5]],[[T5]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T5]]
-; MIPS32: or [[T4]],[[T4]],[[T0]]
-; MIPS32: move [[T0]],a1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: andi [[T5]],[[T5]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T5]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T5]],0xff00
-; MIPS32: ori [[T5]],[[T5]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T5]]
-; MIPS32: or [[T0]],[[T0]],[[T4]]
-; MIPS32: srl [[T11:.*]],a1,0x18
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x18
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T11]],[[T11]],[[T1]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T1]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: sll [[T6]],[[T6]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: move [[T1]],a2
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sltu [[T1]],[[T1]],[[T4]]
-; MIPS32: xori [[T1]],[[T1]],0x1
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T4]],0xffff
-; MIPS32: ori [[T4]],[[T4]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T4]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T4]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T4]],0xff00
-; MIPS32: ori [[T4]],[[T4]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T4]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T12:.*]],a2,0x18
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x18
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: sltu [[T12]],[[T12]],[[T2]]
-; MIPS32: xori [[T12]],[[T12]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T1]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: sll [[T7]],[[T7]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: move [[T1]],a3
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x8
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: sltu [[T1]],[[T1]],[[T2]]
-; MIPS32: xori [[T1]],[[T1]],0x1
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T2]],0xffff
-; MIPS32: ori [[T2]],[[T2]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T2]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T2]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T2]],0xff00
-; MIPS32: ori [[T2]],[[T2]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T2]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T13:.*]],a3,0x18
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x18
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: sltu [[T13]],[[T13]],[[T3]]
-; MIPS32: xori [[T13]],[[T13]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
-
-define internal <16 x i1> @test_icmp_v16i1_ugt(<16 x i1> %a, <16 x i1> %b) {
-entry:
-  %res = icmp ugt <16 x i1> %a, %b
-  ret <16 x i1> %res
-; CHECK-LABEL: test_icmp_v16i1_ugt
-; CHECK: pxor
-; CHECK: pcmpgtb
-
-; MIPS32-LABEL: test_icmp_v16i1_ugt
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: sltu [[T9]],[[T9]],[[T8]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T9]],[[T9]],[[T4]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: move [[T8]],[[T0]]
-; MIPS32: srl [[T8]],[[T8]],0x8
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sltu [[T8]],[[T8]],[[T4]]
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x8
-; MIPS32: lui [[T4]],0xffff
-; MIPS32: ori [[T4]],[[T4]],0xff
-; MIPS32: and [[T9]],[[T9]],[[T4]]
-; MIPS32: or [[T8]],[[T8]],[[T9]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: sltu [[T9]],[[T9]],[[T4]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: lui [[T4]],0xff00
-; MIPS32: ori [[T4]],[[T4]],0xffff
-; MIPS32: and [[T8]],[[T8]],[[T4]]
-; MIPS32: or [[T9]],[[T9]],[[T8]]
-; MIPS32: srl [[T10:.*]],a0,0x18
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x18
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T10]]
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x8
-; MIPS32: srl [[T9]],[[T9]],0x8
-; MIPS32: or v0,[[T0]],[[T9]]
-; MIPS32: move [[T10]],a1
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sltu [[T4]],[[T4]],[[T10]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: move [[T10]],a1
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: andi [[T5]],[[T5]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: sltu [[T5]],[[T5]],[[T10]]
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T4]],[[T4]],[[T10]]
-; MIPS32: or [[T5]],[[T5]],[[T4]]
-; MIPS32: move [[T10]],a1
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sltu [[T4]],[[T4]],[[T10]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T5]],[[T5]],[[T10]]
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x18
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x18
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T1]],[[T1]],[[T11]]
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: or v1,[[T1]],[[T4]]
-; MIPS32: move [[T10]],a2
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: sll [[T6]],[[T6]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T6]]
-; MIPS32: move [[T10]],a2
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sltu [[T4]],[[T4]],[[T10]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T11]],[[T11]],[[T10]]
-; MIPS32: or [[T4]],[[T4]],[[T11]]
-; MIPS32: move [[T10]],a2
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T10]]
-; MIPS32: or [[T11]],[[T11]],[[T4]]
-; MIPS32: srl [[T12:.*]],a2,0x18
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x18
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: sltu [[T2]],[[T2]],[[T12]]
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x8
-; MIPS32: srl [[T11]],[[T11]],0x8
-; MIPS32: or [[T2]],[[T2]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: sll [[T7]],[[T7]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T7]]
-; MIPS32: move [[T10]],a3
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T12]],[[T3]]
-; MIPS32: srl [[T12]],[[T12]],0x8
-; MIPS32: andi [[T12]],[[T12]],0xff
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sltu [[T12]],[[T12]],[[T10]]
-; MIPS32: andi [[T12]],[[T12]],0xff
-; MIPS32: sll [[T12]],[[T12]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T11]],[[T11]],[[T10]]
-; MIPS32: or [[T12]],[[T12]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T12]],[[T12]],[[T10]]
-; MIPS32: or [[T11]],[[T11]],[[T12]]
-; MIPS32: srl [[T13:.*]],a3,0x18
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x18
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: sltu [[T3]],[[T3]],[[T13]]
-; MIPS32: sll [[T3]],[[T3]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x8
-; MIPS32: srl [[T11]],[[T11]],0x8
-; MIPS32: or [[T3]],[[T3]],[[T11]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <16 x i1> @test_icmp_v16i1_ule(<16 x i1> %a, <16 x i1> %b) {
-entry:
-  %res = icmp ule <16 x i1> %a, %b
-  ret <16 x i1> %res
-; CHECK-LABEL: test_icmp_v16i1_ule
-; CHECK: pxor
-; CHECK: pcmpgtb
-; CHECK: pxor
-
-; MIPS32-LABEL: test_icmp_v16i1_ule
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: sltu [[T9]],[[T9]],[[T8]]
-; MIPS32: xori [[T9]],[[T9]],0x1
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T9]],[[T9]],[[T4]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: move [[T8]],[[T0]]
-; MIPS32: srl [[T8]],[[T8]],0x8
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sltu [[T8]],[[T8]],[[T4]]
-; MIPS32: xori [[T8]],[[T8]],0x1
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x8
-; MIPS32: lui [[T4]],0xffff
-; MIPS32: ori [[T4]],[[T4]],0xff
-; MIPS32: and [[T9]],[[T9]],[[T4]]
-; MIPS32: or [[T8]],[[T8]],[[T9]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: sltu [[T9]],[[T9]],[[T4]]
-; MIPS32: xori [[T9]],[[T9]],0x1
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: sll [[T9]],[[T9]],0x10
-; MIPS32: lui [[T4]],0xff00
-; MIPS32: ori [[T4]],[[T4]],0xffff
-; MIPS32: and [[T8]],[[T8]],[[T4]]
-; MIPS32: or [[T9]],[[T9]],[[T8]]
-; MIPS32: srl [[T10:.*]],a0,0x18
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x18
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T10]]
-; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x18
-; MIPS32: sll [[T9]],[[T9]],0x8
-; MIPS32: srl [[T9]],[[T9]],0x8
-; MIPS32: or v0,[[T0]],[[T9]]
-; MIPS32: move [[T10]],a1
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sltu [[T4]],[[T4]],[[T10]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: move [[T10]],a1
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: andi [[T5]],[[T5]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: sltu [[T5]],[[T5]],[[T10]]
-; MIPS32: xori [[T5]],[[T5]],0x1
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T4]],[[T4]],[[T10]]
-; MIPS32: or [[T5]],[[T5]],[[T4]]
-; MIPS32: move [[T10]],a1
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sltu [[T4]],[[T4]],[[T10]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T5]],[[T5]],[[T10]]
-; MIPS32: or [[T4]],[[T4]],[[T5]]
-; MIPS32: srl [[T11:.*]],a1,0x18
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x18
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T1]],[[T1]],[[T11]]
-; MIPS32: xori [[T1]],[[T1]],0x1
-; MIPS32: sll [[T1]],[[T1]],0x18
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: or v1,[[T1]],[[T4]]
-; MIPS32: move [[T10]],a2
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: sll [[T6]],[[T6]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T6]]
-; MIPS32: move [[T10]],a2
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sltu [[T4]],[[T4]],[[T10]]
-; MIPS32: xori [[T4]],[[T4]],0x1
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T11]],[[T11]],[[T10]]
-; MIPS32: or [[T4]],[[T4]],[[T11]]
-; MIPS32: move [[T10]],a2
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T2]]
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T10]]
-; MIPS32: or [[T11]],[[T11]],[[T4]]
-; MIPS32: srl [[T12:.*]],a2,0x18
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x18
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: sltu [[T2]],[[T2]],[[T12]]
-; MIPS32: xori [[T2]],[[T2]],0x1
-; MIPS32: sll [[T2]],[[T2]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x8
-; MIPS32: srl [[T11]],[[T11]],0x8
-; MIPS32: or [[T2]],[[T2]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: sll [[T7]],[[T7]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T7]]
-; MIPS32: move [[T10]],a3
-; MIPS32: srl [[T10]],[[T10]],0x8
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T12]],[[T3]]
-; MIPS32: srl [[T12]],[[T12]],0x8
-; MIPS32: andi [[T12]],[[T12]],0xff
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sltu [[T12]],[[T12]],[[T10]]
-; MIPS32: xori [[T12]],[[T12]],0x1
-; MIPS32: andi [[T12]],[[T12]],0xff
-; MIPS32: sll [[T12]],[[T12]],0x8
-; MIPS32: lui [[T10]],0xffff
-; MIPS32: ori [[T10]],[[T10]],0xff
-; MIPS32: and [[T11]],[[T11]],[[T10]]
-; MIPS32: or [[T12]],[[T12]],[[T11]]
-; MIPS32: move [[T10]],a3
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0xff
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: move [[T11]],[[T3]]
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sltu [[T11]],[[T11]],[[T10]]
-; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: andi [[T11]],[[T11]],0xff
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: lui [[T10]],0xff00
-; MIPS32: ori [[T10]],[[T10]],0xffff
-; MIPS32: and [[T12]],[[T12]],[[T10]]
-; MIPS32: or [[T11]],[[T11]],[[T12]]
-; MIPS32: srl [[T13:.*]],a3,0x18
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x18
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: sltu [[T3]],[[T3]],[[T13]]
-; MIPS32: xori [[T3]],[[T3]],0x1
-; MIPS32: sll [[T3]],[[T3]],0x18
-; MIPS32: sll [[T11]],[[T11]],0x8
-; MIPS32: srl [[T11]],[[T11]],0x8
-; MIPS32: or [[T3]],[[T3]],[[T11]]
-; MIPS32: move a0,[[T2]]
-; MIPS32: move a1,[[T3]]
-}
-
-define internal <16 x i1> @test_icmp_v16i1_ult(<16 x i1> %a, <16 x i1> %b) {
-entry:
-  %res = icmp ult <16 x i1> %a, %b
-  ret <16 x i1> %res
-; CHECK-LABEL: test_icmp_v16i1_ult
-; CHECK: pxor
-; CHECK: pcmpgtb
-
-; MIPS32-LABEL: test_icmp_v16i1_ult
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: move [[T4:.*]],zero
-; MIPS32: move [[T5:.*]],zero
-; MIPS32: move [[T6:.*]],zero
-; MIPS32: move [[T7:.*]],zero
-; MIPS32: move [[T8:.*]],a0
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9:.*]],[[T0]]
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: sltu [[T8]],[[T8]],[[T9]]
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: move [[T4]],a0
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x8
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: sltu [[T4]],[[T4]],[[T9]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T9]],0xffff
-; MIPS32: ori [[T9]],[[T9]],0xff
-; MIPS32: and [[T8]],[[T8]],[[T9]]
-; MIPS32: or [[T4]],[[T4]],[[T8]]
-; MIPS32: move [[T8]],a0
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: move [[T9]],[[T0]]
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0xff
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: sll [[T8]],[[T8]],0x1f
-; MIPS32: sll [[T9]],[[T9]],0x1f
-; MIPS32: sltu [[T8]],[[T8]],[[T9]]
-; MIPS32: andi [[T8]],[[T8]],0xff
-; MIPS32: sll [[T8]],[[T8]],0x10
-; MIPS32: lui [[T9]],0xff00
-; MIPS32: ori [[T9]],[[T9]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T9]]
-; MIPS32: or [[T8]],[[T8]],[[T4]]
-; MIPS32: srl [[T10:.*]],a0,0x18
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x18
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: sll [[T10]],[[T10]],0x1f
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sltu [[T10]],[[T10]],[[T0]]
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T8]],[[T8]],0x8
-; MIPS32: srl [[T8]],[[T8]],0x8
-; MIPS32: or [[T10]],[[T10]],[[T8]]
-; MIPS32: move [[T0]],a1
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T4]],[[T1]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T4]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T5]]
-; MIPS32: move [[T4]],a1
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: andi [[T5]],[[T5]],0x1
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: sltu [[T4]],[[T4]],[[T5]]
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: lui [[T5]],0xffff
-; MIPS32: ori [[T5]],[[T5]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T5]]
-; MIPS32: or [[T4]],[[T4]],[[T0]]
-; MIPS32: move [[T0]],a1
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T5]],[[T1]]
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: andi [[T5]],[[T5]],0xff
-; MIPS32: andi [[T5]],[[T5]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T5]],[[T5]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T5]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T5]],0xff00
-; MIPS32: ori [[T5]],[[T5]],0xffff
-; MIPS32: and [[T4]],[[T4]],[[T5]]
-; MIPS32: or [[T0]],[[T0]],[[T4]]
-; MIPS32: srl [[T11:.*]],a1,0x18
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x18
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T11]],[[T11]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T11]],[[T11]],[[T1]]
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T1]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: sll [[T6]],[[T6]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T6]]
-; MIPS32: move [[T1]],a2
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sltu [[T1]],[[T1]],[[T4]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T4]],0xffff
-; MIPS32: ori [[T4]],[[T4]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T4]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a2
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T4]],[[T2]]
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: andi [[T4]],[[T4]],0xff
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T4]],[[T4]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T4]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T4]],0xff00
-; MIPS32: ori [[T4]],[[T4]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T4]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T12:.*]],a2,0x18
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x18
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T12]],[[T12]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: sltu [[T12]],[[T12]],[[T2]]
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T12]],[[T12]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T1]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T1]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: sll [[T7]],[[T7]],0x8
-; MIPS32: or [[T0]],[[T0]],[[T7]]
-; MIPS32: move [[T1]],a3
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x8
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T1]],[[T1]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: sltu [[T1]],[[T1]],[[T2]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: lui [[T2]],0xffff
-; MIPS32: ori [[T2]],[[T2]],0xff
-; MIPS32: and [[T0]],[[T0]],[[T2]]
-; MIPS32: or [[T1]],[[T1]],[[T0]]
-; MIPS32: move [[T0]],a3
-; MIPS32: srl [[T0]],[[T0]],0x10
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: move [[T2]],[[T3]]
-; MIPS32: srl [[T2]],[[T2]],0x10
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: sll [[T0]],[[T0]],0x1f
-; MIPS32: sll [[T2]],[[T2]],0x1f
-; MIPS32: sltu [[T0]],[[T0]],[[T2]]
-; MIPS32: andi [[T0]],[[T0]],0xff
-; MIPS32: sll [[T0]],[[T0]],0x10
-; MIPS32: lui [[T2]],0xff00
-; MIPS32: ori [[T2]],[[T2]],0xffff
-; MIPS32: and [[T1]],[[T1]],[[T2]]
-; MIPS32: or [[T0]],[[T0]],[[T1]]
-; MIPS32: srl [[T13:.*]],a3,0x18
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x18
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: sll [[T13]],[[T13]],0x1f
-; MIPS32: sll [[T3]],[[T3]],0x1f
-; MIPS32: sltu [[T13]],[[T13]],[[T3]]
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T0]],[[T0]],0x8
-; MIPS32: srl [[T0]],[[T0]],0x8
-; MIPS32: or [[T13]],[[T13]],[[T0]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/vector-mips.ll b/third_party/subzero/tests_lit/llvm2ice_tests/vector-mips.ll
deleted file mode 100644
index f937b0c..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/vector-mips.ll
+++ /dev/null
@@ -1,246 +0,0 @@
-; This test checks support for vector type in MIPS.
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target mips32\
-; RUN:   -i %s --args -O2 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-define internal i32 @test_0(<4 x i32> %a) #0 {
-entry:
-  %vecext = extractelement <4 x i32> %a, i32 0
-  ret i32 %vecext
-}
-; MIPS32-LABEL: test_0
-; MIPS32: move v0,a0
-
-define internal i32 @test_1(<4 x i32> %a) #0 {
-entry:
-  %vecext = extractelement <4 x i32> %a, i32 1
-  ret i32 %vecext
-}
-; MIPS32-LABEL: test_1
-; MIPS32: move v0,a1
-
-define internal i32 @test_2(<4 x i32> %a) #0 {
-entry:
-  %vecext = extractelement <4 x i32> %a, i32 2
-  ret i32 %vecext
-}
-; MIPS32-LABEL: test_2
-; MIPS32: move v0,a2
-
-define internal i32 @test_3(<4 x i32> %a) #0 {
-entry:
-  %vecext = extractelement <4 x i32> %a, i32 3
-  ret i32 %vecext
-}
-; MIPS32-LABEL: test_3
-; MIPS32: move v0,a3
-
-define internal float @test_4(<4 x float> %a) #0 {
-entry:
-  %vecext = extractelement <4 x float> %a, i32 1
-  ret float %vecext
-}
-; MIPS32-LABEL: test_4
-; MIPS32: mtc1 a1,$f0
-
-define internal float @test_5(<4 x float> %a) #0 {
-entry:
-  %vecext = extractelement <4 x float> %a, i32 2
-  ret float %vecext
-}
-; MIPS32-LABEL: test_5
-; MIPS32: mtc1 a2,$f0
-
-define internal i32 @test_6(<16 x i8> %a) #0 {
-entry:
-  %vecext = extractelement <16 x i8> %a, i32 0
-  %conv = sext i8 %vecext to i32
-  ret i32 %conv
-}
-; MIPS32-LABEL: test_6
-; MIPS32: andi a0,a0,0xff
-; MIPS32: sll a0,a0,0x18
-; MIPS32: sra a0,a0,0x18
-; MIPS32: move v0,a0
-
-define internal i32 @test_7(<16 x i8> %a) #0 {
-entry:
-  %vecext = extractelement <16 x i8> %a, i32 15
-  %conv = sext i8 %vecext to i32
-  ret i32 %conv
-}
-; MIPS32-LABEL: test_7
-; MIPS32: srl a3,a3,0x18
-; MIPS32: sll a3,a3,0x18
-; MIPS32: sra a3,a3,0x18
-; MIPS32: move v0,a3
-
-define internal i32 @test_8(<8 x i16> %a) #0 {
-entry:
-  %vecext = extractelement <8 x i16> %a, i32 0
-  %conv = sext i16 %vecext to i32
-  ret i32 %conv
-}
-; MIPS32-LABEL: test_8
-; MIPS32: andi a0,a0,0xffff
-; MIPS32: sll a0,a0,0x10
-; MIPS32: sra a0,a0,0x10
-; MIPS32: move v0,a0
-
-define internal i32 @test_9(<8 x i16> %a) #0 {
-entry:
-  %vecext = extractelement <8 x i16> %a, i32 7
-  %conv = sext i16 %vecext to i32
-  ret i32 %conv
-}
-; MIPS32-LABEL: test_9
-; MIPS32: srl a3,a3,0x10
-; MIPS32: sll a3,a3,0x10
-; MIPS32: sra a3,a3,0x10
-; MIPS32: move v0,a3
-
-define internal i32 @test_10(<4 x i1> %a) #0 {
-entry:
-  %vecext = extractelement <4 x i1> %a, i32 0
-  %conv = sext i1 %vecext to i32
-  ret i32 %conv
-}
-; MIPS32-LABEL: test_10
-; MIPS32: andi a0,a0,0x1
-; MIPS32: sll a0,a0,0x1f
-; MIPS32: sra a0,a0,0x1f
-; MIPS32: move v0,a0
-
-define internal i32 @test_11(<4 x i1> %a) #0 {
-entry:
-  %vecext = extractelement <4 x i1> %a, i32 2
-  %conv = sext i1 %vecext to i32
-  ret i32 %conv
-}
-; MIPS32-LABEL: test_11
-; MIPS32: andi a2,a2,0x1
-; MIPS32: sll a2,a2,0x1f
-; MIPS32: sra a2,a2,0x1f
-; MIPS32: move v0,a2
-
-define internal i32 @test_12(<8 x i1> %a) #0 {
-entry:
-  %vecext = extractelement <8 x i1> %a, i32 0
-  %conv = sext i1 %vecext to i32
-  ret i32 %conv
-}
-; MIPS32-LABEL: test_12
-; MIPS32: andi a0,a0,0xffff
-; MIPS32: andi a0,a0,0x1
-; MIPS32: sll a0,a0,0x1f
-; MIPS32: sra a0,a0,0x1f
-; MIPS32: move v0,a0
-
-define internal i32 @test_13(<8 x i1> %a) #0 {
-entry:
-  %vecext = extractelement <8 x i1> %a, i32 7
-  %conv = sext i1 %vecext to i32
-  ret i32 %conv
-}
-; MIPS32-LABEL: test_13
-; MIPS32: srl a3,a3,0x10
-; MIPS32: andi a3,a3,0x1
-; MIPS32: sll a3,a3,0x1f
-; MIPS32: sra a3,a3,0x1f
-; MIPS32: move v0,a3
-
-define internal i32 @test_14(<16 x i1> %a) #0 {
-entry:
-  %vecext = extractelement <16 x i1> %a, i32 0
-  %conv = sext i1 %vecext to i32
-  ret i32 %conv
-}
-; MIPS32-LABEL: test_14
-; MIPS32: andi a0,a0,0xff
-; MIPS32: andi a0,a0,0x1
-; MIPS32: sll a0,a0,0x1f
-; MIPS32: sra a0,a0,0x1f
-; MIPS32: move v0,a0
-
-define internal i32 @test_15(<16 x i1> %a) #0 {
-entry:
-  %vecext = extractelement <16 x i1> %a, i32 15
-  %conv = sext i1 %vecext to i32
-  ret i32 %conv
-}
-; MIPS32-LABEL: test_15
-; MIPS32: srl a3,a3,0x18
-; MIPS32: andi a3,a3,0x1
-; MIPS32: sll a3,a3,0x1f
-; MIPS32: sra a3,a3,0x1f
-; MIPS32: move v0,a3
-
-define internal i32 @test_16(i32 %i, <4 x i32> %a) #0 {
-entry:
-  %vecext = extractelement <4 x i32> %a, i32 0
-  %add = add nsw i32 %vecext, %i
-  ret i32 %add
-}
-; MIPS32-LABEL: test_16
-; MIPS32: addu a2,a2,a0
-; MIPS32: move v0,a2
-
-define internal i32 @test_17(i32 %i, <4 x i32> %a) #0 {
-entry:
-  %vecext = extractelement <4 x i32> %a, i32 3
-  %add = add nsw i32 %vecext, %i
-  ret i32 %add
-}
-; MIPS32-LABEL: test_17
-; MIPS32: lw v0,{{.*}}(sp)
-; MIPS32: addu v0,v0,a0
-
-define internal float @test_18(float %f, <4 x float> %a) #0 {
-entry:
-  %vecext = extractelement <4 x float> %a, i32 0
-  %add = fadd float %vecext, %f
-  ret float %add
-}
-; MIPS32-LABEL: test_18
-; MIPS32: mtc1 a2,$f0
-; MIPS32: add.s $f0,$f0,$f12
-
-define internal float @test_19(float %f, <4 x float> %a) #0 {
-entry:
-  %vecext = extractelement <4 x float> %a, i32 3
-  %add = fadd float %vecext, %f
-  ret float %add
-}
-; MIPS32-LABEL: test_19
-; MIPS32: lw v0,{{.*}}(sp)
-; MIPS32: mtc1 v0,$f0
-; MIPS32: add.s $f0,$f0,$f12
-
-define internal <4 x float> @test_20(i32 %addr_i, <4 x float> %addend) {
-entry:
-  %addr = inttoptr i32 %addr_i to <4 x float>*
-  %loaded = load <4 x float>, <4 x float>* %addr, align 4
-  %result = fadd <4 x float> %addend, %loaded
-  ret <4 x float> %result
-}
-; MIPS32-LABEL: test_20
-; MIPS32: add.s
-; MIPS32: add.s
-; MIPS32: add.s
-; MIPS32: add.s
-
-define internal <4 x i32> @test_21(i32 %addr_i, <4 x i32> %addend) {
-entry:
-  %addr = inttoptr i32 %addr_i to <4 x i32>*
-  %loaded = load <4 x i32>, <4 x i32>* %addr, align 4
-  %result = add <4 x i32> %addend, %loaded
-  ret <4 x i32> %result
-}
-; MIPS32-LABEL: test_21
-; MIPS32: add
-; MIPS32: add
-; MIPS32: add
-; MIPS32: add
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/vector-ops.ll b/third_party/subzero/tests_lit/llvm2ice_tests/vector-ops.ll
deleted file mode 100644
index 5145ad3..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/vector-ops.ll
+++ /dev/null
@@ -1,371 +0,0 @@
-; This checks support for insertelement and extractelement.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:   | FileCheck %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \
-; RUN:   | FileCheck %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 -mattr=sse4.1 \
-; RUN:   | FileCheck --check-prefix=SSE41 %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 -mattr=sse4.1 \
-; RUN:   | FileCheck --check-prefix=SSE41 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target mips32\
-; RUN:   -i %s --args -O2 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-; insertelement operations
-
-define internal <4 x float> @insertelement_v4f32_0(<4 x float> %vec,
-                                                   float %elt) {
-entry:
-  %res = insertelement <4 x float> %vec, float %elt, i32 0
-  ret <4 x float> %res
-; CHECK-LABEL: insertelement_v4f32_0
-; CHECK: movss
-
-; SSE41-LABEL: insertelement_v4f32_0
-; SSE41: insertps {{.*}},{{.*}},0x0
-
-; *** a0 - implicit return <4 x float>
-; *** a1 - unused due to alignment of %vec
-; *** a2:a3:sp[16]:s[20] - %vec
-; *** sp[24] - %elt
-; MIPS32-LABEL: insertelement_v4f32_0
-; *** Load element 2 and 3 of %vec
-; MIPS32: lw [[BV_E2:.*]],
-; MIPS32: lw [[BV_E3:.*]],
-; *** Load %elt
-; MIPS32: lwc1 [[ELT:.*]],
-; *** Insert %elt at %vec[0]
-; MIPS32: mfc1 [[RV_E0:.*]],[[ELT]]
-; MIPS32: move [[RET_PTR:.*]],a0
-; MIPS32: sw [[RV_E0]],0([[RET_PTR]])
-; MIPS32: sw a3,4([[RET_PTR]])
-; MIPS32: sw [[BV_E2]],8([[RET_PTR]])
-; MIPS32: sw [[BV_E3]],12([[RET_PTR]])
-}
-
-define internal <4 x i32> @insertelement_v4i32_0(<4 x i32> %vec, i32 %elt) {
-entry:
-  %res = insertelement <4 x i32> %vec, i32 %elt, i32 0
-  ret <4 x i32> %res
-; CHECK-LABEL: insertelement_v4i32_0
-; CHECK: movd xmm{{.*}},
-; CHECK: movss
-
-; SSE41-LABEL: insertelement_v4i32_0
-; SSE41: pinsrd {{.*}},{{.*}},0x0
-
-; *** a0:a1:a2:a3 - %vec
-; *** sp[16] - %elt
-; MIPS32-LABEL: insertelement_v4i32_0
-; *** Load %elt
-; MIPS32: lw v0,16(sp)
-; MIPS32: move v1,a1
-; MIPS32: move a0,a2
-; MIPS32: move a1,a3
-}
-
-
-define internal <4 x float> @insertelement_v4f32_1(<4 x float> %vec,
-                                                   float %elt) {
-entry:
-  %res = insertelement <4 x float> %vec, float %elt, i32 1
-  ret <4 x float> %res
-; CHECK-LABEL: insertelement_v4f32_1
-; CHECK: shufps
-; CHECK: shufps
-
-; SSE41-LABEL: insertelement_v4f32_1
-; SSE41: insertps {{.*}},{{.*}},0x10
-
-; MIPS32-LABEL: insertelement_v4f32_1
-; MIPS32: lw [[VEC_E2:.*]],16(sp)
-; MIPS32: lw [[VEC_E3:.*]],20(sp)
-; MIPS32: lwc1 [[ELT:.*]],24(sp)
-; MIPS32: mfc1 [[R_E1:.*]],[[ELT]]
-; MIPS32: move [[PTR:.*]],a0
-; MIPS32: sw a2,0([[PTR]])
-; MIPS32: sw [[R_E1]],4([[PTR]])
-; MIPS32: sw [[VEC_E2]],8([[PTR]])
-; MIPS32: sw [[VEC_E3]],12([[PTR]])
-}
-
-define internal <4 x i32> @insertelement_v4i32_1(<4 x i32> %vec, i32 %elt) {
-entry:
-  %res = insertelement <4 x i32> %vec, i32 %elt, i32 1
-  ret <4 x i32> %res
-; CHECK-LABEL: insertelement_v4i32_1
-; CHECK: shufps
-; CHECK: shufps
-
-; SSE41-LABEL: insertelement_v4i32_1
-; SSE41: pinsrd {{.*}},{{.*}},0x1
-
-; MIPS32-LABEL: insertelement_v4i32_1
-; MIPS32: lw [[ELT:.*]],16(sp)
-; MIPS32: move v1,[[ELT]]
-; MIPS32: move v0,a0
-; MIPS32: move a0,a2
-; MIPS32: move a1,a3
-}
-
-define internal <8 x i16> @insertelement_v8i16(<8 x i16> %vec, i32 %elt.arg) {
-entry:
-  %elt = trunc i32 %elt.arg to i16
-  %res = insertelement <8 x i16> %vec, i16 %elt, i32 1
-  ret <8 x i16> %res
-; CHECK-LABEL: insertelement_v8i16
-; CHECK: pinsrw
-
-; SSE41-LABEL: insertelement_v8i16
-; SSE41: pinsrw
-
-; MIPS32-LABEL: insertelement_v8i16
-; MIPS32: lw [[ELT:.*]],16(sp)
-; MIPS32: sll [[ELT]],[[ELT]],0x10
-; MIPS32: sll a0,a0,0x10
-; MIPS32: srl a0,a0,0x10
-; MIPS32: or v0,[[ELT]],a0
-; MIPS32: move v1,a1
-; MIPS32: move a0,a2
-; MIPS32: move a1,a3
-}
-
-define internal <16 x i8> @insertelement_v16i8(<16 x i8> %vec, i32 %elt.arg) {
-entry:
-  %elt = trunc i32 %elt.arg to i8
-  %res = insertelement <16 x i8> %vec, i8 %elt, i32 1
-  ret <16 x i8> %res
-; CHECK-LABEL: insertelement_v16i8
-; CHECK: movups
-; CHECK: lea
-; CHECK: mov
-
-; SSE41-LABEL: insertelement_v16i8
-; SSE41: pinsrb
-
-; MIPS32-LABEL: insertelement_v16i8
-; MIPS32: lw [[ELT:.*]],16(sp)
-; MIPS32: andi [[ELT]],[[ELT]],0xff
-; MIPS32: sll [[ELT]],[[ELT]],0x8
-; MIPS32: lui [[T:.*]],0xffff
-; MIPS32: ori [[T]],[[T]],0xff
-; MIPS32: and a0,a0,[[T]]
-; MIPS32: or v0,v0,a0
-; MIPS32: move v1,a1
-; MIPS32: move a0,a2
-; MIPS32: move a1,a3
-}
-
-define internal <4 x i1> @insertelement_v4i1_0(<4 x i1> %vec, i32 %elt.arg) {
-entry:
-  %elt = trunc i32 %elt.arg to i1
-  %res = insertelement <4 x i1> %vec, i1 %elt, i32 0
-  ret <4 x i1> %res
-; CHECK-LABEL: insertelement_v4i1_0
-; CHECK: movss
-
-; SSE41-LABEL: insertelement_v4i1_0
-; SSE41: pinsrd {{.*}},{{.*}},0x0
-
-; MIPS32-LABEL: insertelement_v4i1_0
-; MIPS32: lw v0,16(sp)
-; MIPS32: move v1,a1
-; MIPS32: move a0,a2
-; MIPS32: move a1,a3
-}
-
-define internal <4 x i1> @insertelement_v4i1_1(<4 x i1> %vec, i32 %elt.arg) {
-entry:
-  %elt = trunc i32 %elt.arg to i1
-  %res = insertelement <4 x i1> %vec, i1 %elt, i32 1
-  ret <4 x i1> %res
-; CHECK-LABEL: insertelement_v4i1_1
-; CHECK: shufps
-; CHECK: shufps
-
-; SSE41-LABEL: insertelement_v4i1_1
-; SSE41: pinsrd {{.*}},{{.*}},0x1
-
-; MIPS32-LABEL: insertelement_v4i1_1
-; MIPS32: lw [[ELT:.*]],16(sp)
-; MIPS32: move v1,[[ELT]]
-; MIPS32: move v0,a0
-; MIPS32: move a0,a2
-; MIPS32: move a1,a3
-}
-
-define internal <8 x i1> @insertelement_v8i1(<8 x i1> %vec, i32 %elt.arg) {
-entry:
-  %elt = trunc i32 %elt.arg to i1
-  %res = insertelement <8 x i1> %vec, i1 %elt, i32 1
-  ret <8 x i1> %res
-; CHECK-LABEL: insertelement_v8i1
-; CHECK: pinsrw
-
-; SSE41-LABEL: insertelement_v8i1
-; SSE41: pinsrw
-
-; MIPS32-LABEL: insertelement_v8i1
-; MIPS32: lw [[ELT:.*]],16(sp)
-; MIPS32: sll [[ELT]],[[ELT]],0x10
-; MIPS32: sll a0,a0,0x10
-; MIPS32: srl a0,a0,0x10
-; MIPS32: or v0,[[ELT]],a0
-; MIPS32: move v1,a1
-; MIPS32: move a0,a2
-; MIPS32: move a1,a3
-}
-
-define internal <16 x i1> @insertelement_v16i1(<16 x i1> %vec, i32 %elt.arg) {
-entry:
-  %elt = trunc i32 %elt.arg to i1
-  %res = insertelement <16 x i1> %vec, i1 %elt, i32 1
-  ret <16 x i1> %res
-; CHECK-LABEL: insertelement_v16i1
-; CHECK: movups
-; CHECK: lea
-; CHECK: mov
-
-; SSE41-LABEL: insertelement_v16i1
-; SSE41: pinsrb
-
-; MIPS32-LABEL: insertelement_v16i1
-; MIPS32: lw [[ELT:.*]],16(sp)
-; MIPS32: andi [[ELT]],[[ELT]],0xff
-; MIPS32: sll [[ELT]],[[ELT]],0x8
-; MIPS32: lui [[T:.*]],0xffff
-; MIPS32: ori [[T]],[[T]],0xff
-; MIPS32: and a0,a0,[[T]]
-; MIPS32: or v0,[[ELT]],a0
-; MIPS32: move v1,a1
-; MIPS32: move a0,a2
-; MIPS32: move a1,a3
-}
-
-; extractelement operations
-
-define internal float @extractelement_v4f32(<4 x float> %vec) {
-entry:
-  %res = extractelement <4 x float> %vec, i32 1
-  ret float %res
-; CHECK-LABEL: extractelement_v4f32
-; CHECK: pshufd
-
-; SSE41-LABEL: extractelement_v4f32
-; SSE41: pshufd
-
-; MIPS32-LABEL: extractelement_v4f32
-; MIPS32: mtc1 a1,$f0
-}
-
-define internal i32 @extractelement_v4i32(<4 x i32> %vec) {
-entry:
-  %res = extractelement <4 x i32> %vec, i32 1
-  ret i32 %res
-; CHECK-LABEL: extractelement_v4i32
-; CHECK: pshufd
-; CHECK: movd {{.*}},xmm
-
-; SSE41-LABEL: extractelement_v4i32
-; SSE41: pextrd
-
-; MIPS32-LABEL: extractelement_v4i32
-; MIPS32L move v0,a1
-}
-
-define internal i32 @extractelement_v8i16(<8 x i16> %vec) {
-entry:
-  %res = extractelement <8 x i16> %vec, i32 1
-  %res.ext = zext i16 %res to i32
-  ret i32 %res.ext
-; CHECK-LABEL: extractelement_v8i16
-; CHECK: pextrw
-
-; SSE41-LABEL: extractelement_v8i16
-; SSE41: pextrw
-
-; MIPS32-LABEL: extractelement_v8i16
-; MIPS32: srl a0,a0,0x10
-; MIPS32: andi a0,a0,0xffff
-; MIPS32: move v0,a0
-}
-
-define internal i32 @extractelement_v16i8(<16 x i8> %vec) {
-entry:
-  %res = extractelement <16 x i8> %vec, i32 1
-  %res.ext = zext i8 %res to i32
-  ret i32 %res.ext
-; CHECK-LABEL: extractelement_v16i8
-; CHECK: movups
-; CHECK: lea
-; CHECK: mov
-
-; SSE41-LABEL: extractelement_v16i8
-; SSE41: pextrb
-
-; MIPS32-LABEL: extractelement_v16i8
-; MIPS32: srl a0,a0,0x8
-; MIPS32: andi a0,a0,0xff
-; MIPS32: andi a0,a0,0xff
-; MIPS32: move v0,a0
-}
-
-define internal i32 @extractelement_v4i1(<4 x i1> %vec) {
-entry:
-  %res = extractelement <4 x i1> %vec, i32 1
-  %res.ext = zext i1 %res to i32
-  ret i32 %res.ext
-; CHECK-LABEL: extractelement_v4i1
-; CHECK: pshufd
-
-; SSE41-LABEL: extractelement_v4i1
-; SSE41: pextrd
-
-; MIPS32-LABEL: extractelement_v4i1
-; MIPS32: andi a1,a1,0x1
-; MIPS32: andi a1,a1,0x1
-; MIPS32: move v0,a1
-}
-
-define internal i32 @extractelement_v8i1(<8 x i1> %vec) {
-entry:
-  %res = extractelement <8 x i1> %vec, i32 1
-  %res.ext = zext i1 %res to i32
-  ret i32 %res.ext
-; CHECK-LABEL: extractelement_v8i1
-; CHECK: pextrw
-
-; SSE41-LABEL: extractelement_v8i1
-; SSE41: pextrw
-
-; MIPS32-LABEL: extractelement_v8i1
-; MIPS32: srl a0,a0,0x10
-; MIPS32: andi a0,a0,0x1
-; MIPS32: andi a0,a0,0x1
-; MIPS32: move v0,a0
-}
-
-define internal i32 @extractelement_v16i1(<16 x i1> %vec) {
-entry:
-  %res = extractelement <16 x i1> %vec, i32 1
-  %res.ext = zext i1 %res to i32
-  ret i32 %res.ext
-; CHECK-LABEL: extractelement_v16i1
-; CHECK: movups
-; CHECK: lea
-; CHECK: mov
-
-; SSE41-LABEL: extractelement_v16i1
-; SSE41: pextrb
-
-; MIPS32-LABEL: extractelement_v16i1
-; MIPS32: srl a0,a0,0x8
-; MIPS32: andi a0,a0,0xff
-; MIPS32: andi a0,a0,0x1
-; MIPS32: andi a0,a0,0x1
-; MIPS32: move v0,a0
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/vector-select.ll b/third_party/subzero/tests_lit/llvm2ice_tests/vector-select.ll
deleted file mode 100644
index 0d1fa92..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/vector-select.ll
+++ /dev/null
@@ -1,983 +0,0 @@
-; This file tests support for the select instruction with vector valued inputs.
-
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \
-; RUN:   | FileCheck %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \
-; RUN:   | FileCheck %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 -mattr=sse4.1 \
-; RUN:   | FileCheck --check-prefix=SSE41 %s
-; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 -mattr=sse4.1 \
-; RUN:   | FileCheck --check-prefix=SSE41 %s
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target mips32\
-; RUN:   -i %s --args -O2 \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-define internal <16 x i8> @test_select_v16i8(<16 x i1> %cond, <16 x i8> %arg1,
-                                             <16 x i8> %arg2) {
-entry:
-  %res = select <16 x i1> %cond, <16 x i8> %arg1, <16 x i8> %arg2
-  ret <16 x i8> %res
-; CHECK-LABEL: test_select_v16i8
-; CHECK: pand
-; CHECK: pandn
-; CHECK: por
-
-; SSE41-LABEL: test_select_v16i8
-; SSE41: pblendvb xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}}
-
-; MIPS32-LABEL: test_select_v16i8
-; MIPS32: addiu [[T0:.*]],sp,-32
-; MIPS32: sw [[T1:.*]],
-; MIPS32: sw [[T2:.*]],
-; MIPS32: sw [[T3:.*]],
-; MIPS32: sw [[T4:.*]],
-; MIPS32: sw [[T5:.*]],
-; MIPS32: lw [[T6:.*]],
-; MIPS32: lw [[T7:.*]],
-; MIPS32: lw [[T8:.*]],
-; MIPS32: lw [[T9:.*]],
-; MIPS32: lw [[T10:.*]],
-; MIPS32: lw [[T11:.*]],
-; MIPS32: lw [[T12:.*]],
-; MIPS32: lw [[T13:.*]],
-; MIPS32: move [[T14:.*]],zero
-; MIPS32: move [[T15:.*]],zero
-; MIPS32: move [[T5]],zero
-; MIPS32: move [[T4]],zero
-; MIPS32: move [[T3]],a0
-; MIPS32: andi [[T3]],[[T3]],0xff
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: move [[T2]],[[T6]]
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: move [[T1]],[[T10]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: movn [[T1]],[[T2]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: srl [[T14]],[[T14]],0x8
-; MIPS32: sll [[T14]],[[T14]],0x8
-; MIPS32: or [[T1]],[[T1]],[[T14]]
-; MIPS32: move [[T14]],a0
-; MIPS32: srl [[T14]],[[T14]],0x8
-; MIPS32: andi [[T14]],[[T14]],0xff
-; MIPS32: andi [[T14]],[[T14]],0x1
-; MIPS32: move [[T3]],[[T6]]
-; MIPS32: srl [[T3]],[[T3]],0x8
-; MIPS32: andi [[T3]],[[T3]],0xff
-; MIPS32: move [[T2]],[[T10]]
-; MIPS32: srl [[T2]],[[T2]],0x8
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: movn [[T2]],[[T3]],[[T14]]
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: sll [[T2]],[[T2]],0x8
-; MIPS32: lui [[T14]],0xffff
-; MIPS32: ori [[T14]],[[T14]],0xff
-; MIPS32: and [[T1]],[[T1]],[[T14]]
-; MIPS32: or [[T2]],[[T2]],[[T1]]
-; MIPS32: move [[T14]],a0
-; MIPS32: srl [[T14]],[[T14]],0x10
-; MIPS32: andi [[T14]],[[T14]],0xff
-; MIPS32: andi [[T14]],[[T14]],0x1
-; MIPS32: move [[T3]],[[T6]]
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: andi [[T3]],[[T3]],0xff
-; MIPS32: move [[T1]],[[T10]]
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: movn [[T1]],[[T3]],[[T14]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: lui [[T14]],0xff00
-; MIPS32: ori [[T14]],[[T14]],0xffff
-; MIPS32: and [[T2]],[[T2]],[[T14]]
-; MIPS32: or [[T1]],[[T1]],[[T2]]
-; MIPS32: srl [[T16:.*]],a0,0x18
-; MIPS32: andi [[T16]],[[T16]],0x1
-; MIPS32: srl [[T6]],[[T6]],0x18
-; MIPS32: srl [[T10]],[[T10]],0x18
-; MIPS32: movn [[T10]],[[T6]],[[T16]]
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: or [[T10]],[[T10]],[[T1]]
-; MIPS32: move [[T6]],a1
-; MIPS32: andi [[T6]],[[T6]],0xff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T16]],[[T7]]
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: move [[T14]],[[T11]]
-; MIPS32: andi [[T14]],[[T14]],0xff
-; MIPS32: movn [[T14]],[[T16]],[[T6]]
-; MIPS32: andi [[T14]],[[T14]],0xff
-; MIPS32: srl [[T15]],[[T15]],0x8
-; MIPS32: sll [[T15]],[[T15]],0x8
-; MIPS32: or [[T14]],[[T14]],[[T15]]
-; MIPS32: move [[T6]],a1
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: andi [[T6]],[[T6]],0xff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T16]],[[T7]]
-; MIPS32: srl [[T16]],[[T16]],0x8
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: move [[T15]],[[T11]]
-; MIPS32: srl [[T15]],[[T15]],0x8
-; MIPS32: andi [[T15]],[[T15]],0xff
-; MIPS32: movn [[T15]],[[T16]],[[T6]]
-; MIPS32: andi [[T15]],[[T15]],0xff
-; MIPS32: sll [[T15]],[[T15]],0x8
-; MIPS32: lui [[T6]],0xffff
-; MIPS32: ori [[T6]],[[T6]],0xff
-; MIPS32: and [[T14]],[[T14]],[[T6]]
-; MIPS32: or [[T15]],[[T15]],[[T14]]
-; MIPS32: move [[T6]],a1
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: andi [[T6]],[[T6]],0xff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T16]],[[T7]]
-; MIPS32: srl [[T16]],[[T16]],0x10
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: move [[T14]],[[T11]]
-; MIPS32: srl [[T14]],[[T14]],0x10
-; MIPS32: andi [[T14]],[[T14]],0xff
-; MIPS32: movn [[T14]],[[T16]],[[T6]]
-; MIPS32: andi [[T14]],[[T14]],0xff
-; MIPS32: sll [[T14]],[[T14]],0x10
-; MIPS32: lui [[T6]],0xff00
-; MIPS32: ori [[T6]],[[T6]],0xffff
-; MIPS32: and [[T15]],[[T15]],[[T6]]
-; MIPS32: or [[T14]],[[T14]],[[T15]]
-; MIPS32: srl [[T17:.*]],a1,0x18
-; MIPS32: andi [[T17]],[[T17]],0x1
-; MIPS32: srl [[T7]],[[T7]],0x18
-; MIPS32: srl [[T11]],[[T11]],0x18
-; MIPS32: movn [[T11]],[[T7]],[[T17]]
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T14]],[[T14]],0x8
-; MIPS32: srl [[T14]],[[T14]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T14]]
-; MIPS32: move [[T6]],a2
-; MIPS32: andi [[T6]],[[T6]],0xff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T7]],[[T8]]
-; MIPS32: andi [[T7]],[[T7]],0xff
-; MIPS32: move [[T16]],[[T12]]
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: movn [[T16]],[[T7]],[[T6]]
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T16]],[[T16]],[[T5]]
-; MIPS32: move [[T6]],a2
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: andi [[T6]],[[T6]],0xff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T7]],[[T8]]
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: andi [[T7]],[[T7]],0xff
-; MIPS32: move [[T17]],[[T12]]
-; MIPS32: srl [[T17]],[[T17]],0x8
-; MIPS32: andi [[T17]],[[T17]],0xff
-; MIPS32: movn [[T17]],[[T7]],[[T6]]
-; MIPS32: andi [[T17]],[[T17]],0xff
-; MIPS32: sll [[T17]],[[T17]],0x8
-; MIPS32: lui [[T6]],0xffff
-; MIPS32: ori [[T6]],[[T6]],0xff
-; MIPS32: and [[T16]],[[T16]],[[T6]]
-; MIPS32: or [[T17]],[[T17]],[[T16]]
-; MIPS32: move [[T6]],a2
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: andi [[T6]],[[T6]],0xff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T7]],[[T8]]
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: andi [[T7]],[[T7]],0xff
-; MIPS32: move [[T16]],[[T12]]
-; MIPS32: srl [[T16]],[[T16]],0x10
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: movn [[T16]],[[T7]],[[T6]]
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: sll [[T16]],[[T16]],0x10
-; MIPS32: lui [[T6]],0xff00
-; MIPS32: ori [[T6]],[[T6]],0xffff
-; MIPS32: and [[T17]],[[T17]],[[T6]]
-; MIPS32: or [[T16]],[[T16]],[[T17]]
-; MIPS32: srl [[T18:.*]],a2,0x18
-; MIPS32: andi [[T18]],[[T18]],0x1
-; MIPS32: srl [[T8]],[[T8]],0x18
-; MIPS32: srl [[T12]],[[T12]],0x18
-; MIPS32: movn [[T12]],[[T8]],[[T18]]
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T16]],[[T16]],0x8
-; MIPS32: srl [[T16]],[[T16]],0x8
-; MIPS32: or [[T12]],[[T12]],[[T16]]
-; MIPS32: move [[T6]],a3
-; MIPS32: andi [[T6]],[[T6]],0xff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T7]],[[T9]]
-; MIPS32: andi [[T7]],[[T7]],0xff
-; MIPS32: move [[T16]],[[T13]]
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: movn [[T16]],[[T7]],[[T6]]
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T16]],[[T16]],[[T4]]
-; MIPS32: move [[T6]],a3
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: andi [[T6]],[[T6]],0xff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T7]],[[T9]]
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: andi [[T7]],[[T7]],0xff
-; MIPS32: move [[T17]],[[T13]]
-; MIPS32: srl [[T17]],[[T17]],0x8
-; MIPS32: andi [[T17]],[[T17]],0xff
-; MIPS32: movn [[T17]],[[T7]],[[T6]]
-; MIPS32: andi [[T17]],[[T17]],0xff
-; MIPS32: sll [[T17]],[[T17]],0x8
-; MIPS32: lui [[T6]],0xffff
-; MIPS32: ori [[T6]],[[T6]],0xff
-; MIPS32: and [[T16]],[[T16]],[[T6]]
-; MIPS32: or [[T17]],[[T17]],[[T16]]
-; MIPS32: move [[T6]],a3
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: andi [[T6]],[[T6]],0xff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T7]],[[T9]]
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: andi [[T7]],[[T7]],0xff
-; MIPS32: move [[T16]],[[T13]]
-; MIPS32: srl [[T16]],[[T16]],0x10
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: movn [[T16]],[[T7]],[[T6]]
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: sll [[T16]],[[T16]],0x10
-; MIPS32: lui [[T6]],0xff00
-; MIPS32: ori [[T6]],[[T6]],0xffff
-; MIPS32: and [[T17]],[[T17]],[[T6]]
-; MIPS32: or [[T16]],[[T16]],[[T17]]
-; MIPS32: srl [[T19:.*]],a3,0x18
-; MIPS32: andi [[T19]],[[T19]],0x1
-; MIPS32: srl [[T9]],[[T9]],0x18
-; MIPS32: srl [[T13]],[[T13]],0x18
-; MIPS32: movn [[T13]],[[T9]],[[T19]]
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T16]],[[T16]],0x8
-; MIPS32: srl [[T16]],[[T16]],0x8
-; MIPS32: or [[T13]],[[T13]],[[T16]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-; MIPS32: lw [[T5]],
-; MIPS32: lw [[T4]],
-; MIPS32: lw [[T3]],
-; MIPS32: lw [[T2]],
-; MIPS32: lw [[T1]],
-; MIPS32: addiu [[T0]],sp,32
-}
-
-define internal <16 x i1> @test_select_v16i1(<16 x i1> %cond, <16 x i1> %arg1,
-                                             <16 x i1> %arg2) {
-entry:
-  %res = select <16 x i1> %cond, <16 x i1> %arg1, <16 x i1> %arg2
-  ret <16 x i1> %res
-; CHECK-LABEL: test_select_v16i1
-; CHECK: pand
-; CHECK: pandn
-; CHECK: por
-
-; SSE41-LABEL: test_select_v16i1
-; SSE41: pblendvb xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}}
-
-; MIPS32-LABEL: test_select_v16i1
-; MIPS32: addiu [[T0:.*]],sp,-32
-; MIPS32: sw [[T1:.*]],
-; MIPS32: sw [[T2:.*]],
-; MIPS32: sw [[T3:.*]],
-; MIPS32: sw [[T4:.*]],
-; MIPS32: sw [[T5:.*]],
-; MIPS32: lw [[T6:.*]],
-; MIPS32: lw [[T7:.*]],
-; MIPS32: lw [[T8:.*]],
-; MIPS32: lw [[T9:.*]],
-; MIPS32: lw [[T10:.*]],
-; MIPS32: lw [[T11:.*]],
-; MIPS32: lw [[T12:.*]],
-; MIPS32: lw [[T13:.*]],
-; MIPS32: move [[T14:.*]],zero
-; MIPS32: move [[T15:.*]],zero
-; MIPS32: move [[T5]],zero
-; MIPS32: move [[T4]],zero
-; MIPS32: move [[T3]],a0
-; MIPS32: andi [[T3]],[[T3]],0xff
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: move [[T2]],[[T6]]
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: move [[T1]],[[T10]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: movn [[T1]],[[T2]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: srl [[T14]],[[T14]],0x8
-; MIPS32: sll [[T14]],[[T14]],0x8
-; MIPS32: or [[T1]],[[T1]],[[T14]]
-; MIPS32: move [[T14]],a0
-; MIPS32: srl [[T14]],[[T14]],0x8
-; MIPS32: andi [[T14]],[[T14]],0xff
-; MIPS32: andi [[T14]],[[T14]],0x1
-; MIPS32: move [[T3]],[[T6]]
-; MIPS32: srl [[T3]],[[T3]],0x8
-; MIPS32: andi [[T3]],[[T3]],0xff
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: move [[T2]],[[T10]]
-; MIPS32: srl [[T2]],[[T2]],0x8
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: movn [[T2]],[[T3]],[[T14]]
-; MIPS32: andi [[T2]],[[T2]],0xff
-; MIPS32: sll [[T2]],[[T2]],0x8
-; MIPS32: lui [[T14]],0xffff
-; MIPS32: ori [[T14]],[[T14]],0xff
-; MIPS32: and [[T1]],[[T1]],[[T14]]
-; MIPS32: or [[T2]],[[T2]],[[T1]]
-; MIPS32: move [[T14]],a0
-; MIPS32: srl [[T14]],[[T14]],0x10
-; MIPS32: andi [[T14]],[[T14]],0xff
-; MIPS32: andi [[T14]],[[T14]],0x1
-; MIPS32: move [[T3]],[[T6]]
-; MIPS32: srl [[T3]],[[T3]],0x10
-; MIPS32: andi [[T3]],[[T3]],0xff
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: move [[T1]],[[T10]]
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: movn [[T1]],[[T3]],[[T14]]
-; MIPS32: andi [[T1]],[[T1]],0xff
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: lui [[T14]],0xff00
-; MIPS32: ori [[T14]],[[T14]],0xffff
-; MIPS32: and [[T2]],[[T2]],[[T14]]
-; MIPS32: or [[T1]],[[T1]],[[T2]]
-; MIPS32: srl [[T16:.*]],a0,0x18
-; MIPS32: andi [[T16]],[[T16]],0x1
-; MIPS32: srl [[T6]],[[T6]],0x18
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: srl [[T10]],[[T10]],0x18
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: movn [[T10]],[[T6]],[[T16]]
-; MIPS32: sll [[T10]],[[T10]],0x18
-; MIPS32: sll [[T1]],[[T1]],0x8
-; MIPS32: srl [[T1]],[[T1]],0x8
-; MIPS32: or [[T10]],[[T10]],[[T1]]
-; MIPS32: move [[T6]],a1
-; MIPS32: andi [[T6]],[[T6]],0xff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T16]],[[T7]]
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: andi [[T16]],[[T16]],0x1
-; MIPS32: move [[T14]],[[T11]]
-; MIPS32: andi [[T14]],[[T14]],0xff
-; MIPS32: andi [[T14]],[[T14]],0x1
-; MIPS32: movn [[T14]],[[T16]],[[T6]]
-; MIPS32: andi [[T14]],[[T14]],0xff
-; MIPS32: srl [[T15]],[[T15]],0x8
-; MIPS32: sll [[T15]],[[T15]],0x8
-; MIPS32: or [[T14]],[[T14]],[[T15]]
-; MIPS32: move [[T6]],a1
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: andi [[T6]],[[T6]],0xff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T16]],[[T7]]
-; MIPS32: srl [[T16]],[[T16]],0x8
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: andi [[T16]],[[T16]],0x1
-; MIPS32: move [[T15]],[[T11]]
-; MIPS32: srl [[T15]],[[T15]],0x8
-; MIPS32: andi [[T15]],[[T15]],0xff
-; MIPS32: andi [[T15]],[[T15]],0x1
-; MIPS32: movn [[T15]],[[T16]],[[T6]]
-; MIPS32: andi [[T15]],[[T15]],0xff
-; MIPS32: sll [[T15]],[[T15]],0x8
-; MIPS32: lui [[T6]],0xffff
-; MIPS32: ori [[T6]],[[T6]],0xff
-; MIPS32: and [[T14]],[[T14]],[[T6]]
-; MIPS32: or [[T15]],[[T15]],[[T14]]
-; MIPS32: move [[T6]],a1
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: andi [[T6]],[[T6]],0xff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T16]],[[T7]]
-; MIPS32: srl [[T16]],[[T16]],0x10
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: andi [[T16]],[[T16]],0x1
-; MIPS32: move [[T14]],[[T11]]
-; MIPS32: srl [[T14]],[[T14]],0x10
-; MIPS32: andi [[T14]],[[T14]],0xff
-; MIPS32: andi [[T14]],[[T14]],0x1
-; MIPS32: movn [[T14]],[[T16]],[[T6]]
-; MIPS32: andi [[T14]],[[T14]],0xff
-; MIPS32: sll [[T14]],[[T14]],0x10
-; MIPS32: lui [[T6]],0xff00
-; MIPS32: ori [[T6]],[[T6]],0xffff
-; MIPS32: and [[T15]],[[T15]],[[T6]]
-; MIPS32: or [[T14]],[[T14]],[[T15]]
-; MIPS32: srl [[T17:.*]],a1,0x18
-; MIPS32: andi [[T17]],[[T17]],0x1
-; MIPS32: srl [[T7]],[[T7]],0x18
-; MIPS32: andi [[T7]],[[T7]],0x1
-; MIPS32: srl [[T11]],[[T11]],0x18
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: movn [[T11]],[[T7]],[[T17]]
-; MIPS32: sll [[T11]],[[T11]],0x18
-; MIPS32: sll [[T14]],[[T14]],0x8
-; MIPS32: srl [[T14]],[[T14]],0x8
-; MIPS32: or [[T11]],[[T11]],[[T14]]
-; MIPS32: move [[T6]],a2
-; MIPS32: andi [[T6]],[[T6]],0xff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T7]],[[T8]]
-; MIPS32: andi [[T7]],[[T7]],0xff
-; MIPS32: andi [[T7]],[[T7]],0x1
-; MIPS32: move [[T16]],[[T12]]
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: andi [[T16]],[[T16]],0x1
-; MIPS32: movn [[T16]],[[T7]],[[T6]]
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: srl [[T5]],[[T5]],0x8
-; MIPS32: sll [[T5]],[[T5]],0x8
-; MIPS32: or [[T16]],[[T16]],[[T5]]
-; MIPS32: move [[T6]],a2
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: andi [[T6]],[[T6]],0xff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T7]],[[T8]]
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: andi [[T7]],[[T7]],0xff
-; MIPS32: andi [[T7]],[[T7]],0x1
-; MIPS32: move [[T17]],[[T12]]
-; MIPS32: srl [[T17]],[[T17]],0x8
-; MIPS32: andi [[T17]],[[T17]],0xff
-; MIPS32: andi [[T17]],[[T17]],0x1
-; MIPS32: movn [[T17]],[[T7]],[[T6]]
-; MIPS32: andi [[T17]],[[T17]],0xff
-; MIPS32: sll [[T17]],[[T17]],0x8
-; MIPS32: lui [[T6]],0xffff
-; MIPS32: ori [[T6]],[[T6]],0xff
-; MIPS32: and [[T16]],[[T16]],[[T6]]
-; MIPS32: or [[T17]],[[T17]],[[T16]]
-; MIPS32: move [[T6]],a2
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: andi [[T6]],[[T6]],0xff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T7]],[[T8]]
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: andi [[T7]],[[T7]],0xff
-; MIPS32: andi [[T7]],[[T7]],0x1
-; MIPS32: move [[T16]],[[T12]]
-; MIPS32: srl [[T16]],[[T16]],0x10
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: andi [[T16]],[[T16]],0x1
-; MIPS32: movn [[T16]],[[T7]],[[T6]]
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: sll [[T16]],[[T16]],0x10
-; MIPS32: lui [[T6]],0xff00
-; MIPS32: ori [[T6]],[[T6]],0xffff
-; MIPS32: and [[T17]],[[T17]],[[T6]]
-; MIPS32: or [[T16]],[[T16]],[[T17]]
-; MIPS32: srl [[T18:.*]],a2,0x18
-; MIPS32: andi [[T18]],[[T18]],0x1
-; MIPS32: srl [[T8]],[[T8]],0x18
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: srl [[T12]],[[T12]],0x18
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: movn [[T12]],[[T8]],[[T18]]
-; MIPS32: sll [[T12]],[[T12]],0x18
-; MIPS32: sll [[T16]],[[T16]],0x8
-; MIPS32: srl [[T16]],[[T16]],0x8
-; MIPS32: or [[T12]],[[T12]],[[T16]]
-; MIPS32: move [[T6]],a3
-; MIPS32: andi [[T6]],[[T6]],0xff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T7]],[[T9]]
-; MIPS32: andi [[T7]],[[T7]],0xff
-; MIPS32: andi [[T7]],[[T7]],0x1
-; MIPS32: move [[T16]],[[T13]]
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: andi [[T16]],[[T16]],0x1
-; MIPS32: movn [[T16]],[[T7]],[[T6]]
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: srl [[T4]],[[T4]],0x8
-; MIPS32: sll [[T4]],[[T4]],0x8
-; MIPS32: or [[T16]],[[T16]],[[T4]]
-; MIPS32: move [[T6]],a3
-; MIPS32: srl [[T6]],[[T6]],0x8
-; MIPS32: andi [[T6]],[[T6]],0xff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T7]],[[T9]]
-; MIPS32: srl [[T7]],[[T7]],0x8
-; MIPS32: andi [[T7]],[[T7]],0xff
-; MIPS32: andi [[T7]],[[T7]],0x1
-; MIPS32: move [[T17]],[[T13]]
-; MIPS32: srl [[T17]],[[T17]],0x8
-; MIPS32: andi [[T17]],[[T17]],0xff
-; MIPS32: andi [[T17]],[[T17]],0x1
-; MIPS32: movn [[T17]],[[T7]],[[T6]]
-; MIPS32: andi [[T17]],[[T17]],0xff
-; MIPS32: sll [[T17]],[[T17]],0x8
-; MIPS32: lui [[T6]],0xffff
-; MIPS32: ori [[T6]],[[T6]],0xff
-; MIPS32: and [[T16]],[[T16]],[[T6]]
-; MIPS32: or [[T17]],[[T17]],[[T16]]
-; MIPS32: move [[T6]],a3
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: andi [[T6]],[[T6]],0xff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T7]],[[T9]]
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: andi [[T7]],[[T7]],0xff
-; MIPS32: andi [[T7]],[[T7]],0x1
-; MIPS32: move [[T16]],[[T13]]
-; MIPS32: srl [[T16]],[[T16]],0x10
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: andi [[T16]],[[T16]],0x1
-; MIPS32: movn [[T16]],[[T7]],[[T6]]
-; MIPS32: andi [[T16]],[[T16]],0xff
-; MIPS32: sll [[T16]],[[T16]],0x10
-; MIPS32: lui [[T6]],0xff00
-; MIPS32: ori [[T6]],[[T6]],0xffff
-; MIPS32: and [[T17]],[[T17]],[[T6]]
-; MIPS32: or [[T16]],[[T16]],[[T17]]
-; MIPS32: srl [[T19:.*]],a3,0x18
-; MIPS32: andi [[T19]],[[T19]],0x1
-; MIPS32: srl [[T9]],[[T9]],0x18
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: srl [[T13]],[[T13]],0x18
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: movn [[T13]],[[T9]],[[T19]]
-; MIPS32: sll [[T13]],[[T13]],0x18
-; MIPS32: sll [[T16]],[[T16]],0x8
-; MIPS32: srl [[T16]],[[T16]],0x8
-; MIPS32: or [[T13]],[[T13]],[[T16]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-; MIPS32: lw [[T5]],
-; MIPS32: lw [[T4]],
-; MIPS32: lw [[T3]],
-; MIPS32: lw [[T2]],
-; MIPS32: lw [[T1]],
-; MIPS32: addiu [[T0]],sp,32
-}
-
-define internal <8 x i16> @test_select_v8i16(<8 x i1> %cond, <8 x i16> %arg1,
-                                             <8 x i16> %arg2) {
-entry:
-  %res = select <8 x i1> %cond, <8 x i16> %arg1, <8 x i16> %arg2
-  ret <8 x i16> %res
-; CHECK-LABEL: test_select_v8i16
-; CHECK: pand
-; CHECK: pandn
-; CHECK: por
-
-; SSE41-LABEL: test_select_v8i16
-; SSE41: pblendvb xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}}
-
-; MIPS32-LABEL: test_select_v8i16
-; MIPS32: addiu [[T0:.*]],sp,-32
-; MIPS32: sw [[T1:.*]],
-; MIPS32: sw [[T2:.*]],
-; MIPS32: sw [[T3:.*]],
-; MIPS32: sw [[T4:.*]],
-; MIPS32: sw [[T5:.*]],
-; MIPS32: lw [[T6:.*]],
-; MIPS32: lw [[T7:.*]],
-; MIPS32: lw [[T8:.*]],
-; MIPS32: lw [[T9:.*]],
-; MIPS32: lw [[T10:.*]],
-; MIPS32: lw [[T11:.*]],
-; MIPS32: lw [[T12:.*]],
-; MIPS32: lw [[T13:.*]],
-; MIPS32: move [[T14:.*]],zero
-; MIPS32: move [[T15:.*]],zero
-; MIPS32: move [[T5]],zero
-; MIPS32: move [[T4]],zero
-; MIPS32: move [[T3]],a0
-; MIPS32: andi [[T3]],[[T3]],0xffff
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: move [[T2]],[[T6]]
-; MIPS32: andi [[T2]],[[T2]],0xffff
-; MIPS32: move [[T1]],[[T10]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: movn [[T1]],[[T2]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: srl [[T14]],[[T14]],0x10
-; MIPS32: sll [[T14]],[[T14]],0x10
-; MIPS32: or [[T1]],[[T1]],[[T14]]
-; MIPS32: srl [[T16:.*]],a0,0x10
-; MIPS32: andi [[T16]],[[T16]],0x1
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: movn [[T10]],[[T6]],[[T16]]
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: or [[T10]],[[T10]],[[T1]]
-; MIPS32: move [[T6]],a1
-; MIPS32: andi [[T6]],[[T6]],0xffff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T16]],[[T7]]
-; MIPS32: andi [[T16]],[[T16]],0xffff
-; MIPS32: move [[T14]],[[T11]]
-; MIPS32: andi [[T14]],[[T14]],0xffff
-; MIPS32: movn [[T14]],[[T16]],[[T6]]
-; MIPS32: andi [[T14]],[[T14]],0xffff
-; MIPS32: srl [[T15]],[[T15]],0x10
-; MIPS32: sll [[T15]],[[T15]],0x10
-; MIPS32: or [[T14]],[[T14]],[[T15]]
-; MIPS32: srl [[T17:.*]],a1,0x10
-; MIPS32: andi [[T17]],[[T17]],0x1
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: movn [[T11]],[[T7]],[[T17]]
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T14]],[[T14]],0x10
-; MIPS32: srl [[T14]],[[T14]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T14]]
-; MIPS32: move [[T6]],a2
-; MIPS32: andi [[T6]],[[T6]],0xffff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T7]],[[T8]]
-; MIPS32: andi [[T7]],[[T7]],0xffff
-; MIPS32: move [[T16]],[[T12]]
-; MIPS32: andi [[T16]],[[T16]],0xffff
-; MIPS32: movn [[T16]],[[T7]],[[T6]]
-; MIPS32: andi [[T16]],[[T16]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T16]],[[T16]],[[T5]]
-; MIPS32: srl [[T18:.*]],a2,0x10
-; MIPS32: andi [[T18]],[[T18]],0x1
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: srl [[T12]],[[T12]],0x10
-; MIPS32: movn [[T12]],[[T8]],[[T18]]
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T16]],[[T16]],0x10
-; MIPS32: srl [[T16]],[[T16]],0x10
-; MIPS32: or [[T12]],[[T12]],[[T16]]
-; MIPS32: move [[T6]],a3
-; MIPS32: andi [[T6]],[[T6]],0xffff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T7]],[[T9]]
-; MIPS32: andi [[T7]],[[T7]],0xffff
-; MIPS32: move [[T16]],[[T13]]
-; MIPS32: andi [[T16]],[[T16]],0xffff
-; MIPS32: movn [[T16]],[[T7]],[[T6]]
-; MIPS32: andi [[T16]],[[T16]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T16]],[[T16]],[[T4]]
-; MIPS32: srl [[T19:.*]],a3,0x10
-; MIPS32: andi [[T19]],[[T19]],0x1
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: srl [[T13]],[[T13]],0x10
-; MIPS32: movn [[T13]],[[T9]],[[T19]]
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T16]],[[T16]],0x10
-; MIPS32: srl [[T16]],[[T16]],0x10
-; MIPS32: or [[T13]],[[T13]],[[T16]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-; MIPS32: lw [[T5]],
-; MIPS32: lw [[T4]],
-; MIPS32: lw [[T3]],
-; MIPS32: lw [[T2]],
-; MIPS32: lw [[T1]],
-; MIPS32: addiu [[T0]],sp,32
-}
-
-define internal <8 x i1> @test_select_v8i1(<8 x i1> %cond, <8 x i1> %arg1,
-                                           <8 x i1> %arg2) {
-entry:
-  %res = select <8 x i1> %cond, <8 x i1> %arg1, <8 x i1> %arg2
-  ret <8 x i1> %res
-; CHECK-LABEL: test_select_v8i1
-; CHECK: pand
-; CHECK: pandn
-; CHECK: por
-
-; SSE41-LABEL: test_select_v8i1
-; SSE41: pblendvb xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}}
-
-; MIPS32-LABEL: test_select_v8i1
-; MIPS32: addiu [[T0:.*]],sp,-32
-; MIPS32: sw [[T1:.*]],
-; MIPS32: sw [[T2:.*]],
-; MIPS32: sw [[T3:.*]],
-; MIPS32: sw [[T4:.*]],
-; MIPS32: sw [[T5:.*]],
-; MIPS32: lw [[T6:.*]],
-; MIPS32: lw [[T7:.*]],
-; MIPS32: lw [[T8:.*]],
-; MIPS32: lw [[T9:.*]],
-; MIPS32: lw [[T10:.*]],
-; MIPS32: lw [[T11:.*]],
-; MIPS32: lw [[T12:.*]],
-; MIPS32: lw [[T13:.*]],
-; MIPS32: move [[T14:.*]],zero
-; MIPS32: move [[T15:.*]],zero
-; MIPS32: move [[T5]],zero
-; MIPS32: move [[T4]],zero
-; MIPS32: move [[T3]],a0
-; MIPS32: andi [[T3]],[[T3]],0xffff
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: move [[T2]],[[T6]]
-; MIPS32: andi [[T2]],[[T2]],0xffff
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: move [[T1]],[[T10]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: movn [[T1]],[[T2]],[[T3]]
-; MIPS32: andi [[T1]],[[T1]],0xffff
-; MIPS32: srl [[T14]],[[T14]],0x10
-; MIPS32: sll [[T14]],[[T14]],0x10
-; MIPS32: or [[T1]],[[T1]],[[T14]]
-; MIPS32: srl [[T16:.*]],a0,0x10
-; MIPS32: andi [[T16]],[[T16]],0x1
-; MIPS32: srl [[T6]],[[T6]],0x10
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: srl [[T10]],[[T10]],0x10
-; MIPS32: andi [[T10]],[[T10]],0x1
-; MIPS32: movn [[T10]],[[T6]],[[T16]]
-; MIPS32: sll [[T10]],[[T10]],0x10
-; MIPS32: sll [[T1]],[[T1]],0x10
-; MIPS32: srl [[T1]],[[T1]],0x10
-; MIPS32: or [[T10]],[[T10]],[[T1]]
-; MIPS32: move [[T6]],a1
-; MIPS32: andi [[T6]],[[T6]],0xffff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T16]],[[T7]]
-; MIPS32: andi [[T16]],[[T16]],0xffff
-; MIPS32: andi [[T16]],[[T16]],0x1
-; MIPS32: move [[T14]],[[T11]]
-; MIPS32: andi [[T14]],[[T14]],0xffff
-; MIPS32: andi [[T14]],[[T14]],0x1
-; MIPS32: movn [[T14]],[[T16]],[[T6]]
-; MIPS32: andi [[T14]],[[T14]],0xffff
-; MIPS32: srl [[T15]],[[T15]],0x10
-; MIPS32: sll [[T15]],[[T15]],0x10
-; MIPS32: or [[T14]],[[T14]],[[T15]]
-; MIPS32: srl [[T17:.*]],a1,0x10
-; MIPS32: andi [[T17]],[[T17]],0x1
-; MIPS32: srl [[T7]],[[T7]],0x10
-; MIPS32: andi [[T7]],[[T7]],0x1
-; MIPS32: srl [[T11]],[[T11]],0x10
-; MIPS32: andi [[T11]],[[T11]],0x1
-; MIPS32: movn [[T11]],[[T7]],[[T17]]
-; MIPS32: sll [[T11]],[[T11]],0x10
-; MIPS32: sll [[T14]],[[T14]],0x10
-; MIPS32: srl [[T14]],[[T14]],0x10
-; MIPS32: or [[T11]],[[T11]],[[T14]]
-; MIPS32: move [[T6]],a2
-; MIPS32: andi [[T6]],[[T6]],0xffff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T7]],[[T8]]
-; MIPS32: andi [[T7]],[[T7]],0xffff
-; MIPS32: andi [[T7]],[[T7]],0x1
-; MIPS32: move [[T16]],[[T12]]
-; MIPS32: andi [[T16]],[[T16]],0xffff
-; MIPS32: andi [[T16]],[[T16]],0x1
-; MIPS32: movn [[T16]],[[T7]],[[T6]]
-; MIPS32: andi [[T16]],[[T16]],0xffff
-; MIPS32: srl [[T5]],[[T5]],0x10
-; MIPS32: sll [[T5]],[[T5]],0x10
-; MIPS32: or [[T16]],[[T16]],[[T5]]
-; MIPS32: srl [[T18:.*]],a2,0x10
-; MIPS32: andi [[T18]],[[T18]],0x1
-; MIPS32: srl [[T8]],[[T8]],0x10
-; MIPS32: andi [[T8]],[[T8]],0x1
-; MIPS32: srl [[T12]],[[T12]],0x10
-; MIPS32: andi [[T12]],[[T12]],0x1
-; MIPS32: movn [[T12]],[[T8]],[[T18]]
-; MIPS32: sll [[T12]],[[T12]],0x10
-; MIPS32: sll [[T16]],[[T16]],0x10
-; MIPS32: srl [[T16]],[[T16]],0x10
-; MIPS32: or [[T12]],[[T12]],[[T16]]
-; MIPS32: move [[T6]],a3
-; MIPS32: andi [[T6]],[[T6]],0xffff
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: move [[T7]],[[T9]]
-; MIPS32: andi [[T7]],[[T7]],0xffff
-; MIPS32: andi [[T7]],[[T7]],0x1
-; MIPS32: move [[T16]],[[T13]]
-; MIPS32: andi [[T16]],[[T16]],0xffff
-; MIPS32: andi [[T16]],[[T16]],0x1
-; MIPS32: movn [[T16]],[[T7]],[[T6]]
-; MIPS32: andi [[T16]],[[T16]],0xffff
-; MIPS32: srl [[T4]],[[T4]],0x10
-; MIPS32: sll [[T4]],[[T4]],0x10
-; MIPS32: or [[T16]],[[T16]],[[T4]]
-; MIPS32: srl [[T19:.*]],a3,0x10
-; MIPS32: andi [[T19]],[[T19]],0x1
-; MIPS32: srl [[T9]],[[T9]],0x10
-; MIPS32: andi [[T9]],[[T9]],0x1
-; MIPS32: srl [[T13]],[[T13]],0x10
-; MIPS32: andi [[T13]],[[T13]],0x1
-; MIPS32: movn [[T13]],[[T9]],[[T19]]
-; MIPS32: sll [[T13]],[[T13]],0x10
-; MIPS32: sll [[T16]],[[T16]],0x10
-; MIPS32: srl [[T16]],[[T16]],0x10
-; MIPS32: or [[T13]],[[T13]],[[T16]]
-; MIPS32: move v0,[[T10]]
-; MIPS32: move v1,[[T11]]
-; MIPS32: move a0,[[T12]]
-; MIPS32: move a1,[[T13]]
-; MIPS32: lw [[T5]],
-; MIPS32: lw [[T4]],
-; MIPS32: lw [[T3]],
-; MIPS32: lw [[T2]],
-; MIPS32: lw [[T1]],
-; MIPS32: addiu [[T0]],sp,32
-}
-
-define internal <4 x i32> @test_select_v4i32(<4 x i1> %cond, <4 x i32> %arg1,
-                                             <4 x i32> %arg2) {
-entry:
-  %res = select <4 x i1> %cond, <4 x i32> %arg1, <4 x i32> %arg2
-  ret <4 x i32> %res
-; CHECK-LABEL: test_select_v4i32
-; CHECK: pand
-; CHECK: pandn
-; CHECK: por
-
-; SSE41-LABEL: test_select_v4i32
-; SSE41: pslld xmm0,0x1f
-; SSE41: blendvps xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}}
-
-; MIPS32-LABEL: test_select_v4i32
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: lw [[T4:.*]],
-; MIPS32: lw [[T5:.*]],
-; MIPS32: lw [[T6:.*]],
-; MIPS32: lw [[T7:.*]],
-; MIPS32: andi [[T8:.*]],a0,0x1
-; MIPS32: movn [[T4]],[[T0]],[[T8]]
-; MIPS32: andi [[T9:.*]],a1,0x1
-; MIPS32: movn [[T5]],[[T1]],[[T9]]
-; MIPS32: andi [[T10:.*]],a2,0x1
-; MIPS32: movn [[T6]],[[T2]],[[T10]]
-; MIPS32: andi [[T11:.*]],a3,0x1
-; MIPS32: movn [[T7]],[[T3]],[[T11]]
-; MIPS32: move v0,[[T4]]
-; MIPS32: move v1,[[T5]]
-; MIPS32: move a0,[[T6]]
-; MIPS32: move a1,[[T7]]
-}
-
-define internal <4 x float> @test_select_v4f32(
-    <4 x i1> %cond, <4 x float> %arg1, <4 x float> %arg2) {
-entry:
-  %res = select <4 x i1> %cond, <4 x float> %arg1, <4 x float> %arg2
-  ret <4 x float> %res
-; CHECK-LABEL: test_select_v4f32
-; CHECK: pand
-; CHECK: pandn
-; CHECK: por
-
-; SSE41-LABEL: test_select_v4f32
-; SSE41: pslld xmm0,0x1f
-; SSE41: blendvps xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}}
-
-; MIPS32-LABEL: test_select_v4f32
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: lw [[T4:.*]],
-; MIPS32: lw [[T5:.*]],
-; MIPS32: lw [[T6:.*]],
-; MIPS32: lw [[T7:.*]],
-; MIPS32: lw [[T8:.*]],
-; MIPS32: lw [[T9:.*]],
-; MIPS32: andi [[T10:.*]],a2,0x1
-; MIPS32: mtc1 [[T2]],$f0
-; MIPS32: mtc1 [[T6]],$f1
-; MIPS32: movn.s [[T11:.*]],$f0,[[T10]]
-; MIPS32: mfc1 [[T2]],[[T11]]
-; MIPS32: andi [[T12:.*]],a3,0x1
-; MIPS32: mtc1 [[T3]],$f0
-; MIPS32: mtc1 [[T7]],[[T11]]
-; MIPS32: movn.s [[T11]],$f0,[[T12]]
-; MIPS32: mfc1 [[T3]],[[T11]]
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: mtc1 [[T4]],$f0
-; MIPS32: mtc1 [[T8]],[[T11]]
-; MIPS32: movn.s [[T11]],$f0,[[T0]]
-; MIPS32: mfc1 [[T4]],[[T11]]
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: mtc1 [[T5]],$f0
-; MIPS32: mtc1 [[T9]],[[T11]]
-; MIPS32: movn.s [[T11]],$f0,[[T1]]
-; MIPS32: mfc1 [[T10]],[[T11]]
-; MIPS32: move [[T12]],a0
-; MIPS32: sw [[T2]],0(a3)
-; MIPS32: sw v1,4(a3)
-; MIPS32: sw a1,8(a3)
-; MIPS32: sw [[T10]],12(a3)
-; MIPS32: move v0,a0
-}
-
-define internal <4 x i1> @test_select_v4i1(<4 x i1> %cond, <4 x i1> %arg1,
-                                           <4 x i1> %arg2) {
-entry:
-  %res = select <4 x i1> %cond, <4 x i1> %arg1, <4 x i1> %arg2
-  ret <4 x i1> %res
-; CHECK-LABEL: test_select_v4i1
-; CHECK: pand
-; CHECK: pandn
-; CHECK: por
-
-; SSE41-LABEL: test_select_v4i1
-; SSE41: pslld xmm0,0x1f
-; SSE41: blendvps xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}}
-
-; MIPS32-LABEL: test_select_v4i1
-; MIPS32: lw [[T0:.*]],
-; MIPS32: lw [[T1:.*]],
-; MIPS32: lw [[T2:.*]],
-; MIPS32: lw [[T3:.*]],
-; MIPS32: lw [[T4:.*]],
-; MIPS32: lw [[T5:.*]],
-; MIPS32: lw [[T6:.*]],
-; MIPS32: lw [[T7:.*]],
-; MIPS32: andi [[T8:.*]],a0,0x1
-; MIPS32: andi [[T0]],[[T0]],0x1
-; MIPS32: andi [[T4]],[[T4]],0x1
-; MIPS32: movn [[T4]],[[T0]],[[T8]]
-; MIPS32: andi [[T9:.*]],a1,0x1
-; MIPS32: andi [[T1]],[[T1]],0x1
-; MIPS32: andi [[T5]],[[T5]],0x1
-; MIPS32: movn [[T5]],[[T1]],[[T9]]
-; MIPS32: andi [[T10:.*]],a2,0x1
-; MIPS32: andi [[T2]],[[T2]],0x1
-; MIPS32: andi [[T6]],[[T6]],0x1
-; MIPS32: movn [[T6]],[[T2]],[[T10]]
-; MIPS32: andi [[T11:.*]],a3,0x1
-; MIPS32: andi [[T3]],[[T3]],0x1
-; MIPS32: andi [[T7]],[[T7]],0x1
-; MIPS32: movn [[T7]],[[T3]],[[T11]]
-; MIPS32: move v0,[[T4]]
-; MIPS32: move v1,[[T5]]
-; MIPS32: move a0,[[T6]]
-; MIPS32: move a1,[[T7]]
-}
diff --git a/third_party/subzero/tests_lit/llvm2ice_tests/vector-shuffle.ll b/third_party/subzero/tests_lit/llvm2ice_tests/vector-shuffle.ll
deleted file mode 100644
index e0fa157..0000000
--- a/third_party/subzero/tests_lit/llvm2ice_tests/vector-shuffle.ll
+++ /dev/null
@@ -1,75 +0,0 @@
-; Some shufflevector optimized lowering. This list is by no means exhaustive. It
-; is only a **basic** smoke test. the vector_ops crosstest has a broader range
-; of test cases.
-
-; RUN: %p2i -i %s --target=x8632 --filetype=obj --disassemble -a -O2 \
-; RUN:     --allow-externally-defined-symbols | FileCheck %s --check-prefix=X86
-
-; RUN: %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \
-; RUN:   mips32 -i %s --args -O2 -allow-externally-defined-symbols \
-; RUN:   | %if --need=target_MIPS32 --need=allow_dump \
-; RUN:   --command FileCheck --check-prefix MIPS32 %s
-
-declare void @useV4I32(<4 x i32> %t);
-
-define internal void @shuffleV4I32(<4 x i32> %a, <4 x i32> %b) {
-; X86-LABEL: shuffleV4I32
-  %a_0 = extractelement <4 x i32> %a, i32 0
-  %a_1 = extractelement <4 x i32> %a, i32 1
-  %a_2 = extractelement <4 x i32> %a, i32 2
-  %a_3 = extractelement <4 x i32> %a, i32 3
-
-  %b_0 = extractelement <4 x i32> %b, i32 0
-  %b_1 = extractelement <4 x i32> %b, i32 1
-  %b_2 = extractelement <4 x i32> %b, i32 2
-  %b_3 = extractelement <4 x i32> %b, i32 3
-
-  %t0_0 = insertelement <4 x i32> undef, i32 %a_0, i32 0
-  %t0_1 = insertelement <4 x i32> %t0_0, i32 %b_0, i32 1
-  %t0_2 = insertelement <4 x i32> %t0_1, i32 %a_1, i32 2
-  %t0   = insertelement <4 x i32> %t0_2, i32 %b_1, i32 3
-; X86: punpckldq {{.*}}
-
-  call void @useV4I32(<4 x i32> %t0)
-; X86: call
-
-  %t1_0 = insertelement <4 x i32> undef, i32 %a_0, i32 0
-  %t1_1 = insertelement <4 x i32> %t1_0, i32 %b_1, i32 1
-  %t1_2 = insertelement <4 x i32> %t1_1, i32 %b_1, i32 2
-  %t1   = insertelement <4 x i32> %t1_2, i32 %a_0, i32 3
-; X86: shufps [[T:xmm[0-9]+]],{{.*}},0x10
-; X86: pshufd {{.*}},[[T]],0x28
-
-  call void @useV4I32(<4 x i32> %t1)
-; X86: call
-
-  %t2_0 = insertelement <4 x i32> undef, i32 %a_0, i32 0
-  %t2_1 = insertelement <4 x i32> %t2_0, i32 %b_3, i32 1
-  %t2_2 = insertelement <4 x i32> %t2_1, i32 %a_2, i32 2
-  %t2   = insertelement <4 x i32> %t2_2, i32 %b_2, i32 3
-; X86: shufps {{.*}},0x30
-; X86: shufps {{.*}},0x22
-; X86: shufps {{.*}},0x88
-
-  call void @useV4I32(<4 x i32> %t2)
-; X86: call
-
-  ret void
-}
-; MIPS32-LABEL: shuffleV4I32
-; MIPS32: 	move
-; MIPS32: 	move
-; MIPS32: 	move
-; MIPS32: 	move
-; MIPS32: 	jal
-; MIPS32: 	move
-; MIPS32: 	move
-; MIPS32: 	move
-; MIPS32: 	move
-; MIPS32: 	jal
-; MIPS32: 	move
-; MIPS32: 	move
-; MIPS32: 	move
-; MIPS32: 	move
-; MIPS32: 	jal
diff --git a/third_party/subzero/tests_lit/parse_errs/Inputs/bad-bb-size.tbc b/third_party/subzero/tests_lit/parse_errs/Inputs/bad-bb-size.tbc
deleted file mode 100644
index fcdd1a3..0000000
--- a/third_party/subzero/tests_lit/parse_errs/Inputs/bad-bb-size.tbc
+++ /dev/null
@@ -1,27 +0,0 @@
-65535,8,2;
-1,1;
-65535,17,2;
-1,4;
-7,32;
-2;
-21,0,0,0;
-7,1;
-65534;
-8,2,0,0,0;
-65535,19,2;
-5,0;
-65534;
-65535,14,2;
-1,0,102,105,98;
-65534;
-65535,12,2;
-1,3105555534;
-28,2,1,36;
-11,1,2,1;
-11,2;
-2,3,2,1;
-43,0,5,1;
-2,1,5,0;
-10,1;
-65534;
-65534;
diff --git a/third_party/subzero/tests_lit/parse_errs/Inputs/bad-global-alignment.tbc b/third_party/subzero/tests_lit/parse_errs/Inputs/bad-global-alignment.tbc
deleted file mode 100644
index aa4bfe6..0000000
--- a/third_party/subzero/tests_lit/parse_errs/Inputs/bad-global-alignment.tbc
+++ /dev/null
@@ -1,8 +0,0 @@
-65535,8,2;
-1,1;
-65535,19,2;
-5,1;
-0,31,0;
-2,4;
-65534;
-65534;
diff --git a/third_party/subzero/tests_lit/parse_errs/Inputs/bad-intrinsic-arg.tbc b/third_party/subzero/tests_lit/parse_errs/Inputs/bad-intrinsic-arg.tbc
deleted file mode 100644
index b99309d..0000000
--- a/third_party/subzero/tests_lit/parse_errs/Inputs/bad-intrinsic-arg.tbc
+++ /dev/null
@@ -1,30 +0,0 @@
-65535,8,2;
-1,1;
-65535,17,2;
-1,6;
-7,32;
-4;
-21,0,0,0;
-2;
-21,0,0,1;
-21,0,3,0,1;
-65534;
-8,4,0,1,0;
-8,2,0,1,0;
-8,4,0,1,0;
-8,5,0,0,0;
-65535,19,2;
-5,0;
-65534;
-65535,14,2;
-1,1,102,111,111;
-1,2,98,97,114;
-1,3,102;
-1,0,108,108,118,109,46,110,97,99,108,46,115,101,116,106,109,112;
-65534;
-65535,12,2;
-1,1;
-34,0,6,1;
-10;
-65534;
-65534;
diff --git a/third_party/subzero/tests_lit/parse_errs/Inputs/bad-switch-case.tbc b/third_party/subzero/tests_lit/parse_errs/Inputs/bad-switch-case.tbc
deleted file mode 100644
index 27b9dd5..0000000
--- a/third_party/subzero/tests_lit/parse_errs/Inputs/bad-switch-case.tbc
+++ /dev/null
@@ -1,25 +0,0 @@
-65535,8,2;
-1,1;
-65535,17,2;
-1,3;
-2;
-7,32;
-21,0,0,1;
-65534;
-8,2,0,0,0;
-65535,19,2;
-5,0;
-65534;
-65535,14,2;
-1,0,83,119,105,116,99,104,86,97,114,105,97,98,108,101;
-65534;
-65535,12,2;
-1,6;
-12,1,1,2,2,1,1,2,3105555534,1,1,8,4;
-11,5;
-11,5;
-11,5;
-11,5;
-10;
-65534;
-65534;
diff --git a/third_party/subzero/tests_lit/parse_errs/Inputs/bad-var-fwdref.tbc b/third_party/subzero/tests_lit/parse_errs/Inputs/bad-var-fwdref.tbc
deleted file mode 100644
index 690a5a9..0000000
--- a/third_party/subzero/tests_lit/parse_errs/Inputs/bad-var-fwdref.tbc
+++ /dev/null
@@ -1,21 +0,0 @@
-65535,8,2;
-1,1;
-65535,17,2;
-1,3;
-2;
-7,32;
-21,0,0,1;
-65534;
-8,2,0,0,0;
-65535,19,2;
-5,0;
-65534;
-65535,14,2;
-1,0,102;
-65534;
-65535,12,2;
-1,1;
-43,3105555534,1;
-10;
-65534;
-65534;
diff --git a/third_party/subzero/tests_lit/parse_errs/Inputs/call-fcn-bad-param-type.tbc b/third_party/subzero/tests_lit/parse_errs/Inputs/call-fcn-bad-param-type.tbc
deleted file mode 100644
index 92b647f..0000000
--- a/third_party/subzero/tests_lit/parse_errs/Inputs/call-fcn-bad-param-type.tbc
+++ /dev/null
@@ -1,32 +0,0 @@
-65535,8,2;
-1,1;
-65535,17,2;
-1,5;
-2;
-7,32;
-7,8;
-21,0,0,1;
-21,0,0;
-65534;
-8,3,0,1,0;
-8,4,0,0,0;
-65535,19,2;
-5,0;
-65534;
-65535,14,2;
-1,1,84,101,115,116;
-1,0,102;
-65534;
-65535,12,2;
-1,1;
-65535,11,2;
-1,1;
-4,2;
-1,2;
-4,2;
-65534;
-2,1,1,0;
-34,0,5,2;
-10;
-65534;
-65534;
diff --git a/third_party/subzero/tests_lit/parse_errs/Inputs/dup-module-vst.tbc b/third_party/subzero/tests_lit/parse_errs/Inputs/dup-module-vst.tbc
deleted file mode 100644
index 50edd56..0000000
--- a/third_party/subzero/tests_lit/parse_errs/Inputs/dup-module-vst.tbc
+++ /dev/null
@@ -1,22 +0,0 @@
-65535,8,2;
-1,1;
-65535,17,2;
-1,2;
-2;
-21,0,0;
-65534;
-8,1,0,0,0;
-65535,19,2;
-5,0;
-65534;
-65535,14,2;
-1,0,102;
-65534;
-65535,14,2;
-1,0,102;
-65534;
-65535,12,2;
-1,1;
-10;
-65534;
-65534;
diff --git a/third_party/subzero/tests_lit/parse_errs/Inputs/duplicate-fcn-name.tbc b/third_party/subzero/tests_lit/parse_errs/Inputs/duplicate-fcn-name.tbc
deleted file mode 100644
index 1e363ea..0000000
--- a/third_party/subzero/tests_lit/parse_errs/Inputs/duplicate-fcn-name.tbc
+++ /dev/null
@@ -1,25 +0,0 @@
-65535,8,2;
-1,1;
-65535,17,2;
-1,2;
-2;
-21,0,0;
-65534;
-8,1,0,0,0;
-8,1,0,0,0;
-65535,19,2;
-5,0;
-65534;
-65535,14,2;
-1,0,102;
-1,1,102;
-65534;
-65535,12,2;
-1,1;
-10;
-65534;
-65535,12,2;
-1,1;
-10;
-65534;
-65534;
diff --git a/third_party/subzero/tests_lit/parse_errs/Inputs/fcn-value-index-isnt-defined.tbc b/third_party/subzero/tests_lit/parse_errs/Inputs/fcn-value-index-isnt-defined.tbc
deleted file mode 100644
index 887341f..0000000
--- a/third_party/subzero/tests_lit/parse_errs/Inputs/fcn-value-index-isnt-defined.tbc
+++ /dev/null
@@ -1,26 +0,0 @@
-65535,8,2;
-1,1;
-65535,17,2;
-1,4;
-7,32;
-21,0,0;
-7,8;
-2;
-65534;
-8,1,0,0,0;
-65535,19,2;
-5,0;
-65534;
-65535,14,2;
-1,0,102;
-65534;
-65535,12,2;
-1,1;
-65535,11,2;
-1,0;
-4,2;
-65534;
-19,1,3;
-10,0;
-65534;
-65534;
diff --git a/third_party/subzero/tests_lit/parse_errs/Inputs/indirect-call-on-float.tbc b/third_party/subzero/tests_lit/parse_errs/Inputs/indirect-call-on-float.tbc
deleted file mode 100644
index 2dac5d4..0000000
--- a/third_party/subzero/tests_lit/parse_errs/Inputs/indirect-call-on-float.tbc
+++ /dev/null
@@ -1,25 +0,0 @@
-65535,8,2;
-1,1;
-65535,17,2;
-1,5;
-2;
-21,0,0;
-7,32;
-3;
-21,0,0,2,3;
-65534;
-8,1,0,1,0;
-8,4,0,0,0;
-65535,19,2;
-5,0;
-65534;
-65535,14,2;
-1,1,102;
-1,0,103;
-65534;
-65535,12,2;
-1,1;
-44,0,1,0;
-10;
-65534;
-65534;
diff --git a/third_party/subzero/tests_lit/parse_errs/Inputs/insertelt-wrong-type.tbc b/third_party/subzero/tests_lit/parse_errs/Inputs/insertelt-wrong-type.tbc
deleted file mode 100644
index 8eb6f65..0000000
--- a/third_party/subzero/tests_lit/parse_errs/Inputs/insertelt-wrong-type.tbc
+++ /dev/null
@@ -1,33 +0,0 @@
-65535,8,2;
-1,1;
-65535,17,2;
-1,6;
-7,1;
-12,16,0;
-7,8;
-2;
-21,0,3,1;
-7,32;
-65534;
-8,4,0,0,0;
-65535,19,2;
-5,0;
-65534;
-65535,14,2;
-1,0,102;
-65534;
-65535,12,2;
-1,1;
-65535,11,2;
-1,0;
-4,3;
-1,2;
-4,2;
-1,5;
-4,0;
-65534;
-2,2,2,0;
-7,5,3,2;
-10;
-65534;
-65534;
diff --git a/third_party/subzero/tests_lit/parse_errs/Inputs/multiple-modules.tbc b/third_party/subzero/tests_lit/parse_errs/Inputs/multiple-modules.tbc
deleted file mode 100644
index 4f6ae2e..0000000
--- a/third_party/subzero/tests_lit/parse_errs/Inputs/multiple-modules.tbc
+++ /dev/null
@@ -1,6 +0,0 @@
-65535,8,2;
-1,1;
-65534;
-65535,8,2;
-1,1;
-65534;
diff --git a/third_party/subzero/tests_lit/parse_errs/Inputs/symtab-after-fcn.tbc b/third_party/subzero/tests_lit/parse_errs/Inputs/symtab-after-fcn.tbc
deleted file mode 100644
index 4132a5c..0000000
--- a/third_party/subzero/tests_lit/parse_errs/Inputs/symtab-after-fcn.tbc
+++ /dev/null
@@ -1,19 +0,0 @@
-65535,8,2;
-1,1;
-65535,17,2;
-1,2;
-2;
-21,0,0;
-65534;
-8,1,0,0,0;
-65535,19,2;
-5,0;
-65534;
-65535,12,2;
-1,1;
-10;
-65534;
-65535,14,2;
-1,0,102;
-65534;
-65534;
diff --git a/third_party/subzero/tests_lit/parse_errs/bad-bb-size.test b/third_party/subzero/tests_lit/parse_errs/bad-bb-size.test
deleted file mode 100644
index 6176dfe..0000000
--- a/third_party/subzero/tests_lit/parse_errs/bad-bb-size.test
+++ /dev/null
@@ -1,10 +0,0 @@
-; Test if we recognize a bad basic block count in a function block.
-
-; REQUIRES: no_minimal_build
-
-; RUN: not %pnacl_sz -bitcode-as-text %p/Inputs/bad-bb-size.tbc \
-; RUN:     -bitcode-format=pnacl -notranslate -build-on-read \
-; RUN:     -allow-externally-defined-symbols 2>&1 \
-; RUN:   | FileCheck %s
-
-; CHECK: Function defines 3105555534 basic blocks, which is too big for a function containing 36 bytes
diff --git a/third_party/subzero/tests_lit/parse_errs/bad-global-alignment.test b/third_party/subzero/tests_lit/parse_errs/bad-global-alignment.test
deleted file mode 100644
index f35c5b2..0000000
--- a/third_party/subzero/tests_lit/parse_errs/bad-global-alignment.test
+++ /dev/null
@@ -1,11 +0,0 @@
-; Test that we check that alignment on global variables can't be greater
-; than 2**29.
-
-
-; REQUIRES: no_minimal_build
-
-; RUN: not %pnacl_sz -bitcode-as-text %p/Inputs/bad-global-alignment.tbc \
-; RUN:     -bitcode-format=pnacl -notranslate -build-on-read 2>&1 \
-; RUN:   | FileCheck %s
-
-; CHECK: Global variable alignment greater than 2**29. Found: 2**30
diff --git a/third_party/subzero/tests_lit/parse_errs/bad-intrinsic-arg.test b/third_party/subzero/tests_lit/parse_errs/bad-intrinsic-arg.test
deleted file mode 100644
index ffbb894..0000000
--- a/third_party/subzero/tests_lit/parse_errs/bad-intrinsic-arg.test
+++ /dev/null
@@ -1,29 +0,0 @@
-; Tests that we correctly check parameter types for intrinsics.
-
-; REQUIRES: no_minimal_build
-
-; RUN: not %pnacl_sz -bitcode-as-text \
-; RUN:     %p/Inputs/bad-intrinsic-arg.tbc \
-; RUN:     -bitcode-format=pnacl -notranslate -build-on-read \
-; RUN:     -allow-externally-defined-symbols 2>&1 \
-; RUN:   | FileCheck %s
-
-; CHECK: Invalid type signature for intrinsic llvm.nacl.setjmp: i32 (double)
-
-; RUN: pnacl-bcfuzz -bitcode-as-text \
-; RUN:     %p/Inputs/bad-intrinsic-arg.tbc -output - \
-; RUN:   | not pnacl-bcdis -no-records | FileCheck -check-prefix=ASM %s
-
-; ASM: module {  // BlockID = 8
-; ASM:   declare external i32 @f0(double);
-; ASM:   valuesymtab {  // BlockID = 14
-; ASM:     @f0 : "llvm.nacl.setjmp";
-; ASM: Error(118:0): Intrinsic llvm.nacl.setjmp expects i8* for argument 1. Found: double
-; ASM:   }
-; ASM:   function void @f3(i32 %p0, double %p1) {  // BlockID = 12
-; ASM:     blocks 1;
-; ASM:   %b0:
-; ASM:     %v0 = call i32 @f0(double %p1);
-; ASM:     ret void;
-; ASM:   }
-; ASM: }
diff --git a/third_party/subzero/tests_lit/parse_errs/bad-switch-case.test b/third_party/subzero/tests_lit/parse_errs/bad-switch-case.test
deleted file mode 100644
index 41e9e09..0000000
--- a/third_party/subzero/tests_lit/parse_errs/bad-switch-case.test
+++ /dev/null
@@ -1,7 +0,0 @@
-; REQUIRES: no_minimal_build
-; RUN: not %pnacl_sz -bitcode-as-text %p/Inputs/bad-switch-case.tbc \
-; RUN:     -bitcode-format=pnacl -notranslate -build-on-read \
-; RUN:     -allow-externally-defined-symbols 2>&1 \
-; RUN:   | FileCheck -check-prefix=BAD-SWITCH-CASE %s
-
-; BAD-SWITCH-CASE: Reference to basic block 3105555534 not found. Must be less than 6
diff --git a/third_party/subzero/tests_lit/parse_errs/bad-var-fwdref.test b/third_party/subzero/tests_lit/parse_errs/bad-var-fwdref.test
deleted file mode 100644
index 4d8f003..0000000
--- a/third_party/subzero/tests_lit/parse_errs/bad-var-fwdref.test
+++ /dev/null
@@ -1,10 +0,0 @@
-; Test if we recognize a forward reference that can't be in function block.
-
-; REQUIRES: no_minimal_build
-
-; RUN: not %pnacl_sz -bitcode-as-text %p/Inputs/bad-var-fwdref.tbc \
-; RUN:     -bitcode-format=pnacl -notranslate -build-on-read \
-; RUN:     -allow-externally-defined-symbols 2>&1 \
-; RUN:   | FileCheck %s
-
-; CHECK: Forward reference @3105555534 too big. Have 1 globals and function contains 16 bytes
diff --git a/third_party/subzero/tests_lit/parse_errs/call-fcn-bad-param-type.ll b/third_party/subzero/tests_lit/parse_errs/call-fcn-bad-param-type.ll
deleted file mode 100644
index 093807f..0000000
--- a/third_party/subzero/tests_lit/parse_errs/call-fcn-bad-param-type.ll
+++ /dev/null
@@ -1,16 +0,0 @@
-; Test that a function parameter must be a legal parameter type (unless
-; declaration is intrinsic).
-
-; REQUIRES: no_minimal_build
-
-; RUN: %p2i --expect-fail -i %s --insts --args \
-; RUN:      -allow-externally-defined-symbols | FileCheck %s
-
-declare void @f(i8);
-; CHECK: Invalid type signature for f: void (i8)
-
-define void @Test() {
-entry:
-  call void @f(i8 1)
-  ret void
-}
diff --git a/third_party/subzero/tests_lit/parse_errs/call-fcn-bad-param-type.test b/third_party/subzero/tests_lit/parse_errs/call-fcn-bad-param-type.test
deleted file mode 100644
index 32b9c6b..0000000
--- a/third_party/subzero/tests_lit/parse_errs/call-fcn-bad-param-type.test
+++ /dev/null
@@ -1,49 +0,0 @@
-; Show that we check parameter types of a function call against paramter types
-; of called function.
-
-; REQUIRES: no_minimal_build
-
-; RUN: not %pnacl_sz -bitcode-as-text %p/Inputs/call-fcn-bad-param-type.tbc \
-; RUN:     -bitcode-format=pnacl -notranslate -build-on-read \
-; RUN:     -allow-externally-defined-symbols 2>&1 \
-; RUN:   | FileCheck %s
-
-; RUN: pnacl-bcfuzz -bitcode-as-text -output - \
-; RUN:   %p/Inputs/call-fcn-bad-param-type.tbc \
-; RUN:   | not pnacl-bcdis -no-records | FileCheck %s --check-prefix=DIS
-
-; DIS:      module {  // BlockID = 8
-; DIS-NEXT:   version 1;
-; DIS-NEXT:   types {  // BlockID = 17
-; DIS-NEXT:     count 5;
-; DIS-NEXT:     @t0 = void;
-; DIS-NEXT:     @t1 = i32;
-; DIS-NEXT:     @t2 = i8;
-; DIS-NEXT:     @t3 = void (i32);
-; DIS-NEXT:     @t4 = void ();
-; DIS-NEXT:   }
-; DIS-NEXT:   declare external void @f0(i32);
-; DIS-NEXT:   define external void @f1();
-; DIS-NEXT:   globals {  // BlockID = 19
-; DIS-NEXT:     count 0;
-; DIS-NEXT:   }
-; DIS-NEXT:   valuesymtab {  // BlockID = 14
-; DIS-NEXT:     @f1 : "Test";
-; DIS-NEXT:     @f0 : "f";
-; DIS-NEXT:   }
-; DIS-NEXT:   function void @f1() {  // BlockID = 12
-; DIS-NEXT:     blocks 1;
-; DIS-NEXT:     constants {  // BlockID = 11
-; DIS-NEXT:       i32:
-; DIS-NEXT:         %c0 = i32 1;
-; DIS-NEXT:       i8:
-; DIS-NEXT:         %c1 = i8 1;
-; DIS-NEXT:       }
-; DIS-NEXT:   %b0:
-; DIS-NEXT:     %v0 = add i8 %c1, %c1;
-; DIS-NEXT:     call void @f0(i8 %c1);
-; DIS-NEXT: Error({{.*}}): Parameter 1 mismatch: i8 and i32
-; CHECK: Argument 1 of f expects i32. Found: i8
-; DIS-NEXT:     ret void;
-; DIS-NEXT:   }
-; DIS-NEXT: }
diff --git a/third_party/subzero/tests_lit/parse_errs/call-fcn-bad-return-type.ll b/third_party/subzero/tests_lit/parse_errs/call-fcn-bad-return-type.ll
deleted file mode 100644
index 0a9ce58..0000000
--- a/third_party/subzero/tests_lit/parse_errs/call-fcn-bad-return-type.ll
+++ /dev/null
@@ -1,19 +0,0 @@
-; Test that even if a call return type matches its declaration, it must still be
-; a legal call return type (unless declaration is intrinsic).
-
-; REQUIRES: no_minimal_build
-
-; RUN: %p2i --expect-fail -i %s --insts --args \
-; RUN:      -allow-externally-defined-symbols | FileCheck %s
-
-declare i32 @f();
-
-declare i64 @g();
-
-define void @Test(i32 %ifcn) {
-entry:
-  %fcn =  inttoptr i32 %ifcn to i1()*
-  %v = call i1 %fcn()
-; CHECK: Return type of function is invalid: i1
-  ret void
-}
diff --git a/third_party/subzero/tests_lit/parse_errs/call-indirect-i8.ll b/third_party/subzero/tests_lit/parse_errs/call-indirect-i8.ll
deleted file mode 100644
index c1a8947..0000000
--- a/third_party/subzero/tests_lit/parse_errs/call-indirect-i8.ll
+++ /dev/null
@@ -1,13 +0,0 @@
-; Tests that we don't allow illegal sized parameters on indirect calls.
-
-; REQUIRES: no_minimal_build
-
-; RUN: %p2i --expect-fail -i %s --insts | FileCheck %s
-
-define internal void @CallIndirectI32(i32 %f_addr) {
-entry:
-  %f = inttoptr i32 %f_addr to i32(i8)*
-  %r = call i32 %f(i8 1)
-; CHECK: Argument 1 of function has invalid type: i8
-  ret void
-}
diff --git a/third_party/subzero/tests_lit/parse_errs/dup-module-vst.test b/third_party/subzero/tests_lit/parse_errs/dup-module-vst.test
deleted file mode 100644
index c526bd9..0000000
--- a/third_party/subzero/tests_lit/parse_errs/dup-module-vst.test
+++ /dev/null
@@ -1,21 +0,0 @@
-; Test if we detect multiple module-level symbol tables in bitcode.
-
-; REQUIRES: no_minimal_build
-
-; RUN: not %pnacl_sz -bitcode-as-text %p/Inputs/dup-module-vst.tbc \
-; RUN:     -bitcode-format=pnacl -notranslate -build-on-read 2>&1 \
-; RUN:   | FileCheck %s
-
-; CHECK: Duplicate valuesymtab in module
-
-; RUN: pnacl-bcfuzz -bitcode-as-text %p/Inputs/dup-module-vst.tbc \
-; RUN:   -output - | pnacl-bcdis -no-records | FileCheck -check-prefix=ASM %s
-
-; ASM: module {  // BlockID = 8
-; ASM:   valuesymtab {  // BlockID = 14
-; ASM:     @f0 : "f";
-; ASM:   }
-; ASM:   valuesymtab {  // BlockID = 14
-; ASM:     @f0 : "f";
-; ASM:   }
-; ASM: }
diff --git a/third_party/subzero/tests_lit/parse_errs/duplicate-fcn-name.test b/third_party/subzero/tests_lit/parse_errs/duplicate-fcn-name.test
deleted file mode 100644
index 5d72d36..0000000
--- a/third_party/subzero/tests_lit/parse_errs/duplicate-fcn-name.test
+++ /dev/null
@@ -1,40 +0,0 @@
-; Test if we detect duplicate names in a symbol table.
-
-; REQUIRES: no_minimal_build
-
-; RUN: not %pnacl_sz -bitcode-as-text %p/Inputs/duplicate-fcn-name.tbc \
-; RUN:     -bitcode-format=pnacl -notranslate -build-on-read 2>&1 \
-; RUN:   | FileCheck %s
-
-; CHECK: Module valuesymtab defines duplicate value name: 'f'
-
-; RUN: pnacl-bcfuzz -bitcode-as-text %p/Inputs/duplicate-fcn-name.tbc -output - \
-; RUN:   | pnacl-bcdis -no-records | FileCheck -check-prefix=ASM %s
-
-; ASM: module {  // BlockID = 8
-; ASM:   version 1;
-; ASM:   types {  // BlockID = 17
-; ASM:     count 2;
-; ASM:     @t0 = void;
-; ASM:     @t1 = void ();
-; ASM:   }
-; ASM:   define external void @f0();
-; ASM:   define external void @f1();
-; ASM:   globals {  // BlockID = 19
-; ASM:     count 0;
-; ASM:   }
-; ASM:   valuesymtab {  // BlockID = 14
-; ASM:     @f0 : "f";
-; ASM:     @f1 : "f";
-; ASM:   }
-; ASM:   function void @f0() {  // BlockID = 12
-; ASM:     blocks 1;
-; ASM:   %b0:
-; ASM:     ret void;
-; ASM:   }
-; ASM:   function void @f1() {  // BlockID = 12
-; ASM:     blocks 1;
-; ASM:   %b0:
-; ASM:     ret void;
-; ASM:   }
-; ASM: }
diff --git a/third_party/subzero/tests_lit/parse_errs/fcn-bad-param-type.ll b/third_party/subzero/tests_lit/parse_errs/fcn-bad-param-type.ll
deleted file mode 100644
index a4faab2..0000000
--- a/third_party/subzero/tests_lit/parse_errs/fcn-bad-param-type.ll
+++ /dev/null
@@ -1,16 +0,0 @@
-; Test that even if a call parameter matches its declaration, it must still
-; be a legal call parameter type (unless declaration is intrinsic).
-
-; REQUIRES: no_minimal_build
-
-; RUN: %p2i --expect-fail -i %s --insts --args \
-; RUN:      -allow-externally-defined-symbols | FileCheck %s
-
-declare void @f(i8);
-; CHECK: Invalid type signature for f: void (i8)
-
-define void @Test() {
-entry:
-  call void @f(i8 1)
-  ret void
-}
diff --git a/third_party/subzero/tests_lit/parse_errs/fcn-value-index-isnt-defined.test b/third_party/subzero/tests_lit/parse_errs/fcn-value-index-isnt-defined.test
deleted file mode 100644
index 9390e95..0000000
--- a/third_party/subzero/tests_lit/parse_errs/fcn-value-index-isnt-defined.test
+++ /dev/null
@@ -1,43 +0,0 @@
-; Test if we detect duplicate names in a symbol table.
-
-; REQUIRES: no_minimal_build
-
-; RUN: not %pnacl_sz -bitcode-as-text -allow-externally-defined-symbols \
-; RUN:     %p/Inputs/fcn-value-index-isnt-defined.tbc \
-; RUN:     -bitcode-format=pnacl -notranslate -build-on-read 2>&1 \
-; RUN:   | FileCheck %s
-
-; CHECK: Value index {{.*}} not defined!
-
-; RUN: pnacl-bcfuzz -bitcode-as-text \
-; RUN:     %p/Inputs/fcn-value-index-isnt-defined.tbc -output - \
-; RUN:   | not pnacl-bcdis -no-records | FileCheck -check-prefix=ASM %s
-
-; ASM: module {  // BlockID = 8
-; ASM:   version 1;
-; ASM:   types {  // BlockID = 17
-; ASM:     count 4;
-; ASM:     @t0 = i32;
-; ASM:     @t1 = i32 ();
-; ASM:     @t2 = i8;
-; ASM:     @t3 = void;
-; ASM:   }
-; ASM:   define external i32 @f0();
-; ASM:   globals {  // BlockID = 19
-; ASM:     count 0;
-; ASM:   }
-; ASM:   valuesymtab {  // BlockID = 14
-; ASM:     @f0 : "f";
-; ASM:   }
-; ASM:   function i32 @f0() {  // BlockID = 12
-; ASM:     blocks 1;
-; ASM:     constants {  // BlockID = 11
-; ASM:       i32:
-; ASM:         %c0 = i32 1;
-; ASM:       }
-; ASM:   %b0:
-; ASM:     %v0 = alloca i8, i32 %c0, align 4;
-; ASM:     ret void %v1;
-; ASM: Error({{.*}}): Can't find type for %v1
-; ASM:   }
-; ASM: }
diff --git a/third_party/subzero/tests_lit/parse_errs/indirect-call-on-float.test b/third_party/subzero/tests_lit/parse_errs/indirect-call-on-float.test
deleted file mode 100644
index fc68512..0000000
--- a/third_party/subzero/tests_lit/parse_errs/indirect-call-on-float.test
+++ /dev/null
@@ -1,21 +0,0 @@
-; Tests that we check the call address is a pointer on an indirect call.
-
-; REQUIRES: no_minimal_build
-
-; RUN: not %pnacl_sz -bitcode-as-text -allow-externally-defined-symbols \
-; RUN:     %p/Inputs/indirect-call-on-float.tbc \
-; RUN:     -bitcode-format=pnacl -notranslate -build-on-read 2>&1 \
-; RUN:   | FileCheck %s
-
-; CHECK: Call indirect address not i32. Found: float
-
-; RUN: pnacl-bcfuzz -bitcode-as-text \
-; RUN:     %p/Inputs/indirect-call-on-float.tbc -output - \
-; RUN:   | not pnacl-bcdis -no-records | FileCheck -check-prefix=ASM %s
-
-; ASM:   function void @f1(i32 %p0, float %p1) {  // BlockID = 12
-; ASM:     blocks 1;
-; ASM:   %b0:
-; ASM:     call void %p1();
-; ASM:     ret void;
-; ASM:   }
diff --git a/third_party/subzero/tests_lit/parse_errs/insertelt-wrong-type.test b/third_party/subzero/tests_lit/parse_errs/insertelt-wrong-type.test
deleted file mode 100644
index 3e38a97..0000000
--- a/third_party/subzero/tests_lit/parse_errs/insertelt-wrong-type.test
+++ /dev/null
@@ -1,32 +0,0 @@
-; Tests that we check if the element being inserted into a vector is of the
-; right type.
-
-; REQUIRES: no_minimal_build
-
-; RUN: not %pnacl_sz -bitcode-as-text -allow-externally-defined-symbols \
-; RUN:     %p/Inputs/insertelt-wrong-type.tbc \
-; RUN:     -bitcode-format=pnacl -notranslate -build-on-read 2>&1 \
-; RUN:   | FileCheck %s
-
-; CHECK: Insertelement: Element type i8 doesn't match vector type <16 x i1>
-
-; RUN: pnacl-bcfuzz -bitcode-as-text \
-; RUN:     %p/Inputs/insertelt-wrong-type.tbc -output - \
-; RUN:   | not pnacl-bcdis -no-records | FileCheck -check-prefix=ASM %s
-
-; ASM:   function void @f0(<16 x i1> %p0) {  // BlockID = 12
-; ASM:     blocks 1;
-; ASM:     constants {  // BlockID = 11
-; ASM:       i1:
-; ASM:         %c0 = i1 1;
-; ASM:       i8:
-; ASM:         %c1 = i8 1;
-; ASM:       i32:
-; ASM:         %c2 = i32 0;
-; ASM:       }
-; ASM:   %b0:
-; ASM:     %v0 = add i8 %c1, %c1;
-; ASM:     %v1  =  insertelement <16 x i1> %p0, i8 %c1, i32 %c2;
-; ASM: Error(128:0): insertelement: Illegal element type i8. Expected: i1
-; ASM:     ret void;
-; ASM:   }
diff --git a/third_party/subzero/tests_lit/parse_errs/insertextract-err.ll b/third_party/subzero/tests_lit/parse_errs/insertextract-err.ll
deleted file mode 100644
index 9898924..0000000
--- a/third_party/subzero/tests_lit/parse_errs/insertextract-err.ll
+++ /dev/null
@@ -1,194 +0,0 @@
-; Tests malformed insertelement and extractelement vector instructions.
-
-; RUN: %if --need=allow_dump --command \
-; RUN:   %p2i --expect-fail -i %s --allow-pnacl-reader-error-recovery \
-; RUN:   --filetype=obj -o /dev/null --args -notranslate \
-; RUN:   | %if --need=allow_dump --command FileCheck %s
-
-; RUN: %if --need=no_dump --command \
-; RUN:   %p2i --expect-fail -i %s --allow-pnacl-reader-error-recovery \
-; RUN:   --filetype=obj -o /dev/null --args -notranslate \
-; RUN:   | %if --need=no_dump --command FileCheck %s --check-prefix=MIN
-
-define void @ExtractV4xi1(<4 x i1> %v, i32 %i) {
-  %e0 = extractelement <4 x i1> %v, i32 %i
-; CHECK: Error{{.*}} not {{.*}} constant
-; MIN: Error{{.*}} Invalid function record: <6 4 3>
-  %e1 = extractelement <4 x i1> %v, i32 4
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <6 5 3>
-  %e2 = extractelement <4 x i1> %v, i32 9
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record:  <6 6 3>
-  ret void
-}
-
-define void @ExtractV8xi1(<8 x i1> %v, i32 %i) {
-  %e0 = extractelement <8 x i1> %v, i32 %i
-; CHECK: Error{{.*}} not {{.*}} constant
-; MIN: Error{{.*}} Invalid function record: <6 4 3>
-  %e1 = extractelement <8 x i1> %v, i32 8;
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <6 5 3>
-  %e2 = extractelement <8 x i1> %v, i32 9;
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <6 6 3>
-  ret void
-}
-
-define void @ExtractV16xi1(<16 x i1> %v, i32 %i) {
-  %e0 = extractelement <16 x i1> %v, i32 %i
-; CHECK: Error{{.*}} not {{.*}} constant
-; MIN: Error{{.*}} Invalid function record: <6 4 3>
-  %e1 = extractelement <16 x i1> %v, i32 16
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <6 5 3>
-  %e2 = extractelement <16 x i1> %v, i32 24
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <6 6 3>
-  ret void
-}
-
-define void @ExtractV16xi8(<16 x i8> %v, i32 %i) {
-  %e0 = extractelement <16 x i8> %v, i32 %i
-; CHECK: Error{{.*}} not {{.*}} constant
-; MIN: Error{{.*}} Invalid function record: <6 4 3>
-  %e1 = extractelement <16 x i8> %v, i32 16
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <6 5 3>
-  %e2 = extractelement <16 x i8> %v, i32 71
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <6 6 3>
-  ret void
-}
-
-define void @ExtractV8xi16(<8 x i16> %v, i32 %i) {
-  %e0 = extractelement <8 x i16> %v, i32 %i
-; CHECK: Error{{.*}} not {{.*}} constant
-; MIN: Error{{.*}} Invalid function record: <6 4 3>
-  %e1 = extractelement <8 x i16> %v, i32 8
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <6 5 3>
-  %e2 = extractelement <8 x i16> %v, i32 15
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <6 6 3>
-  ret void
-}
-
-define i32 @ExtractV4xi32(<4 x i32> %v, i32 %i) {
-  %e0 = extractelement <4 x i32> %v, i32 %i
-; CHECK: Error{{.*}} not {{.*}} constant
-; MIN: Error{{.*}} Invalid function record: <6 4 3>
-  %e1 = extractelement <4 x i32> %v, i32 4
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <6 5 3>
-  %e2 = extractelement <4 x i32> %v, i32 17
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <6 6 3>
-  ret i32 %e0
-}
-
-define float @ExtractV4xfloat(<4 x float> %v, i32 %i) {
-  %e0 = extractelement <4 x float> %v, i32 %i
-; CHECK: Error{{.*}} not {{.*}} constant
-; MIN: Error{{.*}} Invalid function record: <6 3 2>
-  %e1 = extractelement <4 x float> %v, i32 4
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <6 4 2>
-  %e2 = extractelement <4 x float> %v, i32 4
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <6 5 3>
-  ret float %e2
-}
-
-define <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %i) {
-  %r0 = insertelement <4 x i1> %v, i1 1, i32 %i
-; CHECK: Error{{.*}} not {{.*}} constant
-; MIN: Error{{.*}} Invalid function record: <7 5 1 4>
-  %r1 = insertelement <4 x i1> %v, i1 1, i32 4
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <7 6 2 4>
-  %r2 = insertelement <4 x i1> %v, i1 1, i32 7
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <7 7 3 4>
-  ret <4 x i1> %r2
-}
-
-define <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %i) {
-  %r0 = insertelement <8 x i1> %v, i1 0, i32 %i
-; CHECK: Error{{.*}} not {{.*}} constant
-; MIN: Error{{.*}} Invalid function record: <7 5 1 4>
-  %r1 = insertelement <8 x i1> %v, i1 0, i32 8
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <7 6 2 4>
-  %r2 = insertelement <8 x i1> %v, i1 0, i32 88
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <7 7 3 4>
-  ret <8 x i1> %r2
-}
-
-define <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %i) {
-  %r = insertelement <16 x i1> %v, i1 1, i32 %i
-; CHECK: Error{{.*}} not {{.*}} constant
-; MIN: Error{{.*}} Invalid function record: <7 5 1 4>
-  ret <16 x i1> %r
-  %r1 = insertelement <16 x i1> %v, i1 1, i32 16
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <7 6 2 4>
-  %r2 = insertelement <16 x i1> %v, i1 1, i32 31
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <7 7 3 4>
-  ret <16 x i1> %r2
-}
-
-define <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %i) {
-  %r0 = insertelement <16 x i8> %v, i8 34, i32 %i
-; CHECK: Error{{.*}} not {{.*}} constant
-; MIN: Error{{.*}} Invalid function record: <7 5 1 4>
-  %r1 = insertelement <16 x i8> %v, i8 34, i32 16
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <7 6 2 4>
-  %r2 = insertelement <16 x i8> %v, i8 34, i32 19
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <7 7 3 4>
-  ret <16 x i8> %r0
-}
-
-define <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %i) {
-  %r0 = insertelement <8 x i16> %v, i16 289, i32 %i
-; CHECK: Error{{.*}} not {{.*}} constant
-; MIN: Error{{.*}} Invalid function record: <7 5 1 4>
-  %r1 = insertelement <8 x i16> %v, i16 289, i32 8
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <7 6 2 4>
-  %r2 = insertelement <8 x i16> %v, i16 289, i32 19
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <7 7 3 4>
-  ret <8 x i16> %r1
-}
-
-define <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %i) {
-  %r0 = insertelement <4 x i32> %v, i32 54545454, i32 %i
-; CHECK: Error{{.*}} not {{.*}} constant
-; MIN: Error{{.*}} Invalid function record: <7 5 3 4>
-  %r1 = insertelement <4 x i32> %v, i32 54545454, i32 4
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <7 6 4 3>
-  %r2 = insertelement <4 x i32> %v, i32 54545454, i32 9
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <7 7 5 3>
-  ret <4 x i32> %r2
-}
-
-define <4 x float> @InsertV4xfloat(<4 x float> %v, i32 %i) {
-  %r0 = insertelement <4 x float> %v, float 3.0, i32 %i
-; CHECK: Error{{.*}} not {{.*}} constant
-; MIN: Error{{.*}} Invalid function record: <7 5 1 4>
-  %r1 = insertelement <4 x float> %v, float 3.0, i32 4
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <7 6 2 4>
-  %r2 = insertelement <4 x float> %v, float 3.0, i32 44
-; CHECK: Error{{.*}} not in range
-; MIN: Error{{.*}} Invalid function record: <7 7 3 4>
-  ret <4 x float> %r2
-}
diff --git a/third_party/subzero/tests_lit/parse_errs/lit.local.cfg b/third_party/subzero/tests_lit/parse_errs/lit.local.cfg
deleted file mode 100644
index e531cac..0000000
--- a/third_party/subzero/tests_lit/parse_errs/lit.local.cfg
+++ /dev/null
@@ -1 +0,0 @@
-config.suffixes = ['.ll', '.test']
diff --git a/third_party/subzero/tests_lit/parse_errs/multiple-modules.test b/third_party/subzero/tests_lit/parse_errs/multiple-modules.test
deleted file mode 100644
index 62ff6aa..0000000
--- a/third_party/subzero/tests_lit/parse_errs/multiple-modules.test
+++ /dev/null
@@ -1,22 +0,0 @@
-; Tests that we check for multiple modules in the bitcode file.
-
-; REQUIRES: no_minimal_build
-
-; RUN: not %pnacl_sz -bitcode-as-text \
-; RUN:     %p/Inputs/multiple-modules.tbc \
-; RUN:     -bitcode-format=pnacl -notranslate -build-on-read 2>&1 \
-; RUN:   | FileCheck %s
-
-; CHECK: Input can't contain more than one module
-
-; RUN: pnacl-bcfuzz -bitcode-as-text \
-; RUN:     %p/Inputs/multiple-modules.tbc -output - \
-; RUN:   | not pnacl-bcdis -no-records | FileCheck -check-prefix=ASM %s
-
-; ASM: module {  // BlockID = 8
-; ASM:   version 1;
-; ASM: }
-; ASM: module {  // BlockID = 8
-; ASM:   version 1;
-; ASM: }
-; ASM: Error(38:4): Expected 1 top level block in bitcode: Found:2
diff --git a/third_party/subzero/tests_lit/parse_errs/nacl-fake-intrinsic.ll b/third_party/subzero/tests_lit/parse_errs/nacl-fake-intrinsic.ll
deleted file mode 100644
index f1e066c..0000000
--- a/third_party/subzero/tests_lit/parse_errs/nacl-fake-intrinsic.ll
+++ /dev/null
@@ -1,11 +0,0 @@
-; Tests that we don't get fooled by a fake NaCl intrinsic.
-
-; REQUIRES: allow_dump
-
-; RUN: %p2i --expect-fail -i %s --insts --args \
-; RUN:      -verbose=inst -allow-externally-defined-symbols \
-; RUN:   | FileCheck %s
-
-declare i32 @llvm.fake.i32(i32)
-
-; CHECK: Error({{.*}}): Invalid intrinsic name: llvm.fake.i32
diff --git a/third_party/subzero/tests_lit/parse_errs/parallel.ll b/third_party/subzero/tests_lit/parse_errs/parallel.ll
deleted file mode 100644
index 6b1ba99..0000000
--- a/third_party/subzero/tests_lit/parse_errs/parallel.ll
+++ /dev/null
@@ -1,23 +0,0 @@
-; Test that we report a bug at the same place, independent of a parallel parse.
-
-; REQUIRES: no_minimal_build
-
-; RUN: %p2i --expect-fail -i %s --args -threads=0 -parse-parallel=0 \
-; RUN:      -allow-externally-defined-symbols | FileCheck %s
-
-; RUN: %p2i --expect-fail -i %s --args -threads=1 -parse-parallel=1 \
-; RUN:      -allow-externally-defined-symbols | FileCheck %s
-
-declare i32 @f();
-
-declare i64 @g();
-
-define void @Test(i32 %ifcn) {
-entry:
-  %fcn =  inttoptr i32 %ifcn to i1()*
-  %v = call i1 %fcn()
-
-; CHECK: Error(222:6): Return type of function is invalid: i1
-
-  ret void
-}
diff --git a/third_party/subzero/tests_lit/parse_errs/symtab-after-fcn.test b/third_party/subzero/tests_lit/parse_errs/symtab-after-fcn.test
deleted file mode 100644
index a74bbd2..0000000
--- a/third_party/subzero/tests_lit/parse_errs/symtab-after-fcn.test
+++ /dev/null
@@ -1,22 +0,0 @@
-; Test if we detect if the value symbol table appears after a function block.
-
-; REQUIRES: no_minimal_build
-
-; RUN: not %pnacl_sz -bitcode-as-text %p/Inputs/symtab-after-fcn.tbc \
-; RUN:     -bitcode-format=pnacl -notranslate -build-on-read \
-; RUN:     -allow-externally-defined-symbols 2>&1 \
-; RUN:   | FileCheck %s
-
-; CHECK: Module valuesymtab not allowed after function blocks
-
-; RUN: pnacl-bcfuzz -bitcode-as-text %p/Inputs/symtab-after-fcn.tbc \
-; RUN:   -output - | not pnacl-bcdis -no-records \
-; RUN:             | FileCheck -check-prefix=ASM %s
-
-; ASM: module {  // BlockID = 8
-; ASM:   function void @f0() {  // BlockID = 12
-; ASM:   }
-; ASM:   valuesymtab {  // BlockID = 14
-; ASM: Error({{.*}}): Module symbol table must appear before function blocks
-; ASM:   }
-; ASM: }
diff --git a/third_party/subzero/tests_lit/reader_tests/Inputs/binop-newform.tbc b/third_party/subzero/tests_lit/reader_tests/Inputs/binop-newform.tbc
deleted file mode 100644
index 65f7b81..0000000
--- a/third_party/subzero/tests_lit/reader_tests/Inputs/binop-newform.tbc
+++ /dev/null
@@ -1,18 +0,0 @@
-65535,8,2;
-1,1;
-65535,17,2;
-1,3;
-7,32;
-21,0,0,0,0;
-2;
-65534;
-8,1,0,0,3;
-65535,19,2;
-5,0;
-65534;
-65535,12,4;
-1,1;
-2,2,1,0;
-10,1;
-65534;
-65534;
diff --git a/third_party/subzero/tests_lit/reader_tests/Inputs/binop-oldform.tbc b/third_party/subzero/tests_lit/reader_tests/Inputs/binop-oldform.tbc
deleted file mode 100644
index 81e2c0e..0000000
--- a/third_party/subzero/tests_lit/reader_tests/Inputs/binop-oldform.tbc
+++ /dev/null
@@ -1,18 +0,0 @@
-65535,8,2;
-1,1;
-65535,17,2;
-1,3;
-7,32;
-21,0,0,0,0;
-2;
-65534;
-8,1,0,0,3;
-65535,19,2;
-5,0;
-65534;
-65535,12,4;
-1,1;
-2,2,1,0,5169;
-10,1;
-65534;
-65534;
diff --git a/third_party/subzero/tests_lit/reader_tests/alloca.ll b/third_party/subzero/tests_lit/reader_tests/alloca.ll
deleted file mode 100644
index bb18e74..0000000
--- a/third_party/subzero/tests_lit/reader_tests/alloca.ll
+++ /dev/null
@@ -1,165 +0,0 @@
-; Test if we can read alloca instructions.
-
-; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN:   %p2i -i %s --args -notranslate -timing | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-; Show examples where size is defined by a constant.
-
-define internal i32 @AllocaA0Size1() {
-entry:
-  %array = alloca i8, i32 1
-  %addr = ptrtoint i8* %array to i32
-  ret i32 %addr
-
-; CHECK:      entry:
-; CHECK-NEXT:   %array = alloca i8, i32 1
-; CHECK-NEXT:   ret i32 %array
-}
-
-define internal i32 @AllocaA0Size2() {
-entry:
-  %array = alloca i8, i32 2
-  %addr = ptrtoint i8* %array to i32
-  ret i32 %addr
-
-; CHECK:      entry:
-; CHECK-NEXT:   %array = alloca i8, i32 2
-; CHECK-NEXT:   ret i32 %array
-}
-
-define internal i32 @AllocaA0Size3() {
-entry:
-  %array = alloca i8, i32 3
-  %addr = ptrtoint i8* %array to i32
-  ret i32 %addr
-
-; CHECK:      entry:
-; CHECK-NEXT:   %array = alloca i8, i32 3
-; CHECK-NEXT:   ret i32 %array
-}
-
-define internal i32 @AllocaA0Size4() {
-entry:
-  %array = alloca i8, i32 4
-  %addr = ptrtoint i8* %array to i32
-  ret i32 %addr
-
-; CHECK:      entry:
-; CHECK-NEXT:   %array = alloca i8, i32 4
-; CHECK-NEXT:   ret i32 %array
-}
-
-define internal i32 @AllocaA1Size4(i32 %n) {
-entry:
-  %array = alloca i8, i32 4, align 1
-  %addr = ptrtoint i8* %array to i32
-  ret i32 %addr
-
-; CHECK:      entry:
-; CHECK-NEXT:   %array = alloca i8, i32 4, align 1
-; CHECK-NEXT:   ret i32 %array
-}
-
-define internal i32 @AllocaA2Size4(i32 %n) {
-entry:
-  %array = alloca i8, i32 4, align 2
-  %addr = ptrtoint i8* %array to i32
-  ret i32 %addr
-
-; CHECK:      entry:
-; CHECK-NEXT:   %array = alloca i8, i32 4, align 2
-; CHECK-NEXT:   ret i32 %array
-}
-
-define internal i32 @AllocaA8Size4(i32 %n) {
-entry:
-  %array = alloca i8, i32 4, align 8
-  %addr = ptrtoint i8* %array to i32
-  ret i32 %addr
-
-; CHECK:      entry:
-; CHECK-NEXT:   %array = alloca i8, i32 4, align 8
-; CHECK-NEXT:   ret i32 %array
-}
-
-define internal i32 @Alloca16Size4(i32 %n) {
-entry:
-  %array = alloca i8, i32 4, align 16
-  %addr = ptrtoint i8* %array to i32
-  ret i32 %addr
-
-; CHECK:      entry:
-; CHECK-NEXT:   %array = alloca i8, i32 4, align 16
-; CHECK-NEXT:   ret i32 %array
-}
-
-; Show examples where size is not known at compile time.
-
-define internal i32 @AllocaVarsizeA0(i32 %n) {
-entry:
-  %array = alloca i8, i32 %n
-  %addr = ptrtoint i8* %array to i32
-  ret i32 %addr
-
-; CHECK:      entry:
-; CHECK-NEXT:   %array = alloca i8, i32 %n
-; CHECK-NEXT:   ret i32 %array
-}
-
-define internal i32 @AllocaVarsizeA1(i32 %n) {
-entry:
-  %array = alloca i8, i32 %n, align 1
-  %addr = ptrtoint i8* %array to i32
-  ret i32 %addr
-
-; CHECK:      entry:
-; CHECK-NEXT:   %array = alloca i8, i32 %n, align 1
-; CHECK-NEXT:   ret i32 %array
-}
-
-define internal i32 @AllocaVarsizeA2(i32 %n) {
-entry:
-  %array = alloca i8, i32 %n, align 2
-  %addr = ptrtoint i8* %array to i32
-  ret i32 %addr
-
-; CHECK:      entry:
-; CHECK-NEXT:   %array = alloca i8, i32 %n, align 2
-; CHECK-NEXT:   ret i32 %array
-}
-
-define internal i32 @AllocaVarsizeA4(i32 %n) {
-entry:
-  %array = alloca i8, i32 %n, align 4
-  %addr = ptrtoint i8* %array to i32
-  ret i32 %addr
-
-; CHECK:      entry:
-; CHECK-NEXT:   %array = alloca i8, i32 %n, align 4
-; CHECK-NEXT:   ret i32 %array
-}
-
-define internal i32 @AllocaVarsizeA8(i32 %n) {
-entry:
-  %array = alloca i8, i32 %n, align 8
-  %addr = ptrtoint i8* %array to i32
-  ret i32 %addr
-
-; CHECK:      entry:
-; CHECK-NEXT:   %array = alloca i8, i32 %n, align 8
-; CHECK-NEXT:   ret i32 %array
-}
-
-define internal i32 @AllocaVarsizeA16(i32 %n) {
-entry:
-  %array = alloca i8, i32 %n, align 16
-  %addr = ptrtoint i8* %array to i32
-  ret i32 %addr
-
-; CHECK:      entry:
-; CHECK-NEXT:   %array = alloca i8, i32 %n, align 16
-; CHECK-NEXT:   ret i32 %array
-}
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/binop-forms.test b/third_party/subzero/tests_lit/reader_tests/binop-forms.test
deleted file mode 100644
index 086f0f0..0000000
--- a/third_party/subzero/tests_lit/reader_tests/binop-forms.test
+++ /dev/null
@@ -1,19 +0,0 @@
-; Test if we recognize both the old and the new forms of a binary instruction.
-
-; REQUIRES: no_minimal_build
-
-; Checks that the new form of binary add (without flags argument) works.
-; RUN: %pnacl_sz -verbose inst,global_init -notranslate \
-; RUN:   -threads=0 -bitcode-as-text %p/Inputs/binop-newform.tbc \
-; RUN: | FileCheck %s
-
-; Checks that the old form of binary add (with flags argument) works.
-; RUN: %pnacl_sz -verbose inst,global_init -notranslate \
-; RUN:   -threads=0 -bitcode-as-text %p/Inputs/binop-oldform.tbc \
-; RUN: | FileCheck %s
-
-; CHECK: define internal i32 @Function(i32 %__0, i32 %__1) {
-; CHECK: __0:
-; CHECK:   %__2 = add i32 %__0, %__1
-; CHECK:   ret i32 %__2
-; CHECK: }
diff --git a/third_party/subzero/tests_lit/reader_tests/binops.ll b/third_party/subzero/tests_lit/reader_tests/binops.ll
deleted file mode 100644
index c4533ac..0000000
--- a/third_party/subzero/tests_lit/reader_tests/binops.ll
+++ /dev/null
@@ -1,971 +0,0 @@
-; Tests if we can read binary operators.
-
-; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN: %l2i -i %s --insts | %ifl FileCheck %s
-; RUN: %lc2i -i %s --insts | %iflc FileCheck %s
-; RUN:   %p2i -i %s --args -notranslate -timing | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-; TODO(kschimpf): add i8/i16. Needs bitcasts.
-
-define internal i32 @AddI32(i32 %a, i32 %b) {
-entry:
-  %add = add i32 %b, %a
-  ret i32 %add
-}
-
-; CHECK:      define internal i32 @AddI32(i32 %a, i32 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %add = add i32 %b, %a
-; CHECK-NEXT:   ret i32 %add
-; CHECK-NEXT: }
-
-define internal i64 @AddI64(i64 %a, i64 %b) {
-entry:
-  %add = add i64 %b, %a
-  ret i64 %add
-}
-
-; CHECK-NEXT: define internal i64 @AddI64(i64 %a, i64 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %add = add i64 %b, %a
-; CHECK-NEXT:   ret i64 %add
-; CHECK-NEXT: }
-
-define internal <16 x i8> @AddV16I8(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %add = add <16 x i8> %b, %a
-  ret <16 x i8> %add
-}
-
-; CHECK-NEXT: define internal <16 x i8> @AddV16I8(<16 x i8> %a, <16 x i8> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %add = add <16 x i8> %b, %a
-; CHECK-NEXT:   ret <16 x i8> %add
-; CHECK-NEXT: }
-
-define internal <8 x i16> @AddV8I16(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %add = add <8 x i16> %b, %a
-  ret <8 x i16> %add
-}
-
-; CHECK-NEXT: define internal <8 x i16> @AddV8I16(<8 x i16> %a, <8 x i16> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %add = add <8 x i16> %b, %a
-; CHECK-NEXT:   ret <8 x i16> %add
-; CHECK-NEXT: }
-
-define internal <4 x i32> @AddV4I32(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %add = add <4 x i32> %b, %a
-  ret <4 x i32> %add
-}
-
-; CHECK-NEXT: define internal <4 x i32> @AddV4I32(<4 x i32> %a, <4 x i32> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %add = add <4 x i32> %b, %a
-; CHECK-NEXT:   ret <4 x i32> %add
-; CHECK-NEXT: }
-
-define internal float @AddFloat(float %a, float %b) {
-entry:
-  %add = fadd float %b, %a
-  ret float %add
-}
-
-; CHECK-NEXT: define internal float @AddFloat(float %a, float %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %add = fadd float %b, %a
-; CHECK-NEXT:   ret float %add
-; CHECK-NEXT: }
-
-define internal double @AddDouble(double %a, double %b) {
-entry:
-  %add = fadd double %b, %a
-  ret double %add
-}
-
-; CHECK-NEXT: define internal double @AddDouble(double %a, double %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %add = fadd double %b, %a
-; CHECK-NEXT:   ret double %add
-; CHECK-NEXT: }
-
-define internal <4 x float> @AddV4Float(<4 x float> %a, <4 x float> %b) {
-entry:
-  %add = fadd <4 x float> %b, %a
-  ret <4 x float> %add
-}
-
-; CHECK-NEXT: define internal <4 x float> @AddV4Float(<4 x float> %a, <4 x float> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %add = fadd <4 x float> %b, %a
-; CHECK-NEXT:   ret <4 x float> %add
-; CHECK-NEXT: }
-
-; TODO(kschimpf): sub i8/i16. Needs bitcasts.
-
-define internal i32 @SubI32(i32 %a, i32 %b) {
-entry:
-  %sub = sub i32 %a, %b
-  ret i32 %sub
-}
-
-; CHECK-NEXT: define internal i32 @SubI32(i32 %a, i32 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %sub = sub i32 %a, %b
-; CHECK-NEXT:   ret i32 %sub
-; CHECK-NEXT: }
-
-define internal i64 @SubI64(i64 %a, i64 %b) {
-entry:
-  %sub = sub i64 %a, %b
-  ret i64 %sub
-}
-
-; CHECK-NEXT: define internal i64 @SubI64(i64 %a, i64 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %sub = sub i64 %a, %b
-; CHECK-NEXT:   ret i64 %sub
-; CHECK-NEXT: }
-
-define internal <16 x i8> @SubV16I8(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %sub = sub <16 x i8> %a, %b
-  ret <16 x i8> %sub
-}
-
-; CHECK-NEXT: define internal <16 x i8> @SubV16I8(<16 x i8> %a, <16 x i8> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %sub = sub <16 x i8> %a, %b
-; CHECK-NEXT:   ret <16 x i8> %sub
-; CHECK-NEXT: }
-
-define internal <8 x i16> @SubV8I16(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %sub = sub <8 x i16> %a, %b
-  ret <8 x i16> %sub
-}
-
-; CHECK-NEXT: define internal <8 x i16> @SubV8I16(<8 x i16> %a, <8 x i16> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %sub = sub <8 x i16> %a, %b
-; CHECK-NEXT:   ret <8 x i16> %sub
-; CHECK-NEXT: }
-
-define internal <4 x i32> @SubV4I32(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %sub = sub <4 x i32> %a, %b
-  ret <4 x i32> %sub
-}
-
-; CHECK-NEXT: define internal <4 x i32> @SubV4I32(<4 x i32> %a, <4 x i32> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %sub = sub <4 x i32> %a, %b
-; CHECK-NEXT:   ret <4 x i32> %sub
-; CHECK-NEXT: }
-
-define internal float @SubFloat(float %a, float %b) {
-entry:
-  %sub = fsub float %a, %b
-  ret float %sub
-}
-
-; CHECK-NEXT: define internal float @SubFloat(float %a, float %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %sub = fsub float %a, %b
-; CHECK-NEXT:   ret float %sub
-; CHECK-NEXT: }
-
-define internal double @SubDouble(double %a, double %b) {
-entry:
-  %sub = fsub double %a, %b
-  ret double %sub
-}
-
-; CHECK-NEXT: define internal double @SubDouble(double %a, double %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %sub = fsub double %a, %b
-; CHECK-NEXT:   ret double %sub
-; CHECK-NEXT: }
-
-define internal <4 x float> @SubV4Float(<4 x float> %a, <4 x float> %b) {
-entry:
-  %sub = fsub <4 x float> %a, %b
-  ret <4 x float> %sub
-}
-
-; CHECK-NEXT: define internal <4 x float> @SubV4Float(<4 x float> %a, <4 x float> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %sub = fsub <4 x float> %a, %b
-; CHECK-NEXT:   ret <4 x float> %sub
-; CHECK-NEXT: }
-
-; TODO(kschimpf): mul i8/i16. Needs bitcasts.
-
-define internal i32 @MulI32(i32 %a, i32 %b) {
-entry:
-  %mul = mul i32 %b, %a
-  ret i32 %mul
-}
-
-; CHECK-NEXT: define internal i32 @MulI32(i32 %a, i32 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %mul = mul i32 %b, %a
-; CHECK-NEXT:   ret i32 %mul
-; CHECK-NEXT: }
-
-define internal i64 @MulI64(i64 %a, i64 %b) {
-entry:
-  %mul = mul i64 %b, %a
-  ret i64 %mul
-}
-
-; CHECK-NEXT: define internal i64 @MulI64(i64 %a, i64 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %mul = mul i64 %b, %a
-; CHECK-NEXT:   ret i64 %mul
-; CHECK-NEXT: }
-
-define internal <16 x i8> @MulV16I8(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %mul = mul <16 x i8> %b, %a
-  ret <16 x i8> %mul
-}
-
-; CHECK-NEXT: define internal <16 x i8> @MulV16I8(<16 x i8> %a, <16 x i8> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %mul = mul <16 x i8> %b, %a
-; CHECK-NEXT:   ret <16 x i8> %mul
-; CHECK-NEXT: }
-
-define internal float @MulFloat(float %a, float %b) {
-entry:
-  %mul = fmul float %b, %a
-  ret float %mul
-}
-
-; CHECK-NEXT: define internal float @MulFloat(float %a, float %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %mul = fmul float %b, %a
-; CHECK-NEXT:   ret float %mul
-; CHECK-NEXT: }
-
-define internal double @MulDouble(double %a, double %b) {
-entry:
-  %mul = fmul double %b, %a
-  ret double %mul
-}
-
-; CHECK-NEXT: define internal double @MulDouble(double %a, double %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %mul = fmul double %b, %a
-; CHECK-NEXT:   ret double %mul
-; CHECK-NEXT: }
-
-define internal <4 x float> @MulV4Float(<4 x float> %a, <4 x float> %b) {
-entry:
-  %mul = fmul <4 x float> %b, %a
-  ret <4 x float> %mul
-}
-
-; CHECK-NEXT: define internal <4 x float> @MulV4Float(<4 x float> %a, <4 x float> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %mul = fmul <4 x float> %b, %a
-; CHECK-NEXT:   ret <4 x float> %mul
-; CHECK-NEXT: }
-
-; TODO(kschimpf): sdiv i8/i16. Needs bitcasts.
-
-define internal i32 @SdivI32(i32 %a, i32 %b) {
-entry:
-  %div = sdiv i32 %a, %b
-  ret i32 %div
-}
-
-; CHECK-NEXT: define internal i32 @SdivI32(i32 %a, i32 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %div = sdiv i32 %a, %b
-; CHECK-NEXT:   ret i32 %div
-; CHECK-NEXT: }
-
-define internal i64 @SdivI64(i64 %a, i64 %b) {
-entry:
-  %div = sdiv i64 %a, %b
-  ret i64 %div
-}
-
-; CHECK-NEXT: define internal i64 @SdivI64(i64 %a, i64 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %div = sdiv i64 %a, %b
-; CHECK-NEXT:   ret i64 %div
-; CHECK-NEXT: }
-
-define internal <16 x i8> @SdivV16I8(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %div = sdiv <16 x i8> %a, %b
-  ret <16 x i8> %div
-}
-
-; CHECK-NEXT: define internal <16 x i8> @SdivV16I8(<16 x i8> %a, <16 x i8> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %div = sdiv <16 x i8> %a, %b
-; CHECK-NEXT:   ret <16 x i8> %div
-; CHECK-NEXT: }
-
-define internal <8 x i16> @SdivV8I16(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %div = sdiv <8 x i16> %a, %b
-  ret <8 x i16> %div
-}
-
-; CHECK-NEXT: define internal <8 x i16> @SdivV8I16(<8 x i16> %a, <8 x i16> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %div = sdiv <8 x i16> %a, %b
-; CHECK-NEXT:   ret <8 x i16> %div
-; CHECK-NEXT: }
-
-define internal <4 x i32> @SdivV4I32(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %div = sdiv <4 x i32> %a, %b
-  ret <4 x i32> %div
-}
-
-; CHECK-NEXT: define internal <4 x i32> @SdivV4I32(<4 x i32> %a, <4 x i32> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %div = sdiv <4 x i32> %a, %b
-; CHECK-NEXT:   ret <4 x i32> %div
-; CHECK-NEXT: }
-
-; TODO(kschimpf): srem i8/i16. Needs bitcasts.
-
-define internal i32 @SremI32(i32 %a, i32 %b) {
-entry:
-  %rem = srem i32 %a, %b
-  ret i32 %rem
-}
-
-; CHECK-NEXT: define internal i32 @SremI32(i32 %a, i32 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %rem = srem i32 %a, %b
-; CHECK-NEXT:   ret i32 %rem
-; CHECK-NEXT: }
-
-define internal i64 @SremI64(i64 %a, i64 %b) {
-entry:
-  %rem = srem i64 %a, %b
-  ret i64 %rem
-}
-
-; CHECK-NEXT: define internal i64 @SremI64(i64 %a, i64 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %rem = srem i64 %a, %b
-; CHECK-NEXT:   ret i64 %rem
-; CHECK-NEXT: }
-
-define internal <16 x i8> @SremV16I8(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %rem = srem <16 x i8> %a, %b
-  ret <16 x i8> %rem
-}
-
-; CHECK-NEXT: define internal <16 x i8> @SremV16I8(<16 x i8> %a, <16 x i8> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %rem = srem <16 x i8> %a, %b
-; CHECK-NEXT:   ret <16 x i8> %rem
-; CHECK-NEXT: }
-
-define internal <8 x i16> @SremV8I16(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %rem = srem <8 x i16> %a, %b
-  ret <8 x i16> %rem
-}
-
-; CHECK-NEXT: define internal <8 x i16> @SremV8I16(<8 x i16> %a, <8 x i16> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %rem = srem <8 x i16> %a, %b
-; CHECK-NEXT:   ret <8 x i16> %rem
-; CHECK-NEXT: }
-
-define internal <4 x i32> @SremV4I32(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %rem = srem <4 x i32> %a, %b
-  ret <4 x i32> %rem
-}
-
-; CHECK-NEXT: define internal <4 x i32> @SremV4I32(<4 x i32> %a, <4 x i32> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %rem = srem <4 x i32> %a, %b
-; CHECK-NEXT:   ret <4 x i32> %rem
-; CHECK-NEXT: }
-
-; TODO(kschimpf): udiv i8/i16. Needs bitcasts.
-
-define internal i32 @UdivI32(i32 %a, i32 %b) {
-entry:
-  %div = udiv i32 %a, %b
-  ret i32 %div
-}
-
-; CHECK-NEXT: define internal i32 @UdivI32(i32 %a, i32 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %div = udiv i32 %a, %b
-; CHECK-NEXT:   ret i32 %div
-; CHECK-NEXT: }
-
-define internal i64 @UdivI64(i64 %a, i64 %b) {
-entry:
-  %div = udiv i64 %a, %b
-  ret i64 %div
-}
-
-; CHECK-NEXT: define internal i64 @UdivI64(i64 %a, i64 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %div = udiv i64 %a, %b
-; CHECK-NEXT:   ret i64 %div
-; CHECK-NEXT: }
-
-define internal <16 x i8> @UdivV16I8(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %div = udiv <16 x i8> %a, %b
-  ret <16 x i8> %div
-}
-
-; CHECK-NEXT: define internal <16 x i8> @UdivV16I8(<16 x i8> %a, <16 x i8> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %div = udiv <16 x i8> %a, %b
-; CHECK-NEXT:   ret <16 x i8> %div
-; CHECK-NEXT: }
-
-define internal <8 x i16> @UdivV8I16(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %div = udiv <8 x i16> %a, %b
-  ret <8 x i16> %div
-}
-
-; CHECK-NEXT: define internal <8 x i16> @UdivV8I16(<8 x i16> %a, <8 x i16> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %div = udiv <8 x i16> %a, %b
-; CHECK-NEXT:   ret <8 x i16> %div
-; CHECK-NEXT: }
-
-define internal <4 x i32> @UdivV4I32(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %div = udiv <4 x i32> %a, %b
-  ret <4 x i32> %div
-}
-
-; CHECK-NEXT: define internal <4 x i32> @UdivV4I32(<4 x i32> %a, <4 x i32> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %div = udiv <4 x i32> %a, %b
-; CHECK-NEXT:   ret <4 x i32> %div
-; CHECK-NEXT: }
-
-; TODO(kschimpf): urem i8/i16. Needs bitcasts.
-
-define internal i32 @UremI32(i32 %a, i32 %b) {
-entry:
-  %rem = urem i32 %a, %b
-  ret i32 %rem
-}
-
-; CHECK-NEXT: define internal i32 @UremI32(i32 %a, i32 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %rem = urem i32 %a, %b
-; CHECK-NEXT:   ret i32 %rem
-; CHECK-NEXT: }
-
-define internal i64 @UremI64(i64 %a, i64 %b) {
-entry:
-  %rem = urem i64 %a, %b
-  ret i64 %rem
-}
-
-; CHECK-NEXT: define internal i64 @UremI64(i64 %a, i64 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %rem = urem i64 %a, %b
-; CHECK-NEXT:   ret i64 %rem
-; CHECK-NEXT: }
-
-define internal <16 x i8> @UremV16I8(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %rem = urem <16 x i8> %a, %b
-  ret <16 x i8> %rem
-}
-
-; CHECK-NEXT: define internal <16 x i8> @UremV16I8(<16 x i8> %a, <16 x i8> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %rem = urem <16 x i8> %a, %b
-; CHECK-NEXT:   ret <16 x i8> %rem
-; CHECK-NEXT: }
-
-define internal <8 x i16> @UremV8I16(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %rem = urem <8 x i16> %a, %b
-  ret <8 x i16> %rem
-}
-
-; CHECK-NEXT: define internal <8 x i16> @UremV8I16(<8 x i16> %a, <8 x i16> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %rem = urem <8 x i16> %a, %b
-; CHECK-NEXT:   ret <8 x i16> %rem
-; CHECK-NEXT: }
-
-define internal <4 x i32> @UremV4I32(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %rem = urem <4 x i32> %a, %b
-  ret <4 x i32> %rem
-}
-
-; CHECK-NEXT: define internal <4 x i32> @UremV4I32(<4 x i32> %a, <4 x i32> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %rem = urem <4 x i32> %a, %b
-; CHECK-NEXT:   ret <4 x i32> %rem
-; CHECK-NEXT: }
-
-define internal float @fdivFloat(float %a, float %b) {
-entry:
-  %div = fdiv float %a, %b
-  ret float %div
-}
-
-; CHECK-NEXT: define internal float @fdivFloat(float %a, float %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %div = fdiv float %a, %b
-; CHECK-NEXT:   ret float %div
-; CHECK-NEXT: }
-
-define internal double @fdivDouble(double %a, double %b) {
-entry:
-  %div = fdiv double %a, %b
-  ret double %div
-}
-
-; CHECK-NEXT: define internal double @fdivDouble(double %a, double %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %div = fdiv double %a, %b
-; CHECK-NEXT:   ret double %div
-; CHECK-NEXT: }
-
-define internal <4 x float> @fdivV4Float(<4 x float> %a, <4 x float> %b) {
-entry:
-  %div = fdiv <4 x float> %a, %b
-  ret <4 x float> %div
-}
-
-; CHECK-NEXT: define internal <4 x float> @fdivV4Float(<4 x float> %a, <4 x float> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %div = fdiv <4 x float> %a, %b
-; CHECK-NEXT:   ret <4 x float> %div
-; CHECK-NEXT: }
-
-define internal float @fremFloat(float %a, float %b) {
-entry:
-  %rem = frem float %a, %b
-  ret float %rem
-}
-
-; CHECK-NEXT: define internal float @fremFloat(float %a, float %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %rem = frem float %a, %b
-; CHECK-NEXT:   ret float %rem
-; CHECK-NEXT: }
-
-define internal double @fremDouble(double %a, double %b) {
-entry:
-  %rem = frem double %a, %b
-  ret double %rem
-}
-
-; CHECK-NEXT: define internal double @fremDouble(double %a, double %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %rem = frem double %a, %b
-; CHECK-NEXT:   ret double %rem
-; CHECK-NEXT: }
-
-define internal <4 x float> @fremV4Float(<4 x float> %a, <4 x float> %b) {
-entry:
-  %rem = frem <4 x float> %a, %b
-  ret <4 x float> %rem
-}
-
-; CHECK-NEXT: define internal <4 x float> @fremV4Float(<4 x float> %a, <4 x float> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %rem = frem <4 x float> %a, %b
-; CHECK-NEXT:   ret <4 x float> %rem
-; CHECK-NEXT: }
-
-; TODO(kschimpf): and i1/i8/i16. Needs bitcasts.
-
-define internal i32 @AndI32(i32 %a, i32 %b) {
-entry:
-  %and = and i32 %b, %a
-  ret i32 %and
-}
-
-; CHECK-NEXT: define internal i32 @AndI32(i32 %a, i32 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %and = and i32 %b, %a
-; CHECK-NEXT:   ret i32 %and
-; CHECK-NEXT: }
-
-define internal i64 @AndI64(i64 %a, i64 %b) {
-entry:
-  %and = and i64 %b, %a
-  ret i64 %and
-}
-
-; CHECK-NEXT: define internal i64 @AndI64(i64 %a, i64 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %and = and i64 %b, %a
-; CHECK-NEXT:   ret i64 %and
-; CHECK-NEXT: }
-
-define internal <16 x i8> @AndV16I8(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %and = and <16 x i8> %b, %a
-  ret <16 x i8> %and
-}
-
-; CHECK-NEXT: define internal <16 x i8> @AndV16I8(<16 x i8> %a, <16 x i8> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %and = and <16 x i8> %b, %a
-; CHECK-NEXT:   ret <16 x i8> %and
-; CHECK-NEXT: }
-
-define internal <8 x i16> @AndV8I16(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %and = and <8 x i16> %b, %a
-  ret <8 x i16> %and
-}
-
-; CHECK-NEXT: define internal <8 x i16> @AndV8I16(<8 x i16> %a, <8 x i16> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %and = and <8 x i16> %b, %a
-; CHECK-NEXT:   ret <8 x i16> %and
-; CHECK-NEXT: }
-
-define internal <4 x i32> @AndV4I32(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %and = and <4 x i32> %b, %a
-  ret <4 x i32> %and
-}
-
-; CHECK-NEXT: define internal <4 x i32> @AndV4I32(<4 x i32> %a, <4 x i32> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %and = and <4 x i32> %b, %a
-; CHECK-NEXT:   ret <4 x i32> %and
-; CHECK-NEXT: }
-
-; TODO(kschimpf): or i1/i8/i16. Needs bitcasts.
-
-define internal i32 @OrI32(i32 %a, i32 %b) {
-entry:
-  %or = or i32 %b, %a
-  ret i32 %or
-}
-
-; CHECK-NEXT: define internal i32 @OrI32(i32 %a, i32 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %or = or i32 %b, %a
-; CHECK-NEXT:   ret i32 %or
-; CHECK-NEXT: }
-
-define internal i64 @OrI64(i64 %a, i64 %b) {
-entry:
-  %or = or i64 %b, %a
-  ret i64 %or
-}
-
-; CHECK-NEXT: define internal i64 @OrI64(i64 %a, i64 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %or = or i64 %b, %a
-; CHECK-NEXT:   ret i64 %or
-; CHECK-NEXT: }
-
-define internal <16 x i8> @OrV16I8(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %or = or <16 x i8> %b, %a
-  ret <16 x i8> %or
-}
-
-; CHECK-NEXT: define internal <16 x i8> @OrV16I8(<16 x i8> %a, <16 x i8> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %or = or <16 x i8> %b, %a
-; CHECK-NEXT:   ret <16 x i8> %or
-; CHECK-NEXT: }
-
-define internal <8 x i16> @OrV8I16(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %or = or <8 x i16> %b, %a
-  ret <8 x i16> %or
-}
-
-; CHECK-NEXT: define internal <8 x i16> @OrV8I16(<8 x i16> %a, <8 x i16> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %or = or <8 x i16> %b, %a
-; CHECK-NEXT:   ret <8 x i16> %or
-; CHECK-NEXT: }
-
-define internal <4 x i32> @OrV4I32(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %or = or <4 x i32> %b, %a
-  ret <4 x i32> %or
-}
-
-; CHECK-NEXT: define internal <4 x i32> @OrV4I32(<4 x i32> %a, <4 x i32> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %or = or <4 x i32> %b, %a
-; CHECK-NEXT:   ret <4 x i32> %or
-; CHECK-NEXT: }
-
-; TODO(kschimpf): xor i1/i8/i16. Needs bitcasts.
-
-define internal i32 @XorI32(i32 %a, i32 %b) {
-entry:
-  %xor = xor i32 %b, %a
-  ret i32 %xor
-}
-
-; CHECK-NEXT: define internal i32 @XorI32(i32 %a, i32 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %xor = xor i32 %b, %a
-; CHECK-NEXT:   ret i32 %xor
-; CHECK-NEXT: }
-
-define internal i64 @XorI64(i64 %a, i64 %b) {
-entry:
-  %xor = xor i64 %b, %a
-  ret i64 %xor
-}
-
-; CHECK-NEXT: define internal i64 @XorI64(i64 %a, i64 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %xor = xor i64 %b, %a
-; CHECK-NEXT:   ret i64 %xor
-; CHECK-NEXT: }
-
-define internal <16 x i8> @XorV16I8(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %xor = xor <16 x i8> %b, %a
-  ret <16 x i8> %xor
-}
-
-; CHECK-NEXT: define internal <16 x i8> @XorV16I8(<16 x i8> %a, <16 x i8> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %xor = xor <16 x i8> %b, %a
-; CHECK-NEXT:   ret <16 x i8> %xor
-; CHECK-NEXT: }
-
-define internal <8 x i16> @XorV8I16(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %xor = xor <8 x i16> %b, %a
-  ret <8 x i16> %xor
-}
-
-; CHECK-NEXT: define internal <8 x i16> @XorV8I16(<8 x i16> %a, <8 x i16> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %xor = xor <8 x i16> %b, %a
-; CHECK-NEXT:   ret <8 x i16> %xor
-; CHECK-NEXT: }
-
-define internal <4 x i32> @XorV4I32(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %xor = xor <4 x i32> %b, %a
-  ret <4 x i32> %xor
-}
-
-; CHECK-NEXT: define internal <4 x i32> @XorV4I32(<4 x i32> %a, <4 x i32> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %xor = xor <4 x i32> %b, %a
-; CHECK-NEXT:   ret <4 x i32> %xor
-; CHECK-NEXT: }
-
-; TODO(kschimpf): shl i8/i16. Needs bitcasts.
-
-define internal i32 @ShlI32(i32 %a, i32 %b) {
-entry:
-  %shl = shl i32 %b, %a
-  ret i32 %shl
-}
-
-; CHECK-NEXT: define internal i32 @ShlI32(i32 %a, i32 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %shl = shl i32 %b, %a
-; CHECK-NEXT:   ret i32 %shl
-; CHECK-NEXT: }
-
-define internal i64 @ShlI64(i64 %a, i64 %b) {
-entry:
-  %shl = shl i64 %b, %a
-  ret i64 %shl
-}
-
-; CHECK-NEXT: define internal i64 @ShlI64(i64 %a, i64 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %shl = shl i64 %b, %a
-; CHECK-NEXT:   ret i64 %shl
-; CHECK-NEXT: }
-
-define internal <16 x i8> @ShlV16I8(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %shl = shl <16 x i8> %b, %a
-  ret <16 x i8> %shl
-}
-
-; CHECK-NEXT: define internal <16 x i8> @ShlV16I8(<16 x i8> %a, <16 x i8> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %shl = shl <16 x i8> %b, %a
-; CHECK-NEXT:   ret <16 x i8> %shl
-; CHECK-NEXT: }
-
-define internal <8 x i16> @ShlV8I16(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %shl = shl <8 x i16> %b, %a
-  ret <8 x i16> %shl
-}
-
-; CHECK-NEXT: define internal <8 x i16> @ShlV8I16(<8 x i16> %a, <8 x i16> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %shl = shl <8 x i16> %b, %a
-; CHECK-NEXT:   ret <8 x i16> %shl
-; CHECK-NEXT: }
-
-define internal <4 x i32> @ShlV4I32(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %shl = shl <4 x i32> %b, %a
-  ret <4 x i32> %shl
-}
-
-; CHECK-NEXT: define internal <4 x i32> @ShlV4I32(<4 x i32> %a, <4 x i32> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %shl = shl <4 x i32> %b, %a
-; CHECK-NEXT:   ret <4 x i32> %shl
-; CHECK-NEXT: }
-
-; TODO(kschimpf): ashr i8/i16. Needs bitcasts.
-
-define internal i32 @ashrI32(i32 %a, i32 %b) {
-entry:
-  %ashr = ashr i32 %b, %a
-  ret i32 %ashr
-}
-
-; CHECK-NEXT: define internal i32 @ashrI32(i32 %a, i32 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %ashr = ashr i32 %b, %a
-; CHECK-NEXT:   ret i32 %ashr
-; CHECK-NEXT: }
-
-define internal i64 @AshrI64(i64 %a, i64 %b) {
-entry:
-  %ashr = ashr i64 %b, %a
-  ret i64 %ashr
-}
-
-; CHECK-NEXT: define internal i64 @AshrI64(i64 %a, i64 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %ashr = ashr i64 %b, %a
-; CHECK-NEXT:   ret i64 %ashr
-; CHECK-NEXT: }
-
-define internal <16 x i8> @AshrV16I8(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %ashr = ashr <16 x i8> %b, %a
-  ret <16 x i8> %ashr
-}
-
-; CHECK-NEXT: define internal <16 x i8> @AshrV16I8(<16 x i8> %a, <16 x i8> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %ashr = ashr <16 x i8> %b, %a
-; CHECK-NEXT:   ret <16 x i8> %ashr
-; CHECK-NEXT: }
-
-define internal <8 x i16> @AshrV8I16(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %ashr = ashr <8 x i16> %b, %a
-  ret <8 x i16> %ashr
-}
-
-; CHECK-NEXT: define internal <8 x i16> @AshrV8I16(<8 x i16> %a, <8 x i16> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %ashr = ashr <8 x i16> %b, %a
-; CHECK-NEXT:   ret <8 x i16> %ashr
-; CHECK-NEXT: }
-
-define internal <4 x i32> @AshrV4I32(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %ashr = ashr <4 x i32> %b, %a
-  ret <4 x i32> %ashr
-}
-
-; CHECK-NEXT: define internal <4 x i32> @AshrV4I32(<4 x i32> %a, <4 x i32> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %ashr = ashr <4 x i32> %b, %a
-; CHECK-NEXT:   ret <4 x i32> %ashr
-; CHECK-NEXT: }
-
-; TODO(kschimpf): lshr i8/i16. Needs bitcasts.
-
-define internal i32 @lshrI32(i32 %a, i32 %b) {
-entry:
-  %lshr = lshr i32 %b, %a
-  ret i32 %lshr
-}
-
-; CHECK-NEXT: define internal i32 @lshrI32(i32 %a, i32 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %lshr = lshr i32 %b, %a
-; CHECK-NEXT:   ret i32 %lshr
-; CHECK-NEXT: }
-
-define internal i64 @LshrI64(i64 %a, i64 %b) {
-entry:
-  %lshr = lshr i64 %b, %a
-  ret i64 %lshr
-}
-
-; CHECK-NEXT: define internal i64 @LshrI64(i64 %a, i64 %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %lshr = lshr i64 %b, %a
-; CHECK-NEXT:   ret i64 %lshr
-; CHECK-NEXT: }
-
-define internal <16 x i8> @LshrV16I8(<16 x i8> %a, <16 x i8> %b) {
-entry:
-  %lshr = lshr <16 x i8> %b, %a
-  ret <16 x i8> %lshr
-}
-
-; CHECK-NEXT: define internal <16 x i8> @LshrV16I8(<16 x i8> %a, <16 x i8> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %lshr = lshr <16 x i8> %b, %a
-; CHECK-NEXT:   ret <16 x i8> %lshr
-; CHECK-NEXT: }
-
-define internal <8 x i16> @LshrV8I16(<8 x i16> %a, <8 x i16> %b) {
-entry:
-  %lshr = lshr <8 x i16> %b, %a
-  ret <8 x i16> %lshr
-}
-
-; CHECK-NEXT: define internal <8 x i16> @LshrV8I16(<8 x i16> %a, <8 x i16> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %lshr = lshr <8 x i16> %b, %a
-; CHECK-NEXT:   ret <8 x i16> %lshr
-; CHECK-NEXT: }
-
-define internal <4 x i32> @LshrV4I32(<4 x i32> %a, <4 x i32> %b) {
-entry:
-  %lshr = lshr <4 x i32> %b, %a
-  ret <4 x i32> %lshr
-}
-
-; CHECK-NEXT: define internal <4 x i32> @LshrV4I32(<4 x i32> %a, <4 x i32> %b) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %lshr = lshr <4 x i32> %b, %a
-; CHECK-NEXT:   ret <4 x i32> %lshr
-; CHECK-NEXT: }
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/branch.ll b/third_party/subzero/tests_lit/reader_tests/branch.ll
deleted file mode 100644
index 5613fdb..0000000
--- a/third_party/subzero/tests_lit/reader_tests/branch.ll
+++ /dev/null
@@ -1,49 +0,0 @@
-; Tests if we handle a branch instructions.
-
-; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN:   %p2i -i %s --args -notranslate -timing | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-define internal void @SimpleBranch() {
-entry:
-  br label %b3
-b1:
-  br label %b2
-b2:
-  ret void
-b3:
-  br label %b1
-}
-
-; CHECK:      define internal void @SimpleBranch() {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   br label %b3
-; CHECK-NEXT: b1:
-; CHECK-NEXT:   br label %b2
-; CHECK-NEXT: b2:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: b3:
-; CHECK-NEXT:   br label %b1
-; CHECK-NEXT: }
-
-define internal void @CondBranch(i32 %p) {
-entry:
-  %test = trunc i32 %p to i1
-  br i1 %test, label %b1, label %b2
-b1:
-  ret void
-b2:
-  br i1 %test, label %b2, label %b1
-}
-
-; CHECK-NEXT: define internal void @CondBranch(i32 %p) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %test = trunc i32 %p to i1
-; CHECK-NEXT:   br i1 %test, label %b1, label %b2
-; CHECK-NEXT: b1:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: b2:
-; CHECK-NEXT:   br i1 %test, label %b2, label %b1
-; CHECK-NEXT: }
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/call-indirect.ll b/third_party/subzero/tests_lit/reader_tests/call-indirect.ll
deleted file mode 100644
index d3d7e1d..0000000
--- a/third_party/subzero/tests_lit/reader_tests/call-indirect.ll
+++ /dev/null
@@ -1,32 +0,0 @@
-; Test parsing indirect calls in Subzero.
-
-; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN: %p2i -i %s --args -notranslate -timing | FileCheck --check-prefix=NOIR %s
-
-define internal void @CallIndirectVoid(i32 %f_addr) {
-entry:
-  %f = inttoptr i32 %f_addr to void ()*
-  call void %f()
-  ret void
-}
-
-; CHECK:      define internal void @CallIndirectVoid(i32 %f_addr) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   call void %f_addr()
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal i32 @CallIndirectI32(i32 %f_addr) {
-entry:
-  %f = inttoptr i32 %f_addr to i32(i64, i32)*
-  %r = call i32 %f(i64 1, i32 %f_addr)
-  ret i32 %r
-}
-
-; CHECK-NEXT: define internal i32 @CallIndirectI32(i32 %f_addr) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = call i32 %f_addr(i64 1, i32 %f_addr)
-; CHECK-NEXT:   ret i32 %r
-; CHECK-NEXT: }
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/call.ll b/third_party/subzero/tests_lit/reader_tests/call.ll
deleted file mode 100644
index 59af96c..0000000
--- a/third_party/subzero/tests_lit/reader_tests/call.ll
+++ /dev/null
@@ -1,113 +0,0 @@
-; Test handling of call instructions.
-
-; RUN: %p2i -i %s --insts --args -allow-externally-defined-symbols \
-; RUN: | FileCheck %s
-; RUN:   %p2i -i %s --args -notranslate -timing \
-; RUN:        -allow-externally-defined-symbols | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-define internal i32 @fib(i32 %n) {
-entry:
-  %cmp = icmp slt i32 %n, 2
-  br i1 %cmp, label %return, label %if.end
-
-if.end:                                           ; preds = %entry
-  %sub = add i32 %n, -1
-  %call = tail call i32 @fib(i32 %sub)
-  %sub1 = add i32 %n, -2
-  %call2 = tail call i32 @fib(i32 %sub1)
-  %add = add i32 %call2, %call
-  ret i32 %add
-
-return:                                           ; preds = %entry
-  ret i32 %n
-}
-
-; CHECK:      define internal i32 @fib(i32 %n) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %cmp = icmp slt i32 %n, 2
-; CHECK-NEXT:   br i1 %cmp, label %return, label %if.end
-; CHECK-NEXT: if.end:
-; CHECK-NEXT:   %sub = add i32 %n, -1
-; CHECK-NEXT:   %call = call i32 @fib(i32 %sub)
-; CHECK-NEXT:   %sub1 = add i32 %n, -2
-; CHECK-NEXT:   %call2 = call i32 @fib(i32 %sub1)
-; CHECK-NEXT:   %add = add i32 %call2, %call
-; CHECK-NEXT:   ret i32 %add
-; CHECK-NEXT: return:
-; CHECK-NEXT:   ret i32 %n
-; CHECK-NEXT: }
-
-define internal i32 @fact(i32 %n) {
-entry:
-  %cmp = icmp slt i32 %n, 2
-  br i1 %cmp, label %return, label %if.end
-
-if.end:                                           ; preds = %entry
-  %sub = add i32 %n, -1
-  %call = tail call i32 @fact(i32 %sub)
-  %mul = mul i32 %call, %n
-  ret i32 %mul
-
-return:                                           ; preds = %entry
-  ret i32 %n
-}
-
-; CHECK-NEXT: define internal i32 @fact(i32 %n) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %cmp = icmp slt i32 %n, 2
-; CHECK-NEXT:   br i1 %cmp, label %return, label %if.end
-; CHECK-NEXT: if.end:
-; CHECK-NEXT:   %sub = add i32 %n, -1
-; CHECK-NEXT:   %call = call i32 @fact(i32 %sub)
-; CHECK-NEXT:   %mul = mul i32 %call, %n
-; CHECK-NEXT:   ret i32 %mul
-; CHECK-NEXT: return:
-; CHECK-NEXT:   ret i32 %n
-; CHECK-NEXT: }
-
-define internal i32 @redirect(i32 %n) {
-entry:
-  %call = tail call i32 @redirect_target(i32 %n)
-  ret i32 %call
-}
-
-; CHECK-NEXT: define internal i32 @redirect(i32 %n) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %call = call i32 @redirect_target(i32 %n)
-; CHECK-NEXT:   ret i32 %call
-; CHECK-NEXT: }
-
-declare i32 @redirect_target(i32)
-
-define internal void @call_void(i32 %n) {
-entry:
-  %cmp2 = icmp sgt i32 %n, 0
-  br i1 %cmp2, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry, %if.then
-  %n.tr3 = phi i32 [ %call.i, %if.then ], [ %n, %entry ]
-  %sub = add i32 %n.tr3, -1
-  %call.i = tail call i32 @redirect_target(i32 %sub)
-  %cmp = icmp sgt i32 %call.i, 0
-  br i1 %cmp, label %if.then, label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  ret void
-}
-
-; CHECK-NEXT: define internal void @call_void(i32 %n) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %cmp2 = icmp sgt i32 %n, 0
-; CHECK-NEXT:   br i1 %cmp2, label %if.then, label %if.end
-; CHECK-NEXT: if.then:
-; CHECK-NEXT:   %n.tr3 = phi i32 [ %call.i, %if.then ], [ %n, %entry ]
-; CHECK-NEXT:   %sub = add i32 %n.tr3, -1
-; CHECK-NEXT:   %call.i = call i32 @redirect_target(i32 %sub)
-; CHECK-NEXT:   %cmp = icmp sgt i32 %call.i, 0
-; CHECK-NEXT:   br i1 %cmp, label %if.then, label %if.end
-; CHECK-NEXT: if.end:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/casts.ll b/third_party/subzero/tests_lit/reader_tests/casts.ll
deleted file mode 100644
index 901fa9a..0000000
--- a/third_party/subzero/tests_lit/reader_tests/casts.ll
+++ /dev/null
@@ -1,538 +0,0 @@
-; Tests if we can read cast operations.
-
-; RUN: %p2i -i %s --insts --no-local-syms | FileCheck %s
-; RUN:   %p2i -i %s --args -notranslate -timing | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-; TODO(kschimpf) Find way to test pointer conversions (since they in general
-; get removed by pnacl-freeze).
-
-define internal i32 @TruncI64(i64 %v) {
-  %v1 = trunc i64 %v to i1
-  %v8 = trunc i64 %v to i8
-  %v16 = trunc i64 %v to i16
-  %v32 = trunc i64 %v to i32
-  ret i32 %v32
-}
-
-; CHECK:      define internal i32 @TruncI64(i64 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = trunc i64 %__0 to i1
-; CHECK-NEXT:   %__2 = trunc i64 %__0 to i8
-; CHECK-NEXT:   %__3 = trunc i64 %__0 to i16
-; CHECK-NEXT:   %__4 = trunc i64 %__0 to i32
-; CHECK-NEXT:   ret i32 %__4
-; CHECK-NEXT: }
-
-define internal void @TruncI32(i32 %v) {
-  %v1 = trunc i32 %v to i1
-  %v8 = trunc i32 %v to i8
-  %v16 = trunc i32 %v to i16
-  ret void
-}
-
-; CHECK-NEXT: define internal void @TruncI32(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = trunc i32 %__0 to i1
-; CHECK-NEXT:   %__2 = trunc i32 %__0 to i8
-; CHECK-NEXT:   %__3 = trunc i32 %__0 to i16
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @TruncI16(i32 %p) {
-  %v = trunc i32 %p to i16
-  %v1 = trunc i16 %v to i1
-  %v8 = trunc i16 %v to i8
-  ret void
-}
-
-; CHECK-NEXT: define internal void @TruncI16(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = trunc i32 %__0 to i16
-; CHECK-NEXT:   %__2 = trunc i16 %__1 to i1
-; CHECK-NEXT:   %__3 = trunc i16 %__1 to i8
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @TruncI8(i32 %p) {
-  %v = trunc i32 %p to i8
-  %v1 = trunc i8 %v to i1
-  ret void
-}
-
-; CHECK-NEXT: define internal void @TruncI8(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = trunc i32 %__0 to i8
-; CHECK-NEXT:   %__2 = trunc i8 %__1 to i1
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal i64 @ZextI1(i32 %p) {
-  %v = trunc i32 %p to i1
-  %v8 = zext i1 %v to i8
-  %v16 = zext i1 %v to i16
-  %v32 = zext i1 %v to i32
-  %v64 = zext i1 %v to i64
-  ret i64 %v64
-}
-
-; CHECK-NEXT: define internal i64 @ZextI1(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = trunc i32 %__0 to i1
-; CHECK-NEXT:   %__2 = zext i1 %__1 to i8
-; CHECK-NEXT:   %__3 = zext i1 %__1 to i16
-; CHECK-NEXT:   %__4 = zext i1 %__1 to i32
-; CHECK-NEXT:   %__5 = zext i1 %__1 to i64
-; CHECK-NEXT:   ret i64 %__5
-; CHECK-NEXT: }
-
-define internal i32 @ZextI8(i32 %p) {
-  %v = trunc i32 %p to i8
-  %v16 = zext i8 %v to i16
-  %v32 = zext i8 %v to i32
-  %v64 = zext i8 %v to i64
-  ret i32 %v32
-}
-
-; CHECK-NEXT: define internal i32 @ZextI8(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = trunc i32 %__0 to i8
-; CHECK-NEXT:   %__2 = zext i8 %__1 to i16
-; CHECK-NEXT:   %__3 = zext i8 %__1 to i32
-; CHECK-NEXT:   %__4 = zext i8 %__1 to i64
-; CHECK-NEXT:   ret i32 %__3
-; CHECK-NEXT: }
-
-define internal i64 @ZextI16(i32 %p) {
-  %v = trunc i32 %p to i16
-  %v32 = zext i16 %v to i32
-  %v64 = zext i16 %v to i64
-  ret i64 %v64
-}
-
-; CHECK-NEXT: define internal i64 @ZextI16(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = trunc i32 %__0 to i16
-; CHECK-NEXT:   %__2 = zext i16 %__1 to i32
-; CHECK-NEXT:   %__3 = zext i16 %__1 to i64
-; CHECK-NEXT:   ret i64 %__3
-; CHECK-NEXT: }
-
-define internal i64 @Zexti32(i32 %v) {
-  %v64 = zext i32 %v to i64
-  ret i64 %v64
-}
-
-; CHECK-NEXT: define internal i64 @Zexti32(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = zext i32 %__0 to i64
-; CHECK-NEXT:   ret i64 %__1
-; CHECK-NEXT: }
-
-define internal i32 @SextI1(i32 %p) {
-  %v = trunc i32 %p to i1
-  %v8 = sext i1 %v to i8
-  %v16 = sext i1 %v to i16
-  %v32 = sext i1 %v to i32
-  %v64 = sext i1 %v to i64
-  ret i32 %v32
-}
-
-; CHECK-NEXT: define internal i32 @SextI1(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = trunc i32 %__0 to i1
-; CHECK-NEXT:   %__2 = sext i1 %__1 to i8
-; CHECK-NEXT:   %__3 = sext i1 %__1 to i16
-; CHECK-NEXT:   %__4 = sext i1 %__1 to i32
-; CHECK-NEXT:   %__5 = sext i1 %__1 to i64
-; CHECK-NEXT:   ret i32 %__4
-; CHECK-NEXT: }
-
-define internal i64 @SextI8(i32 %p) {
-  %v = trunc i32 %p to i8
-  %v16 = sext i8 %v to i16
-  %v32 = sext i8 %v to i32
-  %v64 = sext i8 %v to i64
-  ret i64 %v64
-}
-
-; CHECK-NEXT: define internal i64 @SextI8(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = trunc i32 %__0 to i8
-; CHECK-NEXT:   %__2 = sext i8 %__1 to i16
-; CHECK-NEXT:   %__3 = sext i8 %__1 to i32
-; CHECK-NEXT:   %__4 = sext i8 %__1 to i64
-; CHECK-NEXT:   ret i64 %__4
-; CHECK-NEXT: }
-
-define internal i32 @SextI16(i32 %p) {
-  %v = trunc i32 %p to i16
-  %v32 = sext i16 %v to i32
-  %v64 = sext i16 %v to i64
-  ret i32 %v32
-}
-
-; CHECK-NEXT: define internal i32 @SextI16(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = trunc i32 %__0 to i16
-; CHECK-NEXT:   %__2 = sext i16 %__1 to i32
-; CHECK-NEXT:   %__3 = sext i16 %__1 to i64
-; CHECK-NEXT:   ret i32 %__2
-; CHECK-NEXT: }
-
-define internal i64 @Sexti32(i32 %v) {
-  %v64 = sext i32 %v to i64
-  ret i64 %v64
-}
-
-; CHECK-NEXT: define internal i64 @Sexti32(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = sext i32 %__0 to i64
-; CHECK-NEXT:   ret i64 %__1
-; CHECK-NEXT: }
-
-define internal float @Fptrunc(double %v) {
-  %vfloat = fptrunc double %v to float
-  ret float %vfloat
-}
-
-; CHECK-NEXT: define internal float @Fptrunc(double %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = fptrunc double %__0 to float
-; CHECK-NEXT:   ret float %__1
-; CHECK-NEXT: }
-
-define internal double @Fpext(float %v) {
-  %vdouble = fpext float %v to double
-  ret double %vdouble
-}
-
-; CHECK-NEXT: define internal double @Fpext(float %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = fpext float %__0 to double
-; CHECK-NEXT:   ret double %__1
-; CHECK-NEXT: }
-
-define internal i32 @FptouiFloat(float %v) {
-  %v1 = fptoui float %v to i1
-  %v8 = fptoui float %v to i8
-  %v16 = fptoui float %v to i16
-  %v32 = fptoui float %v to i32
-  %v64 = fptoui float %v to i64
-  ret i32 %v32
-}
-
-; CHECK-NEXT: define internal i32 @FptouiFloat(float %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = fptoui float %__0 to i1
-; CHECK-NEXT:   %__2 = fptoui float %__0 to i8
-; CHECK-NEXT:   %__3 = fptoui float %__0 to i16
-; CHECK-NEXT:   %__4 = fptoui float %__0 to i32
-; CHECK-NEXT:   %__5 = fptoui float %__0 to i64
-; CHECK-NEXT:   ret i32 %__4
-; CHECK-NEXT: }
-
-define internal i32 @FptouiDouble(double %v) {
-  %v1 = fptoui double %v to i1
-  %v8 = fptoui double %v to i8
-  %v16 = fptoui double %v to i16
-  %v32 = fptoui double %v to i32
-  %v64 = fptoui double %v to i64
-  ret i32 %v32
-}
-
-; CHECK-NEXT: define internal i32 @FptouiDouble(double %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = fptoui double %__0 to i1
-; CHECK-NEXT:   %__2 = fptoui double %__0 to i8
-; CHECK-NEXT:   %__3 = fptoui double %__0 to i16
-; CHECK-NEXT:   %__4 = fptoui double %__0 to i32
-; CHECK-NEXT:   %__5 = fptoui double %__0 to i64
-; CHECK-NEXT:   ret i32 %__4
-; CHECK-NEXT: }
-
-define internal i32 @FptosiFloat(float %v) {
-  %v1 = fptosi float %v to i1
-  %v8 = fptosi float %v to i8
-  %v16 = fptosi float %v to i16
-  %v32 = fptosi float %v to i32
-  %v64 = fptosi float %v to i64
-  ret i32 %v32
-}
-
-; CHECK-NEXT: define internal i32 @FptosiFloat(float %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = fptosi float %__0 to i1
-; CHECK-NEXT:   %__2 = fptosi float %__0 to i8
-; CHECK-NEXT:   %__3 = fptosi float %__0 to i16
-; CHECK-NEXT:   %__4 = fptosi float %__0 to i32
-; CHECK-NEXT:   %__5 = fptosi float %__0 to i64
-; CHECK-NEXT:   ret i32 %__4
-; CHECK-NEXT: }
-
-define internal i32 @FptosiDouble(double %v) {
-  %v1 = fptosi double %v to i1
-  %v8 = fptosi double %v to i8
-  %v16 = fptosi double %v to i16
-  %v32 = fptosi double %v to i32
-  %v64 = fptosi double %v to i64
-  ret i32 %v32
-}
-
-; CHECK-NEXT: define internal i32 @FptosiDouble(double %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = fptosi double %__0 to i1
-; CHECK-NEXT:   %__2 = fptosi double %__0 to i8
-; CHECK-NEXT:   %__3 = fptosi double %__0 to i16
-; CHECK-NEXT:   %__4 = fptosi double %__0 to i32
-; CHECK-NEXT:   %__5 = fptosi double %__0 to i64
-; CHECK-NEXT:   ret i32 %__4
-; CHECK-NEXT: }
-
-define internal float @UitofpI1(i32 %p) {
-  %v = trunc i32 %p to i1
-  %vfloat = uitofp i1 %v to float
-  %vdouble = uitofp i1 %v to double
-  ret float %vfloat
-}
-
-; CHECK-NEXT: define internal float @UitofpI1(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = trunc i32 %__0 to i1
-; CHECK-NEXT:   %__2 = uitofp i1 %__1 to float
-; CHECK-NEXT:   %__3 = uitofp i1 %__1 to double
-; CHECK-NEXT:   ret float %__2
-; CHECK-NEXT: }
-
-define internal float @UitofpI8(i32 %p) {
-  %v = trunc i32 %p to i8
-  %vfloat = uitofp i8 %v to float
-  %vdouble = uitofp i8 %v to double
-  ret float %vfloat
-}
-
-; CHECK-NEXT: define internal float @UitofpI8(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = trunc i32 %__0 to i8
-; CHECK-NEXT:   %__2 = uitofp i8 %__1 to float
-; CHECK-NEXT:   %__3 = uitofp i8 %__1 to double
-; CHECK-NEXT:   ret float %__2
-; CHECK-NEXT: }
-
-define internal float @UitofpI16(i32 %p) {
-  %v = trunc i32 %p to i16
-  %vfloat = uitofp i16 %v to float
-  %vdouble = uitofp i16 %v to double
-  ret float %vfloat
-}
-
-; CHECK-NEXT: define internal float @UitofpI16(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = trunc i32 %__0 to i16
-; CHECK-NEXT:   %__2 = uitofp i16 %__1 to float
-; CHECK-NEXT:   %__3 = uitofp i16 %__1 to double
-; CHECK-NEXT:   ret float %__2
-; CHECK-NEXT: }
-
-define internal float @UitofpI32(i32 %v) {
-  %vfloat = uitofp i32 %v to float
-  %vdouble = uitofp i32 %v to double
-  ret float %vfloat
-}
-
-; CHECK-NEXT: define internal float @UitofpI32(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = uitofp i32 %__0 to float
-; CHECK-NEXT:   %__2 = uitofp i32 %__0 to double
-; CHECK-NEXT:   ret float %__1
-; CHECK-NEXT: }
-
-define internal float @UitofpI64(i64 %v) {
-  %vfloat = uitofp i64 %v to float
-  %vdouble = uitofp i64 %v to double
-  ret float %vfloat
-}
-
-; CHECK-NEXT: define internal float @UitofpI64(i64 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = uitofp i64 %__0 to float
-; CHECK-NEXT:   %__2 = uitofp i64 %__0 to double
-; CHECK-NEXT:   ret float %__1
-; CHECK-NEXT: }
-
-define internal float @SitofpI1(i32 %p) {
-  %v = trunc i32 %p to i1
-  %vfloat = sitofp i1 %v to float
-  %vdouble = sitofp i1 %v to double
-  ret float %vfloat
-}
-
-; CHECK-NEXT: define internal float @SitofpI1(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = trunc i32 %__0 to i1
-; CHECK-NEXT:   %__2 = sitofp i1 %__1 to float
-; CHECK-NEXT:   %__3 = sitofp i1 %__1 to double
-; CHECK-NEXT:   ret float %__2
-; CHECK-NEXT: }
-
-define internal float @SitofpI8(i32 %p) {
-  %v = trunc i32 %p to i8
-  %vfloat = sitofp i8 %v to float
-  %vdouble = sitofp i8 %v to double
-  ret float %vfloat
-}
-
-; CHECK-NEXT: define internal float @SitofpI8(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = trunc i32 %__0 to i8
-; CHECK-NEXT:   %__2 = sitofp i8 %__1 to float
-; CHECK-NEXT:   %__3 = sitofp i8 %__1 to double
-; CHECK-NEXT:   ret float %__2
-; CHECK-NEXT: }
-
-define internal float @SitofpI16(i32 %p) {
-  %v = trunc i32 %p to i16
-  %vfloat = sitofp i16 %v to float
-  %vdouble = sitofp i16 %v to double
-  ret float %vfloat
-}
-
-; CHECK-NEXT: define internal float @SitofpI16(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = trunc i32 %__0 to i16
-; CHECK-NEXT:   %__2 = sitofp i16 %__1 to float
-; CHECK-NEXT:   %__3 = sitofp i16 %__1 to double
-; CHECK-NEXT:   ret float %__2
-; CHECK-NEXT: }
-
-define internal float @SitofpI32(i32 %v) {
-  %vfloat = sitofp i32 %v to float
-  %vdouble = sitofp i32 %v to double
-  ret float %vfloat
-}
-
-; CHECK-NEXT: define internal float @SitofpI32(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = sitofp i32 %__0 to float
-; CHECK-NEXT:   %__2 = sitofp i32 %__0 to double
-; CHECK-NEXT:   ret float %__1
-; CHECK-NEXT: }
-
-define internal float @SitofpI64(i64 %v) {
-  %vfloat = sitofp i64 %v to float
-  %vdouble = sitofp i64 %v to double
-  ret float %vfloat
-}
-
-; CHECK-NEXT: define internal float @SitofpI64(i64 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = sitofp i64 %__0 to float
-; CHECK-NEXT:   %__2 = sitofp i64 %__0 to double
-; CHECK-NEXT:   ret float %__1
-; CHECK-NEXT: }
-
-define internal float @BitcastI32(i32 %v) {
-  %vfloat = bitcast i32 %v to float
-  ret float %vfloat
-}
-
-; CHECK-NEXT: define internal float @BitcastI32(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = bitcast i32 %__0 to float
-; CHECK-NEXT:   ret float %__1
-; CHECK-NEXT: }
-
-define internal double @BitcastI64(i64 %v) {
-  %vdouble = bitcast i64 %v to double
-  ret double %vdouble
-}
-
-; CHECK-NEXT: define internal double @BitcastI64(i64 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = bitcast i64 %__0 to double
-; CHECK-NEXT:   ret double %__1
-; CHECK-NEXT: }
-
-define internal i32 @BitcastFloat(float %v) {
-  %vi32 = bitcast float %v to i32
-  ret i32 %vi32
-}
-
-; CHECK-NEXT: define internal i32 @BitcastFloat(float %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = bitcast float %__0 to i32
-; CHECK-NEXT:   ret i32 %__1
-; CHECK-NEXT: }
-
-define internal i64 @BitcastDouble(double %v) {
-  %vi64 = bitcast double %v to i64
-  ret i64 %vi64
-}
-
-; CHECK-NEXT: define internal i64 @BitcastDouble(double %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = bitcast double %__0 to i64
-; CHECK-NEXT:   ret i64 %__1
-; CHECK-NEXT: }
-
-define internal void @BitcastV4xFloat(<4 x float> %v) {
-  %v4xi32 = bitcast <4 x float> %v to <4 x i32>
-  %v8xi16 = bitcast <4 x float> %v to <8 x i16>
-  %v16xi8 = bitcast <4 x float> %v to <16 x i8>
-  ret void
-}
-
-; CHECK-NEXT: define internal void @BitcastV4xFloat(<4 x float> %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = bitcast <4 x float> %__0 to <4 x i32>
-; CHECK-NEXT:   %__2 = bitcast <4 x float> %__0 to <8 x i16>
-; CHECK-NEXT:   %__3 = bitcast <4 x float> %__0 to <16 x i8>
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @BitcastV4xi32(<4 x i32> %v) {
-  %v4xfloat = bitcast <4 x i32> %v to <4 x float>
-  %v8xi16 = bitcast <4 x i32> %v to <8 x i16>
-  %v16xi8 = bitcast <4 x i32> %v to <16 x i8>
-  ret void
-}
-
-; CHECK-NEXT: define internal void @BitcastV4xi32(<4 x i32> %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = bitcast <4 x i32> %__0 to <4 x float>
-; CHECK-NEXT:   %__2 = bitcast <4 x i32> %__0 to <8 x i16>
-; CHECK-NEXT:   %__3 = bitcast <4 x i32> %__0 to <16 x i8>
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @BitcastV8xi16(<8 x i16> %v) {
-  %v4xfloat = bitcast <8 x i16> %v to <4 x float>
-  %v4xi32 = bitcast <8 x i16> %v to <4 x i32>
-  %v16xi8 = bitcast <8 x i16> %v to <16 x i8>
-  ret void
-}
-
-; CHECK-NEXT: define internal void @BitcastV8xi16(<8 x i16> %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = bitcast <8 x i16> %__0 to <4 x float>
-; CHECK-NEXT:   %__2 = bitcast <8 x i16> %__0 to <4 x i32>
-; CHECK-NEXT:   %__3 = bitcast <8 x i16> %__0 to <16 x i8>
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @BitcastV16xi8(<16 x i8> %v) {
-  %v4xfloat = bitcast <16 x i8> %v to <4 x float>
-  %v4xi32 = bitcast <16 x i8> %v to <4 x i32>
-  %v8xi16 = bitcast <16 x i8> %v to <8 x i16>
-  ret void
-}
-
-; CHECK-NEXT: define internal void @BitcastV16xi8(<16 x i8> %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   %__1 = bitcast <16 x i8> %__0 to <4 x float>
-; CHECK-NEXT:   %__2 = bitcast <16 x i8> %__0 to <4 x i32>
-; CHECK-NEXT:   %__3 = bitcast <16 x i8> %__0 to <8 x i16>
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/compare.ll b/third_party/subzero/tests_lit/reader_tests/compare.ll
deleted file mode 100644
index bb2229b..0000000
--- a/third_party/subzero/tests_lit/reader_tests/compare.ll
+++ /dev/null
@@ -1,475 +0,0 @@
-; Test if we can read compare instructions.
-
-; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN:   %p2i -i %s --args -notranslate -timing | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-define internal void @IcmpI1(i32 %p1, i32 %p2) {
-entry:
-  %a1 = trunc i32 %p1 to i1
-  %a2 = trunc i32 %p2 to i1
-  %veq = icmp eq i1 %a1, %a2
-  %vne = icmp ne i1 %a1, %a2
-  %vugt = icmp ugt i1 %a1, %a2
-  %vuge = icmp uge i1 %a1, %a2
-  %vult = icmp ult i1 %a1, %a2
-  %vule = icmp ule i1 %a1, %a2
-  %vsgt = icmp sgt i1 %a1, %a2
-  %vsge = icmp sge i1 %a1, %a2
-  %vslt = icmp slt i1 %a1, %a2
-  %vsle = icmp sle i1 %a1, %a2
-  ret void
-}
-
-; CHECK:      define internal void @IcmpI1(i32 %p1, i32 %p2) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a1 = trunc i32 %p1 to i1
-; CHECK-NEXT:   %a2 = trunc i32 %p2 to i1
-; CHECK-NEXT:   %veq = icmp eq i1 %a1, %a2
-; CHECK-NEXT:   %vne = icmp ne i1 %a1, %a2
-; CHECK-NEXT:   %vugt = icmp ugt i1 %a1, %a2
-; CHECK-NEXT:   %vuge = icmp uge i1 %a1, %a2
-; CHECK-NEXT:   %vult = icmp ult i1 %a1, %a2
-; CHECK-NEXT:   %vule = icmp ule i1 %a1, %a2
-; CHECK-NEXT:   %vsgt = icmp sgt i1 %a1, %a2
-; CHECK-NEXT:   %vsge = icmp sge i1 %a1, %a2
-; CHECK-NEXT:   %vslt = icmp slt i1 %a1, %a2
-; CHECK-NEXT:   %vsle = icmp sle i1 %a1, %a2
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @IcmpI8(i32 %p1, i32 %p2) {
-entry:
-  %a1 = trunc i32 %p1 to i8
-  %a2 = trunc i32 %p2 to i8
-  %veq = icmp eq i8 %a1, %a2
-  %vne = icmp ne i8 %a1, %a2
-  %vugt = icmp ugt i8 %a1, %a2
-  %vuge = icmp uge i8 %a1, %a2
-  %vult = icmp ult i8 %a1, %a2
-  %vule = icmp ule i8 %a1, %a2
-  %vsgt = icmp sgt i8 %a1, %a2
-  %vsge = icmp sge i8 %a1, %a2
-  %vslt = icmp slt i8 %a1, %a2
-  %vsle = icmp sle i8 %a1, %a2
-  ret void
-}
-
-; CHECK-NEXT: define internal void @IcmpI8(i32 %p1, i32 %p2) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a1 = trunc i32 %p1 to i8
-; CHECK-NEXT:   %a2 = trunc i32 %p2 to i8
-; CHECK-NEXT:   %veq = icmp eq i8 %a1, %a2
-; CHECK-NEXT:   %vne = icmp ne i8 %a1, %a2
-; CHECK-NEXT:   %vugt = icmp ugt i8 %a1, %a2
-; CHECK-NEXT:   %vuge = icmp uge i8 %a1, %a2
-; CHECK-NEXT:   %vult = icmp ult i8 %a1, %a2
-; CHECK-NEXT:   %vule = icmp ule i8 %a1, %a2
-; CHECK-NEXT:   %vsgt = icmp sgt i8 %a1, %a2
-; CHECK-NEXT:   %vsge = icmp sge i8 %a1, %a2
-; CHECK-NEXT:   %vslt = icmp slt i8 %a1, %a2
-; CHECK-NEXT:   %vsle = icmp sle i8 %a1, %a2
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @IcmpI16(i32 %p1, i32 %p2) {
-entry:
-  %a1 = trunc i32 %p1 to i16
-  %a2 = trunc i32 %p2 to i16
-  %veq = icmp eq i16 %a1, %a2
-  %vne = icmp ne i16 %a1, %a2
-  %vugt = icmp ugt i16 %a1, %a2
-  %vuge = icmp uge i16 %a1, %a2
-  %vult = icmp ult i16 %a1, %a2
-  %vule = icmp ule i16 %a1, %a2
-  %vsgt = icmp sgt i16 %a1, %a2
-  %vsge = icmp sge i16 %a1, %a2
-  %vslt = icmp slt i16 %a1, %a2
-  %vsle = icmp sle i16 %a1, %a2
-  ret void
-}
-
-; CHECK-NEXT: define internal void @IcmpI16(i32 %p1, i32 %p2) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a1 = trunc i32 %p1 to i16
-; CHECK-NEXT:   %a2 = trunc i32 %p2 to i16
-; CHECK-NEXT:   %veq = icmp eq i16 %a1, %a2
-; CHECK-NEXT:   %vne = icmp ne i16 %a1, %a2
-; CHECK-NEXT:   %vugt = icmp ugt i16 %a1, %a2
-; CHECK-NEXT:   %vuge = icmp uge i16 %a1, %a2
-; CHECK-NEXT:   %vult = icmp ult i16 %a1, %a2
-; CHECK-NEXT:   %vule = icmp ule i16 %a1, %a2
-; CHECK-NEXT:   %vsgt = icmp sgt i16 %a1, %a2
-; CHECK-NEXT:   %vsge = icmp sge i16 %a1, %a2
-; CHECK-NEXT:   %vslt = icmp slt i16 %a1, %a2
-; CHECK-NEXT:   %vsle = icmp sle i16 %a1, %a2
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @IcmpI32(i32 %a1, i32 %a2) {
-entry:
-  %veq = icmp eq i32 %a1, %a2
-  %vne = icmp ne i32 %a1, %a2
-  %vugt = icmp ugt i32 %a1, %a2
-  %vuge = icmp uge i32 %a1, %a2
-  %vult = icmp ult i32 %a1, %a2
-  %vule = icmp ule i32 %a1, %a2
-  %vsgt = icmp sgt i32 %a1, %a2
-  %vsge = icmp sge i32 %a1, %a2
-  %vslt = icmp slt i32 %a1, %a2
-  %vsle = icmp sle i32 %a1, %a2
-  ret void
-}
-
-; CHECK-NEXT: define internal void @IcmpI32(i32 %a1, i32 %a2) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %veq = icmp eq i32 %a1, %a2
-; CHECK-NEXT:   %vne = icmp ne i32 %a1, %a2
-; CHECK-NEXT:   %vugt = icmp ugt i32 %a1, %a2
-; CHECK-NEXT:   %vuge = icmp uge i32 %a1, %a2
-; CHECK-NEXT:   %vult = icmp ult i32 %a1, %a2
-; CHECK-NEXT:   %vule = icmp ule i32 %a1, %a2
-; CHECK-NEXT:   %vsgt = icmp sgt i32 %a1, %a2
-; CHECK-NEXT:   %vsge = icmp sge i32 %a1, %a2
-; CHECK-NEXT:   %vslt = icmp slt i32 %a1, %a2
-; CHECK-NEXT:   %vsle = icmp sle i32 %a1, %a2
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @IcmpI64(i64 %a1, i64 %a2) {
-entry:
-  %veq = icmp eq i64 %a1, %a2
-  %vne = icmp ne i64 %a1, %a2
-  %vugt = icmp ugt i64 %a1, %a2
-  %vuge = icmp uge i64 %a1, %a2
-  %vult = icmp ult i64 %a1, %a2
-  %vule = icmp ule i64 %a1, %a2
-  %vsgt = icmp sgt i64 %a1, %a2
-  %vsge = icmp sge i64 %a1, %a2
-  %vslt = icmp slt i64 %a1, %a2
-  %vsle = icmp sle i64 %a1, %a2
-  ret void
-}
-
-; CHECK-NEXT: define internal void @IcmpI64(i64 %a1, i64 %a2) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %veq = icmp eq i64 %a1, %a2
-; CHECK-NEXT:   %vne = icmp ne i64 %a1, %a2
-; CHECK-NEXT:   %vugt = icmp ugt i64 %a1, %a2
-; CHECK-NEXT:   %vuge = icmp uge i64 %a1, %a2
-; CHECK-NEXT:   %vult = icmp ult i64 %a1, %a2
-; CHECK-NEXT:   %vule = icmp ule i64 %a1, %a2
-; CHECK-NEXT:   %vsgt = icmp sgt i64 %a1, %a2
-; CHECK-NEXT:   %vsge = icmp sge i64 %a1, %a2
-; CHECK-NEXT:   %vslt = icmp slt i64 %a1, %a2
-; CHECK-NEXT:   %vsle = icmp sle i64 %a1, %a2
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal <4 x i1> @IcmpV4xI1(<4 x i1> %a1, <4 x i1> %a2) {
-entry:
-  %veq = icmp eq <4 x i1> %a1, %a2
-  %vne = icmp ne <4 x i1> %a1, %a2
-  %vugt = icmp ugt <4 x i1> %a1, %a2
-  %vuge = icmp uge <4 x i1> %a1, %a2
-  %vult = icmp ult <4 x i1> %a1, %a2
-  %vule = icmp ule <4 x i1> %a1, %a2
-  %vsgt = icmp sgt <4 x i1> %a1, %a2
-  %vsge = icmp sge <4 x i1> %a1, %a2
-  %vslt = icmp slt <4 x i1> %a1, %a2
-  %vsle = icmp sle <4 x i1> %a1, %a2
-  ret <4 x i1> %veq
-}
-
-; CHECK-NEXT: define internal <4 x i1> @IcmpV4xI1(<4 x i1> %a1, <4 x i1> %a2) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %veq = icmp eq <4 x i1> %a1, %a2
-; CHECK-NEXT:   %vne = icmp ne <4 x i1> %a1, %a2
-; CHECK-NEXT:   %vugt = icmp ugt <4 x i1> %a1, %a2
-; CHECK-NEXT:   %vuge = icmp uge <4 x i1> %a1, %a2
-; CHECK-NEXT:   %vult = icmp ult <4 x i1> %a1, %a2
-; CHECK-NEXT:   %vule = icmp ule <4 x i1> %a1, %a2
-; CHECK-NEXT:   %vsgt = icmp sgt <4 x i1> %a1, %a2
-; CHECK-NEXT:   %vsge = icmp sge <4 x i1> %a1, %a2
-; CHECK-NEXT:   %vslt = icmp slt <4 x i1> %a1, %a2
-; CHECK-NEXT:   %vsle = icmp sle <4 x i1> %a1, %a2
-; CHECK-NEXT:   ret <4 x i1> %veq
-; CHECK-NEXT: }
-
-define internal <8 x i1> @IcmpV8xI1(<8 x i1> %a1, <8 x i1> %a2) {
-entry:
-  %veq = icmp eq <8 x i1> %a1, %a2
-  %vne = icmp ne <8 x i1> %a1, %a2
-  %vugt = icmp ugt <8 x i1> %a1, %a2
-  %vuge = icmp uge <8 x i1> %a1, %a2
-  %vult = icmp ult <8 x i1> %a1, %a2
-  %vule = icmp ule <8 x i1> %a1, %a2
-  %vsgt = icmp sgt <8 x i1> %a1, %a2
-  %vsge = icmp sge <8 x i1> %a1, %a2
-  %vslt = icmp slt <8 x i1> %a1, %a2
-  %vsle = icmp sle <8 x i1> %a1, %a2
-  ret <8 x i1> %veq
-}
-
-; CHECK-NEXT: define internal <8 x i1> @IcmpV8xI1(<8 x i1> %a1, <8 x i1> %a2) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %veq = icmp eq <8 x i1> %a1, %a2
-; CHECK-NEXT:   %vne = icmp ne <8 x i1> %a1, %a2
-; CHECK-NEXT:   %vugt = icmp ugt <8 x i1> %a1, %a2
-; CHECK-NEXT:   %vuge = icmp uge <8 x i1> %a1, %a2
-; CHECK-NEXT:   %vult = icmp ult <8 x i1> %a1, %a2
-; CHECK-NEXT:   %vule = icmp ule <8 x i1> %a1, %a2
-; CHECK-NEXT:   %vsgt = icmp sgt <8 x i1> %a1, %a2
-; CHECK-NEXT:   %vsge = icmp sge <8 x i1> %a1, %a2
-; CHECK-NEXT:   %vslt = icmp slt <8 x i1> %a1, %a2
-; CHECK-NEXT:   %vsle = icmp sle <8 x i1> %a1, %a2
-; CHECK-NEXT:   ret <8 x i1> %veq
-; CHECK-NEXT: }
-
-define internal <16 x i1> @IcmpV16xI1(<16 x i1> %a1, <16 x i1> %a2) {
-entry:
-  %veq = icmp eq <16 x i1> %a1, %a2
-  %vne = icmp ne <16 x i1> %a1, %a2
-  %vugt = icmp ugt <16 x i1> %a1, %a2
-  %vuge = icmp uge <16 x i1> %a1, %a2
-  %vult = icmp ult <16 x i1> %a1, %a2
-  %vule = icmp ule <16 x i1> %a1, %a2
-  %vsgt = icmp sgt <16 x i1> %a1, %a2
-  %vsge = icmp sge <16 x i1> %a1, %a2
-  %vslt = icmp slt <16 x i1> %a1, %a2
-  %vsle = icmp sle <16 x i1> %a1, %a2
-  ret <16 x i1> %veq
-}
-
-; CHECK-NEXT: define internal <16 x i1> @IcmpV16xI1(<16 x i1> %a1, <16 x i1> %a2) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %veq = icmp eq <16 x i1> %a1, %a2
-; CHECK-NEXT:   %vne = icmp ne <16 x i1> %a1, %a2
-; CHECK-NEXT:   %vugt = icmp ugt <16 x i1> %a1, %a2
-; CHECK-NEXT:   %vuge = icmp uge <16 x i1> %a1, %a2
-; CHECK-NEXT:   %vult = icmp ult <16 x i1> %a1, %a2
-; CHECK-NEXT:   %vule = icmp ule <16 x i1> %a1, %a2
-; CHECK-NEXT:   %vsgt = icmp sgt <16 x i1> %a1, %a2
-; CHECK-NEXT:   %vsge = icmp sge <16 x i1> %a1, %a2
-; CHECK-NEXT:   %vslt = icmp slt <16 x i1> %a1, %a2
-; CHECK-NEXT:   %vsle = icmp sle <16 x i1> %a1, %a2
-; CHECK-NEXT:   ret <16 x i1> %veq
-; CHECK-NEXT: }
-
-define internal <16 x i1> @IcmpV16xI8(<16 x i8> %a1, <16 x i8> %a2) {
-entry:
-  %veq = icmp eq <16 x i8> %a1, %a2
-  %vne = icmp ne <16 x i8> %a1, %a2
-  %vugt = icmp ugt <16 x i8> %a1, %a2
-  %vuge = icmp uge <16 x i8> %a1, %a2
-  %vult = icmp ult <16 x i8> %a1, %a2
-  %vule = icmp ule <16 x i8> %a1, %a2
-  %vsgt = icmp sgt <16 x i8> %a1, %a2
-  %vsge = icmp sge <16 x i8> %a1, %a2
-  %vslt = icmp slt <16 x i8> %a1, %a2
-  %vsle = icmp sle <16 x i8> %a1, %a2
-  ret <16 x i1> %veq
-}
-
-; CHECK-NEXT: define internal <16 x i1> @IcmpV16xI8(<16 x i8> %a1, <16 x i8> %a2) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %veq = icmp eq <16 x i8> %a1, %a2
-; CHECK-NEXT:   %vne = icmp ne <16 x i8> %a1, %a2
-; CHECK-NEXT:   %vugt = icmp ugt <16 x i8> %a1, %a2
-; CHECK-NEXT:   %vuge = icmp uge <16 x i8> %a1, %a2
-; CHECK-NEXT:   %vult = icmp ult <16 x i8> %a1, %a2
-; CHECK-NEXT:   %vule = icmp ule <16 x i8> %a1, %a2
-; CHECK-NEXT:   %vsgt = icmp sgt <16 x i8> %a1, %a2
-; CHECK-NEXT:   %vsge = icmp sge <16 x i8> %a1, %a2
-; CHECK-NEXT:   %vslt = icmp slt <16 x i8> %a1, %a2
-; CHECK-NEXT:   %vsle = icmp sle <16 x i8> %a1, %a2
-; CHECK-NEXT:   ret <16 x i1> %veq
-; CHECK-NEXT: }
-
-define internal <8 x i1> @IcmpV8xI16(<8 x i16> %a1, <8 x i16> %a2) {
-entry:
-  %veq = icmp eq <8 x i16> %a1, %a2
-  %vne = icmp ne <8 x i16> %a1, %a2
-  %vugt = icmp ugt <8 x i16> %a1, %a2
-  %vuge = icmp uge <8 x i16> %a1, %a2
-  %vult = icmp ult <8 x i16> %a1, %a2
-  %vule = icmp ule <8 x i16> %a1, %a2
-  %vsgt = icmp sgt <8 x i16> %a1, %a2
-  %vsge = icmp sge <8 x i16> %a1, %a2
-  %vslt = icmp slt <8 x i16> %a1, %a2
-  %vsle = icmp sle <8 x i16> %a1, %a2
-  ret <8 x i1> %veq
-}
-
-; CHECK-NEXT: define internal <8 x i1> @IcmpV8xI16(<8 x i16> %a1, <8 x i16> %a2) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %veq = icmp eq <8 x i16> %a1, %a2
-; CHECK-NEXT:   %vne = icmp ne <8 x i16> %a1, %a2
-; CHECK-NEXT:   %vugt = icmp ugt <8 x i16> %a1, %a2
-; CHECK-NEXT:   %vuge = icmp uge <8 x i16> %a1, %a2
-; CHECK-NEXT:   %vult = icmp ult <8 x i16> %a1, %a2
-; CHECK-NEXT:   %vule = icmp ule <8 x i16> %a1, %a2
-; CHECK-NEXT:   %vsgt = icmp sgt <8 x i16> %a1, %a2
-; CHECK-NEXT:   %vsge = icmp sge <8 x i16> %a1, %a2
-; CHECK-NEXT:   %vslt = icmp slt <8 x i16> %a1, %a2
-; CHECK-NEXT:   %vsle = icmp sle <8 x i16> %a1, %a2
-; CHECK-NEXT:   ret <8 x i1> %veq
-; CHECK-NEXT: }
-
-define internal <4 x i1> @IcmpV4xI32(<4 x i32> %a1, <4 x i32> %a2) {
-entry:
-  %veq = icmp eq <4 x i32> %a1, %a2
-  %vne = icmp ne <4 x i32> %a1, %a2
-  %vugt = icmp ugt <4 x i32> %a1, %a2
-  %vuge = icmp uge <4 x i32> %a1, %a2
-  %vult = icmp ult <4 x i32> %a1, %a2
-  %vule = icmp ule <4 x i32> %a1, %a2
-  %vsgt = icmp sgt <4 x i32> %a1, %a2
-  %vsge = icmp sge <4 x i32> %a1, %a2
-  %vslt = icmp slt <4 x i32> %a1, %a2
-  %vsle = icmp sle <4 x i32> %a1, %a2
-  ret <4 x i1> %veq
-}
-
-; CHECK-NEXT: define internal <4 x i1> @IcmpV4xI32(<4 x i32> %a1, <4 x i32> %a2) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %veq = icmp eq <4 x i32> %a1, %a2
-; CHECK-NEXT:   %vne = icmp ne <4 x i32> %a1, %a2
-; CHECK-NEXT:   %vugt = icmp ugt <4 x i32> %a1, %a2
-; CHECK-NEXT:   %vuge = icmp uge <4 x i32> %a1, %a2
-; CHECK-NEXT:   %vult = icmp ult <4 x i32> %a1, %a2
-; CHECK-NEXT:   %vule = icmp ule <4 x i32> %a1, %a2
-; CHECK-NEXT:   %vsgt = icmp sgt <4 x i32> %a1, %a2
-; CHECK-NEXT:   %vsge = icmp sge <4 x i32> %a1, %a2
-; CHECK-NEXT:   %vslt = icmp slt <4 x i32> %a1, %a2
-; CHECK-NEXT:   %vsle = icmp sle <4 x i32> %a1, %a2
-; CHECK-NEXT:   ret <4 x i1> %veq
-; CHECK-NEXT: }
-
-define internal void @FcmpFloat(float %a1, float %a2) {
-entry:
-  %vfalse = fcmp false float %a1, %a2
-  %voeq = fcmp oeq float %a1, %a2
-  %vogt = fcmp ogt float %a1, %a2
-  %voge = fcmp oge float %a1, %a2
-  %volt = fcmp olt float %a1, %a2
-  %vole = fcmp ole float %a1, %a2
-  %vone = fcmp one float %a1, %a2
-  %ord = fcmp ord float %a1, %a2
-  %vueq = fcmp ueq float %a1, %a2
-  %vugt = fcmp ugt float %a1, %a2
-  %vuge = fcmp uge float %a1, %a2
-  %vult = fcmp ult float %a1, %a2
-  %vule = fcmp ule float %a1, %a2
-  %vune = fcmp une float %a1, %a2
-  %vuno = fcmp uno float %a1, %a2
-  %vtrue = fcmp true float %a1, %a2
-  ret void
-}
-
-; CHECK-NEXT: define internal void @FcmpFloat(float %a1, float %a2) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %vfalse = fcmp false float %a1, %a2
-; CHECK-NEXT:   %voeq = fcmp oeq float %a1, %a2
-; CHECK-NEXT:   %vogt = fcmp ogt float %a1, %a2
-; CHECK-NEXT:   %voge = fcmp oge float %a1, %a2
-; CHECK-NEXT:   %volt = fcmp olt float %a1, %a2
-; CHECK-NEXT:   %vole = fcmp ole float %a1, %a2
-; CHECK-NEXT:   %vone = fcmp one float %a1, %a2
-; CHECK-NEXT:   %ord = fcmp ord float %a1, %a2
-; CHECK-NEXT:   %vueq = fcmp ueq float %a1, %a2
-; CHECK-NEXT:   %vugt = fcmp ugt float %a1, %a2
-; CHECK-NEXT:   %vuge = fcmp uge float %a1, %a2
-; CHECK-NEXT:   %vult = fcmp ult float %a1, %a2
-; CHECK-NEXT:   %vule = fcmp ule float %a1, %a2
-; CHECK-NEXT:   %vune = fcmp une float %a1, %a2
-; CHECK-NEXT:   %vuno = fcmp uno float %a1, %a2
-; CHECK-NEXT:   %vtrue = fcmp true float %a1, %a2
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @FcmpDouble(double %a1, double %a2) {
-entry:
-  %vfalse = fcmp false double %a1, %a2
-  %voeq = fcmp oeq double %a1, %a2
-  %vogt = fcmp ogt double %a1, %a2
-  %voge = fcmp oge double %a1, %a2
-  %volt = fcmp olt double %a1, %a2
-  %vole = fcmp ole double %a1, %a2
-  %vone = fcmp one double %a1, %a2
-  %ord = fcmp ord double %a1, %a2
-  %vueq = fcmp ueq double %a1, %a2
-  %vugt = fcmp ugt double %a1, %a2
-  %vuge = fcmp uge double %a1, %a2
-  %vult = fcmp ult double %a1, %a2
-  %vule = fcmp ule double %a1, %a2
-  %vune = fcmp une double %a1, %a2
-  %vuno = fcmp uno double %a1, %a2
-  %vtrue = fcmp true double %a1, %a2
-  ret void
-}
-
-; CHECK-NEXT: define internal void @FcmpDouble(double %a1, double %a2) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %vfalse = fcmp false double %a1, %a2
-; CHECK-NEXT:   %voeq = fcmp oeq double %a1, %a2
-; CHECK-NEXT:   %vogt = fcmp ogt double %a1, %a2
-; CHECK-NEXT:   %voge = fcmp oge double %a1, %a2
-; CHECK-NEXT:   %volt = fcmp olt double %a1, %a2
-; CHECK-NEXT:   %vole = fcmp ole double %a1, %a2
-; CHECK-NEXT:   %vone = fcmp one double %a1, %a2
-; CHECK-NEXT:   %ord = fcmp ord double %a1, %a2
-; CHECK-NEXT:   %vueq = fcmp ueq double %a1, %a2
-; CHECK-NEXT:   %vugt = fcmp ugt double %a1, %a2
-; CHECK-NEXT:   %vuge = fcmp uge double %a1, %a2
-; CHECK-NEXT:   %vult = fcmp ult double %a1, %a2
-; CHECK-NEXT:   %vule = fcmp ule double %a1, %a2
-; CHECK-NEXT:   %vune = fcmp une double %a1, %a2
-; CHECK-NEXT:   %vuno = fcmp uno double %a1, %a2
-; CHECK-NEXT:   %vtrue = fcmp true double %a1, %a2
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal <4 x i1> @FcmpV4xFloat(<4 x float> %a1, <4 x float> %a2) {
-entry:
-  %vfalse = fcmp false <4 x float> %a1, %a2
-  %voeq = fcmp oeq <4 x float> %a1, %a2
-  %vogt = fcmp ogt <4 x float> %a1, %a2
-  %voge = fcmp oge <4 x float> %a1, %a2
-  %volt = fcmp olt <4 x float> %a1, %a2
-  %vole = fcmp ole <4 x float> %a1, %a2
-  %vone = fcmp one <4 x float> %a1, %a2
-  %ord = fcmp ord <4 x float> %a1, %a2
-  %vueq = fcmp ueq <4 x float> %a1, %a2
-  %vugt = fcmp ugt <4 x float> %a1, %a2
-  %vuge = fcmp uge <4 x float> %a1, %a2
-  %vult = fcmp ult <4 x float> %a1, %a2
-  %vule = fcmp ule <4 x float> %a1, %a2
-  %vune = fcmp une <4 x float> %a1, %a2
-  %vuno = fcmp uno <4 x float> %a1, %a2
-  %vtrue = fcmp true <4 x float> %a1, %a2
-  ret <4 x i1> %voeq
-}
-
-; CHECK-NEXT: define internal <4 x i1> @FcmpV4xFloat(<4 x float> %a1, <4 x float> %a2) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %vfalse = fcmp false <4 x float> %a1, %a2
-; CHECK-NEXT:   %voeq = fcmp oeq <4 x float> %a1, %a2
-; CHECK-NEXT:   %vogt = fcmp ogt <4 x float> %a1, %a2
-; CHECK-NEXT:   %voge = fcmp oge <4 x float> %a1, %a2
-; CHECK-NEXT:   %volt = fcmp olt <4 x float> %a1, %a2
-; CHECK-NEXT:   %vole = fcmp ole <4 x float> %a1, %a2
-; CHECK-NEXT:   %vone = fcmp one <4 x float> %a1, %a2
-; CHECK-NEXT:   %ord = fcmp ord <4 x float> %a1, %a2
-; CHECK-NEXT:   %vueq = fcmp ueq <4 x float> %a1, %a2
-; CHECK-NEXT:   %vugt = fcmp ugt <4 x float> %a1, %a2
-; CHECK-NEXT:   %vuge = fcmp uge <4 x float> %a1, %a2
-; CHECK-NEXT:   %vult = fcmp ult <4 x float> %a1, %a2
-; CHECK-NEXT:   %vule = fcmp ule <4 x float> %a1, %a2
-; CHECK-NEXT:   %vune = fcmp une <4 x float> %a1, %a2
-; CHECK-NEXT:   %vuno = fcmp uno <4 x float> %a1, %a2
-; CHECK-NEXT:   %vtrue = fcmp true <4 x float> %a1, %a2
-; CHECK-NEXT:   ret <4 x i1> %voeq
-; CHECK-NEXT: }
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/constants.ll b/third_party/subzero/tests_lit/reader_tests/constants.ll
deleted file mode 100644
index e63112e..0000000
--- a/third_party/subzero/tests_lit/reader_tests/constants.ll
+++ /dev/null
@@ -1,158 +0,0 @@
-; Test handling of constants in function blocks.
-
-; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN:   %p2i -i %s --args -notranslate -timing | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-define internal void @TestIntegers() {
-entry:
-; CHECK: entry:
-
-  ; Test various sized integers
-  %v0 = or i1 true, false
-; CHECK-NEXT:   %v0 = or i1 true, false
-
-  %v1 = add i8 0, 0
-; CHECK-NEXT:   %v1 = add i8 0, 0
-
-  %v2 = add i8 5, 0
-; CHECK-NEXT:   %v2 = add i8 5, 0
-
-  %v3 = add i8 -5, 0
-; CHECK-NEXT:   %v3 = add i8 -5, 0
-
-  %v4 = and i16 10, 0
-; CHECK-NEXT:   %v4 = and i16 10, 0
-
-  %v5 = add i16 -10, 0
-; CHECK-NEXT:   %v5 = add i16 -10, 0
-
-  %v6 = add i32 20, 0
-; CHECK-NEXT:   %v6 = add i32 20, 0
-
-  %v7 = add i32 -20, 0
-; CHECK-NEXT:   %v7 = add i32 -20, 0
-
-  %v8 = add i64 30, 0
-; CHECK-NEXT:   %v8 = add i64 30, 0
-
-  %v9 = add i64 -30, 0
-; CHECK-NEXT:   %v9 = add i64 -30, 0
-
-  ; Test undefined integer values.
-  %v10 = xor i1 undef, false
-; CHECK-NEXT:   %v10 = xor i1 undef, false
-
-  %v11 = add i8 undef, 0
-; CHECK-NEXT:   %v11 = add i8 undef, 0
-
-  %v12 = add i16 undef, 0
-; CHECK-NEXT:   %v12 = add i16 undef, 0
-
-  %v13 = add i32 undef, 0
-; CHECK-NEXT:   %v13 = add i32 undef, 0
-
-  %v14 = add i64 undef, 0
-; CHECK-NEXT:   %v14 = add i64 undef, 0
-
-  ret void
-; CHECK-NEXT:   ret void
-
-}
-
-define internal void @TestFloats() {
-entry:
-; CHECK: entry:
-
-  ; Test float and double constants
-  %v0 = fadd float 1.0, 0.0
-; CHECK-NEXT:   %v0 = fadd float 1.000000e+00, 0.000000e+00
-
-  %v1 = fadd double 1.0, 0.0
-; CHECK-NEXT:   %v1 = fadd double 1.000000e+00, 0.000000e+00
-
-  %v2 = fsub float 7.000000e+00, 8.000000e+00
-; CHECK-NEXT:   %v2 = fsub float 7.000000e+00, 8.000000e+00
-
-  %v3 = fsub double 5.000000e+00, 6.000000e+00
-; CHECK-NEXT:   %v3 = fsub double 5.000000e+00, 6.000000e+00
-
-  ; Test undefined float and double.
-  %v4 = fadd float undef, 0.0
-; CHECK-NEXT:   %v4 = fadd float undef, 0.000000e+00
-
-  %v5 = fsub double undef, 6.000000e+00
-; CHECK-NEXT:   %v5 = fsub double undef, 6.000000e+00
-
-  ; Test special floating point constants. Note: LLVM assembly appears
-  ; to use 64-bit integer constants for both float and double.
-
-  ; Generated from NAN in <math.h>
-  %v6 = fadd float 0x7FF8000000000000, 0.0
-; CHECK-NEXT:   %v6 = fadd float nan, 0.000000e+00
-
-  ; Generated from -NAN in <math.h>
-  %v7 = fadd float 0xFFF8000000000000, 0.0
-; CHECK-NEXT:   %v7 = fadd float -nan, 0.000000e+00
-
-  ; Generated from INFINITY in <math.h>
-  %v8 = fadd float 0x7FF0000000000000, 0.0
-; CHECK-NEXT:   %v8 = fadd float inf, 0.000000e+00
-
-  ; Generated from -INFINITY in <math.h>
-  %v9 = fadd float 0xFFF0000000000000, 0.0
-; CHECK-NEXT:   %v9 = fadd float -inf, 0.000000e+00
-
-  ; Generated from FLT_MIN in <float.h>
-  %v10 = fadd float 0x381000000000000000, 0.0
-; CHECK-NEXT:   %v10 = fadd float 0.000000e+00, 0.000000e+00
-
-  ; Generated from -FLT_MIN in <float.h>
-  %v11 = fadd float 0xb81000000000000000, 0.0
-; CHECK-NEXT:   %v11 = fadd float 0.000000e+00, 0.000000e+00
-
-  ; Generated from FLT_MAX in <float.h>
-  %v12 = fadd float 340282346638528859811704183484516925440.000000, 0.0
-; CHECK-NEXT:   %v12 = fadd float 3.402823e+38, 0.000000e+00
-
-  ; Generated from -FLT_MAX in <float.h>
-  %v13 = fadd float -340282346638528859811704183484516925440.000000, 0.0
-; CHECK-NEXT:   %v13 = fadd float -3.402823e+38, 0.000000e+00
-
-  ; Generated from NAN in <math.h>
-  %v14 = fadd double 0x7FF8000000000000, 0.0
-; CHECK-NEXT:   %v14 = fadd double nan, 0.000000e+00
-
-  ; Generated from -NAN in <math.h>
-  %v15 = fadd double 0xFFF8000000000000, 0.0
-; CHECK-NEXT:   %v15 = fadd double -nan, 0.000000e+00
-
-  ; Generated from INFINITY in <math.h>
-  %v16 = fadd double 0x7FF0000000000000, 0.0
-; CHECK-NEXT:   %v16 = fadd double inf, 0.000000e+00
-
-  ; Generated from -INFINITY in <math.h>
-  %v17 = fadd double 0xFFF0000000000000, 0.0
-; CHECK-NEXT:   %v17 = fadd double -inf, 0.000000e+00
-
-  ; Generated from DBL_MIN in <float.h>
-  %v18 = fadd double 0x0010000000000000, 0.0
-; CHECK-NEXT:   %v18 = fadd double 2.225074e-308, 0.000000e+00
-
-  ; Generated from -DBL_MIN in <float.h>
-  %v19 = fadd double 0x8010000000000000, 0.0
-; CHECK-NEXT:   %v19 = fadd double -2.225074e-308, 0.000000e+00
-
-  ; Generated from DBL_MAX in <float.h>
-  %v20 = fadd double 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000, 0.0
-; CHECK-NEXT:   %v20 = fadd double 1.797693e+308, 0.000000e+00
-
-  ; Generated from -DBL_MAX in <float.h>
-  %v21 = fadd double -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000, 0.0
-; CHECK-NEXT:   %v21 = fadd double -1.797693e+308, 0.000000e+00
-
-  ret void
-; CHECK-NEXT:   ret void
-}
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/extern_globals.ll b/third_party/subzero/tests_lit/reader_tests/extern_globals.ll
deleted file mode 100644
index ddc870e..0000000
--- a/third_party/subzero/tests_lit/reader_tests/extern_globals.ll
+++ /dev/null
@@ -1,270 +0,0 @@
-; Test whether we don't mangle external, undefined, global names. This
-; feature is needed for cross tests on global initializer relocations.
-;
-; Note: This code was generated by compiling subzero/crosstest/test_global.cpp
-
-; We use lc2i (rather than p2i) because PNaCl bitcode files do not
-; allow externally defined global variables. Hence, this test can only
-; work if we read LLVM IR source, and convert to to ICE.
-
-; REQUIRES: allow_llvm_ir_as_input
-; RUN: %lc2i -i %s --insts --args --allow-uninitialized-globals \
-; RUN:       -allow-externally-defined-symbols | FileCheck %s
-; RUN: %lc2i -i %s --insts --args --allow-uninitialized-globals \
-; RUN:       -allow-externally-defined-symbols \
-; RUN:       -prefix Subzero_ | FileCheck --check-prefix=CROSS %s
-
-@ArrayInitPartial = internal global [40 x i8] c"<\00\00\00F\00\00\00P\00\00\00Z\00\00\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 4
-
-; CHECK: @ArrayInitPartial = internal global [40 x i8] c"<\00\00\00F\00\00\00P\00\00\00Z\00\00\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 4
-; CROSS: @Subzero_ArrayInitPartial = internal global [40 x i8] c"<\00\00\00F\00\00\00P\00\00\00Z\00\00\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 4
-
-@ArrayInitFull = internal global [20 x i8] c"\0A\00\00\00\14\00\00\00\1E\00\00\00(\00\00\002\00\00\00", align 4
-
-; CHECK: @ArrayInitFull = internal global [20 x i8] c"\0A\00\00\00\14\00\00\00\1E\00\00\00(\00\00\002\00\00\00", align 4
-; CROSS: @Subzero_ArrayInitFull = internal global [20 x i8] c"\0A\00\00\00\14\00\00\00\1E\00\00\00(\00\00\002\00\00\00", align 4
-
-@NumArraysElements = internal global [4 x i8] c"\06\00\00\00", align 4
-
-; CHECK: @NumArraysElements = internal global [4 x i8] c"\06\00\00\00", align 4
-; CROSS: @Subzero_NumArraysElements = internal global [4 x i8] c"\06\00\00\00", align 4
-
-@Arrays = internal constant <{ i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8] }> <{ i32 ptrtoint ([40 x i8]* @ArrayInitPartial to i32), [4 x i8] c"(\00\00\00", i32 ptrtoint ([20 x i8]* @ArrayInitFull to i32), [4 x i8] c"\14\00\00\00", i32 ptrtoint ([12 x i8]* @_ZL10ArrayConst to i32), [4 x i8] c"\0C\00\00\00", i32 ptrtoint ([80 x i8]* @_ZL11ArrayDouble to i32), [4 x i8] c"P\00\00\00", i32 add (i32 ptrtoint ([40 x i8]* @ArrayInitPartial to i32), i32 8), [4 x i8] c" \00\00\00", i32 ptrtoint ([80 x i8]* @_ZL8StructEx to i32), [4 x i8] c"P\00\00\00" }>, align 4
-
-; CHECK: @Arrays = internal constant <{ i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8] }> <{ i32 ptrtoint ([40 x i8]* @ArrayInitPartial to i32), [4 x i8] c"(\00\00\00", i32 ptrtoint ([20 x i8]* @ArrayInitFull to i32), [4 x i8] c"\14\00\00\00", i32 ptrtoint ([12 x i8]* @_ZL10ArrayConst to i32), [4 x i8] c"\0C\00\00\00", i32 ptrtoint ([80 x i8]* @_ZL11ArrayDouble to i32), [4 x i8] c"P\00\00\00", i32 add (i32 ptrtoint ([40 x i8]* @ArrayInitPartial to i32), i32 8), [4 x i8] c" \00\00\00", i32 ptrtoint ([80 x i8]* @_ZL8StructEx to i32), [4 x i8] c"P\00\00\00" }>, align 4
-; CROSS: @Subzero_Arrays = internal constant <{ i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8] }> <{ i32 ptrtoint ([40 x i8]* @Subzero_ArrayInitPartial to i32), [4 x i8] c"(\00\00\00", i32 ptrtoint ([20 x i8]* @Subzero_ArrayInitFull to i32), [4 x i8] c"\14\00\00\00", i32 ptrtoint ([12 x i8]* @Subzero__ZL10ArrayConst to i32), [4 x i8] c"\0C\00\00\00", i32 ptrtoint ([80 x i8]* @Subzero__ZL11ArrayDouble to i32), [4 x i8] c"P\00\00\00", i32 add (i32 ptrtoint ([40 x i8]* @Subzero_ArrayInitPartial to i32), i32 8), [4 x i8] c" \00\00\00", i32 ptrtoint ([80 x i8]* @Subzero__ZL8StructEx to i32), [4 x i8] c"P\00\00\00" }>, align 4
-
-
-@_ZL10ArrayConst = internal constant [12 x i8] c"\F6\FF\FF\FF\EC\FF\FF\FF\E2\FF\FF\FF", align 4
-
-; CHECK: @_ZL10ArrayConst = internal constant [12 x i8] c"\F6\FF\FF\FF\EC\FF\FF\FF\E2\FF\FF\FF", align 4
-; CROSS: @Subzero__ZL10ArrayConst = internal constant [12 x i8] c"\F6\FF\FF\FF\EC\FF\FF\FF\E2\FF\FF\FF", align 4
-
-@_ZL11ArrayDouble = internal global [80 x i8] c"\00\00\00\00\00\00\E0?\00\00\00\00\00\00\F8?\00\00\00\00\00\00\04@\00\00\00\00\00\00\0C@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 8
-
-; CHECK: @_ZL11ArrayDouble = internal global [80 x i8] c"\00\00\00\00\00\00\E0?\00\00\00\00\00\00\F8?\00\00\00\00\00\00\04@\00\00\00\00\00\00\0C@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 8
-; CROSS: @Subzero__ZL11ArrayDouble = internal global [80 x i8] c"\00\00\00\00\00\00\E0?\00\00\00\00\00\00\F8?\00\00\00\00\00\00\04@\00\00\00\00\00\00\0C@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 8
-
-@_ZL8StructEx = internal global [80 x i8] zeroinitializer, align 8
-
-; CHECK: @_ZL8StructEx = internal global [80 x i8] zeroinitializer, align 8
-; CROSS: @Subzero__ZL8StructEx = internal global [80 x i8] zeroinitializer, align 8
-
-@ExternName1 = external global [4 x i8], align 4
-
-; CHECK: @ExternName1 = external global <{  }> <{  }>, align 4
-; CROSS: @ExternName1 = external global <{  }> <{  }>, align 4
-
-@ExternName4 = external global [4 x i8], align 4
-
-; CHECK: @ExternName4 = external global <{  }> <{  }>, align 4
-; CROSS: @ExternName4 = external global <{  }> <{  }>, align 4
-
-@ExternName3 = external global [4 x i8], align 4
-
-; CHECK: @ExternName3 = external global <{  }> <{  }>, align 4
-; CROSS: @ExternName3 = external global <{  }> <{  }>, align 4
-
-@ExternName2 = external global [4 x i8], align 4
-
-; CHECK: @ExternName2 = external global <{  }> <{  }>, align 4
-; CROSS: @ExternName2 = external global <{  }> <{  }>, align 4
-
-@ExternName5 = external global [4 x i8], align 4
-
-; CHECK: @ExternName5 = external global <{  }> <{  }>, align 4
-; CROSS: @ExternName5 = external global <{  }> <{  }>, align 4
-
-define i32 @_Z12getNumArraysv() {
-; CHECK: define i32 @_Z12getNumArraysv() {
-; CROSS: define i32 @_ZN8Subzero_12getNumArraysEv() {
-entry:
-  %NumArraysElements.bc = bitcast [4 x i8]* @NumArraysElements to i32*
-; CHECK:   %NumArraysElements.bc = bitcast i32 @NumArraysElements to i32
-; CROSS:   %NumArraysElements.bc = bitcast i32 @Subzero_NumArraysElements to i32
-  %0 = load i32, i32* %NumArraysElements.bc, align 1
-  ret i32 %0
-}
-
-define i32 @_Z8getArrayjRj(i32 %WhichArray, i32 %Len) {
-; CHECK: define i32 @_Z8getArrayjRj(i32 %WhichArray, i32 %Len) {
-; CROSS: define i32 @_ZN8Subzero_8getArrayEjRj(i32 %WhichArray, i32 %Len) {
-entry:
-  %NumArraysElements.bc = bitcast [4 x i8]* @NumArraysElements to i32*
-; CHECK:   %NumArraysElements.bc = bitcast i32 @NumArraysElements to i32
-; CROSS:   %NumArraysElements.bc = bitcast i32 @Subzero_NumArraysElements to i32
-  %0 = load i32, i32* %NumArraysElements.bc, align 1
-  %cmp = icmp ugt i32 %0, %WhichArray
-; CHECK:   %cmp = icmp ugt i32 %__3, %WhichArray
-; CROSS:   %cmp = icmp ugt i32 %__3, %WhichArray
-  br i1 %cmp, label %if.end, label %if.then
-
-if.then:                                          ; preds = %entry
-  %Len.asptr = inttoptr i32 %Len to i32*
-; CHECK:   %Len.asptr = i32 %Len
-; CROSS:   %Len.asptr = i32 %Len
-  store i32 -1, i32* %Len.asptr, align 1
-  br label %return
-
-if.end:                                           ; preds = %entry
-  %gep_array = mul i32 %WhichArray, 8
-; CHECK:   %gep_array = mul i32 %WhichArray, 8
-; CROSS:   %gep_array = mul i32 %WhichArray, 8
-  %expanded1 = ptrtoint <{ i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8] }>* @Arrays to i32
-; CHECK:   %expanded1 = i32 @Arrays
-; CROSS:   %expanded1 = i32 @Subzero_Arrays
-  %gep = add i32 %expanded1, %gep_array
-  %gep1 = add i32 %gep, 4
-  %gep1.asptr = inttoptr i32 %gep1 to i32*
-  %1 = load i32, i32* %gep1.asptr, align 1
-  %Len.asptr3 = inttoptr i32 %Len to i32*
-; CHECK:   %Len.asptr3 = i32 %Len
-; CROSS:   %Len.asptr3 = i32 %Len
-  store i32 %1, i32* %Len.asptr3, align 1
-  %gep_array3 = mul i32 %WhichArray, 8
-; CHECK:   %gep_array3 = mul i32 %WhichArray, 8
-; CROSS:   %gep_array3 = mul i32 %WhichArray, 8
-  %expanded2 = ptrtoint <{ i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8] }>* @Arrays to i32
-; CHECK:   %expanded2 = i32 @Arrays
-; CROSS:   %expanded2 = i32 @Subzero_Arrays
-  %gep4 = add i32 %expanded2, %gep_array3
-  %gep4.asptr = inttoptr i32 %gep4 to i32*
-  %2 = load i32, i32* %gep4.asptr, align 1
-  br label %return
-
-return:                                           ; preds = %if.end, %if.then
-  %retval.0 = phi i32 [ 0, %if.then ], [ %2, %if.end ]
-  ret i32 %retval.0
-}
-
-define void @_GLOBAL__I_a() {
-; CHECK: define void @_GLOBAL__I_a() {
-; CROSS: define void @Subzero__GLOBAL__I_a() {
-entry:
-  %_ZL8StructEx.bc = bitcast [80 x i8]* @_ZL8StructEx to i32*
-; CHECK:   %_ZL8StructEx.bc = bitcast i32 @_ZL8StructEx to i32
-; CROSS:   %_ZL8StructEx.bc = bitcast i32 @Subzero__ZL8StructEx to i32
-  store i32 10, i32* %_ZL8StructEx.bc, align 1
-  %expanded1 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
-; CHECK:   %expanded1 = i32 @_ZL8StructEx
-; CROSS:   %expanded1 = i32 @Subzero__ZL8StructEx
-  %gep = add i32 %expanded1, 4
-  %gep.asptr = inttoptr i32 %gep to i32*
-  store i32 20, i32* %gep.asptr, align 1
-  %expanded2 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
-; CHECK:   %expanded2 = i32 @_ZL8StructEx
-; CROSS:   %expanded2 = i32 @Subzero__ZL8StructEx
-  %gep18 = add i32 %expanded2, 8
-  %gep18.asptr = inttoptr i32 %gep18 to i32*
-  store i32 30, i32* %gep18.asptr, align 1
-  %expanded3 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
-; CHECK:   %expanded3 = i32 @_ZL8StructEx
-; CROSS:   %expanded3 = i32 @Subzero__ZL8StructEx
-  %gep20 = add i32 %expanded3, 12
-  %gep20.asptr = inttoptr i32 %gep20 to i32*
-  store i32 40, i32* %gep20.asptr, align 1
-  %expanded4 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
-; CHECK:   %expanded4 = i32 @_ZL8StructEx
-; CROSS:   %expanded4 = i32 @Subzero__ZL8StructEx
-  %gep22 = add i32 %expanded4, 16
-  %gep22.asptr = inttoptr i32 %gep22 to i32*
-  store i32 50, i32* %gep22.asptr, align 1
-  %ExternName1.bc = bitcast [4 x i8]* @ExternName1 to i32*
-; CHECK:   %ExternName1.bc = bitcast i32 @ExternName1 to i32
-; CROSS:   %ExternName1.bc = bitcast i32 @ExternName1 to i32
-  %0 = load i32, i32* %ExternName1.bc, align 1
-  %expanded6 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
-; CHECK:   %expanded6 = i32 @_ZL8StructEx
-; CROSS:   %expanded6 = i32 @Subzero__ZL8StructEx
-  %gep24 = add i32 %expanded6, 20
-  %gep24.asptr = inttoptr i32 %gep24 to i32*
-  store i32 %0, i32* %gep24.asptr, align 1
-  %expanded7 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
-; CHECK:   %expanded7 = i32 @_ZL8StructEx
-; CROSS:   %expanded7 = i32 @Subzero__ZL8StructEx
-  %gep26 = add i32 %expanded7, 24
-  %gep26.asptr = inttoptr i32 %gep26 to double*
-  store double 5.000000e-01, double* %gep26.asptr, align 8
-  %expanded8 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
-; CHECK:   %expanded8 = i32 @_ZL8StructEx
-; CROSS:   %expanded8 = i32 @Subzero__ZL8StructEx
-  %gep28 = add i32 %expanded8, 32
-  %gep28.asptr = inttoptr i32 %gep28 to double*
-  store double 1.500000e+00, double* %gep28.asptr, align 8
-  %expanded9 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
-; CHECK:   %expanded9 = i32 @_ZL8StructEx
-; CROSS:   %expanded9 = i32 @Subzero__ZL8StructEx
-  %gep30 = add i32 %expanded9, 40
-  %gep30.asptr = inttoptr i32 %gep30 to double*
-  store double 2.500000e+00, double* %gep30.asptr, align 8
-  %ExternName4.bc = bitcast [4 x i8]* @ExternName4 to i32*
-; CHECK:   %ExternName4.bc = bitcast i32 @ExternName4 to i32
-; CROSS:   %ExternName4.bc = bitcast i32 @ExternName4 to i32
-  %1 = load i32, i32* %ExternName4.bc, align 1
-  %expanded11 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
-; CHECK:   %expanded11 = i32 @_ZL8StructEx
-; CROSS:   %expanded11 = i32 @Subzero__ZL8StructEx
-  %gep32 = add i32 %expanded11, 48
-  %gep32.asptr = inttoptr i32 %gep32 to i32*
-  store i32 %1, i32* %gep32.asptr, align 1
-  %ExternName3.bc = bitcast [4 x i8]* @ExternName3 to i32*
-; CHECK:   %ExternName3.bc = bitcast i32 @ExternName3 to i32
-; CROSS:   %ExternName3.bc = bitcast i32 @ExternName3 to i32
-  %2 = load i32, i32* %ExternName3.bc, align 1
-  %expanded13 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
-; CHECK:   %expanded13 = i32 @_ZL8StructEx
-; CROSS:   %expanded13 = i32 @Subzero__ZL8StructEx
-  %gep34 = add i32 %expanded13, 52
-  %gep34.asptr = inttoptr i32 %gep34 to i32*
-  store i32 %2, i32* %gep34.asptr, align 1
-  %expanded14 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
-; CHECK:   %expanded14 = i32 @_ZL8StructEx
-; CROSS:   %expanded14 = i32 @Subzero__ZL8StructEx
-  %gep36 = add i32 %expanded14, 56
-  %gep36.asptr = inttoptr i32 %gep36 to i32*
-  store i32 1000, i32* %gep36.asptr, align 1
-  %expanded15 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
-; CHECK:   %expanded15 = i32 @_ZL8StructEx
-; CROSS:   %expanded15 = i32 @Subzero__ZL8StructEx
-  %gep38 = add i32 %expanded15, 60
-  %gep38.asptr = inttoptr i32 %gep38 to i32*
-  store i32 1010, i32* %gep38.asptr, align 1
-  %expanded16 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
-; CHECK:   %expanded16 = i32 @_ZL8StructEx
-; CROSS:   %expanded16 = i32 @Subzero__ZL8StructEx
-  %gep40 = add i32 %expanded16, 64
-  %gep40.asptr = inttoptr i32 %gep40 to i32*
-  store i32 1020, i32* %gep40.asptr, align 1
-  %ExternName2.bc = bitcast [4 x i8]* @ExternName2 to i32*
-; CHECK:   %ExternName2.bc = bitcast i32 @ExternName2 to i32
-; CROSS:   %ExternName2.bc = bitcast i32 @ExternName2 to i32
-  %3 = load i32, i32* %ExternName2.bc, align 1
-  %expanded18 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
-; CHECK:   %expanded18 = i32 @_ZL8StructEx
-; CROSS:   %expanded18 = i32 @Subzero__ZL8StructEx
-  %gep42 = add i32 %expanded18, 68
-  %gep42.asptr = inttoptr i32 %gep42 to i32*
-  store i32 %3, i32* %gep42.asptr, align 1
-  %ExternName5.bc = bitcast [4 x i8]* @ExternName5 to i32*
-; CHECK:   %ExternName5.bc = bitcast i32 @ExternName5 to i32
-; CROSS:   %ExternName5.bc = bitcast i32 @ExternName5 to i32
-  %4 = load i32, i32* %ExternName5.bc, align 1
-  %expanded20 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
-; CHECK:   %expanded20 = i32 @_ZL8StructEx
-; CROSS:   %expanded20 = i32 @Subzero__ZL8StructEx
-  %gep44 = add i32 %expanded20, 72
-  %gep44.asptr = inttoptr i32 %gep44 to i32*
-  store i32 %4, i32* %gep44.asptr, align 1
-  ret void
-}
-
-define i32 @nacl_tp_tdb_offset(i32) {
-entry:
-  ret i32 0
-}
-
-define i32 @nacl_tp_tls_offset(i32 %size) {
-entry:
-  %result = sub i32 0, %size
-  ret i32 %result
-}
diff --git a/third_party/subzero/tests_lit/reader_tests/forwardref.ll b/third_party/subzero/tests_lit/reader_tests/forwardref.ll
deleted file mode 100644
index adc0dee..0000000
--- a/third_party/subzero/tests_lit/reader_tests/forwardref.ll
+++ /dev/null
@@ -1,112 +0,0 @@
-; Test use forward type references in function blocks.
-
-; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN: llvm-as < %s | pnacl-freeze | pnacl-bcdis -no-records \
-; RUN:              | FileCheck --check-prefix=DUMP %s
-; RUN:   %p2i -i %s --args -notranslate -timing | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-define internal void @LoopCarriedDep() {
-b0:
-  %v0 = add i32 1, 2
-  br label %b1
-b1:
-  %v1 = phi i32 [%v0, %b0], [%v2, %b1]
-  %v2 = add i32 %v1, 1
-  br label %b1
-}
-
-; CHECK:      define internal void @LoopCarriedDep() {
-; CHECK-NEXT: b0:
-; CHECK-NEXT:   %v0 = add i32 1, 2
-; CHECK-NEXT:   br label %b1
-; CHECK-NEXT: b1:
-; CHECK-NEXT:   %v1 = phi i32 [ %v0, %b0 ], [ %v2, %b1 ]
-; CHECK-NEXT:   %v2 = add i32 %v1, 1
-; CHECK-NEXT:   br label %b1
-; CHECK-NEXT: }
-
-; Snippet of bitcode objdump with forward type reference (see "declare").
-; DUMP:        function void @f0() {  // BlockID = 12
-; DUMP-NEXT:     blocks 2;
-; DUMP-NEXT:     constants {  // BlockID = 11
-; DUMP-NEXT:       i32: <@a0>
-; DUMP-NEXT:         %c0 = i32 1; <@a1>
-; DUMP-NEXT:         %c1 = i32 2; <@a1>
-; DUMP-NEXT:       }
-; DUMP-NEXT:   %b0:
-; DUMP-NEXT:     %v0 = add i32 %c0, %c1; <@a1>
-; DUMP-NEXT:     br label %b1;
-; DUMP-NEXT:   %b1:
-; DUMP-NEXT:     declare i32 %v2; <@a6>
-; DUMP-NEXT:     %v1 = phi i32 [%v0, %b0], [%v2, %b1];
-; DUMP-NEXT:     %v2 = add i32 %v1, %c0; <@a1>
-; DUMP-NEXT:     br label %b1;
-; DUMP-NEXT:   }
-
-define internal void @BackBranch(i32 %p0) {
-b0:
-  br label %b4
-b1:
-  %v0 = add i32 %p0, %v3
-  br label %b6
-b2:
-  %v1 = add i32 %p0, %v4
-  br label %b6
-b3:
-  %v2 = add i32 %p0, %v3 ; No forward declare, already done!
-  br label %b6
-b4:
-  %v3 = add i32 %p0, %p0
-  br i1 1, label %b1, label %b5
-b5:
-  %v4 = add i32 %v3, %p0
-  br i1 1, label %b2, label %b3
-b6:
-  ret void
-}
-
-; CHECK:      define internal void @BackBranch(i32 %p0) {
-; CHECK-NEXT: b0:
-; CHECK-NEXT:   br label %b4
-; CHECK-NEXT: b1:
-; CHECK-NEXT:   %v0 = add i32 %p0, %v3
-; CHECK-NEXT:   br label %b6
-; CHECK-NEXT: b4:
-; CHECK-NEXT:   %v3 = add i32 %p0, %p0
-; CHECK-NEXT:   br label %b1
-; CHECK-NEXT: b6:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-; Snippet of bitcode objdump with forward type references (see "declare").
-; DUMP:        function void @f1(i32 %p0) {  // BlockID = 12
-; DUMP-NEXT:     blocks 7;
-; DUMP-NEXT:     constants {  // BlockID = 11
-; DUMP-NEXT:       i1: <@a0>
-; DUMP-NEXT:         %c0 = i1 1; <@a1>
-; DUMP-NEXT:       }
-; DUMP-NEXT:   %b0:
-; DUMP-NEXT:     br label %b4;
-; DUMP-NEXT:   %b1:
-; DUMP-NEXT:     declare i32 %v3; <@a6>
-; DUMP-NEXT:     %v0 = add i32 %p0, %v3; <@a1>
-; DUMP-NEXT:     br label %b6;
-; DUMP-NEXT:   %b2:
-; DUMP-NEXT:     declare i32 %v4; <@a6>
-; DUMP-NEXT:     %v1 = add i32 %p0, %v4; <@a1>
-; DUMP-NEXT:     br label %b6;
-; DUMP-NEXT:   %b3:
-; DUMP-NEXT:     %v2 = add i32 %p0, %v3; <@a1>
-; DUMP-NEXT:     br label %b6;
-; DUMP-NEXT:   %b4:
-; DUMP-NEXT:     %v3 = add i32 %p0, %p0; <@a1>
-; DUMP-NEXT:     br i1 %c0, label %b1, label %b5;
-; DUMP-NEXT:   %b5:
-; DUMP-NEXT:     %v4 = add i32 %v3, %p0; <@a1>
-; DUMP-NEXT:     br i1 %c0, label %b2, label %b3;
-; DUMP-NEXT:   %b6:
-; DUMP-NEXT:     ret void; <@a3>
-; DUMP-NEXT:   }
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/globalinit.pnacl.ll b/third_party/subzero/tests_lit/reader_tests/globalinit.pnacl.ll
deleted file mode 100644
index 9d020f3..0000000
--- a/third_party/subzero/tests_lit/reader_tests/globalinit.pnacl.ll
+++ /dev/null
@@ -1,84 +0,0 @@
-; Test of global initializers.
-
-; RUN: %p2i -i %s --insts --args -allow-externally-defined-symbols \
-; RUN: | FileCheck %s
-; RUN: %l2i -i %s --insts --args -allow-externally-defined-symbols \
-; RUN: | %ifl FileCheck %s
-; RUN: %lc2i -i %s --insts --args -allow-externally-defined-symbols \
-; RUN: | %iflc FileCheck %s
-; RUN:   %p2i -i %s --args -notranslate -timing \
-; RUN:        -allow-externally-defined-symbols | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-@PrimitiveInit = internal global [4 x i8] c"\1B\00\00\00", align 4
-; CHECK: @PrimitiveInit = internal global [4 x i8] c"\1B\00\00\00", align 4
-
-@PrimitiveInitConst = internal constant [4 x i8] c"\0D\00\00\00", align 4
-; CHECK-NEXT: @PrimitiveInitConst = internal constant [4 x i8] c"\0D\00\00\00", align 4
-
-@ArrayInit = internal global [20 x i8] c"\0A\00\00\00\14\00\00\00\1E\00\00\00(\00\00\002\00\00\00", align 4
-; CHECK-NEXT: @ArrayInit = internal global [20 x i8] c"\0A\00\00\00\14\00\00\00\1E\00\00\00(\00\00\002\00\00\00", align 4
-
-@ArrayInitPartial = internal global [40 x i8] c"<\00\00\00F\00\00\00P\00\00\00Z\00\00\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 4
-; CHECK-NEXT: @ArrayInitPartial = internal global [40 x i8] c"<\00\00\00F\00\00\00P\00\00\00Z\00\00\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 4
-
-@PrimitiveInitStatic = internal global [4 x i8] zeroinitializer, align 4
-; CHECK-NEXT: @PrimitiveInitStatic = internal global [4 x i8] zeroinitializer, align 4
-
-@PrimitiveUninit = internal global [4 x i8] zeroinitializer, align 4
-; CHECK-NEXT: @PrimitiveUninit = internal global [4 x i8] zeroinitializer, align 4
-
-@ArrayUninit = internal global [20 x i8] zeroinitializer, align 4
-; CHECK-NEXT: @ArrayUninit = internal global [20 x i8] zeroinitializer, align 4
-
-@ArrayUninitConstDouble = internal constant [200 x i8] zeroinitializer, align 8
-; CHECK-NEXT: @ArrayUninitConstDouble = internal constant [200 x i8] zeroinitializer, align 8
-
-@ArrayUninitConstInt = internal constant [20 x i8] zeroinitializer, align 4
-; CHECK-NEXT: @ArrayUninitConstInt = internal constant [20 x i8] zeroinitializer, align 4
-
-@__init_array_start = internal constant [0 x i8] zeroinitializer, align 4
-; CHECK-NEXT: @__init_array_start = internal constant [0 x i8] zeroinitializer, align 4
-
-@__fini_array_start = internal constant [0 x i8] zeroinitializer, align 4
-; CHECK: @__fini_array_start = internal constant [0 x i8] zeroinitializer, align 4
-
-@__tls_template_start = internal constant [0 x i8] zeroinitializer, align 8
-; CHECK: @__tls_template_start = internal constant [0 x i8] zeroinitializer, align 8
-
-@__tls_template_alignment = internal constant [4 x i8] c"\01\00\00\00", align 4
-; CHECK: @__tls_template_alignment = internal constant [4 x i8] c"\01\00\00\00", align 4
-
-define internal i32 @main(i32 %argc, i32 %argv) {
-entry:
-  %expanded1 = ptrtoint [4 x i8]* @PrimitiveInit to i32
-  call void @use(i32 %expanded1)
-  %expanded3 = ptrtoint [4 x i8]* @PrimitiveInitConst to i32
-  call void @use(i32 %expanded3)
-  %expanded5 = ptrtoint [4 x i8]* @PrimitiveInitStatic to i32
-  call void @use(i32 %expanded5)
-  %expanded7 = ptrtoint [4 x i8]* @PrimitiveUninit to i32
-  call void @use(i32 %expanded7)
-  %expanded9 = ptrtoint [20 x i8]* @ArrayInit to i32
-  call void @use(i32 %expanded9)
-  %expanded11 = ptrtoint [40 x i8]* @ArrayInitPartial to i32
-  call void @use(i32 %expanded11)
-  %expanded13 = ptrtoint [20 x i8]* @ArrayUninit to i32
-  call void @use(i32 %expanded13)
-  ret i32 0
-}
-
-declare void @use(i32)
-
-define internal i32 @nacl_tp_tdb_offset(i32 %__0) {
-entry:
-  ret i32 0
-}
-
-define internal i32 @nacl_tp_tls_offset(i32 %size) {
-entry:
-  %result = sub i32 0, %size
-  ret i32 %result
-}
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/globalrelocs.ll b/third_party/subzero/tests_lit/reader_tests/globalrelocs.ll
deleted file mode 100644
index b6869d1..0000000
--- a/third_party/subzero/tests_lit/reader_tests/globalrelocs.ll
+++ /dev/null
@@ -1,100 +0,0 @@
-; Tests if we handle global variables with relocation initializers.
-
-; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN: %l2i -i %s --insts | %ifl FileCheck %s
-; RUN: %lc2i -i %s --insts | %iflc FileCheck %s
-; RUN:   %p2i -i %s --args -notranslate -timing | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-@bytes = internal global [7 x i8] c"abcdefg"
-; CHECK: @bytes = internal global [7 x i8] c"abcdefg"
-
-@const_bytes = internal constant [7 x i8] c"abcdefg"
-; CHECK-NEXT: @const_bytes = internal constant [7 x i8] c"abcdefg"
-
-@ptr_to_ptr = internal global i32 ptrtoint (i32* @ptr to i32)
-; CHECK-NEXT: @ptr_to_ptr = internal global i32 ptrtoint (i32* @ptr to i32)
-
-@const_ptr_to_ptr = internal constant i32 ptrtoint (i32* @ptr to i32)
-; CHECK-NEXT: @const_ptr_to_ptr = internal constant i32 ptrtoint (i32* @ptr to i32)
-
-@ptr_to_func = internal global i32 ptrtoint (void ()* @func to i32)
-; CHECK-NEXT: @ptr_to_func = internal global i32 ptrtoint (void ()* @func to i32)
-
-@const_ptr_to_func = internal constant i32 ptrtoint (void ()* @func to i32)
-; CHECK-NEXT: @const_ptr_to_func = internal constant i32 ptrtoint (void ()* @func to i32)
-
-@compound = internal global <{ [3 x i8], i32 }> <{ [3 x i8] c"foo", i32 ptrtoint (void ()* @func to i32) }>
-; CHECK-NEXT: @compound = internal global <{ [3 x i8], i32 }> <{ [3 x i8] c"foo", i32 ptrtoint (void ()* @func to i32) }>
-
-@const_compound = internal constant <{ [3 x i8], i32 }> <{ [3 x i8] c"foo", i32 ptrtoint (void ()* @func to i32) }>
-
-; CHECK-NEXT: @const_compound = internal constant <{ [3 x i8], i32 }> <{ [3 x i8] c"foo", i32 ptrtoint (void ()* @func to i32) }>
-
-@ptr = internal global i32 ptrtoint ([7 x i8]* @bytes to i32)
-; CHECK-NEXT: @ptr = internal global i32 ptrtoint ([7 x i8]* @bytes to i32)
-
-@const_ptr = internal constant i32 ptrtoint ([7 x i8]* @bytes to i32)
-; CHECK-NEXT: @const_ptr = internal constant i32 ptrtoint ([7 x i8]* @bytes to i32)
-
-@addend_ptr = internal global i32 add (i32 ptrtoint (i32* @ptr to i32), i32 1)
-; CHECK-NEXT: @addend_ptr = internal global i32 add (i32 ptrtoint (i32* @ptr to i32), i32 1)
-
-@const_addend_ptr = internal constant i32 add (i32 ptrtoint (i32* @ptr to i32), i32 1)
-; CHECK-NEXT: @const_addend_ptr = internal constant i32 add (i32 ptrtoint (i32* @ptr to i32), i32 1)
-
-@addend_negative = internal global i32 add (i32 ptrtoint (i32* @ptr to i32), i32 -1)
-; CHECK-NEXT: @addend_negative = internal global i32 add (i32 ptrtoint (i32* @ptr to i32), i32 -1)
-
-@const_addend_negative = internal constant i32 add (i32 ptrtoint (i32* @ptr to i32), i32 -1)
-; CHECK-NEXT: @const_addend_negative = internal constant i32 add (i32 ptrtoint (i32* @ptr to i32), i32 -1)
-
-@addend_array1 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 1)
-; CHECK-NEXT: @addend_array1 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 1)
-
-@const_addend_array1 = internal constant i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 1)
-; CHECK-NEXT: @const_addend_array1 = internal constant i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 1)
-
-@addend_array2 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 7)
-; CHECK-NEXT: @addend_array2 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 7)
-
-@const_addend_array2 = internal constant i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 7)
-; CHECK-NEXT: @const_addend_array2 = internal constant i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 7)
-
-@addend_array3 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 9)
-; CHECK-NEXT: @addend_array3 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 9)
-
-@const_addend_array3 = internal constant i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 9)
-; CHECK-NEXT: @const_addend_array3 = internal constant i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32), i32 9)
-
-@addend_struct1 = internal global i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 1)
-; CHECK-NEXT: @addend_struct1 = internal global i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 1)
-
-@const_addend_struct1 = internal constant i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 1)
-; CHECK-NEXT: @const_addend_struct1 = internal constant i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 1)
-
-@addend_struct2 = internal global i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 4)
-; CHECK-NEXT: @addend_struct2 = internal global i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 4)
-
-@const_addend_struct2 = internal constant i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 4)
-; CHECK-NEXT: @const_addend_struct2 = internal constant i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 4)
-
-@ptr_to_func_align = internal global i32 ptrtoint (void ()* @func to i32), align 8
-; CHECK-NEXT: @ptr_to_func_align = internal global i32 ptrtoint (void ()* @func to i32), align 8
-
-@const_ptr_to_func_align = internal constant i32 ptrtoint (void ()* @func to i32), align 8
-; CHECK-NEXT: @const_ptr_to_func_align = internal constant i32 ptrtoint (void ()* @func to i32), align 8
-
-@char = internal constant [1 x i8] c"0"
-; CHECK-NEXT: @char = internal constant [1 x i8] c"0"
-
-@short = internal constant [2 x i8] zeroinitializer
-; CHECK-NEXT: @short = internal constant [2 x i8] zeroinitializer
-
-define internal void @func() {
-  ret void
-}
-
-; CHECK-NEXT: define internal void @func() {
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/insertextract.ll b/third_party/subzero/tests_lit/reader_tests/insertextract.ll
deleted file mode 100644
index ffdda6c..0000000
--- a/third_party/subzero/tests_lit/reader_tests/insertextract.ll
+++ /dev/null
@@ -1,383 +0,0 @@
-; Tests insertelement and extractelement vector instructions.
-
-; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN: %l2i -i %s --insts | %ifl FileCheck %s
-; RUN: %lc2i -i %s --insts | %iflc FileCheck %s
-; RUN:   %p2i -i %s --args -notranslate -timing | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-define internal void @ExtractV4xi1(<4 x i1> %v) {
-entry:
-  %e0 = extractelement <4 x i1> %v, i32 0
-  %e1 = extractelement <4 x i1> %v, i32 1
-  %e2 = extractelement <4 x i1> %v, i32 2
-  %e3 = extractelement <4 x i1> %v, i32 3
-  ret void
-}
-
-; CHECK:      define internal void @ExtractV4xi1(<4 x i1> %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %e0 = extractelement <4 x i1> %v, i32 0
-; CHECK-NEXT:   %e1 = extractelement <4 x i1> %v, i32 1
-; CHECK-NEXT:   %e2 = extractelement <4 x i1> %v, i32 2
-; CHECK-NEXT:   %e3 = extractelement <4 x i1> %v, i32 3
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @ExtractV8xi1(<8 x i1> %v) {
-entry:
-  %e0 = extractelement <8 x i1> %v, i32 0
-  %e1 = extractelement <8 x i1> %v, i32 1
-  %e2 = extractelement <8 x i1> %v, i32 2
-  %e3 = extractelement <8 x i1> %v, i32 3
-  %e4 = extractelement <8 x i1> %v, i32 4
-  %e5 = extractelement <8 x i1> %v, i32 5
-  %e6 = extractelement <8 x i1> %v, i32 6
-  %e7 = extractelement <8 x i1> %v, i32 7
-  ret void
-}
-
-; CHECK-NEXT: define internal void @ExtractV8xi1(<8 x i1> %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %e0 = extractelement <8 x i1> %v, i32 0
-; CHECK-NEXT:   %e1 = extractelement <8 x i1> %v, i32 1
-; CHECK-NEXT:   %e2 = extractelement <8 x i1> %v, i32 2
-; CHECK-NEXT:   %e3 = extractelement <8 x i1> %v, i32 3
-; CHECK-NEXT:   %e4 = extractelement <8 x i1> %v, i32 4
-; CHECK-NEXT:   %e5 = extractelement <8 x i1> %v, i32 5
-; CHECK-NEXT:   %e6 = extractelement <8 x i1> %v, i32 6
-; CHECK-NEXT:   %e7 = extractelement <8 x i1> %v, i32 7
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @ExtractV16xi1(<16 x i1> %v) {
-entry:
-  %e0 = extractelement <16 x i1> %v, i32 0
-  %e1 = extractelement <16 x i1> %v, i32 1
-  %e2 = extractelement <16 x i1> %v, i32 2
-  %e3 = extractelement <16 x i1> %v, i32 3
-  %e4 = extractelement <16 x i1> %v, i32 4
-  %e5 = extractelement <16 x i1> %v, i32 5
-  %e6 = extractelement <16 x i1> %v, i32 6
-  %e7 = extractelement <16 x i1> %v, i32 7
-  %e8 = extractelement <16 x i1> %v, i32 8
-  %e9 = extractelement <16 x i1> %v, i32 9
-  %e10 = extractelement <16 x i1> %v, i32 10
-  %e11 = extractelement <16 x i1> %v, i32 11
-  %e12 = extractelement <16 x i1> %v, i32 12
-  %e13 = extractelement <16 x i1> %v, i32 13
-  %e14 = extractelement <16 x i1> %v, i32 14
-  %e15 = extractelement <16 x i1> %v, i32 15
-  ret void
-}
-
-; CHECK-NEXT: define internal void @ExtractV16xi1(<16 x i1> %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %e0 = extractelement <16 x i1> %v, i32 0
-; CHECK-NEXT:   %e1 = extractelement <16 x i1> %v, i32 1
-; CHECK-NEXT:   %e2 = extractelement <16 x i1> %v, i32 2
-; CHECK-NEXT:   %e3 = extractelement <16 x i1> %v, i32 3
-; CHECK-NEXT:   %e4 = extractelement <16 x i1> %v, i32 4
-; CHECK-NEXT:   %e5 = extractelement <16 x i1> %v, i32 5
-; CHECK-NEXT:   %e6 = extractelement <16 x i1> %v, i32 6
-; CHECK-NEXT:   %e7 = extractelement <16 x i1> %v, i32 7
-; CHECK-NEXT:   %e8 = extractelement <16 x i1> %v, i32 8
-; CHECK-NEXT:   %e9 = extractelement <16 x i1> %v, i32 9
-; CHECK-NEXT:   %e10 = extractelement <16 x i1> %v, i32 10
-; CHECK-NEXT:   %e11 = extractelement <16 x i1> %v, i32 11
-; CHECK-NEXT:   %e12 = extractelement <16 x i1> %v, i32 12
-; CHECK-NEXT:   %e13 = extractelement <16 x i1> %v, i32 13
-; CHECK-NEXT:   %e14 = extractelement <16 x i1> %v, i32 14
-; CHECK-NEXT:   %e15 = extractelement <16 x i1> %v, i32 15
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @ExtractV16xi8(<16 x i8> %v, i32 %i) {
-entry:
-  %e0 = extractelement <16 x i8> %v, i32 0
-  %e1 = extractelement <16 x i8> %v, i32 1
-  %e2 = extractelement <16 x i8> %v, i32 2
-  %e3 = extractelement <16 x i8> %v, i32 3
-  %e4 = extractelement <16 x i8> %v, i32 4
-  %e5 = extractelement <16 x i8> %v, i32 5
-  %e6 = extractelement <16 x i8> %v, i32 6
-  %e7 = extractelement <16 x i8> %v, i32 7
-  %e8 = extractelement <16 x i8> %v, i32 8
-  %e9 = extractelement <16 x i8> %v, i32 9
-  %e10 = extractelement <16 x i8> %v, i32 10
-  %e11 = extractelement <16 x i8> %v, i32 11
-  %e12 = extractelement <16 x i8> %v, i32 12
-  %e13 = extractelement <16 x i8> %v, i32 13
-  %e14 = extractelement <16 x i8> %v, i32 14
-  %e15 = extractelement <16 x i8> %v, i32 15
-  ret void
-}
-
-; CHECK-NEXT: define internal void @ExtractV16xi8(<16 x i8> %v, i32 %i) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %e0 = extractelement <16 x i8> %v, i32 0
-; CHECK-NEXT:   %e1 = extractelement <16 x i8> %v, i32 1
-; CHECK-NEXT:   %e2 = extractelement <16 x i8> %v, i32 2
-; CHECK-NEXT:   %e3 = extractelement <16 x i8> %v, i32 3
-; CHECK-NEXT:   %e4 = extractelement <16 x i8> %v, i32 4
-; CHECK-NEXT:   %e5 = extractelement <16 x i8> %v, i32 5
-; CHECK-NEXT:   %e6 = extractelement <16 x i8> %v, i32 6
-; CHECK-NEXT:   %e7 = extractelement <16 x i8> %v, i32 7
-; CHECK-NEXT:   %e8 = extractelement <16 x i8> %v, i32 8
-; CHECK-NEXT:   %e9 = extractelement <16 x i8> %v, i32 9
-; CHECK-NEXT:   %e10 = extractelement <16 x i8> %v, i32 10
-; CHECK-NEXT:   %e11 = extractelement <16 x i8> %v, i32 11
-; CHECK-NEXT:   %e12 = extractelement <16 x i8> %v, i32 12
-; CHECK-NEXT:   %e13 = extractelement <16 x i8> %v, i32 13
-; CHECK-NEXT:   %e14 = extractelement <16 x i8> %v, i32 14
-; CHECK-NEXT:   %e15 = extractelement <16 x i8> %v, i32 15
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @ExtractV8xi16(<8 x i16> %v) {
-entry:
-  %e0 = extractelement <8 x i16> %v, i32 0
-  %e1 = extractelement <8 x i16> %v, i32 1
-  %e2 = extractelement <8 x i16> %v, i32 2
-  %e3 = extractelement <8 x i16> %v, i32 3
-  %e4 = extractelement <8 x i16> %v, i32 4
-  %e5 = extractelement <8 x i16> %v, i32 5
-  %e6 = extractelement <8 x i16> %v, i32 6
-  %e7 = extractelement <8 x i16> %v, i32 7
-  ret void
-}
-
-; CHECK-NEXT: define internal void @ExtractV8xi16(<8 x i16> %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %e0 = extractelement <8 x i16> %v, i32 0
-; CHECK-NEXT:   %e1 = extractelement <8 x i16> %v, i32 1
-; CHECK-NEXT:   %e2 = extractelement <8 x i16> %v, i32 2
-; CHECK-NEXT:   %e3 = extractelement <8 x i16> %v, i32 3
-; CHECK-NEXT:   %e4 = extractelement <8 x i16> %v, i32 4
-; CHECK-NEXT:   %e5 = extractelement <8 x i16> %v, i32 5
-; CHECK-NEXT:   %e6 = extractelement <8 x i16> %v, i32 6
-; CHECK-NEXT:   %e7 = extractelement <8 x i16> %v, i32 7
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal i32 @ExtractV4xi32(<4 x i32> %v) {
-entry:
-  %e0 = extractelement <4 x i32> %v, i32 0
-  %e1 = extractelement <4 x i32> %v, i32 1
-  %e2 = extractelement <4 x i32> %v, i32 2
-  %e3 = extractelement <4 x i32> %v, i32 3
-  ret i32 %e0
-}
-
-; CHECK-NEXT: define internal i32 @ExtractV4xi32(<4 x i32> %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %e0 = extractelement <4 x i32> %v, i32 0
-; CHECK-NEXT:   %e1 = extractelement <4 x i32> %v, i32 1
-; CHECK-NEXT:   %e2 = extractelement <4 x i32> %v, i32 2
-; CHECK-NEXT:   %e3 = extractelement <4 x i32> %v, i32 3
-; CHECK-NEXT:   ret i32 %e0
-; CHECK-NEXT: }
-
-define internal float @ExtractV4xfloat(<4 x float> %v) {
-entry:
-  %e0 = extractelement <4 x float> %v, i32 0
-  %e1 = extractelement <4 x float> %v, i32 1
-  %e2 = extractelement <4 x float> %v, i32 2
-  %e3 = extractelement <4 x float> %v, i32 3
-  ret float %e0
-}
-
-; CHECK-NEXT: define internal float @ExtractV4xfloat(<4 x float> %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %e0 = extractelement <4 x float> %v, i32 0
-; CHECK-NEXT:   %e1 = extractelement <4 x float> %v, i32 1
-; CHECK-NEXT:   %e2 = extractelement <4 x float> %v, i32 2
-; CHECK-NEXT:   %e3 = extractelement <4 x float> %v, i32 3
-; CHECK-NEXT:   ret float %e0
-; CHECK-NEXT: }
-
-define internal <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) {
-entry:
-  %e = trunc i32 %pe to i1
-  %r0 = insertelement <4 x i1> %v, i1 %e, i32 0
-  %r1 = insertelement <4 x i1> %v, i1 %e, i32 1
-  %r2 = insertelement <4 x i1> %v, i1 %e, i32 2
-  %r3 = insertelement <4 x i1> %v, i1 %e, i32 3
-  ret <4 x i1> %r3
-}
-
-; CHECK-NEXT: define internal <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %e = trunc i32 %pe to i1
-; CHECK-NEXT:   %r0 = insertelement <4 x i1> %v, i1 %e, i32 0
-; CHECK-NEXT:   %r1 = insertelement <4 x i1> %v, i1 %e, i32 1
-; CHECK-NEXT:   %r2 = insertelement <4 x i1> %v, i1 %e, i32 2
-; CHECK-NEXT:   %r3 = insertelement <4 x i1> %v, i1 %e, i32 3
-; CHECK-NEXT:   ret <4 x i1> %r3
-; CHECK-NEXT: }
-
-define internal <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) {
-entry:
-  %e = trunc i32 %pe to i1
-  %r0 = insertelement <8 x i1> %v, i1 %e, i32 0
-  %r1 = insertelement <8 x i1> %v, i1 %e, i32 1
-  %r2 = insertelement <8 x i1> %v, i1 %e, i32 2
-  %r3 = insertelement <8 x i1> %v, i1 %e, i32 3
-  %r4 = insertelement <8 x i1> %v, i1 %e, i32 4
-  %r5 = insertelement <8 x i1> %v, i1 %e, i32 5
-  %r6 = insertelement <8 x i1> %v, i1 %e, i32 6
-  %r7 = insertelement <8 x i1> %v, i1 %e, i32 7
-  ret <8 x i1> %r7
-}
-
-; CHECK-NEXT: define internal <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %e = trunc i32 %pe to i1
-; CHECK-NEXT:   %r0 = insertelement <8 x i1> %v, i1 %e, i32 0
-; CHECK-NEXT:   %r1 = insertelement <8 x i1> %v, i1 %e, i32 1
-; CHECK-NEXT:   %r2 = insertelement <8 x i1> %v, i1 %e, i32 2
-; CHECK-NEXT:   %r3 = insertelement <8 x i1> %v, i1 %e, i32 3
-; CHECK-NEXT:   %r4 = insertelement <8 x i1> %v, i1 %e, i32 4
-; CHECK-NEXT:   %r5 = insertelement <8 x i1> %v, i1 %e, i32 5
-; CHECK-NEXT:   %r6 = insertelement <8 x i1> %v, i1 %e, i32 6
-; CHECK-NEXT:   %r7 = insertelement <8 x i1> %v, i1 %e, i32 7
-; CHECK-NEXT:   ret <8 x i1> %r7
-; CHECK-NEXT: }
-
-define internal <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) {
-entry:
-  %e = trunc i32 %pe to i1
-  %r0 = insertelement <16 x i1> %v, i1 %e, i32 0
-  %r1 = insertelement <16 x i1> %v, i1 %e, i32 1
-  %r2 = insertelement <16 x i1> %v, i1 %e, i32 2
-  %r3 = insertelement <16 x i1> %v, i1 %e, i32 3
-  %r4 = insertelement <16 x i1> %v, i1 %e, i32 4
-  %r5 = insertelement <16 x i1> %v, i1 %e, i32 5
-  %r6 = insertelement <16 x i1> %v, i1 %e, i32 6
-  %r7 = insertelement <16 x i1> %v, i1 %e, i32 7
-  %r8 = insertelement <16 x i1> %v, i1 %e, i32 8
-  %r9 = insertelement <16 x i1> %v, i1 %e, i32 9
-  %r10 = insertelement <16 x i1> %v, i1 %e, i32 10
-  %r11 = insertelement <16 x i1> %v, i1 %e, i32 11
-  %r12 = insertelement <16 x i1> %v, i1 %e, i32 12
-  %r13 = insertelement <16 x i1> %v, i1 %e, i32 13
-  %r14 = insertelement <16 x i1> %v, i1 %e, i32 14
-  %r15 = insertelement <16 x i1> %v, i1 %e, i32 15
-  ret <16 x i1> %r15
-}
-
-; CHECK-NEXT: define internal <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %e = trunc i32 %pe to i1
-; CHECK-NEXT:   %r0 = insertelement <16 x i1> %v, i1 %e, i32 0
-; CHECK-NEXT:   %r1 = insertelement <16 x i1> %v, i1 %e, i32 1
-; CHECK-NEXT:   %r2 = insertelement <16 x i1> %v, i1 %e, i32 2
-; CHECK-NEXT:   %r3 = insertelement <16 x i1> %v, i1 %e, i32 3
-; CHECK-NEXT:   %r4 = insertelement <16 x i1> %v, i1 %e, i32 4
-; CHECK-NEXT:   %r5 = insertelement <16 x i1> %v, i1 %e, i32 5
-; CHECK-NEXT:   %r6 = insertelement <16 x i1> %v, i1 %e, i32 6
-; CHECK-NEXT:   %r7 = insertelement <16 x i1> %v, i1 %e, i32 7
-; CHECK-NEXT:   %r8 = insertelement <16 x i1> %v, i1 %e, i32 8
-; CHECK-NEXT:   %r9 = insertelement <16 x i1> %v, i1 %e, i32 9
-; CHECK-NEXT:   %r10 = insertelement <16 x i1> %v, i1 %e, i32 10
-; CHECK-NEXT:   %r11 = insertelement <16 x i1> %v, i1 %e, i32 11
-; CHECK-NEXT:   %r12 = insertelement <16 x i1> %v, i1 %e, i32 12
-; CHECK-NEXT:   %r13 = insertelement <16 x i1> %v, i1 %e, i32 13
-; CHECK-NEXT:   %r14 = insertelement <16 x i1> %v, i1 %e, i32 14
-; CHECK-NEXT:   %r15 = insertelement <16 x i1> %v, i1 %e, i32 15
-; CHECK-NEXT:   ret <16 x i1> %r15
-; CHECK-NEXT: }
-
-define internal <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) {
-entry:
-  %e = trunc i32 %pe to i8
-  %r0 = insertelement <16 x i8> %v, i8 %e, i32 0
-  %r1 = insertelement <16 x i8> %v, i8 %e, i32 1
-  %r2 = insertelement <16 x i8> %v, i8 %e, i32 2
-  %r3 = insertelement <16 x i8> %v, i8 %e, i32 3
-  %r4 = insertelement <16 x i8> %v, i8 %e, i32 4
-  %r5 = insertelement <16 x i8> %v, i8 %e, i32 5
-  %r6 = insertelement <16 x i8> %v, i8 %e, i32 6
-  %r7 = insertelement <16 x i8> %v, i8 %e, i32 7
-  ret <16 x i8> %r7
-}
-
-; CHECK-NEXT: define internal <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %e = trunc i32 %pe to i8
-; CHECK-NEXT:   %r0 = insertelement <16 x i8> %v, i8 %e, i32 0
-; CHECK-NEXT:   %r1 = insertelement <16 x i8> %v, i8 %e, i32 1
-; CHECK-NEXT:   %r2 = insertelement <16 x i8> %v, i8 %e, i32 2
-; CHECK-NEXT:   %r3 = insertelement <16 x i8> %v, i8 %e, i32 3
-; CHECK-NEXT:   %r4 = insertelement <16 x i8> %v, i8 %e, i32 4
-; CHECK-NEXT:   %r5 = insertelement <16 x i8> %v, i8 %e, i32 5
-; CHECK-NEXT:   %r6 = insertelement <16 x i8> %v, i8 %e, i32 6
-; CHECK-NEXT:   %r7 = insertelement <16 x i8> %v, i8 %e, i32 7
-; CHECK-NEXT:   ret <16 x i8> %r7
-; CHECK-NEXT: }
-
-define internal <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) {
-entry:
-  %e = trunc i32 %pe to i16
-  %r0 = insertelement <8 x i16> %v, i16 %e, i32 0
-  %r1 = insertelement <8 x i16> %v, i16 %e, i32 1
-  %r2 = insertelement <8 x i16> %v, i16 %e, i32 2
-  %r3 = insertelement <8 x i16> %v, i16 %e, i32 3
-  %r4 = insertelement <8 x i16> %v, i16 %e, i32 4
-  %r5 = insertelement <8 x i16> %v, i16 %e, i32 5
-  %r6 = insertelement <8 x i16> %v, i16 %e, i32 6
-  %r7 = insertelement <8 x i16> %v, i16 %e, i32 7
-  ret <8 x i16> %r7
-}
-
-; CHECK-NEXT: define internal <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %e = trunc i32 %pe to i16
-; CHECK-NEXT:   %r0 = insertelement <8 x i16> %v, i16 %e, i32 0
-; CHECK-NEXT:   %r1 = insertelement <8 x i16> %v, i16 %e, i32 1
-; CHECK-NEXT:   %r2 = insertelement <8 x i16> %v, i16 %e, i32 2
-; CHECK-NEXT:   %r3 = insertelement <8 x i16> %v, i16 %e, i32 3
-; CHECK-NEXT:   %r4 = insertelement <8 x i16> %v, i16 %e, i32 4
-; CHECK-NEXT:   %r5 = insertelement <8 x i16> %v, i16 %e, i32 5
-; CHECK-NEXT:   %r6 = insertelement <8 x i16> %v, i16 %e, i32 6
-; CHECK-NEXT:   %r7 = insertelement <8 x i16> %v, i16 %e, i32 7
-; CHECK-NEXT:   ret <8 x i16> %r7
-; CHECK-NEXT: }
-
-define internal <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) {
-entry:
-  %r0 = insertelement <4 x i32> %v, i32 %e, i32 0
-  %r1 = insertelement <4 x i32> %v, i32 %e, i32 1
-  %r2 = insertelement <4 x i32> %v, i32 %e, i32 2
-  %r3 = insertelement <4 x i32> %v, i32 %e, i32 3
-  ret <4 x i32> %r3
-}
-
-; CHECK-NEXT: define internal <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r0 = insertelement <4 x i32> %v, i32 %e, i32 0
-; CHECK-NEXT:   %r1 = insertelement <4 x i32> %v, i32 %e, i32 1
-; CHECK-NEXT:   %r2 = insertelement <4 x i32> %v, i32 %e, i32 2
-; CHECK-NEXT:   %r3 = insertelement <4 x i32> %v, i32 %e, i32 3
-; CHECK-NEXT:   ret <4 x i32> %r3
-; CHECK-NEXT: }
-
-define internal <4 x float> @InsertV4xfloat(<4 x float> %v, float %e) {
-entry:
-  %r0 = insertelement <4 x float> %v, float %e, i32 0
-  %r1 = insertelement <4 x float> %v, float %e, i32 1
-  %r2 = insertelement <4 x float> %v, float %e, i32 2
-  %r3 = insertelement <4 x float> %v, float %e, i32 3
-  ret <4 x float> %r3
-}
-
-; CHECK-NEXT: define internal <4 x float> @InsertV4xfloat(<4 x float> %v, float %e) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r0 = insertelement <4 x float> %v, float %e, i32 0
-; CHECK-NEXT:   %r1 = insertelement <4 x float> %v, float %e, i32 1
-; CHECK-NEXT:   %r2 = insertelement <4 x float> %v, float %e, i32 2
-; CHECK-NEXT:   %r3 = insertelement <4 x float> %v, float %e, i32 3
-; CHECK-NEXT:   ret <4 x float> %r3
-; CHECK-NEXT: }
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/lit.local.cfg b/third_party/subzero/tests_lit/reader_tests/lit.local.cfg
deleted file mode 100644
index 7781f86..0000000
--- a/third_party/subzero/tests_lit/reader_tests/lit.local.cfg
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- Python -*-
-#
-# This directory contains reader tests that require the ability to dump parsed
-# IR.
-
-if not 'allow_dump' in config.root.available_features:
-  config.unsupported = True
diff --git a/third_party/subzero/tests_lit/reader_tests/load.ll b/third_party/subzero/tests_lit/reader_tests/load.ll
deleted file mode 100644
index 0d15992..0000000
--- a/third_party/subzero/tests_lit/reader_tests/load.ll
+++ /dev/null
@@ -1,149 +0,0 @@
-; Test if we can read load instructions.
-
-; RUN: %p2i --no-local-syms -i %s --insts | FileCheck %s
-; RUN:   %p2i -i %s --args -notranslate -timing | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-define internal i32 @load_i8(i32 %addr) {
-entry:
-  %addr_i8 = inttoptr i32 %addr to i8*
-  %v = load i8, i8* %addr_i8, align 1
-  %r = sext i8 %v to i32
-  ret i32 %r
-
-; CHECK:      __0:
-; CHECK-NEXT:   %__1 = load i8, i8* %__0, align 1
-; CHECK-NEXT:   %__2 = sext i8 %__1 to i32
-; CHECK-NEXT:   ret i32 %__2
-}
-
-define internal i32 @load_i16(i32 %addr) {
-entry:
-  %addr_i16 = inttoptr i32 %addr to i16*
-  %v = load i16, i16* %addr_i16, align 1
-  %r = sext i16 %v to i32
-  ret i32 %r
-
-; CHECK:      __0:
-; CHECK-NEXT:   %__1 = load i16, i16* %__0, align 1
-; CHECK-NEXT:   %__2 = sext i16 %__1 to i32
-; CHECK-NEXT:   ret i32 %__2
-}
-
-define internal i32 @load_i32(i32 %addr) {
-entry:
-  %addr_i32 = inttoptr i32 %addr to i32*
-  %v = load i32, i32* %addr_i32, align 1
-  ret i32 %v
-
-; CHECK:      __0:
-; CHECK-NEXT:   %__1 = load i32, i32* %__0, align 1
-; CHECK-NEXT:   ret i32 %__1
-}
-
-define internal i64 @load_i64(i32 %addr) {
-entry:
-  %addr_i64 = inttoptr i32 %addr to i64*
-  %v = load i64, i64* %addr_i64, align 1
-  ret i64 %v
-
-; CHECK:      __0:
-; CHECK-NEXT:   %__1 = load i64, i64* %__0, align 1
-; CHECK-NEXT:   ret i64 %__1
-}
-
-define internal float @load_float_a1(i32 %addr) {
-entry:
-  %addr_float = inttoptr i32 %addr to float*
-  %v = load float, float* %addr_float, align 1
-  ret float %v
-
-; TODO(kschimpf) Fix load alignment in ICE to allow non-default.
-
-; CHECK:      __0:
-; CHECK-NEXT:   %__1 = load float, float* %__0, align 4
-; CHECK-NEXT:   ret float %__1
-}
-
-
-define internal float @load_float_a4(i32 %addr) {
-entry:
-  %addr_float = inttoptr i32 %addr to float*
-  %v = load float, float* %addr_float, align 4
-  ret float %v
-
-; CHECK:       __0:
-; CHECK-NEXT:   %__1 = load float, float* %__0, align 4
-; CHECK-NEXT:   ret float %__1
-}
-
-define internal double @load_double_a1(i32 %addr) {
-entry:
-  %addr_double = inttoptr i32 %addr to double*
-  %v = load double, double* %addr_double, align 1
-  ret double %v
-
-; TODO(kschimpf) Fix load alignment in ICE to allow non-default.
-
-; CHECK:      __0:
-; CHECK-NEXT:   %__1 = load double, double* %__0, align 8
-; CHECK-NEXT:   ret double %__1
-}
-
-
-define internal double @load_double_a8(i32 %addr) {
-entry:
-  %addr_double = inttoptr i32 %addr to double*
-  %v = load double, double* %addr_double, align 8
-  ret double %v
-
-; CHECK:      __0:
-; CHECK-NEXT:   %__1 = load double, double* %__0, align 8
-; CHECK-NEXT:   ret double %__1
-}
-
-define internal <16 x i8> @load_v16xI8(i32 %addr) {
-entry:
-  %addr_v16xI8 = inttoptr i32 %addr to <16 x i8>*
-  %v = load <16 x i8>, <16 x i8>* %addr_v16xI8, align 1
-  ret <16 x i8> %v
-
-; CHECK:      __0:
-; CHECK-NEXT:   %__1 = load <16 x i8>, <16 x i8>* %__0, align 1
-; CHECK-NEXT:   ret <16 x i8> %__1
-}
-
-define internal <8 x i16> @load_v8xI16(i32 %addr) {
-entry:
-  %addr_v8xI16 = inttoptr i32 %addr to <8 x i16>*
-  %v = load <8 x i16>, <8 x i16>* %addr_v8xI16, align 2
-  ret <8 x i16> %v
-
-; CHECK:      __0:
-; CHECK-NEXT:   %__1 = load <8 x i16>, <8 x i16>* %__0, align 2
-; CHECK-NEXT:   ret <8 x i16> %__1
-}
-
-define internal <4 x i32> @load_v4xI32(i32 %addr) {
-entry:
-  %addr_v4xI32 = inttoptr i32 %addr to <4 x i32>*
-  %v = load <4 x i32>, <4 x i32>* %addr_v4xI32, align 4
-  ret <4 x i32> %v
-
-; CHECK:      __0:
-; CHECK-NEXT:   %__1 = load <4 x i32>, <4 x i32>* %__0, align 4
-; CHECK-NEXT:   ret <4 x i32> %__1
-}
-
-define internal <4 x float> @load_v4xFloat(i32 %addr) {
-entry:
-  %addr_v4xFloat = inttoptr i32 %addr to <4 x float>*
-  %v = load <4 x float>, <4 x float>* %addr_v4xFloat, align 4
-  ret <4 x float> %v
-
-; CHECK:      __0:
-; CHECK-NEXT:   %__1 = load <4 x float>, <4 x float>* %__0, align 4
-; CHECK-NEXT:   ret <4 x float> %__1
-}
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/nacl-atomic-intrinsics.ll b/third_party/subzero/tests_lit/reader_tests/nacl-atomic-intrinsics.ll
deleted file mode 100644
index e0db3a2..0000000
--- a/third_party/subzero/tests_lit/reader_tests/nacl-atomic-intrinsics.ll
+++ /dev/null
@@ -1,643 +0,0 @@
-; Test parsing NaCl atomic instructions.
-
-; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN:   %p2i -i %s --args -notranslate -timing | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-declare i8 @llvm.nacl.atomic.load.i8(i8*, i32)
-declare i16 @llvm.nacl.atomic.load.i16(i16*, i32)
-declare i32 @llvm.nacl.atomic.load.i32(i32*, i32)
-declare i64 @llvm.nacl.atomic.load.i64(i64*, i32)
-declare void @llvm.nacl.atomic.store.i8(i8, i8*, i32)
-declare void @llvm.nacl.atomic.store.i16(i16, i16*, i32)
-declare void @llvm.nacl.atomic.store.i32(i32, i32*, i32)
-declare void @llvm.nacl.atomic.store.i64(i64, i64*, i32)
-declare i8 @llvm.nacl.atomic.rmw.i8(i32, i8*, i8, i32)
-declare i16 @llvm.nacl.atomic.rmw.i16(i32, i16*, i16, i32)
-declare i32 @llvm.nacl.atomic.rmw.i32(i32, i32*, i32, i32)
-declare i64 @llvm.nacl.atomic.rmw.i64(i32, i64*, i64, i32)
-declare i8 @llvm.nacl.atomic.cmpxchg.i8(i8*, i8, i8, i32, i32)
-declare i16 @llvm.nacl.atomic.cmpxchg.i16(i16*, i16, i16, i32, i32)
-declare i32 @llvm.nacl.atomic.cmpxchg.i32(i32*, i32, i32, i32, i32)
-declare i64 @llvm.nacl.atomic.cmpxchg.i64(i64*, i64, i64, i32, i32)
-declare void @llvm.nacl.atomic.fence(i32)
-declare void @llvm.nacl.atomic.fence.all()
-declare i1 @llvm.nacl.atomic.is.lock.free(i32, i8*)
-
-;;; Load
-
-define internal i32 @test_atomic_load_8(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i8*
-  ; parameter value "6" is for the sequential consistency memory order.
-  %i = call i8 @llvm.nacl.atomic.load.i8(i8* %ptr, i32 6)
-  %r = zext i8 %i to i32
-  ret i32 %r
-}
-
-; CHECK:      define internal i32 @test_atomic_load_8(i32 %iptr) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %i = call i8 @llvm.nacl.atomic.load.i8(i32 %iptr, i32 6)
-; CHECK-NEXT:   %r = zext i8 %i to i32
-; CHECK-NEXT:   ret i32 %r
-; CHECK-NEXT: }
-
-define internal i32 @test_atomic_load_16(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i16*
-  %i = call i16 @llvm.nacl.atomic.load.i16(i16* %ptr, i32 6)
-  %r = zext i16 %i to i32
-  ret i32 %r
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_load_16(i32 %iptr) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %i = call i16 @llvm.nacl.atomic.load.i16(i32 %iptr, i32 6)
-; CHECK-NEXT:   %r = zext i16 %i to i32
-; CHECK-NEXT:   ret i32 %r
-; CHECK-NEXT: }
-
-define internal i32 @test_atomic_load_32(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %r = call i32 @llvm.nacl.atomic.load.i32(i32* %ptr, i32 6)
-  ret i32 %r
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_load_32(i32 %iptr) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = call i32 @llvm.nacl.atomic.load.i32(i32 %iptr, i32 6)
-; CHECK-NEXT:   ret i32 %r
-; CHECK-NEXT: }
-
-define internal i64 @test_atomic_load_64(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %r = call i64 @llvm.nacl.atomic.load.i64(i64* %ptr, i32 6)
-  ret i64 %r
-}
-
-; CHECK-NEXT: define internal i64 @test_atomic_load_64(i32 %iptr) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = call i64 @llvm.nacl.atomic.load.i64(i32 %iptr, i32 6)
-; CHECK-NEXT:   ret i64 %r
-; CHECK-NEXT: }
-
-;;; Store
-
-define internal void @test_atomic_store_8(i32 %iptr, i32 %v) {
-entry:
-  %truncv = trunc i32 %v to i8
-  %ptr = inttoptr i32 %iptr to i8*
-  call void @llvm.nacl.atomic.store.i8(i8 %truncv, i8* %ptr, i32 6)
-  ret void
-}
-
-; CHECK-NEXT: define internal void @test_atomic_store_8(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %truncv = trunc i32 %v to i8
-; CHECK-NEXT:   call void @llvm.nacl.atomic.store.i8(i8 %truncv, i32 %iptr, i32 6)
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @test_atomic_store_16(i32 %iptr, i32 %v) {
-entry:
-  %truncv = trunc i32 %v to i16
-  %ptr = inttoptr i32 %iptr to i16*
-  call void @llvm.nacl.atomic.store.i16(i16 %truncv, i16* %ptr, i32 6)
-  ret void
-}
-
-; CHECK-NEXT: define internal void @test_atomic_store_16(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %truncv = trunc i32 %v to i16
-; CHECK-NEXT:   call void @llvm.nacl.atomic.store.i16(i16 %truncv, i32 %iptr, i32 6)
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @test_atomic_store_32(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  call void @llvm.nacl.atomic.store.i32(i32 %v, i32* %ptr, i32 6)
-  ret void
-}
-
-; CHECK-NEXT: define internal void @test_atomic_store_32(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   call void @llvm.nacl.atomic.store.i32(i32 %v, i32 %iptr, i32 6)
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @test_atomic_store_64(i32 %iptr, i64 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  call void @llvm.nacl.atomic.store.i64(i64 %v, i64* %ptr, i32 6)
-  ret void
-}
-
-; CHECK-NEXT: define internal void @test_atomic_store_64(i32 %iptr, i64 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   call void @llvm.nacl.atomic.store.i64(i64 %v, i32 %iptr, i32 6)
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @test_atomic_store_64_const(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  call void @llvm.nacl.atomic.store.i64(i64 12345678901234, i64* %ptr, i32 6)
-  ret void
-}
-
-; CHECK-NEXT: define internal void @test_atomic_store_64_const(i32 %iptr) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   call void @llvm.nacl.atomic.store.i64(i64 12345678901234, i32 %iptr, i32 6)
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-;;; RMW
-
-;; add
-
-define internal i32 @test_atomic_rmw_add_8(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i8
-  %ptr = inttoptr i32 %iptr to i8*
-  ; "1" is an atomic add, and "6" is sequential consistency.
-  %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 1, i8* %ptr, i8 %trunc, i32 6)
-  %a_ext = zext i8 %a to i32
-  ret i32 %a_ext
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_rmw_add_8(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %trunc = trunc i32 %v to i8
-; CHECK-NEXT:   %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 1, i32 %iptr, i8 %trunc, i32 6)
-; CHECK-NEXT:   %a_ext = zext i8 %a to i32
-; CHECK-NEXT:   ret i32 %a_ext
-; CHECK-NEXT: }
-
-define internal i32 @test_atomic_rmw_add_16(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i16
-  %ptr = inttoptr i32 %iptr to i16*
-  %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 1, i16* %ptr, i16 %trunc, i32 6)
-  %a_ext = zext i16 %a to i32
-  ret i32 %a_ext
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_rmw_add_16(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %trunc = trunc i32 %v to i16
-; CHECK-NEXT:   %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 1, i32 %iptr, i16 %trunc, i32 6)
-; CHECK-NEXT:   %a_ext = zext i16 %a to i32
-; CHECK-NEXT:   ret i32 %a_ext
-; CHECK-NEXT: }
-
-define internal i32 @test_atomic_rmw_add_32(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 1, i32* %ptr, i32 %v, i32 6)
-  ret i32 %a
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_rmw_add_32(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 1, i32 %iptr, i32 %v, i32 6)
-; CHECK-NEXT:   ret i32 %a
-; CHECK-NEXT: }
-
-define internal i64 @test_atomic_rmw_add_64(i32 %iptr, i64 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 1, i64* %ptr, i64 %v, i32 6)
-  ret i64 %a
-}
-
-; CHECK-NEXT: define internal i64 @test_atomic_rmw_add_64(i32 %iptr, i64 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 1, i32 %iptr, i64 %v, i32 6)
-; CHECK-NEXT:   ret i64 %a
-; CHECK-NEXT: }
-
-;; sub
-
-define internal i32 @test_atomic_rmw_sub_8(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i8
-  %ptr = inttoptr i32 %iptr to i8*
-  %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 2, i8* %ptr, i8 %trunc, i32 6)
-  %a_ext = zext i8 %a to i32
-  ret i32 %a_ext
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_rmw_sub_8(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %trunc = trunc i32 %v to i8
-; CHECK-NEXT:   %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 2, i32 %iptr, i8 %trunc, i32 6)
-; CHECK-NEXT:   %a_ext = zext i8 %a to i32
-; CHECK-NEXT:   ret i32 %a_ext
-; CHECK-NEXT: }
-
-define internal i32 @test_atomic_rmw_sub_16(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i16
-  %ptr = inttoptr i32 %iptr to i16*
-  %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 2, i16* %ptr, i16 %trunc, i32 6)
-  %a_ext = zext i16 %a to i32
-  ret i32 %a_ext
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_rmw_sub_16(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %trunc = trunc i32 %v to i16
-; CHECK-NEXT:   %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 2, i32 %iptr, i16 %trunc, i32 6)
-; CHECK-NEXT:   %a_ext = zext i16 %a to i32
-; CHECK-NEXT:   ret i32 %a_ext
-; CHECK-NEXT: }
-
-define internal i32 @test_atomic_rmw_sub_32(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 2, i32* %ptr, i32 %v, i32 6)
-  ret i32 %a
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_rmw_sub_32(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 2, i32 %iptr, i32 %v, i32 6)
-; CHECK-NEXT:   ret i32 %a
-; CHECK-NEXT: }
-
-define internal i64 @test_atomic_rmw_sub_64(i32 %iptr, i64 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 2, i64* %ptr, i64 %v, i32 6)
-  ret i64 %a
-}
-
-; CHECK-NEXT: define internal i64 @test_atomic_rmw_sub_64(i32 %iptr, i64 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 2, i32 %iptr, i64 %v, i32 6)
-; CHECK-NEXT:   ret i64 %a
-; CHECK-NEXT: }
-
-;; or
-
-define internal i32 @test_atomic_rmw_or_8(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i8
-  %ptr = inttoptr i32 %iptr to i8*
-  %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 3, i8* %ptr, i8 %trunc, i32 6)
-  %a_ext = zext i8 %a to i32
-  ret i32 %a_ext
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_rmw_or_8(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %trunc = trunc i32 %v to i8
-; CHECK-NEXT:   %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 3, i32 %iptr, i8 %trunc, i32 6)
-; CHECK-NEXT:   %a_ext = zext i8 %a to i32
-; CHECK-NEXT:   ret i32 %a_ext
-; CHECK-NEXT: }
-
-define internal i32 @test_atomic_rmw_or_16(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i16
-  %ptr = inttoptr i32 %iptr to i16*
-  %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 3, i16* %ptr, i16 %trunc, i32 6)
-  %a_ext = zext i16 %a to i32
-  ret i32 %a_ext
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_rmw_or_16(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %trunc = trunc i32 %v to i16
-; CHECK-NEXT:   %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 3, i32 %iptr, i16 %trunc, i32 6)
-; CHECK-NEXT:   %a_ext = zext i16 %a to i32
-; CHECK-NEXT:   ret i32 %a_ext
-; CHECK-NEXT: }
-
-define internal i32 @test_atomic_rmw_or_32(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 3, i32* %ptr, i32 %v, i32 6)
-  ret i32 %a
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_rmw_or_32(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 3, i32 %iptr, i32 %v, i32 6)
-; CHECK-NEXT:   ret i32 %a
-; CHECK-NEXT: }
-
-define internal i64 @test_atomic_rmw_or_64(i32 %iptr, i64 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 3, i64* %ptr, i64 %v, i32 6)
-  ret i64 %a
-}
-
-; CHECK-NEXT: define internal i64 @test_atomic_rmw_or_64(i32 %iptr, i64 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 3, i32 %iptr, i64 %v, i32 6)
-; CHECK-NEXT:   ret i64 %a
-; CHECK-NEXT: }
-
-;; and
-
-define internal i32 @test_atomic_rmw_and_8(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i8
-  %ptr = inttoptr i32 %iptr to i8*
-  %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 4, i8* %ptr, i8 %trunc, i32 6)
-  %a_ext = zext i8 %a to i32
-  ret i32 %a_ext
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_rmw_and_8(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %trunc = trunc i32 %v to i8
-; CHECK-NEXT:   %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 4, i32 %iptr, i8 %trunc, i32 6)
-; CHECK-NEXT:   %a_ext = zext i8 %a to i32
-; CHECK-NEXT:   ret i32 %a_ext
-; CHECK-NEXT: }
-
-define internal i32 @test_atomic_rmw_and_16(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i16
-  %ptr = inttoptr i32 %iptr to i16*
-  %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 4, i16* %ptr, i16 %trunc, i32 6)
-  %a_ext = zext i16 %a to i32
-  ret i32 %a_ext
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_rmw_and_16(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %trunc = trunc i32 %v to i16
-; CHECK-NEXT:   %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 4, i32 %iptr, i16 %trunc, i32 6)
-; CHECK-NEXT:   %a_ext = zext i16 %a to i32
-; CHECK-NEXT:   ret i32 %a_ext
-; CHECK-NEXT: }
-
-define internal i32 @test_atomic_rmw_and_32(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 4, i32* %ptr, i32 %v, i32 6)
-  ret i32 %a
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_rmw_and_32(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 4, i32 %iptr, i32 %v, i32 6)
-; CHECK-NEXT:   ret i32 %a
-; CHECK-NEXT: }
-
-define internal i64 @test_atomic_rmw_and_64(i32 %iptr, i64 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 4, i64* %ptr, i64 %v, i32 6)
-  ret i64 %a
-}
-
-; CHECK-NEXT: define internal i64 @test_atomic_rmw_and_64(i32 %iptr, i64 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 4, i32 %iptr, i64 %v, i32 6)
-; CHECK-NEXT:   ret i64 %a
-; CHECK-NEXT: }
-
-;; xor
-
-define internal i32 @test_atomic_rmw_xor_8(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i8
-  %ptr = inttoptr i32 %iptr to i8*
-  %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 5, i8* %ptr, i8 %trunc, i32 6)
-  %a_ext = zext i8 %a to i32
-  ret i32 %a_ext
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_rmw_xor_8(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %trunc = trunc i32 %v to i8
-; CHECK-NEXT:   %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 5, i32 %iptr, i8 %trunc, i32 6)
-; CHECK-NEXT:   %a_ext = zext i8 %a to i32
-; CHECK-NEXT:   ret i32 %a_ext
-; CHECK-NEXT: }
-
-define internal i32 @test_atomic_rmw_xor_16(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i16
-  %ptr = inttoptr i32 %iptr to i16*
-  %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 5, i16* %ptr, i16 %trunc, i32 6)
-  %a_ext = zext i16 %a to i32
-  ret i32 %a_ext
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_rmw_xor_16(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %trunc = trunc i32 %v to i16
-; CHECK-NEXT:   %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 5, i32 %iptr, i16 %trunc, i32 6)
-; CHECK-NEXT:   %a_ext = zext i16 %a to i32
-; CHECK-NEXT:   ret i32 %a_ext
-; CHECK-NEXT: }
-
-define internal i32 @test_atomic_rmw_xor_32(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 5, i32* %ptr, i32 %v, i32 6)
-  ret i32 %a
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_rmw_xor_32(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 5, i32 %iptr, i32 %v, i32 6)
-; CHECK-NEXT:   ret i32 %a
-; CHECK-NEXT: }
-
-define internal i64 @test_atomic_rmw_xor_64(i32 %iptr, i64 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 5, i64* %ptr, i64 %v, i32 6)
-  ret i64 %a
-}
-
-; CHECK-NEXT: define internal i64 @test_atomic_rmw_xor_64(i32 %iptr, i64 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 5, i32 %iptr, i64 %v, i32 6)
-; CHECK-NEXT:   ret i64 %a
-; CHECK-NEXT: }
-
-;; exchange
-
-define internal i32 @test_atomic_rmw_xchg_8(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i8
-  %ptr = inttoptr i32 %iptr to i8*
-  %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 6, i8* %ptr, i8 %trunc, i32 6)
-  %a_ext = zext i8 %a to i32
-  ret i32 %a_ext
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_rmw_xchg_8(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %trunc = trunc i32 %v to i8
-; CHECK-NEXT:   %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 6, i32 %iptr, i8 %trunc, i32 6)
-; CHECK-NEXT:   %a_ext = zext i8 %a to i32
-; CHECK-NEXT:   ret i32 %a_ext
-; CHECK-NEXT: }
-
-define internal i32 @test_atomic_rmw_xchg_16(i32 %iptr, i32 %v) {
-entry:
-  %trunc = trunc i32 %v to i16
-  %ptr = inttoptr i32 %iptr to i16*
-  %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 6, i16* %ptr, i16 %trunc, i32 6)
-  %a_ext = zext i16 %a to i32
-  ret i32 %a_ext
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_rmw_xchg_16(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %trunc = trunc i32 %v to i16
-; CHECK-NEXT:   %a = call i16 @llvm.nacl.atomic.rmw.i16(i32 6, i32 %iptr, i16 %trunc, i32 6)
-; CHECK-NEXT:   %a_ext = zext i16 %a to i32
-; CHECK-NEXT:   ret i32 %a_ext
-; CHECK-NEXT: }
-
-define internal i32 @test_atomic_rmw_xchg_32(i32 %iptr, i32 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 6, i32* %ptr, i32 %v, i32 6)
-  ret i32 %a
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_rmw_xchg_32(i32 %iptr, i32 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = call i32 @llvm.nacl.atomic.rmw.i32(i32 6, i32 %iptr, i32 %v, i32 6)
-; CHECK-NEXT:   ret i32 %a
-; CHECK-NEXT: }
-
-define internal i64 @test_atomic_rmw_xchg_64(i32 %iptr, i64 %v) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 6, i64* %ptr, i64 %v, i32 6)
-  ret i64 %a
-}
-
-; CHECK-NEXT: define internal i64 @test_atomic_rmw_xchg_64(i32 %iptr, i64 %v) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 6, i32 %iptr, i64 %v, i32 6)
-; CHECK-NEXT:   ret i64 %a
-; CHECK-NEXT: }
-
-;;;; Cmpxchg
-
-define internal i32 @test_atomic_cmpxchg_8(i32 %iptr, i32 %expected, i32 %desired) {
-entry:
-  %trunc_exp = trunc i32 %expected to i8
-  %trunc_des = trunc i32 %desired to i8
-  %ptr = inttoptr i32 %iptr to i8*
-  %old = call i8 @llvm.nacl.atomic.cmpxchg.i8(i8* %ptr, i8 %trunc_exp,
-                                              i8 %trunc_des, i32 6, i32 6)
-  %old_ext = zext i8 %old to i32
-  ret i32 %old_ext
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_cmpxchg_8(i32 %iptr, i32 %expected, i32 %desired) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %trunc_exp = trunc i32 %expected to i8
-; CHECK-NEXT:   %trunc_des = trunc i32 %desired to i8
-; CHECK-NEXT:   %old = call i8 @llvm.nacl.atomic.cmpxchg.i8(i32 %iptr, i8 %trunc_exp, i8 %trunc_des, i32 6, i32 6)
-; CHECK-NEXT:   %old_ext = zext i8 %old to i32
-; CHECK-NEXT:   ret i32 %old_ext
-; CHECK-NEXT: }
-
-define internal i32 @test_atomic_cmpxchg_16(i32 %iptr, i32 %expected, i32 %desired) {
-entry:
-  %trunc_exp = trunc i32 %expected to i16
-  %trunc_des = trunc i32 %desired to i16
-  %ptr = inttoptr i32 %iptr to i16*
-  %old = call i16 @llvm.nacl.atomic.cmpxchg.i16(i16* %ptr, i16 %trunc_exp,
-                                               i16 %trunc_des, i32 6, i32 6)
-  %old_ext = zext i16 %old to i32
-  ret i32 %old_ext
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_cmpxchg_16(i32 %iptr, i32 %expected, i32 %desired) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %trunc_exp = trunc i32 %expected to i16
-; CHECK-NEXT:   %trunc_des = trunc i32 %desired to i16
-; CHECK-NEXT:   %old = call i16 @llvm.nacl.atomic.cmpxchg.i16(i32 %iptr, i16 %trunc_exp, i16 %trunc_des, i32 6, i32 6)
-; CHECK-NEXT:   %old_ext = zext i16 %old to i32
-; CHECK-NEXT:   ret i32 %old_ext
-; CHECK-NEXT: }
-
-define internal i32 @test_atomic_cmpxchg_32(i32 %iptr, i32 %expected, i32 %desired) {
-entry:
-  %ptr = inttoptr i32 %iptr to i32*
-  %old = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32* %ptr, i32 %expected,
-                                               i32 %desired, i32 6, i32 6)
-  ret i32 %old
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_cmpxchg_32(i32 %iptr, i32 %expected, i32 %desired) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %old = call i32 @llvm.nacl.atomic.cmpxchg.i32(i32 %iptr, i32 %expected, i32 %desired, i32 6, i32 6)
-; CHECK-NEXT:   ret i32 %old
-; CHECK-NEXT: }
-
-define internal i64 @test_atomic_cmpxchg_64(i32 %iptr, i64 %expected, i64 %desired) {
-entry:
-  %ptr = inttoptr i32 %iptr to i64*
-  %old = call i64 @llvm.nacl.atomic.cmpxchg.i64(i64* %ptr, i64 %expected,
-                                               i64 %desired, i32 6, i32 6)
-  ret i64 %old
-}
-
-; CHECK-NEXT: define internal i64 @test_atomic_cmpxchg_64(i32 %iptr, i64 %expected, i64 %desired) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %old = call i64 @llvm.nacl.atomic.cmpxchg.i64(i32 %iptr, i64 %expected, i64 %desired, i32 6, i32 6)
-; CHECK-NEXT:   ret i64 %old
-; CHECK-NEXT: }
-
-;;;; Fence and is-lock-free.
-
-define internal void @test_atomic_fence() {
-entry:
-  call void @llvm.nacl.atomic.fence(i32 6)
-  ret void
-}
-
-; CHECK-NEXT: define internal void @test_atomic_fence() {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   call void @llvm.nacl.atomic.fence(i32 6)
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @test_atomic_fence_all() {
-entry:
-  call void @llvm.nacl.atomic.fence.all()
-  ret void
-}
-
-; CHECK-NEXT: define internal void @test_atomic_fence_all() {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   call void @llvm.nacl.atomic.fence.all()
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal i32 @test_atomic_is_lock_free(i32 %iptr) {
-entry:
-  %ptr = inttoptr i32 %iptr to i8*
-  %i = call i1 @llvm.nacl.atomic.is.lock.free(i32 4, i8* %ptr)
-  %r = zext i1 %i to i32
-  ret i32 %r
-}
-
-; CHECK-NEXT: define internal i32 @test_atomic_is_lock_free(i32 %iptr) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %i = call i1 @llvm.nacl.atomic.is.lock.free(i32 4, i32 %iptr)
-; CHECK-NEXT:   %r = zext i1 %i to i32
-; CHECK-NEXT:   ret i32 %r
-; CHECK-NEXT: }
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/nacl-other-intrinsics.ll b/third_party/subzero/tests_lit/reader_tests/nacl-other-intrinsics.ll
deleted file mode 100644
index f1ef663..0000000
--- a/third_party/subzero/tests_lit/reader_tests/nacl-other-intrinsics.ll
+++ /dev/null
@@ -1,403 +0,0 @@
-; This tests parsing NaCl intrinsics not related to atomic operations.
-
-; RUN: %p2i -i %s --insts --args -allow-externally-defined-symbols \
-; RUN: | FileCheck %s
-; RUN:   %p2i -i %s --args -notranslate -timing \
-; RUN:        -allow-externally-defined-symbols | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-declare i8* @llvm.nacl.read.tp()
-declare void @llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
-declare void @llvm.memmove.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
-declare void @llvm.memset.p0i8.i32(i8*, i8, i32, i32, i1)
-declare void @llvm.nacl.longjmp(i8*, i32)
-declare i32 @llvm.nacl.setjmp(i8*)
-declare float @llvm.sqrt.f32(float)
-declare double @llvm.sqrt.f64(double)
-declare float @llvm.fabs.f32(float)
-declare double @llvm.fabs.f64(double)
-declare <4 x float> @llvm.fabs.v4f32(<4 x float>)
-declare void @llvm.trap()
-declare i16 @llvm.bswap.i16(i16)
-declare i32 @llvm.bswap.i32(i32)
-declare i64 @llvm.bswap.i64(i64)
-declare i32 @llvm.ctlz.i32(i32, i1)
-declare i64 @llvm.ctlz.i64(i64, i1)
-declare i32 @llvm.cttz.i32(i32, i1)
-declare i64 @llvm.cttz.i64(i64, i1)
-declare i32 @llvm.ctpop.i32(i32)
-declare i64 @llvm.ctpop.i64(i64)
-declare i8* @llvm.stacksave()
-declare void @llvm.stackrestore(i8*)
-
-define internal i32 @test_nacl_read_tp() {
-entry:
-  %ptr = call i8* @llvm.nacl.read.tp()
-  %__1 = ptrtoint i8* %ptr to i32
-  ret i32 %__1
-}
-
-; CHECK:      define internal i32 @test_nacl_read_tp() {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %ptr = call i32 @llvm.nacl.read.tp()
-; CHECK-NEXT:   ret i32 %ptr
-; CHECK-NEXT: }
-
-define internal void @test_memcpy(i32 %iptr_dst, i32 %iptr_src, i32 %len) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = inttoptr i32 %iptr_src to i8*
-  call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                       i32 %len, i32 1, i1 false)
-  ret void
-}
-
-; CHECK-NEXT: define internal void @test_memcpy(i32 %iptr_dst, i32 %iptr_src, i32 %len) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   call void @llvm.memcpy.p0i8.p0i8.i32(i32 %iptr_dst, i32 %iptr_src, i32 %len, i32 1, i1 false)
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @test_memmove(i32 %iptr_dst, i32 %iptr_src, i32 %len) {
-entry:
-  %dst = inttoptr i32 %iptr_dst to i8*
-  %src = inttoptr i32 %iptr_src to i8*
-  call void @llvm.memmove.p0i8.p0i8.i32(i8* %dst, i8* %src,
-                                        i32 %len, i32 1, i1 false)
-  ret void
-}
-
-; CHECK-NEXT: define internal void @test_memmove(i32 %iptr_dst, i32 %iptr_src, i32 %len) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   call void @llvm.memmove.p0i8.p0i8.i32(i32 %iptr_dst, i32 %iptr_src, i32 %len, i32 1, i1 false)
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @test_memset(i32 %iptr_dst, i32 %wide_val, i32 %len) {
-entry:
-  %val = trunc i32 %wide_val to i8
-  %dst = inttoptr i32 %iptr_dst to i8*
-  call void @llvm.memset.p0i8.i32(i8* %dst, i8 %val,
-                                  i32 %len, i32 1, i1 false)
-  ret void
-}
-
-; CHECK-NEXT: define internal void @test_memset(i32 %iptr_dst, i32 %wide_val, i32 %len) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %val = trunc i32 %wide_val to i8
-; CHECK-NEXT:   call void @llvm.memset.p0i8.i32(i32 %iptr_dst, i8 %val, i32 %len, i32 1, i1 false)
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal i32 @test_setjmplongjmp(i32 %iptr_env) {
-entry:
-  %env = inttoptr i32 %iptr_env to i8*
-  %i = call i32 @llvm.nacl.setjmp(i8* %env)
-  %r1 = icmp eq i32 %i, 0
-  br i1 %r1, label %Zero, label %NonZero
-Zero:
-  ; Redundant inttoptr, to make --pnacl cast-eliding/re-insertion happy.
-  %env2 = inttoptr i32 %iptr_env to i8*
-  call void @llvm.nacl.longjmp(i8* %env2, i32 1)
-  ret i32 0
-NonZero:
-  ret i32 1
-}
-
-; CHECK-NEXT: define internal i32 @test_setjmplongjmp(i32 %iptr_env) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %i = call i32 @llvm.nacl.setjmp(i32 %iptr_env)
-; CHECK-NEXT:   %r1 = icmp eq i32 %i, 0
-; CHECK-NEXT:   br i1 %r1, label %Zero, label %NonZero
-; CHECK-NEXT: Zero:
-; CHECK-NEXT:   call void @llvm.nacl.longjmp(i32 %iptr_env, i32 1)
-; CHECK-NEXT:   ret i32 0
-; CHECK-NEXT: NonZero:
-; CHECK-NEXT:   ret i32 1
-; CHECK-NEXT: }
-
-define internal float @test_sqrt_float(float %x, i32 %iptr) {
-entry:
-  %r = call float @llvm.sqrt.f32(float %x)
-  %r2 = call float @llvm.sqrt.f32(float %r)
-  %r3 = call float @llvm.sqrt.f32(float -0.0)
-  %r4 = fadd float %r2, %r3
-  ret float %r4
-}
-
-; CHECK-NEXT: define internal float @test_sqrt_float(float %x, i32 %iptr) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = call float @llvm.sqrt.f32(float %x)
-; CHECK-NEXT:   %r2 = call float @llvm.sqrt.f32(float %r)
-; CHECK-NEXT:   %r3 = call float @llvm.sqrt.f32(float -0.000000e+00)
-; CHECK-NEXT:   %r4 = fadd float %r2, %r3
-; CHECK-NEXT:   ret float %r4
-; CHECK-NEXT: }
-
-define internal double @test_sqrt_double(double %x, i32 %iptr) {
-entry:
-  %r = call double @llvm.sqrt.f64(double %x)
-  %r2 = call double @llvm.sqrt.f64(double %r)
-  %r3 = call double @llvm.sqrt.f64(double -0.0)
-  %r4 = fadd double %r2, %r3
-  ret double %r4
-}
-
-; CHECK-NEXT: define internal double @test_sqrt_double(double %x, i32 %iptr) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = call double @llvm.sqrt.f64(double %x)
-; CHECK-NEXT:   %r2 = call double @llvm.sqrt.f64(double %r)
-; CHECK-NEXT:   %r3 = call double @llvm.sqrt.f64(double -0.000000e+00)
-; CHECK-NEXT:   %r4 = fadd double %r2, %r3
-; CHECK-NEXT:   ret double %r4
-; CHECK-NEXT: }
-
-define internal float @test_fabs_float(float %x) {
-entry:
-  %r = call float @llvm.fabs.f32(float %x)
-  %r2 = call float @llvm.fabs.f32(float %r)
-  %r3 = call float @llvm.fabs.f32(float -0.0)
-  %r4 = fadd float %r2, %r3
-  ret float %r4
-}
-
-; CHECK-NEXT: define internal float @test_fabs_float(float %x) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = call float @llvm.fabs.f32(float %x)
-; CHECK-NEXT:   %r2 = call float @llvm.fabs.f32(float %r)
-; CHECK-NEXT:   %r3 = call float @llvm.fabs.f32(float -0.000000e+00)
-; CHECK-NEXT:   %r4 = fadd float %r2, %r3
-; CHECK-NEXT:   ret float %r4
-; CHECK-NEXT: }
-
-define internal double @test_fabs_double(double %x) {
-entry:
-  %r = call double @llvm.fabs.f64(double %x)
-  %r2 = call double @llvm.fabs.f64(double %r)
-  %r3 = call double @llvm.fabs.f64(double -0.0)
-  %r4 = fadd double %r2, %r3
-  ret double %r4
-}
-
-; CHECK-NEXT: define internal double @test_fabs_double(double %x) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = call double @llvm.fabs.f64(double %x)
-; CHECK-NEXT:   %r2 = call double @llvm.fabs.f64(double %r)
-; CHECK-NEXT:   %r3 = call double @llvm.fabs.f64(double -0.000000e+00)
-; CHECK-NEXT:   %r4 = fadd double %r2, %r3
-; CHECK-NEXT:   ret double %r4
-; CHECK-NEXT: }
-
-define internal <4 x float> @test_fabs_v4f32(<4 x float> %x) {
-entry:
-  %r = call <4 x float> @llvm.fabs.v4f32(<4 x float> %x)
-  %r2 = call <4 x float> @llvm.fabs.v4f32(<4 x float> %r)
-  %r3 = call <4 x float> @llvm.fabs.v4f32(<4 x float> undef)
-  %r4 = fadd <4 x float> %r2, %r3
-  ret <4 x float> %r4
-}
-
-; CHECK-NEXT: define internal <4 x float> @test_fabs_v4f32(<4 x float> %x) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = call <4 x float> @llvm.fabs.v4f32(<4 x float> %x)
-; CHECK-NEXT:   %r2 = call <4 x float> @llvm.fabs.v4f32(<4 x float> %r)
-; CHECK-NEXT:   %r3 = call <4 x float> @llvm.fabs.v4f32(<4 x float> undef)
-; CHECK-NEXT:   %r4 = fadd <4 x float> %r2, %r3
-; CHECK-NEXT:   ret <4 x float> %r4
-; CHECK-NEXT: }
-
-define internal i32 @test_trap(i32 %br) {
-entry:
-  %r1 = icmp eq i32 %br, 0
-  br i1 %r1, label %Zero, label %NonZero
-Zero:
-  call void @llvm.trap()
-  unreachable
-NonZero:
-  ret i32 1
-}
-
-; CHECK-NEXT: define internal i32 @test_trap(i32 %br) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r1 = icmp eq i32 %br, 0
-; CHECK-NEXT:   br i1 %r1, label %Zero, label %NonZero
-; CHECK-NEXT: Zero:
-; CHECK-NEXT:   call void @llvm.trap()
-; CHECK-NEXT:   unreachable
-; CHECK-NEXT: NonZero:
-; CHECK-NEXT:   ret i32 1
-; CHECK-NEXT: }
-
-define internal i32 @test_bswap_16(i32 %x) {
-entry:
-  %x_trunc = trunc i32 %x to i16
-  %r = call i16 @llvm.bswap.i16(i16 %x_trunc)
-  %r_zext = zext i16 %r to i32
-  ret i32 %r_zext
-}
-
-; CHECK-NEXT: define internal i32 @test_bswap_16(i32 %x) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %x_trunc = trunc i32 %x to i16
-; CHECK-NEXT:   %r = call i16 @llvm.bswap.i16(i16 %x_trunc)
-; CHECK-NEXT:   %r_zext = zext i16 %r to i32
-; CHECK-NEXT:   ret i32 %r_zext
-; CHECK-NEXT: }
-
-define internal i32 @test_bswap_32(i32 %x) {
-entry:
-  %r = call i32 @llvm.bswap.i32(i32 %x)
-  ret i32 %r
-}
-
-; CHECK-NEXT: define internal i32 @test_bswap_32(i32 %x) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = call i32 @llvm.bswap.i32(i32 %x)
-; CHECK-NEXT:   ret i32 %r
-; CHECK-NEXT: }
-
-define internal i64 @test_bswap_64(i64 %x) {
-entry:
-  %r = call i64 @llvm.bswap.i64(i64 %x)
-  ret i64 %r
-}
-
-; CHECK-NEXT: define internal i64 @test_bswap_64(i64 %x) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = call i64 @llvm.bswap.i64(i64 %x)
-; CHECK-NEXT:   ret i64 %r
-; CHECK-NEXT: }
-
-define internal i32 @test_ctlz_32(i32 %x) {
-entry:
-  %r = call i32 @llvm.ctlz.i32(i32 %x, i1 false)
-  ret i32 %r
-}
-
-; CHECK-NEXT: define internal i32 @test_ctlz_32(i32 %x) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = call i32 @llvm.ctlz.i32(i32 %x, i1 false)
-; CHECK-NEXT:   ret i32 %r
-; CHECK-NEXT: }
-
-define internal i64 @test_ctlz_64(i64 %x) {
-entry:
-  %r = call i64 @llvm.ctlz.i64(i64 %x, i1 false)
-  ret i64 %r
-}
-
-; CHECK-NEXT: define internal i64 @test_ctlz_64(i64 %x) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = call i64 @llvm.ctlz.i64(i64 %x, i1 false)
-; CHECK-NEXT:   ret i64 %r
-; CHECK-NEXT: }
-
-define internal i32 @test_cttz_32(i32 %x) {
-entry:
-  %r = call i32 @llvm.cttz.i32(i32 %x, i1 false)
-  ret i32 %r
-}
-
-; CHECK-NEXT: define internal i32 @test_cttz_32(i32 %x) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = call i32 @llvm.cttz.i32(i32 %x, i1 false)
-; CHECK-NEXT:   ret i32 %r
-; CHECK-NEXT: }
-
-define internal i64 @test_cttz_64(i64 %x) {
-entry:
-  %r = call i64 @llvm.cttz.i64(i64 %x, i1 false)
-  ret i64 %r
-}
-
-; CHECK-NEXT: define internal i64 @test_cttz_64(i64 %x) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = call i64 @llvm.cttz.i64(i64 %x, i1 false)
-; CHECK-NEXT:   ret i64 %r
-; CHECK-NEXT: }
-
-define internal i32 @test_popcount_32(i32 %x) {
-entry:
-  %r = call i32 @llvm.ctpop.i32(i32 %x)
-  ret i32 %r
-}
-
-; CHECK-NEXT: define internal i32 @test_popcount_32(i32 %x) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = call i32 @llvm.ctpop.i32(i32 %x)
-; CHECK-NEXT:   ret i32 %r
-; CHECK-NEXT: }
-
-define internal i64 @test_popcount_64(i64 %x) {
-entry:
-  %r = call i64 @llvm.ctpop.i64(i64 %x)
-  ret i64 %r
-}
-
-; CHECK-NEXT: define internal i64 @test_popcount_64(i64 %x) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = call i64 @llvm.ctpop.i64(i64 %x)
-; CHECK-NEXT:   ret i64 %r
-; CHECK-NEXT: }
-
-define internal void @test_stacksave_noalloca() {
-entry:
-  %sp = call i8* @llvm.stacksave()
-  call void @llvm.stackrestore(i8* %sp)
-  ret void
-}
-
-; CHECK-NEXT: define internal void @test_stacksave_noalloca() {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %sp = call i32 @llvm.stacksave()
-; CHECK-NEXT:   call void @llvm.stackrestore(i32 %sp)
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-declare i32 @foo(i32 %x)
-
-define internal void @test_stacksave_multiple(i32 %x) {
-entry:
-  %x_4 = mul i32 %x, 4
-  %sp1 = call i8* @llvm.stacksave()
-  %tmp1 = alloca i8, i32 %x_4, align 4
-
-  %sp2 = call i8* @llvm.stacksave()
-  %tmp2 = alloca i8, i32 %x_4, align 4
-
-  %y = call i32 @foo(i32 %x)
-
-  %sp3 = call i8* @llvm.stacksave()
-  %tmp3 = alloca i8, i32 %x_4, align 4
-
-  %__9 = bitcast i8* %tmp1 to i32*
-  store i32 %y, i32* %__9, align 1
-
-  %__10 = bitcast i8* %tmp2 to i32*
-  store i32 %x, i32* %__10, align 1
-
-  %__11 = bitcast i8* %tmp3 to i32*
-  store i32 %x, i32* %__11, align 1
-
-  call void @llvm.stackrestore(i8* %sp1)
-  ret void
-}
-
-; CHECK-NEXT: define internal void @test_stacksave_multiple(i32 %x) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %x_4 = mul i32 %x, 4
-; CHECK-NEXT:   %sp1 = call i32 @llvm.stacksave()
-; CHECK-NEXT:   %tmp1 = alloca i8, i32 %x_4, align 4
-; CHECK-NEXT:   %sp2 = call i32 @llvm.stacksave()
-; CHECK-NEXT:   %tmp2 = alloca i8, i32 %x_4, align 4
-; CHECK-NEXT:   %y = call i32 @foo(i32 %x)
-; CHECK-NEXT:   %sp3 = call i32 @llvm.stacksave()
-; CHECK-NEXT:   %tmp3 = alloca i8, i32 %x_4, align 4
-; CHECK-NEXT:   store i32 %y, i32* %tmp1, align 1
-; CHECK-NEXT:   store i32 %x, i32* %tmp2, align 1
-; CHECK-NEXT:   store i32 %x, i32* %tmp3, align 1
-; CHECK-NEXT:   call void @llvm.stackrestore(i32 %sp1)
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/phi.ll b/third_party/subzero/tests_lit/reader_tests/phi.ll
deleted file mode 100644
index de35635..0000000
--- a/third_party/subzero/tests_lit/reader_tests/phi.ll
+++ /dev/null
@@ -1,33 +0,0 @@
-; Test reading phi instructions.
-
-; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN:   %p2i -i %s --args -notranslate -timing | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-; TODO(kschimpf) Add forward reference examples.
-
-define internal i32 @testPhi1(i32 %arg) {
-entry:
-  %cmp1 = icmp sgt i32 %arg, 0
-  br i1 %cmp1, label %next, label %target
-next:
-  br label %target
-target:
-  %merge = phi i1 [ %cmp1, %entry ], [ false, %next ]
-  %result = zext i1 %merge to i32
-  ret i32 %result
-}
-
-; CHECK:      define internal i32 @testPhi1(i32 %arg) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %cmp1 = icmp sgt i32 %arg, 0
-; CHECK-NEXT:   br i1 %cmp1, label %next, label %target
-; CHECK-NEXT: next:
-; CHECK-NEXT:   br label %target
-; CHECK-NEXT: target:
-; CHECK-NEXT:   %merge = phi i1 [ %cmp1, %entry ], [ false, %next ]
-; CHECK-NEXT:   %result = zext i1 %merge to i32
-; CHECK-NEXT:   ret i32 %result
-; CHECK-NEXT: }
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/select.ll b/third_party/subzero/tests_lit/reader_tests/select.ll
deleted file mode 100644
index a99c36d..0000000
--- a/third_party/subzero/tests_lit/reader_tests/select.ll
+++ /dev/null
@@ -1,299 +0,0 @@
-; Tests if we can read select instructions.
-
-; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN:   %p2i -i %s --args -notranslate -timing | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-define internal void @Seli1(i32 %p) {
-entry:
-  %vc = trunc i32 %p to i1
-  %vt = trunc i32 %p to i1
-  %ve = trunc i32 %p to i1
-  %r = select i1 %vc, i1 %vt, i1 %ve
-  ret void
-}
-
-; CHECK:      define internal void @Seli1(i32 %p) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %vc = trunc i32 %p to i1
-; CHECK-NEXT:   %vt = trunc i32 %p to i1
-; CHECK-NEXT:   %ve = trunc i32 %p to i1
-; CHECK-NEXT:   %r = select i1 %vc, i1 %vt, i1 %ve
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @Seli8(i32 %p) {
-entry:
-  %vc = trunc i32 %p to i1
-  %vt = trunc i32 %p to i8
-  %ve = trunc i32 %p to i8
-  %r = select i1 %vc, i8 %vt, i8 %ve
-  ret void
-}
-
-; CHECK-NEXT: define internal void @Seli8(i32 %p) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %vc = trunc i32 %p to i1
-; CHECK-NEXT:   %vt = trunc i32 %p to i8
-; CHECK-NEXT:   %ve = trunc i32 %p to i8
-; CHECK-NEXT:   %r = select i1 %vc, i8 %vt, i8 %ve
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @Seli16(i32 %p) {
-entry:
-  %vc = trunc i32 %p to i1
-  %vt = trunc i32 %p to i16
-  %ve = trunc i32 %p to i16
-  %r = select i1 %vc, i16 %vt, i16 %ve
-  ret void
-}
-
-; CHECK-NEXT: define internal void @Seli16(i32 %p) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %vc = trunc i32 %p to i1
-; CHECK-NEXT:   %vt = trunc i32 %p to i16
-; CHECK-NEXT:   %ve = trunc i32 %p to i16
-; CHECK-NEXT:   %r = select i1 %vc, i16 %vt, i16 %ve
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal i32 @Seli32(i32 %pc, i32 %pt, i32 %pe) {
-entry:
-  %vc = trunc i32 %pc to i1
-  %r = select i1 %vc, i32 %pt, i32 %pe
-  ret i32 %r
-}
-
-; CHECK-NEXT: define internal i32 @Seli32(i32 %pc, i32 %pt, i32 %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %vc = trunc i32 %pc to i1
-; CHECK-NEXT:   %r = select i1 %vc, i32 %pt, i32 %pe
-; CHECK-NEXT:   ret i32 %r
-; CHECK-NEXT: }
-
-define internal i64 @Seli64(i64 %pc, i64 %pt, i64 %pe) {
-entry:
-  %vc = trunc i64 %pc to i1
-  %r = select i1 %vc, i64 %pt, i64 %pe
-  ret i64 %r
-}
-
-; CHECK-NEXT: define internal i64 @Seli64(i64 %pc, i64 %pt, i64 %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %vc = trunc i64 %pc to i1
-; CHECK-NEXT:   %r = select i1 %vc, i64 %pt, i64 %pe
-; CHECK-NEXT:   ret i64 %r
-; CHECK-NEXT: }
-
-define internal float @SelFloat(i32 %pc, float %pt, float %pe) {
-entry:
-  %vc = trunc i32 %pc to i1
-  %r = select i1 %vc, float %pt, float %pe
-  ret float %r
-}
-
-; CHECK-NEXT: define internal float @SelFloat(i32 %pc, float %pt, float %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %vc = trunc i32 %pc to i1
-; CHECK-NEXT:   %r = select i1 %vc, float %pt, float %pe
-; CHECK-NEXT:   ret float %r
-; CHECK-NEXT: }
-
-define internal double @SelDouble(i32 %pc, double %pt, double %pe) {
-entry:
-  %vc = trunc i32 %pc to i1
-  %r = select i1 %vc, double %pt, double %pe
-  ret double %r
-}
-
-; CHECK-NEXT: define internal double @SelDouble(i32 %pc, double %pt, double %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %vc = trunc i32 %pc to i1
-; CHECK-NEXT:   %r = select i1 %vc, double %pt, double %pe
-; CHECK-NEXT:   ret double %r
-; CHECK-NEXT: }
-
-define internal <16 x i1> @SelV16x1(i32 %pc, <16 x i1> %pt, <16 x i1> %pe) {
-entry:
-  %vc = trunc i32 %pc to i1
-  %r = select i1 %vc, <16 x i1> %pt, <16 x i1> %pe
-  ret <16 x i1> %r
-}
-
-; CHECK-NEXT: define internal <16 x i1> @SelV16x1(i32 %pc, <16 x i1> %pt, <16 x i1> %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %vc = trunc i32 %pc to i1
-; CHECK-NEXT:   %r = select i1 %vc, <16 x i1> %pt, <16 x i1> %pe
-; CHECK-NEXT:   ret <16 x i1> %r
-; CHECK-NEXT: }
-
-define internal <8 x i1> @SelV8x1(i32 %pc, <8 x i1> %pt, <8 x i1> %pe) {
-entry:
-  %vc = trunc i32 %pc to i1
-  %r = select i1 %vc, <8 x i1> %pt, <8 x i1> %pe
-  ret <8 x i1> %r
-}
-
-; CHECK-NEXT: define internal <8 x i1> @SelV8x1(i32 %pc, <8 x i1> %pt, <8 x i1> %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %vc = trunc i32 %pc to i1
-; CHECK-NEXT:   %r = select i1 %vc, <8 x i1> %pt, <8 x i1> %pe
-; CHECK-NEXT:   ret <8 x i1> %r
-; CHECK-NEXT: }
-
-define internal <4 x i1> @SelV4x1(i32 %pc, <4 x i1> %pt, <4 x i1> %pe) {
-entry:
-  %vc = trunc i32 %pc to i1
-  %r = select i1 %vc, <4 x i1> %pt, <4 x i1> %pe
-  ret <4 x i1> %r
-}
-
-; CHECK-NEXT: define internal <4 x i1> @SelV4x1(i32 %pc, <4 x i1> %pt, <4 x i1> %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %vc = trunc i32 %pc to i1
-; CHECK-NEXT:   %r = select i1 %vc, <4 x i1> %pt, <4 x i1> %pe
-; CHECK-NEXT:   ret <4 x i1> %r
-; CHECK-NEXT: }
-
-define internal <16 x i8> @SelV16x8(i32 %pc, <16 x i8> %pt, <16 x i8> %pe) {
-entry:
-  %vc = trunc i32 %pc to i1
-  %r = select i1 %vc, <16 x i8> %pt, <16 x i8> %pe
-  ret <16 x i8> %r
-}
-
-; CHECK-NEXT: define internal <16 x i8> @SelV16x8(i32 %pc, <16 x i8> %pt, <16 x i8> %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %vc = trunc i32 %pc to i1
-; CHECK-NEXT:   %r = select i1 %vc, <16 x i8> %pt, <16 x i8> %pe
-; CHECK-NEXT:   ret <16 x i8> %r
-; CHECK-NEXT: }
-
-define internal <8 x i16> @SelV8x16(i32 %pc, <8 x i16> %pt, <8 x i16> %pe) {
-entry:
-  %vc = trunc i32 %pc to i1
-  %r = select i1 %vc, <8 x i16> %pt, <8 x i16> %pe
-  ret <8 x i16> %r
-}
-
-; CHECK-NEXT: define internal <8 x i16> @SelV8x16(i32 %pc, <8 x i16> %pt, <8 x i16> %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %vc = trunc i32 %pc to i1
-; CHECK-NEXT:   %r = select i1 %vc, <8 x i16> %pt, <8 x i16> %pe
-; CHECK-NEXT:   ret <8 x i16> %r
-; CHECK-NEXT: }
-
-define internal <4 x i32> @SelV4x32(i32 %pc, <4 x i32> %pt, <4 x i32> %pe) {
-entry:
-  %vc = trunc i32 %pc to i1
-  %r = select i1 %vc, <4 x i32> %pt, <4 x i32> %pe
-  ret <4 x i32> %r
-}
-
-; CHECK-NEXT: define internal <4 x i32> @SelV4x32(i32 %pc, <4 x i32> %pt, <4 x i32> %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %vc = trunc i32 %pc to i1
-; CHECK-NEXT:   %r = select i1 %vc, <4 x i32> %pt, <4 x i32> %pe
-; CHECK-NEXT:   ret <4 x i32> %r
-; CHECK-NEXT: }
-
-define internal <4 x float> @SelV4xfloat(i32 %pc, <4 x float> %pt, <4 x float> %pe) {
-entry:
-  %vc = trunc i32 %pc to i1
-  %r = select i1 %vc, <4 x float> %pt, <4 x float> %pe
-  ret <4 x float> %r
-}
-
-; CHECK-NEXT: define internal <4 x float> @SelV4xfloat(i32 %pc, <4 x float> %pt, <4 x float> %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %vc = trunc i32 %pc to i1
-; CHECK-NEXT:   %r = select i1 %vc, <4 x float> %pt, <4 x float> %pe
-; CHECK-NEXT:   ret <4 x float> %r
-; CHECK-NEXT: }
-
-define internal <16 x i1> @SelV16x1Vcond(<16 x i1> %pc, <16 x i1> %pt, <16 x i1> %pe) {
-entry:
-  %r = select <16 x i1> %pc, <16 x i1> %pt, <16 x i1> %pe
-  ret <16 x i1> %r
-}
-
-; CHECK-NEXT: define internal <16 x i1> @SelV16x1Vcond(<16 x i1> %pc, <16 x i1> %pt, <16 x i1> %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = select <16 x i1> %pc, <16 x i1> %pt, <16 x i1> %pe
-; CHECK-NEXT:   ret <16 x i1> %r
-; CHECK-NEXT: }
-
-define internal <8 x i1> @SelV8x1Vcond(<8 x i1> %pc, <8 x i1> %pt, <8 x i1> %pe) {
-entry:
-  %r = select <8 x i1> %pc, <8 x i1> %pt, <8 x i1> %pe
-  ret <8 x i1> %r
-}
-
-; CHECK-NEXT: define internal <8 x i1> @SelV8x1Vcond(<8 x i1> %pc, <8 x i1> %pt, <8 x i1> %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = select <8 x i1> %pc, <8 x i1> %pt, <8 x i1> %pe
-; CHECK-NEXT:   ret <8 x i1> %r
-; CHECK-NEXT: }
-
-define internal <4 x i1> @SelV4x1Vcond(<4 x i1> %pc, <4 x i1> %pt, <4 x i1> %pe) {
-entry:
-  %r = select <4 x i1> %pc, <4 x i1> %pt, <4 x i1> %pe
-  ret <4 x i1> %r
-}
-
-; CHECK-NEXT: define internal <4 x i1> @SelV4x1Vcond(<4 x i1> %pc, <4 x i1> %pt, <4 x i1> %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = select <4 x i1> %pc, <4 x i1> %pt, <4 x i1> %pe
-; CHECK-NEXT:   ret <4 x i1> %r
-; CHECK-NEXT: }
-
-define internal <16 x i8> @SelV16x8Vcond(<16 x i1> %pc, <16 x i8> %pt, <16 x i8> %pe) {
-entry:
-  %r = select <16 x i1> %pc, <16 x i8> %pt, <16 x i8> %pe
-  ret <16 x i8> %r
-}
-
-; CHECK-NEXT: define internal <16 x i8> @SelV16x8Vcond(<16 x i1> %pc, <16 x i8> %pt, <16 x i8> %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = select <16 x i1> %pc, <16 x i8> %pt, <16 x i8> %pe
-; CHECK-NEXT:   ret <16 x i8> %r
-; CHECK-NEXT: }
-
-define internal <8 x i16> @SelV8x16Vcond(<8 x i1> %pc, <8 x i16> %pt, <8 x i16> %pe) {
-entry:
-  %r = select <8 x i1> %pc, <8 x i16> %pt, <8 x i16> %pe
-  ret <8 x i16> %r
-}
-
-; CHECK-NEXT: define internal <8 x i16> @SelV8x16Vcond(<8 x i1> %pc, <8 x i16> %pt, <8 x i16> %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = select <8 x i1> %pc, <8 x i16> %pt, <8 x i16> %pe
-; CHECK-NEXT:   ret <8 x i16> %r
-; CHECK-NEXT: }
-
-define internal <4 x i32> @SelV4x32Vcond(<4 x i1> %pc, <4 x i32> %pt, <4 x i32> %pe) {
-entry:
-  %r = select <4 x i1> %pc, <4 x i32> %pt, <4 x i32> %pe
-  ret <4 x i32> %r
-}
-
-; CHECK-NEXT: define internal <4 x i32> @SelV4x32Vcond(<4 x i1> %pc, <4 x i32> %pt, <4 x i32> %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = select <4 x i1> %pc, <4 x i32> %pt, <4 x i32> %pe
-; CHECK-NEXT:   ret <4 x i32> %r
-; CHECK-NEXT: }
-
-define internal <4 x float> @SelV4xfloatVcond(<4 x i1> %pc, <4 x float> %pt, <4 x float> %pe) {
-entry:
-  %r = select <4 x i1> %pc, <4 x float> %pt, <4 x float> %pe
-  ret <4 x float> %r
-}
-
-; CHECK-NEXT: define internal <4 x float> @SelV4xfloatVcond(<4 x i1> %pc, <4 x float> %pt, <4 x float> %pe) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %r = select <4 x i1> %pc, <4 x float> %pt, <4 x float> %pe
-; CHECK-NEXT:   ret <4 x float> %r
-; CHECK-NEXT: }
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/store.ll b/third_party/subzero/tests_lit/reader_tests/store.ll
deleted file mode 100644
index de4dd77..0000000
--- a/third_party/subzero/tests_lit/reader_tests/store.ll
+++ /dev/null
@@ -1,139 +0,0 @@
-; Test if we can read store instructions.
-
-; RUN: %p2i -i %s --insts --no-local-syms | FileCheck %s
-; RUN:   %p2i -i %s --args -notranslate -timing | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-define internal void @store_i8(i32 %addr) {
-entry:
-  %addr_i8 = inttoptr i32 %addr to i8*
-  store i8 3, i8* %addr_i8, align 1
-  ret void
-
-; CHECK:      __0:
-; CHECK-NEXT:   store i8 3, i8* %__0, align 1
-; CHECK-NEXT:   ret void
-}
-
-define internal void @store_i16(i32 %addr) {
-entry:
-  %addr_i16 = inttoptr i32 %addr to i16*
-  store i16 5, i16* %addr_i16, align 1
-  ret void
-
-; CHECK:      __0:
-; CHECK-NEXT:   store i16 5, i16* %__0, align 1
-; CHECK-NEXT:   ret void
-}
-
-define internal void @store_i32(i32 %addr, i32 %v) {
-entry:
-  %addr_i32 = inttoptr i32 %addr to i32*
-  store i32 %v, i32* %addr_i32, align 1
-  ret void
-
-; CHECK:      __0:
-; CHECK-NEXT:   store i32 %__1, i32* %__0, align 1
-; CHECK-NEXT:   ret void
-}
-
-define internal void @store_i64(i32 %addr, i64 %v) {
-entry:
-  %addr_i64 = inttoptr i32 %addr to i64*
-  store i64 %v, i64* %addr_i64, align 1
-  ret void
-
-; CHECK:      __0:
-; CHECK-NEXT:   store i64 %__1, i64* %__0, align 1
-; CHECK-NEXT:   ret void
-}
-
-define internal void @store_float_a1(i32 %addr, float %v) {
-entry:
-  %addr_float = inttoptr i32 %addr to float*
-  store float %v, float* %addr_float, align 1
-  ret void
-
-; TODO(kschimpf) Fix store alignment in ICE to allow non-default.
-
-; CHECK:      __0:
-; CHECK-NEXT:   store float %__1, float* %__0, align 4
-; CHECK-NEXT:   ret void
-}
-
-define internal void @store_float_a4(i32 %addr, float %v) {
-entry:
-  %addr_float = inttoptr i32 %addr to float*
-  store float %v, float* %addr_float, align 4
-  ret void
-
-; CHECK:       __0:
-; CHECK-NEXT:   store float %__1, float* %__0, align 4
-; CHECK-NEXT:   ret void
-}
-
-define internal void @store_double_a1(i32 %addr, double %v) {
-entry:
-  %addr_double = inttoptr i32 %addr to double*
-  store double %v, double* %addr_double, align 1
-  ret void
-
-; TODO(kschimpf) Fix store alignment in ICE to allow non-default.
-
-; CHECK:      __0:
-; CHECK-NEXT:   store double %__1, double* %__0, align 8
-; CHECK-NEXT:   ret void
-}
-
-define internal void @store_double_a8(i32 %addr, double %v) {
-entry:
-  %addr_double = inttoptr i32 %addr to double*
-  store double %v, double* %addr_double, align 8
-  ret void
-
-; CHECK:      __0:
-; CHECK-NEXT:   store double %__1, double* %__0, align 8
-; CHECK-NEXT:   ret void
-}
-
-define internal void @store_v16xI8(i32 %addr, <16 x i8> %v) {
-  %addr_v16xI8 = inttoptr i32 %addr to <16 x i8>*
-  store <16 x i8> %v, <16 x i8>* %addr_v16xI8, align 1
-  ret void
-
-; CHECK:      __0:
-; CHECK-NEXT:   store <16 x i8> %__1, <16 x i8>* %__0, align 1
-; CHECK-NEXT:   ret void
-}
-
-define internal void @store_v8xI16(i32 %addr, <8 x i16> %v) {
-  %addr_v8xI16 = inttoptr i32 %addr to <8 x i16>*
-  store <8 x i16> %v, <8 x i16>* %addr_v8xI16, align 2
-  ret void
-
-; CHECK:      __0:
-; CHECK-NEXT:   store <8 x i16> %__1, <8 x i16>* %__0, align 2
-; CHECK-NEXT:   ret void
-}
-
-define internal void @store_v4xI32(i32 %addr, <4 x i32> %v) {
-  %addr_v4xI32 = inttoptr i32 %addr to <4 x i32>*
-  store <4 x i32> %v, <4 x i32>* %addr_v4xI32, align 4
-  ret void
-
-; CHECK:      __0:
-; CHECK-NEXT:   store <4 x i32> %__1, <4 x i32>* %__0, align 4
-; CHECK-NEXT:   ret void
-}
-
-define internal void @store_v4xFloat(i32 %addr, <4 x float> %v) {
-  %addr_v4xFloat = inttoptr i32 %addr to <4 x float>*
-  store <4 x float> %v, <4 x float>* %addr_v4xFloat, align 4
-  ret void
-
-; CHECK:      __0:
-; CHECK-NEXT:   store <4 x float> %__1, <4 x float>* %__0, align 4
-; CHECK-NEXT:   ret void
-}
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/switch.ll b/third_party/subzero/tests_lit/reader_tests/switch.ll
deleted file mode 100644
index 27f7598..0000000
--- a/third_party/subzero/tests_lit/reader_tests/switch.ll
+++ /dev/null
@@ -1,495 +0,0 @@
-; Test switch instructions.
-
-; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN:   %p2i -i %s --args -notranslate -timing | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-define internal void @testDefaultSwitch(i32 %a) {
-entry:
-  switch i32 %a, label %exit [
-  ]
-exit:
-  ret void
-}
-
-; CHECK:      define internal void @testDefaultSwitch(i32 %a) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   switch i32 %a, label %exit [
-; CHECK-NEXT:   ]
-; CHECK-NEXT: exit:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal i32 @testSwitch(i32 %a) {
-entry:
-  switch i32 %a, label %sw.default [
-    i32 1, label %sw.epilog
-    i32 2, label %sw.epilog
-    i32 3, label %sw.epilog
-    i32 7, label %sw.bb1
-    i32 8, label %sw.bb1
-    i32 15, label %sw.bb2
-    i32 14, label %sw.bb2
-  ]
-
-sw.default:                                       ; preds = %entry
-  %add = add i32 %a, 27
-  br label %sw.epilog
-
-sw.bb1:                                           ; preds = %entry, %entry
-  %phitmp = sub i32 21, %a
-  br label %sw.bb2
-
-sw.bb2:                                           ; preds = %sw.bb1, %entry, %entry
-  %result.0 = phi i32 [ 1, %entry ], [ 1, %entry ], [ %phitmp, %sw.bb1 ]
-  br label %sw.epilog
-
-sw.epilog:                                        ; preds = %sw.bb2, %sw.default, %entry, %entry, %entry
-  %result.1 = phi i32 [ %add, %sw.default ], [ %result.0, %sw.bb2 ], [ 17, %entry ], [ 17, %entry ], [ 17, %entry ]
-  ret i32 %result.1
-}
-
-; CHECK-NEXT:      define internal i32 @testSwitch(i32 %a) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   switch i32 %a, label %sw.default [
-; CHECK-NEXT:     i32 1, label %sw.epilog
-; CHECK-NEXT:     i32 2, label %sw.epilog
-; CHECK-NEXT:     i32 3, label %sw.epilog
-; CHECK-NEXT:     i32 7, label %sw.bb1
-; CHECK-NEXT:     i32 8, label %sw.bb1
-; CHECK-NEXT:     i32 15, label %sw.bb2
-; CHECK-NEXT:     i32 14, label %sw.bb2
-; CHECK-NEXT:   ]
-; CHECK-NEXT: sw.default:
-; CHECK-NEXT:   %add = add i32 %a, 27
-; CHECK-NEXT:   br label %sw.epilog
-; CHECK-NEXT: sw.bb1:
-; CHECK-NEXT:   %phitmp = sub i32 21, %a
-; CHECK-NEXT:   br label %sw.bb2
-; CHECK-NEXT: sw.bb2:
-; CHECK-NEXT:   %result.0 = phi i32 [ 1, %entry ], [ 1, %entry ], [ %phitmp, %sw.bb1 ]
-; CHECK-NEXT:   br label %sw.epilog
-; CHECK-NEXT: sw.epilog:
-; CHECK-NEXT:   %result.1 = phi i32 [ %add, %sw.default ], [ %result.0, %sw.bb2 ], [ 17, %entry ], [ 17, %entry ], [ 17, %entry ]
-; CHECK-NEXT:   ret i32 %result.1
-; CHECK-NEXT: }
-
-define internal void @testSignedI32Values(i32 %a) {
-entry:
-  switch i32 %a, label %labelDefault [
-  i32 0, label %label0
-  i32 -1, label %labelM1
-  i32 3, label %labelOther
-  i32 -3, label %labelOther
-  i32 -2147483648, label %labelMin  ; min signed i32
-  i32 2147483647, label %labelMax   ; max signed i32
-  ]
-labelDefault:
-  ret void
-label0:
-  ret void
-labelM1:
-  ret void
-labelMin:
-  ret void
-labelMax:
-  ret void
-labelOther:
-  ret void
-}
-
-; CHECK-NEXT: define internal void @testSignedI32Values(i32 %a) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   switch i32 %a, label %labelDefault [
-; CHECK-NEXT:     i32 0, label %label0
-; CHECK-NEXT:     i32 -1, label %labelM1
-; CHECK-NEXT:     i32 3, label %labelOther
-; CHECK-NEXT:     i32 -3, label %labelOther
-; CHECK-NEXT:     i32 -2147483648, label %labelMin
-; CHECK-NEXT:     i32 2147483647, label %labelMax
-; CHECK-NEXT:   ]
-; CHECK-NEXT: labelDefault:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: label0:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: labelM1:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: labelMin:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: labelMax:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: labelOther:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-; Test values that cross signed i32 size boundaries.
-define internal void @testSignedI32Boundary(i32 %a) {
-entry:
-  switch i32 %a, label %exit [
-  i32 -2147483649, label %exit  ; min signed i32 - 1
-  i32 2147483648, label %exit   ; max signed i32 + 1
-  ]
-exit:
-  ret void
-}
-
-; CHECK-NEXT: define internal void @testSignedI32Boundary(i32 %a) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   switch i32 %a, label %exit [
-; CHECK-NEXT:     i32 2147483647, label %exit
-; CHECK-NEXT:     i32 -2147483648, label %exit
-; CHECK-NEXT:   ]
-; CHECK-NEXT: exit:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @testUnsignedI32Values(i32 %a) {
-entry:
-  switch i32 %a, label %exit [
-  i32 0, label %exit
-  i32 2147483647, label %exit   ; max signed i32
-  i32 4294967295, label %exit   ; max unsigned i32
-  ]
-exit:
-  ret void
-}
-
-; CHECK-NEXT: define internal void @testUnsignedI32Values(i32 %a) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   switch i32 %a, label %exit [
-; CHECK-NEXT:     i32 0, label %exit
-; CHECK-NEXT:     i32 2147483647, label %exit
-;                 ; Note that -1 is signed version of 4294967295
-; CHECK-NEXT:     i32 -1, label %exit
-; CHECK-NEXT:   ]
-; CHECK-NEXT: exit:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-; Test values that cross unsigned i32 boundaries.
-define internal void @testUnsignedI32Boundary(i32 %a) {
-entry:
-  switch i32 %a, label %exit [
-  i32 4294967296, label %exit   ; max unsigned i32 + 1
-  ]
-exit:
-  ret void
-}
-
-; CHECK-NEXT: define internal void @testUnsignedI32Boundary(i32 %a) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   switch i32 %a, label %exit [
-; CHECK-NEXT:     i32 0, label %exit
-; CHECK-NEXT:   ]
-; CHECK-NEXT: exit:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @testSignedI64Values(i64 %a) {
-entry:
-  switch i64 %a, label %exit [
-  i64 0, label %exit
-  i64 -9223372036854775808, label %exit   ; min signed i64
-  i64 9223372036854775807, label %exit    ; max signed i64
-  ]
-exit:
-  ret void
-}
-
-; CHECK-NEXT: define internal void @testSignedI64Values(i64 %a) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   switch i64 %a, label %exit [
-; CHECK-NEXT:     i64 0, label %exit
-; CHECK-NEXT:     i64 -9223372036854775808, label %exit
-; CHECK-NEXT:     i64 9223372036854775807, label %exit
-; CHECK-NEXT:   ]
-; CHECK-NEXT: exit:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-; Test values that cross signed i64 size boundaries.
-define internal void @testSignedI64Boundary(i64 %a) {
-entry:
-  switch i64 %a, label %exit [
-  i64 0, label %exit
-  i64 -9223372036854775809, label %exit   ; min signed i64 - 1
-  i64 9223372036854775808, label %exit   ; max signed i64 + 1
-  ]
-exit:
-  ret void
-}
-
-; CHECK-NEXT: define internal void @testSignedI64Boundary(i64 %a) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   switch i64 %a, label %exit [
-; CHECK-NEXT:     i64 0, label %exit
-; CHECK-NEXT:     i64 9223372036854775807, label %exit
-; CHECK-NEXT:     i64 -9223372036854775808, label %exit
-; CHECK-NEXT:   ]
-; CHECK-NEXT: exit:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @testUnsignedI64Values(i64 %a) {
-entry:
-  switch i64 %a, label %exit [
-  i64 0, label %exit
-  i64 9223372036854775807, label %exit   ; max signed i64
-  i64 18446744073709551615, label %exit   ; max unsigned i64
-  ]
-exit:
-  ret void
-}
-
-; CHECK-NEXT: define internal void @testUnsignedI64Values(i64 %a) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   switch i64 %a, label %exit [
-; CHECK-NEXT:     i64 0, label %exit
-; CHECK-NEXT:     i64 9223372036854775807, label %exit
-; CHECK-NEXT:     i64 -1, label %exit
-; CHECK-NEXT:   ]
-; CHECK-NEXT: exit:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-; Test values that cross unsigned i64 size boundaries.
-define internal void @testUnsignedI64Boundary(i64 %a) {
-entry:
-  switch i64 %a, label %exit [
-  i64 18446744073709551616, label %exit   ; max unsigned i64 + 1
-  ]
-exit:
-  ret void
-}
-
-; CHECK-NEXT: define internal void @testUnsignedI64Boundary(i64 %a) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   switch i64 %a, label %exit [
-; CHECK-NEXT:     i64 0, label %exit
-; CHECK-NEXT:   ]
-; CHECK-NEXT: exit:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @testSignedI16Values(i32 %p) {
-entry:
-  %a = trunc i32 %p to i16
-  switch i16 %a, label %exit [
-  i16 0, label %exit
-  i16 -1, label %exit
-  i16 3, label %exit
-  i16 -3, label %exit
-  i16 -32768, label %exit   ; min signed i16
-  i16 32767, label %exit   ; max unsigned i16
-  ]
-exit:
-  ret void
-}
-
-; CHECK-NEXT: define internal void @testSignedI16Values(i32 %p) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = trunc i32 %p to i16
-; CHECK-NEXT:   switch i16 %a, label %exit [
-; CHECK-NEXT:     i16 0, label %exit
-; CHECK-NEXT:     i16 -1, label %exit
-; CHECK-NEXT:     i16 3, label %exit
-; CHECK-NEXT:     i16 -3, label %exit
-; CHECK-NEXT:     i16 -32768, label %exit
-; CHECK-NEXT:     i16 32767, label %exit
-; CHECK-NEXT:   ]
-; CHECK-NEXT: exit:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-; Test values that cross signed i16 size boundaries.
-define internal void @testSignedI16Boundary(i32 %p) {
-entry:
-  %a = trunc i32 %p to i16
-  switch i16 %a, label %exit [
-  i16 -32769, label %exit   ; min signed i16 - 1
-  i16 32768, label %exit   ; max unsigned i16 + 1
-  ]
-exit:
-  ret void
-}
-
-; CHECK-NEXT: define internal void @testSignedI16Boundary(i32 %p) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = trunc i32 %p to i16
-; CHECK-NEXT:   switch i16 %a, label %exit [
-; CHECK-NEXT:     i16 32767, label %exit
-; CHECK-NEXT:     i16 -32768, label %exit
-; CHECK-NEXT:   ]
-; CHECK-NEXT: exit:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @testUnsignedI16Values(i32 %p) {
-entry:
-  %a = trunc i32 %p to i16
-  switch i16 %a, label %exit [
-  i16 0, label %exit
-  i16 32767, label %exit   ; max signed i16
-  i16 65535, label %exit   ; max unsigned i16
-  ]
-exit:
-  ret void
-}
-
-; CHECK-NEXT: define internal void @testUnsignedI16Values(i32 %p) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = trunc i32 %p to i16
-; CHECK-NEXT:   switch i16 %a, label %exit [
-; CHECK-NEXT:     i16 0, label %exit
-; CHECK-NEXT:     i16 32767, label %exit
-;                 ; Note that -1 is signed version of 65535
-; CHECK-NEXT:     i16 -1, label %exit
-; CHECK-NEXT:   ]
-; CHECK-NEXT: exit:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-; Test values that cross unsigned i16 size boundaries.
-define internal void @testUnsignedI16Boundary(i32 %p) {
-entry:
-  %a = trunc i32 %p to i16
-  switch i16 %a, label %exit [
-  i16 65536, label %exit   ; max unsigned i16 + 1
-  ]
-exit:
-  ret void
-}
-
-; CHECK-NEXT: define internal void @testUnsignedI16Boundary(i32 %p) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = trunc i32 %p to i16
-; CHECK-NEXT:   switch i16 %a, label %exit [
-; CHECK-NEXT:     i16 0, label %exit
-; CHECK-NEXT:   ]
-; CHECK-NEXT: exit:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @testSignedI8Values(i32 %p) {
-entry:
-  %a = trunc i32 %p to i8
-  switch i8 %a, label %exit [
-  i8 0, label %exit
-  i8 -1, label %exit
-  i8 3, label %exit
-  i8 -3, label %exit
-  i8 -128, label %exit   ; min signed i8
-  i8 127, label %exit   ; max unsigned i8
-  ]
-exit:
-  ret void
-}
-
-; CHECK-NEXT: define internal void @testSignedI8Values(i32 %p) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = trunc i32 %p to i8
-; CHECK-NEXT:   switch i8 %a, label %exit [
-; CHECK-NEXT:     i8 0, label %exit
-; CHECK-NEXT:     i8 -1, label %exit
-; CHECK-NEXT:     i8 3, label %exit
-; CHECK-NEXT:     i8 -3, label %exit
-; CHECK-NEXT:     i8 -128, label %exit
-; CHECK-NEXT:     i8 127, label %exit
-; CHECK-NEXT:   ]
-; CHECK-NEXT: exit:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-; Test values that cross signed i8 size boundaries.
-define internal void @testSignedI8Boundary(i32 %p) {
-entry:
-  %a = trunc i32 %p to i8
-  switch i8 %a, label %exit [
-  i8 -129, label %exit   ; min signed i8 - 1
-  i8 128, label %exit   ; max unsigned i8 + 1
-  ]
-exit:
-  ret void
-}
-
-; CHECK-NEXT: define internal void @testSignedI8Boundary(i32 %p) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = trunc i32 %p to i8
-; CHECK-NEXT:   switch i8 %a, label %exit [
-; CHECK-NEXT:     i8 127, label %exit
-; CHECK-NEXT:     i8 -128, label %exit
-; CHECK-NEXT:   ]
-; CHECK-NEXT: exit:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-
-define internal void @testUnsignedI8Values(i32 %p) {
-entry:
-  %a = trunc i32 %p to i8
-  switch i8 %a, label %exit [
-  i8 0, label %exit
-  i8 127, label %exit   ; max signed i8
-  i8 255, label %exit   ; max unsigned i8
-  ]
-exit:
-  ret void
-}
-
-; CHECK-NEXT: define internal void @testUnsignedI8Values(i32 %p) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = trunc i32 %p to i8
-; CHECK-NEXT:   switch i8 %a, label %exit [
-; CHECK-NEXT:     i8 0, label %exit
-; CHECK-NEXT:     i8 127, label %exit
-;                 ; Note that -1 is signed version of 255
-; CHECK-NEXT:     i8 -1, label %exit
-; CHECK-NEXT:   ]
-; CHECK-NEXT: exit:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-; Test values that cross unsigned i8 size boundaries.
-define internal void @testUnsignedI8Boundary(i32 %p) {
-entry:
-  %a = trunc i32 %p to i8
-  switch i8 %a, label %exit [
-  i8 256, label %exit   ; max unsigned i8
-  ]
-exit:
-  ret void
-}
-
-; CHECK-NEXT: define internal void @testUnsignedI8Boundary(i32 %p) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = trunc i32 %p to i8
-; CHECK-NEXT:   switch i8 %a, label %exit [
-; CHECK-NEXT:     i8 0, label %exit
-; CHECK-NEXT:   ]
-; CHECK-NEXT: exit:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @testI1Values(i32 %p) {
-entry:
-  %a = trunc i32 %p to i1
-  switch i1 %a, label %exit [
-  i1 true, label %exit
-  i1 false, label %exit
-  ]
-exit:
-  ret void
-}
-
-; CHECK-NEXT: define internal void @testI1Values(i32 %p) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %a = trunc i32 %p to i1
-; CHECK-NEXT:   switch i1 %a, label %exit [
-; CHECK-NEXT:     i1 -1, label %exit
-; CHECK-NEXT:     i1 0, label %exit
-; CHECK-NEXT:   ]
-; CHECK-NEXT: exit:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/unnamed.ll b/third_party/subzero/tests_lit/reader_tests/unnamed.ll
deleted file mode 100644
index 3f4e1fd..0000000
--- a/third_party/subzero/tests_lit/reader_tests/unnamed.ll
+++ /dev/null
@@ -1,64 +0,0 @@
-; Tests that we name unnamed global addresses.
-
-; Check that Subzero's bitcode reader handles renaming correctly.
-; RUN: %p2i --no-local-syms -i %s --insts | FileCheck %s
-; RUN: %l2i --no-local-syms -i %s --insts | %ifl FileCheck %s
-
-; RUN: %l2i --no-local-syms -i %s --insts --args --exit-success \
-; RUN:      -default-function-prefix=h -default-global-prefix=g \
-; RUN:      | %ifl FileCheck --check-prefix=BAD %s
-
-; RUN: %p2i --no-local-syms -i %s --insts --args --exit-success \
-; RUN:      -default-function-prefix=h -default-global-prefix=g \
-; RUN:      | FileCheck --check-prefix=BAD %s
-
-; RUN:   %p2i -i %s --args -notranslate -timing | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-; TODO(kschimpf) Check global variable declarations, once generated.
-
-@0 = internal global [4 x i8] zeroinitializer, align 4
-@1 = internal constant [10 x i8] c"Some stuff", align 1
-@g = internal global [4 x i8] zeroinitializer, align 4
-
-define internal i32 @2(i32 %v) {
-  ret i32 %v
-}
-
-; CHECK:      define internal i32 @Function(i32 %__0) {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   ret i32 %__0
-; CHECK-NEXT: }
-
-define internal void @hg() {
-  ret void
-}
-
-
-; CHECK-NEXT: define internal void @hg() {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @3() {
-  ret void
-}
-
-; CHECK-NEXT: define internal void @Function1() {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-define internal void @h5() {
-  ret void
-}
-
-; CHECK-NEXT: define internal void @h5() {
-; CHECK-NEXT: __0:
-; CHECK-NEXT:   ret void
-; CHECK-NEXT: }
-
-; BAD: Warning : Default global prefix 'g' potentially conflicts with name 'g'.
-; BAD: Warning : Default function prefix 'h' potentially conflicts with name 'h5'.
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/tests_lit/reader_tests/unreachable.ll b/third_party/subzero/tests_lit/reader_tests/unreachable.ll
deleted file mode 100644
index b9950bf..0000000
--- a/third_party/subzero/tests_lit/reader_tests/unreachable.ll
+++ /dev/null
@@ -1,31 +0,0 @@
-; Test parsing unreachable instruction.
-
-; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN:   %p2i -i %s --args -notranslate -timing | \
-; RUN:   FileCheck --check-prefix=NOIR %s
-
-define internal i32 @divide(i32 %num, i32 %den) {
-entry:
-  %cmp = icmp ne i32 %den, 0
-  br i1 %cmp, label %return, label %abort
-
-abort:                                            ; preds = %entry
-  unreachable
-
-return:                                           ; preds = %entry
-  %div = sdiv i32 %num, %den
-  ret i32 %div
-}
-
-; CHECK:      define internal i32 @divide(i32 %num, i32 %den) {
-; CHECK-NEXT: entry:
-; CHECK-NEXT:   %cmp = icmp ne i32 %den, 0
-; CHECK-NEXT:   br i1 %cmp, label %return, label %abort
-; CHECK-NEXT: abort:
-; CHECK-NEXT:   unreachable
-; CHECK-NEXT: return:
-; CHECK-NEXT:   %div = sdiv i32 %num, %den
-; CHECK-NEXT:   ret i32 %div
-; CHECK-NEXT: }
-
-; NOIR: Total across all functions
diff --git a/third_party/subzero/wasm-tests/hello-printf.c b/third_party/subzero/wasm-tests/hello-printf.c
deleted file mode 100644
index d0c89ee..0000000
--- a/third_party/subzero/wasm-tests/hello-printf.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include <stdio.h>
-
-int main(int argc, const char **argv) {
-  printf("Hello, World!\n");
-  return 0;
-}
diff --git a/third_party/subzero/wasm-tests/hello-putchar.c b/third_party/subzero/wasm-tests/hello-putchar.c
deleted file mode 100644
index fdeaa3b..0000000
--- a/third_party/subzero/wasm-tests/hello-putchar.c
+++ /dev/null
@@ -1,39 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-void write_int_(int fd, int n) {
-  if (n > 0) {
-    write_int_(fd, n / 10);
-
-    int rem = n % 10;
-    char c = '0' + rem;
-    write(fd, &c, 1);
-  }
-}
-
-void write_int(int fd, int n) {
-  if (n == 0) {
-    write(fd, "0", 1);
-  } else {
-    if (n < 0) {
-      write(fd, "-", 1);
-      write_int_(fd, -n);
-    } else {
-      write_int_(fd, n);
-    }
-  }
-}
-
-void stderr_int(int n) {
-  write_int(2, n);
-  write(2, "\n", 1);
-}
-
-int main(int argc, const char **argv) {
-  char *str = "Hello, World!\n";
-  for (int i = 0; str[i]; ++i) {
-    putchar(str[i]);
-  }
-  return 0;
-}
diff --git a/third_party/subzero/wasm-tests/hello-puts.c b/third_party/subzero/wasm-tests/hello-puts.c
deleted file mode 100644
index fa5dc6a..0000000
--- a/third_party/subzero/wasm-tests/hello-puts.c
+++ /dev/null
@@ -1,10 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-int main(int argc, const char **argv) {
-  fputs("Hello,", stdout);
-  fputs(" ", stdout);
-  fputs("world\n", stdout);
-  return 0;
-}
diff --git a/third_party/subzero/wasm-tests/hello-write.c b/third_party/subzero/wasm-tests/hello-write.c
deleted file mode 100644
index ecbf75d..0000000
--- a/third_party/subzero/wasm-tests/hello-write.c
+++ /dev/null
@@ -1,10 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-int main(int argc, const char **argv) {
-  char *str = "Hello, World!\n";
-  const int len = strlen(str);
-  write(1, str, len);
-  return 0;
-}
diff --git a/third_party/subzero/wasm-tests/indirect.c b/third_party/subzero/wasm-tests/indirect.c
deleted file mode 100644
index 2b8753d..0000000
--- a/third_party/subzero/wasm-tests/indirect.c
+++ /dev/null
@@ -1,13 +0,0 @@
-int foo() { return 5; }
-
-int bar() { return 6; }
-
-int baz() { return 7; }
-
-int (*TABLE[])() = {foo, baz, bar, baz};
-
-int main(int argc, const char **argv) {
-  int (*f)() = TABLE[argc - 1];
-
-  return f();
-}
diff --git a/third_party/subzero/wasm-tests/write_loop.c b/third_party/subzero/wasm-tests/write_loop.c
deleted file mode 100644
index d398d6b..0000000
--- a/third_party/subzero/wasm-tests/write_loop.c
+++ /dev/null
@@ -1,14 +0,0 @@
-// This is derived from the loop in musl's __fwritex that looks for newlines.
-
-int puts(const char *s);
-
-int main(int argc, const char **argv) {
-  const char *p = (const char *)argv;
-  char *s = "Hello\nWorld";
-  unsigned i = 0;
-  // Depend on argc to avoid having this whole thing get dead-code-eliminated.
-  for (i = 14 - argc; i && p[i - 1] != '\n'; i--)
-    ;
-  puts(s);
-  return i;
-}