1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple aarch64 -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s
3
4name:            pat1
5tracksRegLiveness: true
6body:             |
7  bb.0:
8    liveins: $x0, $x1
9    ; Fold ((0-A) + B) -> B - A
10    ; CHECK-LABEL: name: pat1
11    ; CHECK: liveins: $x0, $x1
12    ; CHECK: %copy1:_(s64) = COPY $x0
13    ; CHECK: %copy2:_(s64) = COPY $x1
14    ; CHECK: %add:_(s64) = G_SUB %copy2, %copy1
15    ; CHECK: $x0 = COPY %add(s64)
16    ; CHECK: RET_ReallyLR implicit $x0
17    %copy1:_(s64) = COPY $x0
18    %copy2:_(s64) = COPY $x1
19    %zero:_(s64) = G_CONSTANT i64 0
20    %sub:_(s64) = G_SUB %zero, %copy1
21    %add:_(s64) = G_ADD %sub, %copy2
22    $x0 = COPY %add(s64)
23    RET_ReallyLR implicit $x0
24
25...
26---
27name:            pat2
28tracksRegLiveness: true
29body:             |
30  bb.0:
31    liveins: $x0, $x1
32    ; Fold (A + (0-B)) -> A - B
33    ; CHECK-LABEL: name: pat2
34    ; CHECK: liveins: $x0, $x1
35    ; CHECK: %copy1:_(s64) = COPY $x0
36    ; CHECK: %copy2:_(s64) = COPY $x1
37    ; CHECK: %add:_(s64) = G_SUB %copy1, %copy2
38    ; CHECK: $x0 = COPY %add(s64)
39    ; CHECK: RET_ReallyLR implicit $x0
40    %copy1:_(s64) = COPY $x0
41    %copy2:_(s64) = COPY $x1
42    %zero:_(s64) = G_CONSTANT i64 0
43    %sub:_(s64) = G_SUB %zero, %copy2
44    %add:_(s64) = G_ADD %copy1, %sub
45    $x0 = COPY %add(s64)
46    RET_ReallyLR implicit $x0
47
48...
49