Skip to content

Commit b41ad79

Browse files
committed
Make transistions to OFF explicit
Change-Id: I80a6f954f308269684f205098ee43eb20e1bd670
1 parent 61a5390 commit b41ad79

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
@@ -1094,16 +1094,18 @@ void MachineSMEABI::emitStateChange(EmitContext &Context,
10941094
if (HasZT0State && To == ZAState::ACTIVE)
10951095
emitZT0SaveRestore(Context, MBB, InsertPt, /*IsSave=*/false);
10961096
break;
1097+
1098+
// This section handles transistions to OFF (not previously covered)
1099+
case transitionFrom(ZAState::ACTIVE).to(ZAState::OFF):
1100+
case transitionFrom(ZAState::ACTIVE_ZT0_SAVED).to(ZAState::OFF):
1101+
case transitionFrom(ZAState::LOCAL_SAVED).to(ZAState::OFF):
1102+
assert(SMEFnAttrs.hasPrivateZAInterface() &&
1103+
"Did not expect to turn ZA off in shared/agnostic ZA function");
1104+
emitZAMode(MBB, InsertPt, /*ClearTPIDR2=*/From == ZAState::LOCAL_SAVED,
1105+
/*On=*/false);
1106+
break;
1107+
10971108
default:
1098-
if (To == ZAState::OFF) {
1099-
assert(From != ZAState::ENTRY &&
1100-
"ENTRY to OFF should have already been handled");
1101-
assert(SMEFnAttrs.hasPrivateZAInterface() &&
1102-
"Did not expect to turn ZA off in shared/agnostic ZA function");
1103-
emitZAMode(MBB, InsertPt, /*ClearTPIDR2=*/From == ZAState::LOCAL_SAVED,
1104-
/*On=*/false);
1105-
break;
1106-
}
11071109
dbgs() << "Error: Transition from " << getZAStateString(From) << " to "
11081110
<< getZAStateString(To) << '\n';
11091111
llvm_unreachable("Unimplemented state transition");

0 commit comments

Comments
 (0)