| # RUN: llc -run-pass x86-fixup-LEAs -mtriple=i386 -verify-machineinstrs -mcpu=corei7-avx -o - %s | FileCheck %s |
| # |
| # Test that several LEA => ADD transforms get substitutions applied to them, |
| # for corner cases that we can only hit with -mtriple=i386. |
| --- |
| name: test2add_32 |
| # CHECK: name: test2add_32 |
| alignment: 16 |
| tracksRegLiveness: true |
| debugInstrRef: true |
| liveins: |
| - { reg: '$eax' } |
| - { reg: '$ebp' } |
| # CHECK: debugValueSubstitutions: |
| # CHECK-NAME: - { srcinst: 1, srcop: 0, dstinst: 2, dstop: 0, subreg: 0 } |
| body: | |
| bb.0: |
| liveins: $eax, $ebp |
| |
| ; CHECK: $eax = ADD32ri {{.*}} debug-instr-number 2 |
| $eax = LEA32r killed $eax, 1, killed $ebp, -5, $noreg, debug-instr-number 1 |
| RET64 $eax |
| |
| ... |
| --- |
| name: testleais_ebp_32 |
| # CHECK-LABEL: name: testleais_ebp_32 |
| alignment: 16 |
| tracksRegLiveness: true |
| debugInstrRef: true |
| liveins: |
| - { reg: '$eax' } |
| - { reg: '$ebx' } |
| - { reg: '$ebp' } |
| # CHECK: debugValueSubstitutions: |
| # CHECK-NEXT: - { srcinst: 1, srcop: 0, dstinst: 2, dstop: 0, subreg: 0 } |
| body: | |
| bb.0: |
| liveins: $eax, $ebp, $ebx |
| |
| ; CHECK: $ebx = LEA32r $noreg, 2, $ebp, 0, $noreg, debug-instr-number 2 |
| $ebx = LEA32r killed $ebp, 1, $ebp, 0, $noreg, debug-instr-number 1 |
| RET64 $ebx |
| |
| ... |
| --- |
| name: testleabid_ebp_leaisd_32 |
| # CHECK-LABEL: name: testleabid_ebp_leaisd_32 |
| alignment: 16 |
| tracksRegLiveness: true |
| debugInstrRef: true |
| liveins: |
| - { reg: '$ebx' } |
| - { reg: '$ebp' } |
| # CHECK: debugValueSubstitutions: |
| # CHECK-NEXT: - { srcinst: 1, srcop: 0, dstinst: 2, dstop: 0, subreg: 0 } |
| body: | |
| bb.0: |
| liveins: $eax, $ebp, $ebx |
| |
| ; CHECK: $ebx = LEA32r $noreg, 2, $ebp, 5, $noreg, debug-instr-number 2 |
| $ebx = LEA32r $ebp, 1, $ebp, 5, $noreg, debug-instr-number 1 |
| RET64 $ebx |
| |
| ... |