1*9880d681SAndroid Build Coastguard Worker# RUN: llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -o - %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker# This test ensures that the MIR parser parses the .cfi_offset operands 3*9880d681SAndroid Build Coastguard Worker# correctly. 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker--- | 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker declare void @foo(i32) 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Worker define i32 @test(i32 %a, i32 %b, i32 %c, i32 %d) { 10*9880d681SAndroid Build Coastguard Worker entry: 11*9880d681SAndroid Build Coastguard Worker %add = add nsw i32 %b, %a 12*9880d681SAndroid Build Coastguard Worker %add1 = add nsw i32 %add, %c 13*9880d681SAndroid Build Coastguard Worker %add2 = add nsw i32 %add1, %d 14*9880d681SAndroid Build Coastguard Worker tail call void @foo(i32 %add2) 15*9880d681SAndroid Build Coastguard Worker %add6 = add nsw i32 %add2, %add2 16*9880d681SAndroid Build Coastguard Worker ret i32 %add6 17*9880d681SAndroid Build Coastguard Worker } 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker... 20*9880d681SAndroid Build Coastguard Worker--- 21*9880d681SAndroid Build Coastguard Workername: test 22*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true 23*9880d681SAndroid Build Coastguard WorkerframeInfo: 24*9880d681SAndroid Build Coastguard Worker stackSize: 8 25*9880d681SAndroid Build Coastguard Worker adjustsStack: true 26*9880d681SAndroid Build Coastguard Worker hasCalls: true 27*9880d681SAndroid Build Coastguard WorkerfixedStack: 28*9880d681SAndroid Build Coastguard Worker - { id: 0, type: spill-slot, offset: -16, size: 8, alignment: 16 } 29*9880d681SAndroid Build Coastguard Workerbody: | 30*9880d681SAndroid Build Coastguard Worker bb.0.entry: 31*9880d681SAndroid Build Coastguard Worker liveins: %ecx, %edi, %edx, %esi, %rbx 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker PUSH64r killed %rbx, implicit-def %rsp, implicit %rsp 34*9880d681SAndroid Build Coastguard Worker CFI_INSTRUCTION .cfi_def_cfa_offset 16 35*9880d681SAndroid Build Coastguard Worker ; CHECK: CFI_INSTRUCTION .cfi_offset %rbx, -16 36*9880d681SAndroid Build Coastguard Worker CFI_INSTRUCTION .cfi_offset %rbx, -16 37*9880d681SAndroid Build Coastguard Worker %ebx = COPY %edi, implicit-def %rbx 38*9880d681SAndroid Build Coastguard Worker %ebx = ADD32rr %ebx, killed %esi, implicit-def dead %eflags 39*9880d681SAndroid Build Coastguard Worker %ebx = ADD32rr %ebx, killed %edx, implicit-def dead %eflags 40*9880d681SAndroid Build Coastguard Worker %ebx = ADD32rr %ebx, killed %ecx, implicit-def dead %eflags 41*9880d681SAndroid Build Coastguard Worker %edi = COPY %ebx 42*9880d681SAndroid Build Coastguard Worker CALL64pcrel32 @foo, csr_64, implicit %rsp, implicit %edi, implicit-def %rsp 43*9880d681SAndroid Build Coastguard Worker %eax = LEA64_32r killed %rbx, 1, %rbx, 0, _ 44*9880d681SAndroid Build Coastguard Worker %rbx = POP64r implicit-def %rsp, implicit %rsp 45*9880d681SAndroid Build Coastguard Worker RETQ %eax 46*9880d681SAndroid Build Coastguard Worker... 47*9880d681SAndroid Build Coastguard Worker 48