100 lines · plain
1# RUN: llc -mtriple=x86_64 -run-pass none -o - %s | FileCheck %s2# This test ensures that the MIR parser parses virtual register definitions and3# references correctly.4 5--- |6 7 define i32 @bar(i32 %a) {8 entry:9 %0 = icmp sle i32 %a, 1010 br i1 %0, label %less, label %exit11 12 less:13 ret i32 014 15 exit:16 ret i32 %a17 }18 19 define i32 @foo(i32 %a) {20 entry:21 %0 = icmp sle i32 %a, 1022 br i1 %0, label %less, label %exit23 24 less:25 ret i32 026 27 exit:28 ret i32 %a29 }30 31...32---33name: bar34tracksRegLiveness: true35# CHECK: registers:36# CHECK-NEXT: - { id: 0, class: gr32, preferred-register: '', flags: [ ] }37# CHECK-NEXT: - { id: 1, class: gr32, preferred-register: '', flags: [ ] }38# CHECK-NEXT: - { id: 2, class: gr32, preferred-register: '', flags: [ ] }39registers:40 - { id: 0, class: gr32 }41 - { id: 1, class: gr32 }42 - { id: 2, class: gr32 }43body: |44 bb.0.entry:45 successors: %bb.2.exit, %bb.1.less46 liveins: $edi47 ; CHECK: %0:gr32 = COPY $edi48 ; CHECK-NEXT: %1:gr32 = SUB32ri8 %0, 1049 %0 = COPY $edi50 %1 = SUB32ri8 %0, 10, implicit-def $eflags51 JCC_1 %bb.2.exit, 15, implicit $eflags52 JMP_1 %bb.1.less53 54 bb.1.less:55 ; CHECK: %2:gr32 = MOV32r056 ; CHECK-NEXT: $eax = COPY %257 %2 = MOV32r0 implicit-def $eflags58 $eax = COPY %259 RET64 $eax60 61 bb.2.exit:62 $eax = COPY %063 RET64 $eax64...65---66name: foo67tracksRegLiveness: true68# CHECK: name: foo69# CHECK: registers:70# CHECK-NEXT: - { id: 0, class: gr32, preferred-register: '', flags: [ ] }71# CHECK-NEXT: - { id: 1, class: gr32, preferred-register: '', flags: [ ] }72# CHECK-NEXT: - { id: 2, class: gr32, preferred-register: '', flags: [ ] }73registers:74 - { id: 2, class: gr32 }75 - { id: 0, class: gr32 }76 - { id: 10, class: gr32 }77body: |78 bb.0.entry:79 successors: %bb.2.exit, %bb.1.less80 liveins: $edi81 ; CHECK: %0:gr32 = COPY $edi82 ; CHECK-NEXT: %1:gr32 = SUB32ri8 %0, 1083 %2 = COPY $edi84 %0 = SUB32ri8 %2, 10, implicit-def $eflags85 JCC_1 %bb.2.exit, 15, implicit $eflags86 JMP_1 %bb.1.less87 88 bb.1.less:89 ; CHECK: %2:gr32 = MOV32r090 ; CHECK-NEXT: $eax = COPY %291 %10 = MOV32r0 implicit-def $eflags92 $eax = COPY %1093 RET64 $eax94 95 bb.2.exit:96 ; CHECK: $eax = COPY %097 $eax = COPY %298 RET64 $eax99...100