[ARM] Factor out CMSE register clearing code
[official-gcc.git] / gcc / testsuite / gcc.target / arm / cmse / mainline / hard / cmse-8.c
blob5ed3e7a3fd8f51b2813e7affe4da944d938ac1d6
1 /* { dg-do compile } */
2 /* { dg-options "-mcmse -mfloat-abi=hard -mfpu=fpv5-d16" } */
3 /* { dg-skip-if "Do not combine float-abi= hard | soft | softfp" {*-*-*} {"-mfloat-abi=soft" -mfloat-abi=softfp } {""} } */
4 /* { dg-skip-if "Skip these if testing single precision" {*-*-*} {"-mfpu=*-sp-*"} {""} } */
6 #include "../../cmse-8.x"
8 /* Checks for saving and clearing prior to function call. */
9 /* { dg-final { scan-assembler "lsrs\tr4, r4, #1" } } */
10 /* { dg-final { scan-assembler "lsls\tr4, r4, #1" } } */
11 /* { dg-final { scan-assembler "mov\tr0, r4" } } */
12 /* { dg-final { scan-assembler "mov\tr1, r4" } } */
13 /* { dg-final { scan-assembler "mov\tr2, r4" } } */
14 /* { dg-final { scan-assembler "mov\tr3, r4" } } */
15 /* { dg-final { scan-assembler-not "vmov\.f64\td0, #1\.0" } } */
16 /* { dg-final { scan-assembler "vmov\.f64\td1, #1\.0" } } */
17 /* { dg-final { scan-assembler "vmov\.f64\td2, #1\.0" } } */
18 /* { dg-final { scan-assembler "vmov\.f64\td3, #1\.0" } } */
19 /* { dg-final { scan-assembler "vmov\.f64\td4, #1\.0" } } */
20 /* { dg-final { scan-assembler "vmov\.f64\td5, #1\.0" } } */
21 /* { dg-final { scan-assembler "vmov\.f64\td6, #1\.0" } } */
22 /* { dg-final { scan-assembler "vmov\.f64\td7, #1\.0" } } */
24 /* Now we check that we use the correct intrinsic to call. */
25 /* { dg-final { scan-assembler "bl\t__gnu_cmse_nonsecure_call" } } */