diff options
author | Alex Lorenz <arphaman@gmail.com> | 2015-07-23 23:09:07 +0000 |
---|---|---|
committer | Alex Lorenz <arphaman@gmail.com> | 2015-07-23 23:09:07 +0000 |
commit | 8cfc68677cd69c52ac9af50bac90410a98e1972e (patch) | |
tree | 006c3a8493c788dc1275a611ded859e54203d47f /llvm/test/CodeGen/MIR/X86 | |
parent | 8abca7e7294352390af75a6a24d264a4a9c8643f (diff) | |
download | bcm5719-llvm-8cfc68677cd69c52ac9af50bac90410a98e1972e.tar.gz bcm5719-llvm-8cfc68677cd69c52ac9af50bac90410a98e1972e.zip |
MIR Serialization: Serialize the '.cfi_offset' CFI instruction.
Reviewers: Duncan P. N. Exon Smith
llvm-svn: 243062
Diffstat (limited to 'llvm/test/CodeGen/MIR/X86')
3 files changed, 135 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/MIR/X86/cfi-offset.mir b/llvm/test/CodeGen/MIR/X86/cfi-offset.mir new file mode 100644 index 00000000000..548bcb45924 --- /dev/null +++ b/llvm/test/CodeGen/MIR/X86/cfi-offset.mir @@ -0,0 +1,47 @@ +# RUN: llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -o /dev/null %s | FileCheck %s +# This test ensures that the MIR parser parses the .cfi_offset operands +# correctly. + +--- | + + declare void @foo(i32) + + define i32 @test(i32 %a, i32 %b, i32 %c, i32 %d) { + entry: + %add = add nsw i32 %b, %a + %add1 = add nsw i32 %add, %c + %add2 = add nsw i32 %add1, %d + tail call void @foo(i32 %add2) + %add6 = add nsw i32 %add2, %add2 + ret i32 %add6 + } + +... +--- +name: test +tracksRegLiveness: true +frameInfo: + stackSize: 8 + adjustsStack: true + hasCalls: true +fixedStack: + - { id: 0, type: spill-slot, offset: -16, size: 8, alignment: 16 } +body: + - id: 0 + name: entry + instructions: + - 'PUSH64r killed %rbx, implicit-def %rsp, implicit %rsp' + - 'CFI_INSTRUCTION .cfi_def_cfa_offset 16' + # CHECK: CFI_INSTRUCTION .cfi_offset %rbx, -16 + - 'CFI_INSTRUCTION .cfi_offset %rbx, -16' + - '%ebx = COPY %edi, implicit-def %rbx' + - '%ebx = ADD32rr %ebx, killed %esi, implicit-def dead %eflags' + - '%ebx = ADD32rr %ebx, killed %edx, implicit-def dead %eflags' + - '%ebx = ADD32rr %ebx, killed %ecx, implicit-def dead %eflags' + - '%edi = COPY %ebx' + - 'CALL64pcrel32 @foo, csr_64, implicit %rsp, implicit %edi, implicit-def %rsp' + - '%eax = LEA64_32r killed %rbx, 1, %rbx, 0, _' + - '%rbx = POP64r implicit-def %rsp, implicit %rsp' + - 'RETQ %eax' +... + diff --git a/llvm/test/CodeGen/MIR/X86/expected-comma-after-cfi-register.mir b/llvm/test/CodeGen/MIR/X86/expected-comma-after-cfi-register.mir new file mode 100644 index 00000000000..8c4eac037fa --- /dev/null +++ b/llvm/test/CodeGen/MIR/X86/expected-comma-after-cfi-register.mir @@ -0,0 +1,44 @@ +# RUN: not llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -o /dev/null %s 2>&1 | FileCheck %s + +--- | + + declare void @foo(i32) + + define i32 @test(i32 %a, i32 %b, i32 %c, i32 %d) { + entry: + %add = add nsw i32 %b, %a + %add1 = add nsw i32 %add, %c + %add2 = add nsw i32 %add1, %d + tail call void @foo(i32 %add2) + %add6 = add nsw i32 %add2, %add2 + ret i32 %add6 + } + +... +--- +name: test +tracksRegLiveness: true +frameInfo: + stackSize: 8 + adjustsStack: true + hasCalls: true +fixedStack: + - { id: 0, type: spill-slot, offset: -16, size: 8, alignment: 16 } +body: + - id: 0 + name: entry + instructions: + - 'PUSH64r killed %rbx, implicit-def %rsp, implicit %rsp' + - 'CFI_INSTRUCTION .cfi_def_cfa_offset 16' + # CHECK: [[@LINE+1]]:43: expected ',' + - 'CFI_INSTRUCTION .cfi_offset %rbx -16' + - '%ebx = COPY %edi, implicit-def %rbx' + - '%ebx = ADD32rr %ebx, killed %esi, implicit-def dead %eflags' + - '%ebx = ADD32rr %ebx, killed %edx, implicit-def dead %eflags' + - '%ebx = ADD32rr %ebx, killed %ecx, implicit-def dead %eflags' + - '%edi = COPY %ebx' + - 'CALL64pcrel32 @foo, csr_64, implicit %rsp, implicit %edi, implicit-def %rsp' + - '%eax = LEA64_32r killed %rbx, 1, %rbx, 0, _' + - '%rbx = POP64r implicit-def %rsp, implicit %rsp' + - 'RETQ %eax' +... diff --git a/llvm/test/CodeGen/MIR/X86/expected-register-after-cfi-operand.mir b/llvm/test/CodeGen/MIR/X86/expected-register-after-cfi-operand.mir new file mode 100644 index 00000000000..7178c1d4568 --- /dev/null +++ b/llvm/test/CodeGen/MIR/X86/expected-register-after-cfi-operand.mir @@ -0,0 +1,44 @@ +# RUN: not llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -o /dev/null %s 2>&1 | FileCheck %s + +--- | + + declare void @foo(i32) + + define i32 @test(i32 %a, i32 %b, i32 %c, i32 %d) { + entry: + %add = add nsw i32 %b, %a + %add1 = add nsw i32 %add, %c + %add2 = add nsw i32 %add1, %d + tail call void @foo(i32 %add2) + %add6 = add nsw i32 %add2, %add2 + ret i32 %add6 + } + +... +--- +name: test +tracksRegLiveness: true +frameInfo: + stackSize: 8 + adjustsStack: true + hasCalls: true +fixedStack: + - { id: 0, type: spill-slot, offset: -16, size: 8, alignment: 16 } +body: + - id: 0 + name: entry + instructions: + - 'PUSH64r killed %rbx, implicit-def %rsp, implicit %rsp' + - 'CFI_INSTRUCTION .cfi_def_cfa_offset 16' + # CHECK: [[@LINE+1]]:38: expected a cfi register + - 'CFI_INSTRUCTION .cfi_offset %0, -16' + - '%ebx = COPY %edi, implicit-def %rbx' + - '%ebx = ADD32rr %ebx, killed %esi, implicit-def dead %eflags' + - '%ebx = ADD32rr %ebx, killed %edx, implicit-def dead %eflags' + - '%ebx = ADD32rr %ebx, killed %ecx, implicit-def dead %eflags' + - '%edi = COPY %ebx' + - 'CALL64pcrel32 @foo, csr_64, implicit %rsp, implicit %edi, implicit-def %rsp' + - '%eax = LEA64_32r killed %rbx, 1, %rbx, 0, _' + - '%rbx = POP64r implicit-def %rsp, implicit %rsp' + - 'RETQ %eax' +... |