126 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2;3; RUN: llc %s -o - -mtriple=thumbv8m.main -verify-machineinstrs \4; RUN: -mattr=+fp-armv8d16sp,+fix-cmse-cve-2021-35465 | \5; RUN: FileCheck %s --check-prefix=CHECK-8M-FP-CVE-2021-354656;7; RUN: llc %s -o - -mtriple=thumbv8m.main -mcpu=cortex-m33 -verify-machineinstrs | \8; RUN: FileCheck %s --check-prefix=CHECK-8M-FP-CVE-2021-354659;10; RUN: llc %s -o - -mtriple=thumbv8m.main -mcpu=star-mc1 -verify-machineinstrs | \11; RUN: FileCheck %s --check-prefix=CHECK-8M-FP-CVE-2021-3546512;13; RUN: llc %s -o - -mtriple=thumbv8m.main -mcpu=cortex-m35p -verify-machineinstrs | \14; RUN: FileCheck %s --check-prefix=CHECK-8M-FP-CVE-2021-3546515;16; RUN: llc %s -o - -mtriple=thumbv8m.main -verify-machineinstrs \17; RUN: -mattr=-fpregs,+fix-cmse-cve-2021-35465 | \18; RUN: FileCheck %s --check-prefix=CHECK-8M-NOFP-CVE-2021-3546519;20; RUN: llc %s -o - -mtriple=thumbv8m.main -mcpu=cortex-m33 -mattr=-fpregs -verify-machineinstrs | \21; RUN: FileCheck %s --check-prefix=CHECK-8M-NOFP-CVE-2021-3546522;23; RUN: llc %s -o - -mtriple=thumbv8m.main -mcpu=star-mc1 -mattr=-fpregs -verify-machineinstrs | \24; RUN: FileCheck %s --check-prefix=CHECK-8M-NOFP-CVE-2021-3546525;26; RUN: llc %s -o - -mtriple=thumbv8m.main -mcpu=cortex-m35p -mattr=-fpregs -verify-machineinstrs | \27; RUN: FileCheck %s --check-prefix=CHECK-8M-NOFP-CVE-2021-3546528;29; RUN: llc %s -o - -mtriple=thumbv8.1m.main -verify-machineinstrs \30; RUN: -mattr=+fp-armv8d16sp,+fix-cmse-cve-2021-35465 | \31; RUN: FileCheck %s --check-prefix=CHECK-81M-CVE-2021-3546532;33; RUN: llc %s -o - -mtriple=thumbv8.1m.main -mcpu=cortex-m55 -verify-machineinstrs | \34; RUN: FileCheck %s --check-prefix=CHECK-81M-CVE-2021-3546535;36; RUN: llc %s -o - -mtriple=thumbv8.1m.main -verify-machineinstrs \37; RUN: -mattr=-fpregs,+fix-cmse-cve-2021-35465 | \38; RUN: FileCheck %s --check-prefix=CHECK-81M-CVE-2021-3546539;40; RUN: llc %s -o - -mtriple=thumbv8.1m.main -mcpu=cortex-m55 -mattr=-fpregs -verify-machineinstrs | \41; RUN: FileCheck %s --check-prefix=CHECK-81M-CVE-2021-3546542;43 44define void @non_secure_call(ptr %fptr) {45; CHECK-8M-FP-CVE-2021-35465-LABEL: non_secure_call:46; CHECK-8M-FP-CVE-2021-35465: @ %bb.0:47; CHECK-8M-FP-CVE-2021-35465-NEXT: push {r7, lr}48; CHECK-8M-FP-CVE-2021-35465-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}49; CHECK-8M-FP-CVE-2021-35465-NEXT: bic r0, r0, #150; CHECK-8M-FP-CVE-2021-35465-NEXT: sub sp, #13651; CHECK-8M-FP-CVE-2021-35465-NEXT: vlstm sp52; CHECK-8M-FP-CVE-2021-35465-NEXT: mov r1, r053; CHECK-8M-FP-CVE-2021-35465-NEXT: mov r2, r054; CHECK-8M-FP-CVE-2021-35465-NEXT: mov r3, r055; CHECK-8M-FP-CVE-2021-35465-NEXT: mov r4, r056; CHECK-8M-FP-CVE-2021-35465-NEXT: mov r5, r057; CHECK-8M-FP-CVE-2021-35465-NEXT: mov r6, r058; CHECK-8M-FP-CVE-2021-35465-NEXT: mov r7, r059; CHECK-8M-FP-CVE-2021-35465-NEXT: mov r8, r060; CHECK-8M-FP-CVE-2021-35465-NEXT: mov r9, r061; CHECK-8M-FP-CVE-2021-35465-NEXT: mov r10, r062; CHECK-8M-FP-CVE-2021-35465-NEXT: mov r11, r063; CHECK-8M-FP-CVE-2021-35465-NEXT: mov r12, r064; CHECK-8M-FP-CVE-2021-35465-NEXT: msr apsr_nzcvq{{g?}}, r065; CHECK-8M-FP-CVE-2021-35465-NEXT: blxns r066; CHECK-8M-FP-CVE-2021-35465-NEXT: mrs r12, control67; CHECK-8M-FP-CVE-2021-35465-NEXT: tst.w r12, #868; CHECK-8M-FP-CVE-2021-35465-NEXT: it ne69; CHECK-8M-FP-CVE-2021-35465-NEXT: vmovne.f32 s0, s070; CHECK-8M-FP-CVE-2021-35465-NEXT: vlldm sp71; CHECK-8M-FP-CVE-2021-35465-NEXT: add sp, #13672; CHECK-8M-FP-CVE-2021-35465-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}73; CHECK-8M-FP-CVE-2021-35465-NEXT: pop {r7, pc}74;75; CHECK-8M-NOFP-CVE-2021-35465-LABEL: non_secure_call:76; CHECK-8M-NOFP-CVE-2021-35465: @ %bb.0:77; CHECK-8M-NOFP-CVE-2021-35465-NEXT: push {r7, lr}78; CHECK-8M-NOFP-CVE-2021-35465-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}79; CHECK-8M-NOFP-CVE-2021-35465-NEXT: bic r0, r0, #180; CHECK-8M-NOFP-CVE-2021-35465-NEXT: sub sp, #13681; CHECK-8M-NOFP-CVE-2021-35465-NEXT: vlstm sp82; CHECK-8M-NOFP-CVE-2021-35465-NEXT: mov r1, r083; CHECK-8M-NOFP-CVE-2021-35465-NEXT: mov r2, r084; CHECK-8M-NOFP-CVE-2021-35465-NEXT: mov r3, r085; CHECK-8M-NOFP-CVE-2021-35465-NEXT: mov r4, r086; CHECK-8M-NOFP-CVE-2021-35465-NEXT: mov r5, r087; CHECK-8M-NOFP-CVE-2021-35465-NEXT: mov r6, r088; CHECK-8M-NOFP-CVE-2021-35465-NEXT: mov r7, r089; CHECK-8M-NOFP-CVE-2021-35465-NEXT: mov r8, r090; CHECK-8M-NOFP-CVE-2021-35465-NEXT: mov r9, r091; CHECK-8M-NOFP-CVE-2021-35465-NEXT: mov r10, r092; CHECK-8M-NOFP-CVE-2021-35465-NEXT: mov r11, r093; CHECK-8M-NOFP-CVE-2021-35465-NEXT: mov r12, r094; CHECK-8M-NOFP-CVE-2021-35465-NEXT: msr apsr_nzcvq{{g?}}, r095; CHECK-8M-NOFP-CVE-2021-35465-NEXT: blxns r096; CHECK-8M-NOFP-CVE-2021-35465-NEXT: mrs r12, control97; CHECK-8M-NOFP-CVE-2021-35465-NEXT: tst.w r12, #898; CHECK-8M-NOFP-CVE-2021-35465-NEXT: it ne99; CHECK-8M-NOFP-CVE-2021-35465-NEXT: @APP100; CHECK-8M-NOFP-CVE-2021-35465-NEXT: .inst.w 0xeeb00a40101; CHECK-8M-NOFP-CVE-2021-35465-NEXT: @NO_APP102; CHECK-8M-NOFP-CVE-2021-35465-NEXT: vlldm sp103; CHECK-8M-NOFP-CVE-2021-35465-NEXT: add sp, #136104; CHECK-8M-NOFP-CVE-2021-35465-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}105; CHECK-8M-NOFP-CVE-2021-35465-NEXT: pop {r7, pc}106;107; CHECK-81M-CVE-2021-35465-LABEL: non_secure_call:108; CHECK-81M-CVE-2021-35465: @ %bb.0:109; CHECK-81M-CVE-2021-35465-NEXT: push {r7, lr}110; CHECK-81M-CVE-2021-35465-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}111; CHECK-81M-CVE-2021-35465-NEXT: bic r0, r0, #1112; CHECK-81M-CVE-2021-35465-NEXT: sub sp, #136113; CHECK-81M-CVE-2021-35465-NEXT: vlstm sp114; CHECK-81M-CVE-2021-35465-NEXT: clrm {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, apsr}115; CHECK-81M-CVE-2021-35465-NEXT: blxns r0116; CHECK-81M-CVE-2021-35465-NEXT: vscclrm {vpr}117; CHECK-81M-CVE-2021-35465-NEXT: vlldm sp118; CHECK-81M-CVE-2021-35465-NEXT: add sp, #136119; CHECK-81M-CVE-2021-35465-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}120; CHECK-81M-CVE-2021-35465-NEXT: pop {r7, pc}121 call void %fptr() #0122 ret void123}124 125attributes #0 = { "cmse_nonsecure_call" }126