brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · d25cb65 Raw
85 lines · plain
1# RUN: llc -mtriple=i386-unknown-linux-gnu -mcpu=slm -run-pass post-RA-sched -o - %s | FileCheck %s2# RUN: llc -mtriple=i386-unknown-linux-gnu -mcpu=slm -passes=post-RA-sched -o - %s | FileCheck %s3#4# Verify that the critical antidependence breaker does not consider5# a high byte register as available as a replacement register6# in a certain context.7--- |8 9  define void @main() { ret void }10 11...12---13# CHECK-LABEL: main14name:            main15tracksRegLiveness: true16frameInfo:17  stackSize:       5218fixedStack:19  - { id: 0, type: spill-slot, offset: -20, size: 4, alignment: 4, callee-saved-register: '$esi' }20  - { id: 1, type: spill-slot, offset: -16, size: 4, alignment: 4, callee-saved-register: '$edi' }21  - { id: 2, type: spill-slot, offset: -12, size: 4, alignment: 4, callee-saved-register: '$ebx' }22  - { id: 3, type: spill-slot, offset: -8, size: 4, alignment: 4, callee-saved-register: '$ebp' }23stack:24  - { id: 0, type: spill-slot, offset: -53, size: 1, alignment: 1 }25  - { id: 1, type: spill-slot, offset: -48, size: 4, alignment: 4 }26  - { id: 2, type: spill-slot, offset: -32, size: 4, alignment: 4 }27body:             |28  bb.0:29    liveins: $ebp, $ebx, $edi, $esi30 31    frame-setup PUSH32r killed $ebp, implicit-def $esp, implicit $esp32    frame-setup PUSH32r killed $ebx, implicit-def $esp, implicit $esp33    frame-setup PUSH32r killed $edi, implicit-def $esp, implicit $esp34    frame-setup PUSH32r killed $esi, implicit-def $esp, implicit $esp35    $esp = frame-setup SUB32ri8 $esp, 36, implicit-def dead $eflags36    $eax = MOV32ri 137    $ebp = MOV32ri 238    $ebx = MOV32ri 339    $ecx = MOV32ri 440    $edi = MOV32ri 541    $edx = MOV32ri 642 43  bb.1:44    liveins: $eax, $ebp, $ebx, $ecx, $edi, $edx45 46    $ebp = SHR32rCL killed $ebp, implicit-def dead $eflags, implicit $cl47    $ebp = XOR32rr killed $ebp, killed $ebx, implicit-def dead $eflags48    TEST32rr $edx, $edx, implicit-def $eflags49    $cl = SETCCr 5, implicit $eflags50    ; This %bl def is antidependent on the above use of $ebx51    $bl = MOV8rm $esp, 1, $noreg, 3, _ ; :: (load (s8) from %stack.0)52    $cl = OR8rr killed $cl, $bl, implicit-def dead $eflags53    $esi = MOVZX32rr8 killed $cl54    $esi = ADD32rr killed $esi, killed $edi, implicit-def dead $eflags55    $ecx = MOV32rm $esp, 1, $noreg, 24, _ ; :: (load (s32) from %stack.2)56    $edx = SAR32rCL killed $edx, implicit-def dead $eflags, implicit $cl57    TEST32rr killed $edx, $edx, implicit-def $eflags58    $cl = SETCCr 5, implicit $eflags59    ; Verify that removal of the $bl antidependence does not use $ch60    ; as a replacement register.61    ; CHECK: $cl = AND8rr killed $cl, killed $b62    $cl = AND8rr killed $cl, killed $bl, implicit-def dead $eflags63    CMP32ri8 $ebp, -1, implicit-def $eflags64    $edx = MOV32ri 065    JCC_1 %bb.3, 4, implicit $eflags66 67  bb.2:68    liveins: $cl, $eax, $ebp, $esi69 70    OR32mr $esp, 1, $noreg, 8, $noreg, killed $eax, implicit-def $eflags ; :: (store (s32) into %stack.1)71    $dl = SETCCr 5, implicit $eflags, implicit-def $edx72 73  bb.3:74    liveins: $cl, $ebp, $edx, $esi75 76    $eax = XOR32rr undef $eax, undef $eax, implicit-def dead $eflags77    $esp = ADD32ri8 $esp, 36, implicit-def dead $eflags78    $esi = POP32r implicit-def $esp, implicit $esp79    $edi = POP32r implicit-def $esp, implicit $esp80    $ebx = POP32r implicit-def $esp, implicit $esp81    $ebp = POP32r implicit-def $esp, implicit $esp82    RET 0, $eax83 84...85