[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / AArch64 / machine-combiner.mir
blob7b3904b694a5474a245c0bbecf0885d2609dea2d
1 # RUN: llc -mtriple=aarch64-none-linux-gnu -mcpu=cortex-a57 -enable-unsafe-fp-math \
2 # RUN:     -run-pass machine-combiner -machine-combiner-inc-threshold=0 \
3 # RUN:     -machine-combiner-verify-pattern-order=true -verify-machineinstrs  -o - %s | FileCheck %s
4 ---
5 # Test incremental depth updates succeed when triggered after the removal of
6 # the first instruction in a basic block.
8 # CHECK-LABEL: name: inc_update_iterator_test
9 name:            inc_update_iterator_test
10 registers:
11   - { id: 0, class: fpr64 }
12   - { id: 1, class: gpr32 }
13   - { id: 2, class: gpr32 }
14   - { id: 3, class: gpr32 }
15   - { id: 4, class: gpr32 }
16   - { id: 5, class: gpr32 }
17   - { id: 6, class: gpr32 }
18   - { id: 7, class: fpr64 }
19   - { id: 8, class: fpr64 }
20   - { id: 9, class: fpr64 }
21 body:             |
22   bb.0:
23     successors: %bb.1, %bb.2
25     %3 = COPY $w2
26     %2 = COPY $w1
27     %1 = COPY $w0
28     %0 = COPY $d0
29     %4 = SUBSWrr %1, %2, implicit-def $nzcv
30     Bcc 13, %bb.2, implicit $nzcv
31     B %bb.1
33   bb.1:
34     ; CHECK: MADDWrrr %1, %2, %3
35     %5 = MADDWrrr %1, %2, $wzr
36     %6 = ADDWrr %3, killed %5
37     %7 = SCVTFUWDri killed %6
38     ; CHECK: FMADDDrrr %7, %7, %0
39     %8 = FMULDrr %7, %7
40     %9 = FADDDrr %0, killed %8
41     $d0 = COPY %9
42     RET_ReallyLR implicit $d0
44   bb.2:
45     $d0 = COPY %0
46     RET_ReallyLR implicit $d0
48 ...