Index: src/compiler/arm64/code-generator-arm64.cc |
diff --git a/src/compiler/arm64/code-generator-arm64.cc b/src/compiler/arm64/code-generator-arm64.cc |
index 84acda4db38fac8f89304b1615ebd4e6c15ac4d2..14603863b18c7ff074d3d99966421b84ce5dd00d 100644 |
--- a/src/compiler/arm64/code-generator-arm64.cc |
+++ b/src/compiler/arm64/code-generator-arm64.cc |
@@ -1038,6 +1038,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( |
// Pseudo instructions turned into tbz/tbnz in AssembleArchBranch. |
break; |
case kArm64CompareAndBranch32: |
+ case kArm64CompareAndBranch: |
// Pseudo instruction turned into cbz/cbnz in AssembleArchBranch. |
break; |
case kArm64ClaimCSP: { |
@@ -1503,6 +1504,17 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { |
default: |
UNREACHABLE(); |
} |
+ } else if (opcode == kArm64CompareAndBranch) { |
+ switch (condition) { |
+ case kEqual: |
+ __ Cbz(i.InputRegister64(0), tlabel); |
+ break; |
+ case kNotEqual: |
+ __ Cbnz(i.InputRegister64(0), tlabel); |
+ break; |
+ default: |
+ UNREACHABLE(); |
+ } |
} else if (opcode == kArm64TestAndBranch32) { |
switch (condition) { |
case kEqual: |