Subzero: fix invalid asserts during emit()
Fix asserts that would trip during emit, which we only use to emit textual
representation of generated asm to stdout. Useful for debugging.
Bug: b/144688789
Change-Id: I42d60da042fa04bf6afc9035b2892249e5e46c59
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/38475
Tested-by: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/third_party/subzero/src/IceInstX8664.cpp b/third_party/subzero/src/IceInstX8664.cpp
index d44f35d..7f1fa52 100644
--- a/third_party/subzero/src/IceInstX8664.cpp
+++ b/third_party/subzero/src/IceInstX8664.cpp
@@ -159,7 +159,7 @@
if (!NeedSandboxing) {
// TODO(jpp): stop abusing the operand's type to identify LEAs.
const Type MemType = getType();
- if (Base->getType() != IceType_i32 && MemType != IceType_void) {
+ if (Base->getType() != IceType_i32 && MemType != IceType_void && !isVectorType(MemType)) {
// X86-64 is ILP32, but %rsp and %rbp are accessed as 64-bit registers.
// For filetype=asm, they need to be emitted as their 32-bit siblings.
assert(Base->getType() == IceType_i64);