[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / postlegalizercombiner-rotate.mir
blobeef80e054dcd4902a230f7c9bd4a2005dcf3f730
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple aarch64 -run-pass=aarch64-postlegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s
4 # Check that we simplify the constant rotate amount to be in range.
5 ---
6 name:            rotl
7 alignment:       4
8 legalized:       true
9 tracksRegLiveness: true
10 liveins:
11   - { reg: '$w0' }
12 body:             |
13   bb.1.entry:
14     liveins: $w0
16     ; CHECK-LABEL: name: rotl
17     ; CHECK: liveins: $w0
18     ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
19     ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16
20     ; CHECK: [[ROTL:%[0-9]+]]:_(s32) = G_ROTL [[COPY]], [[C]](s64)
21     ; CHECK: $w0 = COPY [[ROTL]](s32)
22     ; CHECK: RET_ReallyLR implicit $w0
23     %0:_(s32) = COPY $w0
24     %5:_(s64) = G_CONSTANT i64 -16
25     %2:_(s32) = G_ROTL %0, %5(s64)
26     $w0 = COPY %2(s32)
27     RET_ReallyLR implicit $w0
29 ...
30 ---
31 name:            rotr
32 alignment:       4
33 legalized:       true
34 tracksRegLiveness: true
35 liveins:
36   - { reg: '$w0' }
37 body:             |
38   bb.1.entry:
39     liveins: $w0
41     ; CHECK-LABEL: name: rotr
42     ; CHECK: liveins: $w0
43     ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
44     ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16
45     ; CHECK: [[ROTR:%[0-9]+]]:_(s32) = G_ROTR [[COPY]], [[C]](s64)
46     ; CHECK: $w0 = COPY [[ROTR]](s32)
47     ; CHECK: RET_ReallyLR implicit $w0
48     %0:_(s32) = COPY $w0
49     %5:_(s64) = G_CONSTANT i64 -16
50     %2:_(s32) = G_ROTR %0, %5(s64)
51     $w0 = COPY %2(s32)
52     RET_ReallyLR implicit $w0
54 ...
55 ---
56 name:            rotl_bitwidth_cst
57 alignment:       4
58 legalized:       true
59 tracksRegLiveness: true
60 liveins:
61   - { reg: '$w0' }
62 body:             |
63   bb.1.entry:
64     liveins: $w0
66     ; CHECK-LABEL: name: rotl_bitwidth_cst
67     ; CHECK: liveins: $w0
68     ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
69     ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
70     ; CHECK: [[ROTL:%[0-9]+]]:_(s32) = G_ROTL [[COPY]], [[C]](s64)
71     ; CHECK: $w0 = COPY [[ROTL]](s32)
72     ; CHECK: RET_ReallyLR implicit $w0
73     %0:_(s32) = COPY $w0
74     %5:_(s64) = G_CONSTANT i64 32
75     %2:_(s32) = G_ROTL %0, %5(s64)
76     $w0 = COPY %2(s32)
77     RET_ReallyLR implicit $w0
79 ...
80 ---
81 name:            rotl_bitwidth_minus_one_cst
82 alignment:       4
83 legalized:       true
84 tracksRegLiveness: true
85 liveins:
86   - { reg: '$w0' }
87 body:             |
88   bb.1.entry:
89     liveins: $w0
91     ; CHECK-LABEL: name: rotl_bitwidth_minus_one_cst
92     ; CHECK: liveins: $w0
93     ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
94     ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 31
95     ; CHECK: [[ROTL:%[0-9]+]]:_(s32) = G_ROTL [[COPY]], [[C]](s64)
96     ; CHECK: $w0 = COPY [[ROTL]](s32)
97     ; CHECK: RET_ReallyLR implicit $w0
98     %0:_(s32) = COPY $w0
99     %5:_(s64) = G_CONSTANT i64 31
100     %2:_(s32) = G_ROTL %0, %5(s64)
101     $w0 = COPY %2(s32)
102     RET_ReallyLR implicit $w0