Skip to content

Commit 847d296

Browse files
committed
Make transistions to OFF explicit
Change-Id: I80a6f954f308269684f205098ee43eb20e1bd670
1 parent f6a6d49 commit 847d296

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

llvm/lib/Target/AArch64/MachineSMEABIPass.cpp

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1091,16 +1091,18 @@ void MachineSMEABI::emitStateChange(EmitContext &Context,
10911091
if (HasZT0State && To == ZAState::ACTIVE)
10921092
emitZT0SaveRestore(Context, MBB, InsertPt, /*IsSave=*/false);
10931093
break;
1094+
1095+
// This section handles transistions to OFF (not previously covered)
1096+
case transitionFrom(ZAState::ACTIVE).to(ZAState::OFF):
1097+
case transitionFrom(ZAState::ACTIVE_ZT0_SAVED).to(ZAState::OFF):
1098+
case transitionFrom(ZAState::LOCAL_SAVED).to(ZAState::OFF):
1099+
assert(SMEFnAttrs.hasPrivateZAInterface() &&
1100+
"Did not expect to turn ZA off in shared/agnostic ZA function");
1101+
emitZAMode(MBB, InsertPt, /*ClearTPIDR2=*/From == ZAState::LOCAL_SAVED,
1102+
/*On=*/false);
1103+
break;
1104+
10941105
default:
1095-
if (To == ZAState::OFF) {
1096-
assert(From != ZAState::ENTRY &&
1097-
"ENTRY to OFF should have already been handled");
1098-
assert(SMEFnAttrs.hasPrivateZAInterface() &&
1099-
"Did not expect to turn ZA off in shared/agnostic ZA function");
1100-
emitZAMode(MBB, InsertPt, /*ClearTPIDR2=*/From == ZAState::LOCAL_SAVED,
1101-
/*On=*/false);
1102-
break;
1103-
}
11041106
dbgs() << "Error: Transition from " << getZAStateString(From) << " to "
11051107
<< getZAStateString(To) << '\n';
11061108
llvm_unreachable("Unimplemented state transition");

0 commit comments

Comments
 (0)