[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / select-rotate.mir
blob3775ecea63b97e06618ac8aebce77a28e92c2d58
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=aarch64-unknown-unknown -verify-machineinstrs -run-pass=instruction-select -global-isel-abort=1 %s -o - | FileCheck %s
3 ---
4 name:            fold_ror_eor
5 alignment:       4
6 legalized:       true
7 regBankSelected: true
8 tracksRegLiveness: true
9 liveins:
10   - { reg: '$w0' }
11 body:             |
12   bb.1.entry:
13     liveins: $w0
15     ; Our codegen differs from SDAG here, we decide to fold in LHS
16     ; operand instead of RHS since they're both rotates and XOR is commutative.
17     ; Either is valid.
19     ; CHECK-LABEL: name: fold_ror_eor
20     ; CHECK: liveins: $w0
21     ; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
22     ; CHECK: [[EXTRWrri:%[0-9]+]]:gpr32 = EXTRWrri [[COPY]], [[COPY]], 11
23     ; CHECK: [[EORWrs:%[0-9]+]]:gpr32 = EORWrs [[EXTRWrri]], [[COPY]], 198
24     ; CHECK: $w0 = COPY [[EORWrs]]
25     ; CHECK: RET_ReallyLR implicit $w0
26     %0:gpr(s32) = COPY $w0
27     %13:gpr(s64) = G_CONSTANT i64 6
28     %2:gpr(s32) = G_ROTR %0, %13(s64)
29     %14:gpr(s64) = G_CONSTANT i64 11
30     %4:gpr(s32) = G_ROTR %0, %14(s64)
31     %5:gpr(s32) = G_XOR %2, %4
32     $w0 = COPY %5(s32)
33     RET_ReallyLR implicit $w0
35 ...
36 ---
37 name:            fold_ror_eor_rhs_only
38 alignment:       4
39 legalized:       true
40 regBankSelected: true
41 tracksRegLiveness: true
42 liveins:
43   - { reg: '$w0' }
44   - { reg: '$w1' }
45 frameInfo:
46   maxAlignment:    1
47 machineFunctionInfo: {}
48 body:             |
49   bb.1.entry:
50     liveins: $w0, $w1
52     ; CHECK-LABEL: name: fold_ror_eor_rhs_only
53     ; CHECK: liveins: $w0, $w1
54     ; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
55     ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
56     ; CHECK: [[EORWrs:%[0-9]+]]:gpr32 = EORWrs [[COPY1]], [[COPY]], 198
57     ; CHECK: $w0 = COPY [[EORWrs]]
58     ; CHECK: RET_ReallyLR implicit $w0
59     %0:gpr(s32) = COPY $w0
60     %1:gpr(s32) = COPY $w1
61     %9:gpr(s64) = G_CONSTANT i64 6
62     %3:gpr(s32) = G_ROTR %0, %9(s64)
63     %4:gpr(s32) = G_XOR %1, %3
64     $w0 = COPY %4(s32)
65     RET_ReallyLR implicit $w0
67 ...