[TableGen] Fix validateOperandClass for non Phyical Reg (#118146)
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / prelegalizercombiner-funnel-shifts-to-rotates.mir
blob842df6531f3ca249dca91351acc546e24cb09b40
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple aarch64-apple-ios  -run-pass=aarch64-prelegalizer-combiner %s -o - -verify-machineinstrs | FileCheck %s
4 ---
5 name:            test_rotr
6 alignment:       4
7 tracksRegLiveness: true
8 liveins:
9   - { reg: '$w0' }
10   - { reg: '$w1' }
11 frameInfo:
12   maxAlignment:    1
13 machineFunctionInfo: {}
14 body:             |
15   bb.1.entry:
16     liveins: $w0, $w1
18     ; CHECK-LABEL: name: test_rotr
19     ; CHECK: liveins: $w0, $w1
20     ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
21     ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
22     ; CHECK: [[ROTR:%[0-9]+]]:_(s32) = G_ROTR [[COPY]], [[COPY1]](s32)
23     ; CHECK: $w0 = COPY [[ROTR]](s32)
24     ; CHECK: RET_ReallyLR implicit $w0
25     %0:_(s32) = COPY $w0
26     %1:_(s32) = COPY $w1
27     %2:_(s32) = G_FSHR %0, %0, %1(s32)
28     $w0 = COPY %2(s32)
29     RET_ReallyLR implicit $w0
31 ...
32 ---
33 name:            test_rotl
34 alignment:       4
35 tracksRegLiveness: true
36 liveins:
37   - { reg: '$w0' }
38   - { reg: '$w1' }
39 frameInfo:
40   maxAlignment:    1
41 machineFunctionInfo: {}
42 body:             |
43   bb.1.entry:
44     liveins: $w0, $w1
46     ; CHECK-LABEL: name: test_rotl
47     ; CHECK: liveins: $w0, $w1
48     ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
49     ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
50     ; CHECK: [[ROTL:%[0-9]+]]:_(s32) = G_ROTL [[COPY]], [[COPY1]](s32)
51     ; CHECK: $w0 = COPY [[ROTL]](s32)
52     ; CHECK: RET_ReallyLR implicit $w0
53     %0:_(s32) = COPY $w0
54     %1:_(s32) = COPY $w1
55     %2:_(s32) = G_FSHL %0, %0, %1(s32)
56     $w0 = COPY %2(s32)
57     RET_ReallyLR implicit $w0
59 ...
60 ---
61 name:            test_vector_rotr
62 alignment:       4
63 tracksRegLiveness: true
64 liveins:
65   - { reg: '$w0' }
66   - { reg: '$w1' }
67 frameInfo:
68   maxAlignment:    1
69 machineFunctionInfo: {}
70 body:             |
71   bb.1.entry:
72     liveins: $q0, $q1
74     ; CHECK-LABEL: name: test_vector_rotr
75     ; CHECK: liveins: $q0, $q1
76     ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0
77     ; CHECK: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q1
78     ; CHECK: [[ROTR:%[0-9]+]]:_(<4 x s32>) = G_ROTR [[COPY]], [[COPY1]](<4 x s32>)
79     ; CHECK: $q0 = COPY [[ROTR]](<4 x s32>)
80     ; CHECK: RET_ReallyLR implicit $q0
81     %0:_(<4 x s32>) = COPY $q0
82     %1:_(<4 x s32>) = COPY $q1
83     %2:_(<4 x s32>) = G_FSHR %0, %0, %1(<4 x s32>)
84     $q0 = COPY %2(<4 x s32>)
85     RET_ReallyLR implicit $q0
87 ...
88 ---
89 name:            test_vector_rotl
90 alignment:       4
91 tracksRegLiveness: true
92 liveins:
93   - { reg: '$w0' }
94   - { reg: '$w1' }
95 frameInfo:
96   maxAlignment:    1
97 machineFunctionInfo: {}
98 body:             |
99   bb.1.entry:
100     liveins: $q0, $q1
102     ; CHECK-LABEL: name: test_vector_rotl
103     ; CHECK: liveins: $q0, $q1
104     ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0
105     ; CHECK: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q1
106     ; CHECK: [[ROTL:%[0-9]+]]:_(<4 x s32>) = G_ROTL [[COPY]], [[COPY1]](<4 x s32>)
107     ; CHECK: $q0 = COPY [[ROTL]](<4 x s32>)
108     ; CHECK: RET_ReallyLR implicit $q0
109     %0:_(<4 x s32>) = COPY $q0
110     %1:_(<4 x s32>) = COPY $q1
111     %2:_(<4 x s32>) = G_FSHL %0, %0, %1(<4 x s32>)
112     $q0 = COPY %2(<4 x s32>)
113     RET_ReallyLR implicit $q0