[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / select-hint.mir
blobdc49c952a4d735acfe016040745d6d6584f71e05
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple aarch64 -debugify-and-strip-all-safe -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
4 # Check that we remove hints during selection.
6 ...
7 ---
8 name:            assert_zext_gpr
9 legalized:       true
10 regBankSelected: true
11 tracksRegLiveness: true
12 body:             |
13   bb.0:
14     liveins: $w0, $w1
16     ; CHECK-LABEL: name: assert_zext_gpr
17     ; CHECK: liveins: $w0, $w1
18     ; CHECK: %copy:gpr32all = COPY $w0
19     ; CHECK: $w1 = COPY %copy
20     ; CHECK: RET_ReallyLR implicit $w1
21     %copy:gpr(s32) = COPY $w0
22     %copy_assert_zext:gpr(s32) = G_ASSERT_ZEXT %copy, 16
23     $w1 = COPY %copy_assert_zext(s32)
24     RET_ReallyLR implicit $w1
26 ...
27 ---
28 name:            assert_zext_fpr
29 legalized:       true
30 regBankSelected: true
31 tracksRegLiveness: true
32 body:             |
33   bb.0:
34     liveins: $s0, $s1
36     ; CHECK-LABEL: name: assert_zext_fpr
37     ; CHECK: liveins: $s0, $s1
38     ; CHECK: %copy:fpr32 = COPY $s0
39     ; CHECK: $s1 = COPY %copy
40     ; CHECK: RET_ReallyLR implicit $s1
41     %copy:fpr(s32) = COPY $s0
42     %copy_assert_zext:fpr(s32) = G_ASSERT_ZEXT %copy, 16
43     $s1 = COPY %copy_assert_zext(s32)
44     RET_ReallyLR implicit $s1
46 ...
47 ---
48 name:            assert_zext_in_between_cross_bank
49 legalized:       true
50 regBankSelected: true
51 tracksRegLiveness: true
52 body:             |
53   bb.0:
54     liveins: $s0, $w1
56     ; CHECK-LABEL: name: assert_zext_in_between_cross_bank
57     ; CHECK: liveins: $s0, $w1
58     ; CHECK: %copy:fpr32 = COPY $s0
59     ; CHECK: $w1 = COPY %copy
60     ; CHECK: RET_ReallyLR implicit $w1
61     %copy:fpr(s32) = COPY $s0
62     %copy_assert_zext:fpr(s32) = G_ASSERT_ZEXT %copy, 16
63     $w1 = COPY %copy_assert_zext(s32)
64     RET_ReallyLR implicit $w1
66 ...
67 ---
68 name:            assert_zext_decided_dst_class
69 legalized:       true
70 regBankSelected: true
71 tracksRegLiveness: true
72 body:             |
73   bb.0:
74     liveins: $w0, $w1, $w2
76     ; Users of G_ASSERT_ZEXT may end up deciding the destination register class.
77     ; Make sure that the source register class is constrained.
79     ; CHECK-LABEL: name: assert_zext_decided_dst_class
80     ; CHECK: liveins: $w0, $w1, $w2
81     ; CHECK: %copy_with_rc:gpr32sp = COPY $w2
82     ; CHECK: $w1 = COPY %copy_with_rc
83     ; CHECK: RET_ReallyLR implicit $w1
84     %copy:gpr(s32) = COPY $w0
85     %copy_assert_zext:gpr(s32) = G_ASSERT_ZEXT %copy, 16
86     %copy_with_rc:gpr32sp(s32) = COPY $w2
87     $w1 = COPY %copy_with_rc(s32)
88     RET_ReallyLR implicit $w1
90 ...
91 ---
92 name:            assert_sext_gpr
93 legalized:       true
94 regBankSelected: true
95 tracksRegLiveness: true
96 body:             |
97   bb.0:
98     liveins: $w0, $w1
100     ; CHECK-LABEL: name: assert_sext_gpr
101     ; CHECK: liveins: $w0, $w1
102     ; CHECK: %copy:gpr32all = COPY $w0
103     ; CHECK: $w1 = COPY %copy
104     ; CHECK: RET_ReallyLR implicit $w1
105     %copy:gpr(s32) = COPY $w0
106     %copy_assert_sext:gpr(s32) = G_ASSERT_SEXT %copy, 16
107     $w1 = COPY %copy_assert_sext(s32)
108     RET_ReallyLR implicit $w1
112 name:            assert_sext_fpr
113 legalized:       true
114 regBankSelected: true
115 tracksRegLiveness: true
116 body:             |
117   bb.0:
118     liveins: $s0, $s1
120     ; CHECK-LABEL: name: assert_sext_fpr
121     ; CHECK: liveins: $s0, $s1
122     ; CHECK: %copy:fpr32 = COPY $s0
123     ; CHECK: $s1 = COPY %copy
124     ; CHECK: RET_ReallyLR implicit $s1
125     %copy:fpr(s32) = COPY $s0
126     %copy_assert_sext:fpr(s32) = G_ASSERT_SEXT %copy, 16
127     $s1 = COPY %copy_assert_sext(s32)
128     RET_ReallyLR implicit $s1
132 name:            assert_sext_in_between_cross_bank
133 legalized:       true
134 regBankSelected: true
135 tracksRegLiveness: true
136 body:             |
137   bb.0:
138     liveins: $s0, $w1
140     ; CHECK-LABEL: name: assert_sext_in_between_cross_bank
141     ; CHECK: liveins: $s0, $w1
142     ; CHECK: %copy:fpr32 = COPY $s0
143     ; CHECK: $w1 = COPY %copy
144     ; CHECK: RET_ReallyLR implicit $w1
145     %copy:fpr(s32) = COPY $s0
146     %copy_assert_sext:fpr(s32) = G_ASSERT_SEXT %copy, 16
147     $w1 = COPY %copy_assert_sext(s32)
148     RET_ReallyLR implicit $w1
152 name:            assert_sext_decided_dst_class
153 legalized:       true
154 regBankSelected: true
155 tracksRegLiveness: true
156 body:             |
157   bb.0:
158     liveins: $w0, $w1, $w2
160     ; Users of G_ASSERT_SEXT may end up deciding the destination register class.
161     ; Make sure that the source register class is constrained.
163     ; CHECK-LABEL: name: assert_sext_decided_dst_class
164     ; CHECK: liveins: $w0, $w1, $w2
165     ; CHECK: %copy_with_rc:gpr32sp = COPY $w2
166     ; CHECK: $w1 = COPY %copy_with_rc
167     ; CHECK: RET_ReallyLR implicit $w1
168     %copy:gpr(s32) = COPY $w0
169     %copy_assert_sext:gpr(s32) = G_ASSERT_SEXT %copy, 16
170     %copy_with_rc:gpr32sp(s32) = COPY $w2
171     $w1 = COPY %copy_with_rc(s32)
172     RET_ReallyLR implicit $w1