Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / MSP430 / asm-clobbers.ll
blob3e411192fd6a898c596445f2f203562c2819fd61
1 ; RUN: llc < %s | FileCheck %s
3 target datalayout = "e-m:e-p:16:16-i32:16:32-a:16-n8:16"
4 target triple = "msp430---elf"
6 define void @test_no_clobber() {
7 entry:
8 ; CHECK-LABEL: test_no_clobber
9 ; CHECK-NOT: push
10   call void asm sideeffect "", ""()
11 ; CHECK-NOT: pop
12   ret void
13 ; CHECK: -- End function
16 define void @test_1() {
17 entry:
18 ; CHECK-LABEL: test_1:
19 ; CHECK: push r4
20 ; CHECK: .cfi_def_cfa_offset 4
21 ; CHECK: push r6
22 ; CHECK: .cfi_def_cfa_offset 6
23 ; CHECK: push r8
24 ; CHECK: .cfi_def_cfa_offset 8
25 ; CHECK: .cfi_offset r4, -4
26 ; CHECK: .cfi_offset r6, -6
27 ; CHECK: .cfi_offset r8, -8
28   call void asm sideeffect "", "~{r4},~{r6},~{r8}"()
29 ; CHECK: pop r8
30 ; CHECK: .cfi_def_cfa_offset 6
31 ; CHECK: pop r6
32 ; CHECK: .cfi_def_cfa_offset 4
33 ; CHECK: pop r4
34 ; CHECK: .cfi_def_cfa_offset 2
35 ; CHECK: .cfi_restore r4
36 ; CHECK: .cfi_restore r6
37 ; CHECK: .cfi_restore r8
38   ret void
41 define void @test_2() {
42 entry:
43 ; CHECK-LABEL: test_2:
44 ; CHECK: push  r5
45 ; CHECK: .cfi_def_cfa_offset 4
46 ; CHECK: push  r7
47 ; CHECK: .cfi_def_cfa_offset 6
48 ; CHECK: push  r9
49 ; CHECK: .cfi_def_cfa_offset 8
50 ; CHECK: .cfi_offset r5, -4
51 ; CHECK: .cfi_offset r7, -6
52 ; CHECK: .cfi_offset r9, -8
53   call void asm sideeffect "", "~{r5},~{r7},~{r9}"()
54 ; CHECK: pop r9
55 ; CHECK: .cfi_def_cfa_offset 6
56 ; CHECK: pop r7
57 ; CHECK: .cfi_def_cfa_offset 4
58 ; CHECK: pop r5
59 ; CHECK: .cfi_def_cfa_offset 2
60 ; CHECK: .cfi_restore r5
61 ; CHECK: .cfi_restore r7
62 ; CHECK: .cfi_restore r9
63   ret void
66 ; The r10 register is special because the sequence
67 ;   pop r10
68 ;   ret
69 ; can be replaced with
70 ;   jmp __mspabi_func_epilog_1
71 ; or other such function (depending on previous instructions).
72 ; Still, it is not replaced *yet*.
73 define void @test_r10() {
74 entry:
75 ; CHECK-LABEL: test_r10:
76 ; CHECK: push r10
77 ; CHECK: .cfi_def_cfa_offset 4
78 ; CHECK: .cfi_offset r10, -4
79   call void asm sideeffect "", "~{r10}"()
80 ; CHECK: pop r10
81 ; CHECK: .cfi_def_cfa_offset 2
82 ; CHECK: .cfi_restore r10
83   ret void