1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -verify-machineinstrs -mtriple aarch64-unknown-unknown -run-pass=regbankselect -mattr=+fullfp16 %s -o - | FileCheck %s
11 tracksRegLiveness: true
14 machineFunctionInfo: {}
19 ; CHECK-LABEL: name: test_f16.round
21 ; CHECK: [[COPY:%[0-9]+]]:fpr(s16) = COPY $h0
22 ; CHECK: [[INTRINSIC_ROUND:%[0-9]+]]:fpr(s16) = G_INTRINSIC_ROUND [[COPY]]
23 ; CHECK: $h0 = COPY [[INTRINSIC_ROUND]](s16)
24 ; CHECK: RET_ReallyLR implicit $h0
26 %1:_(s16) = G_INTRINSIC_ROUND %0
28 RET_ReallyLR implicit $h0
35 tracksRegLiveness: true
38 machineFunctionInfo: {}
43 ; CHECK-LABEL: name: test_f32.round
45 ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
46 ; CHECK: [[INTRINSIC_ROUND:%[0-9]+]]:fpr(s32) = G_INTRINSIC_ROUND [[COPY]]
47 ; CHECK: $s0 = COPY [[INTRINSIC_ROUND]](s32)
48 ; CHECK: RET_ReallyLR implicit $s0
50 %1:_(s32) = G_INTRINSIC_ROUND %0
52 RET_ReallyLR implicit $s0
59 tracksRegLiveness: true
62 machineFunctionInfo: {}
67 ; CHECK-LABEL: name: test_f64.round
69 ; CHECK: [[COPY:%[0-9]+]]:fpr(s64) = COPY $d0
70 ; CHECK: [[INTRINSIC_ROUND:%[0-9]+]]:fpr(s64) = G_INTRINSIC_ROUND [[COPY]]
71 ; CHECK: $d0 = COPY [[INTRINSIC_ROUND]](s64)
72 ; CHECK: RET_ReallyLR implicit $d0
74 %1:_(s64) = G_INTRINSIC_ROUND %0
76 RET_ReallyLR implicit $d0
80 name: test_v8f16.round
83 tracksRegLiveness: true
86 machineFunctionInfo: {}
91 ; CHECK-LABEL: name: test_v8f16.round
93 ; CHECK: [[COPY:%[0-9]+]]:fpr(<8 x s16>) = COPY $q0
94 ; CHECK: [[INTRINSIC_ROUND:%[0-9]+]]:fpr(<8 x s16>) = G_INTRINSIC_ROUND [[COPY]]
95 ; CHECK: $q0 = COPY [[INTRINSIC_ROUND]](<8 x s16>)
96 ; CHECK: RET_ReallyLR implicit $q0
97 %0:_(<8 x s16>) = COPY $q0
98 %1:_(<8 x s16>) = G_INTRINSIC_ROUND %0
99 $q0 = COPY %1(<8 x s16>)
100 RET_ReallyLR implicit $q0
104 name: test_v4f16.round
107 tracksRegLiveness: true
110 machineFunctionInfo: {}
115 ; CHECK-LABEL: name: test_v4f16.round
116 ; CHECK: liveins: $d0
117 ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s16>) = COPY $d0
118 ; CHECK: [[INTRINSIC_ROUND:%[0-9]+]]:fpr(<4 x s16>) = G_INTRINSIC_ROUND [[COPY]]
119 ; CHECK: $d0 = COPY [[INTRINSIC_ROUND]](<4 x s16>)
120 ; CHECK: RET_ReallyLR implicit $d0
121 %0:_(<4 x s16>) = COPY $d0
122 %1:_(<4 x s16>) = G_INTRINSIC_ROUND %0
123 $d0 = COPY %1(<4 x s16>)
124 RET_ReallyLR implicit $d0
128 name: test_v2f32.round
131 tracksRegLiveness: true
134 machineFunctionInfo: {}
139 ; CHECK-LABEL: name: test_v2f32.round
140 ; CHECK: liveins: $d0
141 ; CHECK: [[COPY:%[0-9]+]]:fpr(<2 x s32>) = COPY $d0
142 ; CHECK: [[INTRINSIC_ROUND:%[0-9]+]]:fpr(<2 x s32>) = G_INTRINSIC_ROUND [[COPY]]
143 ; CHECK: $d0 = COPY [[INTRINSIC_ROUND]](<2 x s32>)
144 ; CHECK: RET_ReallyLR implicit $d0
145 %0:_(<2 x s32>) = COPY $d0
146 %1:_(<2 x s32>) = G_INTRINSIC_ROUND %0
147 $d0 = COPY %1(<2 x s32>)
148 RET_ReallyLR implicit $d0
152 name: test_v4f32.round
155 tracksRegLiveness: true
158 machineFunctionInfo: {}
163 ; CHECK-LABEL: name: test_v4f32.round
164 ; CHECK: liveins: $q0
165 ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
166 ; CHECK: [[INTRINSIC_ROUND:%[0-9]+]]:fpr(<4 x s32>) = G_INTRINSIC_ROUND [[COPY]]
167 ; CHECK: $q0 = COPY [[INTRINSIC_ROUND]](<4 x s32>)
168 ; CHECK: RET_ReallyLR implicit $q0
169 %0:_(<4 x s32>) = COPY $q0
170 %1:_(<4 x s32>) = G_INTRINSIC_ROUND %0
171 $q0 = COPY %1(<4 x s32>)
172 RET_ReallyLR implicit $q0
176 name: test_v2f64.round
179 tracksRegLiveness: true
182 machineFunctionInfo: {}
187 ; CHECK-LABEL: name: test_v2f64.round
188 ; CHECK: liveins: $q0
189 ; CHECK: [[COPY:%[0-9]+]]:fpr(<2 x s64>) = COPY $q0
190 ; CHECK: [[INTRINSIC_ROUND:%[0-9]+]]:fpr(<2 x s64>) = G_INTRINSIC_ROUND [[COPY]]
191 ; CHECK: $q0 = COPY [[INTRINSIC_ROUND]](<2 x s64>)
192 ; CHECK: RET_ReallyLR implicit $q0
193 %0:_(<2 x s64>) = COPY $q0
194 %1:_(<2 x s64>) = G_INTRINSIC_ROUND %0
195 $q0 = COPY %1(<2 x s64>)
196 RET_ReallyLR implicit $q0