brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · f85dd15 Raw
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