[PATCH, GCC/ARM, 4/10] Clear GPR with CLRM
[official-gcc.git] / gcc / testsuite / gcc.target / arm / cmse / mainline / 8_1m / hard-sp / cmse-13.c
blob7b2df1faff5ea6ce6e7a58a37cd23eaf9616ee97
1 /* { dg-do compile } */
2 /* { dg-options "-mcmse -mfloat-abi=hard -mfpu=fpv5-sp-d16" } */
3 /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=hard" } } */
4 /* { dg-skip-if "Skip these if testing double precision" {*-*-*} {"-mfpu=fpv[4-5]-d16"} {""} } */
6 #include "../../../cmse-13.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 "clrm\t\{r0, r1, r2, r3, APSR\}" } } */
12 /* { dg-final { scan-assembler-not "vmov\.f32\ts0, #1\.0" } } */
13 /* { dg-final { scan-assembler "vmov\.f32\ts1, #1\.0" } } */
14 /* { dg-final { scan-assembler-not "vmov\.f32\ts2, #1\.0" } } */
15 /* { dg-final { scan-assembler-not "vmov\.f32\ts3, #1\.0" } } */
16 /* { dg-final { scan-assembler "vmov\.f32\ts4, #1\.0" } } */
17 /* { dg-final { scan-assembler "vmov\.f32\ts5, #1\.0" } } */
18 /* { dg-final { scan-assembler "vmov\.f32\ts6, #1\.0" } } */
19 /* { dg-final { scan-assembler "vmov\.f32\ts7, #1\.0" } } */
20 /* { dg-final { scan-assembler "vmov\.f32\ts8, #1\.0" } } */
21 /* { dg-final { scan-assembler "vmov\.f32\ts9, #1\.0" } } */
22 /* { dg-final { scan-assembler "vmov\.f32\ts10, #1\.0" } } */
23 /* { dg-final { scan-assembler "vmov\.f32\ts11, #1\.0" } } */
24 /* { dg-final { scan-assembler "vmov\.f32\ts12, #1\.0" } } */
25 /* { dg-final { scan-assembler "vmov\.f32\ts13, #1\.0" } } */
26 /* { dg-final { scan-assembler "vmov\.f32\ts14, #1\.0" } } */
27 /* { dg-final { scan-assembler "vmov\.f32\ts15, #1\.0" } } */
29 /* Now we check that we use the correct intrinsic to call. */
30 /* { dg-final { scan-assembler "bl\t__gnu_cmse_nonsecure_call" } } */