227 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple aarch64-unknown-unknown -run-pass=legalizer -mattr=+fullfp16 -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=FP163# RUN: llc -mtriple aarch64-unknown-unknown -run-pass=legalizer -mattr=-fullfp16 -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=NO-FP164 5...6---7name: test_v4f16.nearbyint8alignment: 49tracksRegLiveness: true10machineFunctionInfo: {}11body: |12 bb.0:13 liveins: $d014 15 ; FP16-LABEL: name: test_v4f16.nearbyint16 ; FP16: liveins: $d017 ; FP16-NEXT: {{ $}}18 ; FP16-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d019 ; FP16-NEXT: [[FNEARBYINT:%[0-9]+]]:_(<4 x s16>) = G_FNEARBYINT [[COPY]]20 ; FP16-NEXT: $d0 = COPY [[FNEARBYINT]](<4 x s16>)21 ; FP16-NEXT: RET_ReallyLR implicit $d022 ;23 ; NO-FP16-LABEL: name: test_v4f16.nearbyint24 ; NO-FP16: liveins: $d025 ; NO-FP16-NEXT: {{ $}}26 ; NO-FP16-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d027 ; NO-FP16-NEXT: [[FPEXT:%[0-9]+]]:_(<4 x s32>) = G_FPEXT [[COPY]](<4 x s16>)28 ; NO-FP16-NEXT: [[FNEARBYINT:%[0-9]+]]:_(<4 x s32>) = G_FNEARBYINT [[FPEXT]]29 ; NO-FP16-NEXT: [[FPTRUNC:%[0-9]+]]:_(<4 x s16>) = G_FPTRUNC [[FNEARBYINT]](<4 x s32>)30 ; NO-FP16-NEXT: $d0 = COPY [[FPTRUNC]](<4 x s16>)31 ; NO-FP16-NEXT: RET_ReallyLR implicit $d032 %0:_(<4 x s16>) = COPY $d033 %1:_(<4 x s16>) = G_FNEARBYINT %034 $d0 = COPY %1(<4 x s16>)35 RET_ReallyLR implicit $d036 37...38---39name: test_v8f16.nearbyint40alignment: 441tracksRegLiveness: true42machineFunctionInfo: {}43body: |44 bb.0:45 liveins: $q046 47 ; FP16-LABEL: name: test_v8f16.nearbyint48 ; FP16: liveins: $q049 ; FP16-NEXT: {{ $}}50 ; FP16-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q051 ; FP16-NEXT: [[FNEARBYINT:%[0-9]+]]:_(<8 x s16>) = G_FNEARBYINT [[COPY]]52 ; FP16-NEXT: $q0 = COPY [[FNEARBYINT]](<8 x s16>)53 ; FP16-NEXT: RET_ReallyLR implicit $q054 ;55 ; NO-FP16-LABEL: name: test_v8f16.nearbyint56 ; NO-FP16: liveins: $q057 ; NO-FP16-NEXT: {{ $}}58 ; NO-FP16-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q059 ; NO-FP16-NEXT: [[UV:%[0-9]+]]:_(<4 x s16>), [[UV1:%[0-9]+]]:_(<4 x s16>) = G_UNMERGE_VALUES [[COPY]](<8 x s16>)60 ; NO-FP16-NEXT: [[FPEXT:%[0-9]+]]:_(<4 x s32>) = G_FPEXT [[UV]](<4 x s16>)61 ; NO-FP16-NEXT: [[FPEXT1:%[0-9]+]]:_(<4 x s32>) = G_FPEXT [[UV1]](<4 x s16>)62 ; NO-FP16-NEXT: [[FNEARBYINT:%[0-9]+]]:_(<4 x s32>) = G_FNEARBYINT [[FPEXT]]63 ; NO-FP16-NEXT: [[FNEARBYINT1:%[0-9]+]]:_(<4 x s32>) = G_FNEARBYINT [[FPEXT1]]64 ; NO-FP16-NEXT: [[FPTRUNC:%[0-9]+]]:_(<4 x s16>) = G_FPTRUNC [[FNEARBYINT]](<4 x s32>)65 ; NO-FP16-NEXT: [[FPTRUNC1:%[0-9]+]]:_(<4 x s16>) = G_FPTRUNC [[FNEARBYINT1]](<4 x s32>)66 ; NO-FP16-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<8 x s16>) = G_CONCAT_VECTORS [[FPTRUNC]](<4 x s16>), [[FPTRUNC1]](<4 x s16>)67 ; NO-FP16-NEXT: $q0 = COPY [[CONCAT_VECTORS]](<8 x s16>)68 ; NO-FP16-NEXT: RET_ReallyLR implicit $q069 %0:_(<8 x s16>) = COPY $q070 %1:_(<8 x s16>) = G_FNEARBYINT %071 $q0 = COPY %1(<8 x s16>)72 RET_ReallyLR implicit $q073 74...75---76name: test_v2f32.nearbyint77alignment: 478tracksRegLiveness: true79machineFunctionInfo: {}80body: |81 bb.0:82 liveins: $d083 84 ; FP16-LABEL: name: test_v2f32.nearbyint85 ; FP16: liveins: $d086 ; FP16-NEXT: {{ $}}87 ; FP16-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d088 ; FP16-NEXT: [[FNEARBYINT:%[0-9]+]]:_(<2 x s32>) = G_FNEARBYINT [[COPY]]89 ; FP16-NEXT: $d0 = COPY [[FNEARBYINT]](<2 x s32>)90 ; FP16-NEXT: RET_ReallyLR implicit $d091 ;92 ; NO-FP16-LABEL: name: test_v2f32.nearbyint93 ; NO-FP16: liveins: $d094 ; NO-FP16-NEXT: {{ $}}95 ; NO-FP16-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d096 ; NO-FP16-NEXT: [[FNEARBYINT:%[0-9]+]]:_(<2 x s32>) = G_FNEARBYINT [[COPY]]97 ; NO-FP16-NEXT: $d0 = COPY [[FNEARBYINT]](<2 x s32>)98 ; NO-FP16-NEXT: RET_ReallyLR implicit $d099 %0:_(<2 x s32>) = COPY $d0100 %1:_(<2 x s32>) = G_FNEARBYINT %0101 $d0 = COPY %1(<2 x s32>)102 RET_ReallyLR implicit $d0103 104...105---106name: test_v2f64.nearbyint107alignment: 4108tracksRegLiveness: true109machineFunctionInfo: {}110body: |111 bb.0:112 liveins: $q0113 114 ; FP16-LABEL: name: test_v2f64.nearbyint115 ; FP16: liveins: $q0116 ; FP16-NEXT: {{ $}}117 ; FP16-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0118 ; FP16-NEXT: [[FNEARBYINT:%[0-9]+]]:_(<2 x s64>) = G_FNEARBYINT [[COPY]]119 ; FP16-NEXT: $q0 = COPY [[FNEARBYINT]](<2 x s64>)120 ; FP16-NEXT: RET_ReallyLR implicit $q0121 ;122 ; NO-FP16-LABEL: name: test_v2f64.nearbyint123 ; NO-FP16: liveins: $q0124 ; NO-FP16-NEXT: {{ $}}125 ; NO-FP16-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0126 ; NO-FP16-NEXT: [[FNEARBYINT:%[0-9]+]]:_(<2 x s64>) = G_FNEARBYINT [[COPY]]127 ; NO-FP16-NEXT: $q0 = COPY [[FNEARBYINT]](<2 x s64>)128 ; NO-FP16-NEXT: RET_ReallyLR implicit $q0129 %0:_(<2 x s64>) = COPY $q0130 %1:_(<2 x s64>) = G_FNEARBYINT %0131 $q0 = COPY %1(<2 x s64>)132 RET_ReallyLR implicit $q0133 134...135---136name: test_f32.nearbyint137alignment: 4138tracksRegLiveness: true139machineFunctionInfo: {}140body: |141 bb.0:142 liveins: $s0143 144 ; FP16-LABEL: name: test_f32.nearbyint145 ; FP16: liveins: $s0146 ; FP16-NEXT: {{ $}}147 ; FP16-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0148 ; FP16-NEXT: [[FNEARBYINT:%[0-9]+]]:_(s32) = G_FNEARBYINT [[COPY]]149 ; FP16-NEXT: $s0 = COPY [[FNEARBYINT]](s32)150 ; FP16-NEXT: RET_ReallyLR implicit $s0151 ;152 ; NO-FP16-LABEL: name: test_f32.nearbyint153 ; NO-FP16: liveins: $s0154 ; NO-FP16-NEXT: {{ $}}155 ; NO-FP16-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0156 ; NO-FP16-NEXT: [[FNEARBYINT:%[0-9]+]]:_(s32) = G_FNEARBYINT [[COPY]]157 ; NO-FP16-NEXT: $s0 = COPY [[FNEARBYINT]](s32)158 ; NO-FP16-NEXT: RET_ReallyLR implicit $s0159 %0:_(s32) = COPY $s0160 %1:_(s32) = G_FNEARBYINT %0161 $s0 = COPY %1(s32)162 RET_ReallyLR implicit $s0163 164...165---166name: test_f64.nearbyint167alignment: 4168tracksRegLiveness: true169machineFunctionInfo: {}170body: |171 bb.0:172 liveins: $d0173 174 ; FP16-LABEL: name: test_f64.nearbyint175 ; FP16: liveins: $d0176 ; FP16-NEXT: {{ $}}177 ; FP16-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d0178 ; FP16-NEXT: [[FNEARBYINT:%[0-9]+]]:_(s64) = G_FNEARBYINT [[COPY]]179 ; FP16-NEXT: $d0 = COPY [[FNEARBYINT]](s64)180 ; FP16-NEXT: RET_ReallyLR implicit $d0181 ;182 ; NO-FP16-LABEL: name: test_f64.nearbyint183 ; NO-FP16: liveins: $d0184 ; NO-FP16-NEXT: {{ $}}185 ; NO-FP16-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d0186 ; NO-FP16-NEXT: [[FNEARBYINT:%[0-9]+]]:_(s64) = G_FNEARBYINT [[COPY]]187 ; NO-FP16-NEXT: $d0 = COPY [[FNEARBYINT]](s64)188 ; NO-FP16-NEXT: RET_ReallyLR implicit $d0189 %0:_(s64) = COPY $d0190 %1:_(s64) = G_FNEARBYINT %0191 $d0 = COPY %1(s64)192 RET_ReallyLR implicit $d0193 194...195---196name: test_f16.nearbyint197alignment: 4198tracksRegLiveness: true199machineFunctionInfo: {}200body: |201 bb.0:202 liveins: $h0203 204 ; FP16-LABEL: name: test_f16.nearbyint205 ; FP16: liveins: $h0206 ; FP16-NEXT: {{ $}}207 ; FP16-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $h0208 ; FP16-NEXT: [[FNEARBYINT:%[0-9]+]]:_(s16) = G_FNEARBYINT [[COPY]]209 ; FP16-NEXT: $h0 = COPY [[FNEARBYINT]](s16)210 ; FP16-NEXT: RET_ReallyLR implicit $h0211 ;212 ; NO-FP16-LABEL: name: test_f16.nearbyint213 ; NO-FP16: liveins: $h0214 ; NO-FP16-NEXT: {{ $}}215 ; NO-FP16-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $h0216 ; NO-FP16-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[COPY]](s16)217 ; NO-FP16-NEXT: [[FNEARBYINT:%[0-9]+]]:_(s32) = G_FNEARBYINT [[FPEXT]]218 ; NO-FP16-NEXT: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[FNEARBYINT]](s32)219 ; NO-FP16-NEXT: $h0 = COPY [[FPTRUNC]](s16)220 ; NO-FP16-NEXT: RET_ReallyLR implicit $h0221 %0:_(s16) = COPY $h0222 %1:_(s16) = G_FNEARBYINT %0223 $h0 = COPY %1(s16)224 RET_ReallyLR implicit $h0225 226...227