1; RUN: llc < %s | FileCheck %s 2 3target datalayout = "e-m:e-p:16:16-i32:16:32-a:16-n8:16" 4target triple = "msp430---elf" 5 6define void @test_no_clobber() { 7entry: 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 14} 15 16define void @test_1() { 17entry: 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 39} 40 41define void @test_2() { 42entry: 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 64} 65 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*. 73define void @test_r10() { 74entry: 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 84} 85