238 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -verify-machineinstrs -mtriple aarch64-unknown-unknown -run-pass=legalizer -mattr=-fullfp16 -global-isel %s -o - | FileCheck %s --check-prefix=NOFP163# RUN: llc -verify-machineinstrs -mtriple aarch64-unknown-unknown -run-pass=legalizer -mattr=+fullfp16 -global-isel %s -o - | FileCheck %s --check-prefix=FP164 5name: test_f16.rint6alignment: 47tracksRegLiveness: true8machineFunctionInfo: {}9body: |10 bb.0:11 liveins: $h012 13 %0:_(s16) = COPY $h014 %1:_(s16) = G_FRINT %015 $h0 = COPY %1(s16)16 RET_ReallyLR implicit $h017 18...19---20name: test_f32.rint21alignment: 422tracksRegLiveness: true23machineFunctionInfo: {}24body: |25 bb.0:26 liveins: $s027 28 ; NOFP16-LABEL: name: test_f32.rint29 ; NOFP16: liveins: $s030 ; NOFP16-NEXT: {{ $}}31 ; NOFP16-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s032 ; NOFP16-NEXT: [[FRINT:%[0-9]+]]:_(s32) = G_FRINT [[COPY]]33 ; NOFP16-NEXT: $s0 = COPY [[FRINT]](s32)34 ; NOFP16-NEXT: RET_ReallyLR implicit $s035 ;36 ; FP16-LABEL: name: test_f32.rint37 ; FP16: liveins: $s038 ; FP16-NEXT: {{ $}}39 ; FP16-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s040 ; FP16-NEXT: [[FRINT:%[0-9]+]]:_(s32) = G_FRINT [[COPY]]41 ; FP16-NEXT: $s0 = COPY [[FRINT]](s32)42 ; FP16-NEXT: RET_ReallyLR implicit $s043 %0:_(s32) = COPY $s044 %1:_(s32) = G_FRINT %045 $s0 = COPY %1(s32)46 RET_ReallyLR implicit $s047 48...49---50name: test_f64.rint51alignment: 452tracksRegLiveness: true53machineFunctionInfo: {}54body: |55 bb.0:56 liveins: $d057 58 ; NOFP16-LABEL: name: test_f64.rint59 ; NOFP16: liveins: $d060 ; NOFP16-NEXT: {{ $}}61 ; NOFP16-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d062 ; NOFP16-NEXT: [[FRINT:%[0-9]+]]:_(s64) = G_FRINT [[COPY]]63 ; NOFP16-NEXT: $d0 = COPY [[FRINT]](s64)64 ; NOFP16-NEXT: RET_ReallyLR implicit $d065 ;66 ; FP16-LABEL: name: test_f64.rint67 ; FP16: liveins: $d068 ; FP16-NEXT: {{ $}}69 ; FP16-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d070 ; FP16-NEXT: [[FRINT:%[0-9]+]]:_(s64) = G_FRINT [[COPY]]71 ; FP16-NEXT: $d0 = COPY [[FRINT]](s64)72 ; FP16-NEXT: RET_ReallyLR implicit $d073 %0:_(s64) = COPY $d074 %1:_(s64) = G_FRINT %075 $d0 = COPY %1(s64)76 RET_ReallyLR implicit $d077 78...79---80name: test_v4f32.rint81alignment: 482tracksRegLiveness: true83machineFunctionInfo: {}84body: |85 bb.0:86 liveins: $q087 88 ; NOFP16-LABEL: name: test_v4f32.rint89 ; NOFP16: liveins: $q090 ; NOFP16-NEXT: {{ $}}91 ; NOFP16-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q092 ; NOFP16-NEXT: [[FRINT:%[0-9]+]]:_(<4 x s32>) = G_FRINT [[COPY]]93 ; NOFP16-NEXT: $q0 = COPY [[FRINT]](<4 x s32>)94 ; NOFP16-NEXT: RET_ReallyLR implicit $q095 ;96 ; FP16-LABEL: name: test_v4f32.rint97 ; FP16: liveins: $q098 ; FP16-NEXT: {{ $}}99 ; FP16-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0100 ; FP16-NEXT: [[FRINT:%[0-9]+]]:_(<4 x s32>) = G_FRINT [[COPY]]101 ; FP16-NEXT: $q0 = COPY [[FRINT]](<4 x s32>)102 ; FP16-NEXT: RET_ReallyLR implicit $q0103 %0:_(<4 x s32>) = COPY $q0104 %1:_(<4 x s32>) = G_FRINT %0105 $q0 = COPY %1(<4 x s32>)106 RET_ReallyLR implicit $q0107 108...109---110name: test_v2f64.rint111alignment: 4112tracksRegLiveness: true113machineFunctionInfo: {}114body: |115 bb.0:116 liveins: $q0117 118 ; NOFP16-LABEL: name: test_v2f64.rint119 ; NOFP16: liveins: $q0120 ; NOFP16-NEXT: {{ $}}121 ; NOFP16-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0122 ; NOFP16-NEXT: [[FRINT:%[0-9]+]]:_(<2 x s64>) = G_FRINT [[COPY]]123 ; NOFP16-NEXT: $q0 = COPY [[FRINT]](<2 x s64>)124 ; NOFP16-NEXT: RET_ReallyLR implicit $q0125 ;126 ; FP16-LABEL: name: test_v2f64.rint127 ; FP16: liveins: $q0128 ; FP16-NEXT: {{ $}}129 ; FP16-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0130 ; FP16-NEXT: [[FRINT:%[0-9]+]]:_(<2 x s64>) = G_FRINT [[COPY]]131 ; FP16-NEXT: $q0 = COPY [[FRINT]](<2 x s64>)132 ; FP16-NEXT: RET_ReallyLR implicit $q0133 %0:_(<2 x s64>) = COPY $q0134 %1:_(<2 x s64>) = G_FRINT %0135 $q0 = COPY %1(<2 x s64>)136 RET_ReallyLR implicit $q0137 138...139---140name: test_v4f16.rint141alignment: 4142tracksRegLiveness: true143machineFunctionInfo: {}144body: |145 bb.0:146 liveins: $d0147 148 ; NOFP16-LABEL: name: test_v4f16.rint149 ; NOFP16: liveins: $d0150 ; NOFP16-NEXT: {{ $}}151 ; NOFP16-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0152 ; NOFP16-NEXT: [[FPEXT:%[0-9]+]]:_(<4 x s32>) = G_FPEXT [[COPY]](<4 x s16>)153 ; NOFP16-NEXT: [[FRINT:%[0-9]+]]:_(<4 x s32>) = G_FRINT [[FPEXT]]154 ; NOFP16-NEXT: [[FPTRUNC:%[0-9]+]]:_(<4 x s16>) = G_FPTRUNC [[FRINT]](<4 x s32>)155 ; NOFP16-NEXT: $d0 = COPY [[FPTRUNC]](<4 x s16>)156 ; NOFP16-NEXT: RET_ReallyLR implicit $d0157 ;158 ; FP16-LABEL: name: test_v4f16.rint159 ; FP16: liveins: $d0160 ; FP16-NEXT: {{ $}}161 ; FP16-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0162 ; FP16-NEXT: [[FRINT:%[0-9]+]]:_(<4 x s16>) = G_FRINT [[COPY]]163 ; FP16-NEXT: $d0 = COPY [[FRINT]](<4 x s16>)164 ; FP16-NEXT: RET_ReallyLR implicit $d0165 %0:_(<4 x s16>) = COPY $d0166 %1:_(<4 x s16>) = G_FRINT %0167 $d0 = COPY %1(<4 x s16>)168 RET_ReallyLR implicit $d0169 170...171---172name: test_v8f16.rint173alignment: 4174tracksRegLiveness: true175machineFunctionInfo: {}176body: |177 bb.0:178 liveins: $q0179 180 ; NOFP16-LABEL: name: test_v8f16.rint181 ; NOFP16: liveins: $q0182 ; NOFP16-NEXT: {{ $}}183 ; NOFP16-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0184 ; NOFP16-NEXT: [[UV:%[0-9]+]]:_(<4 x s16>), [[UV1:%[0-9]+]]:_(<4 x s16>) = G_UNMERGE_VALUES [[COPY]](<8 x s16>)185 ; NOFP16-NEXT: [[FPEXT:%[0-9]+]]:_(<4 x s32>) = G_FPEXT [[UV]](<4 x s16>)186 ; NOFP16-NEXT: [[FPEXT1:%[0-9]+]]:_(<4 x s32>) = G_FPEXT [[UV1]](<4 x s16>)187 ; NOFP16-NEXT: [[FRINT:%[0-9]+]]:_(<4 x s32>) = G_FRINT [[FPEXT]]188 ; NOFP16-NEXT: [[FRINT1:%[0-9]+]]:_(<4 x s32>) = G_FRINT [[FPEXT1]]189 ; NOFP16-NEXT: [[FPTRUNC:%[0-9]+]]:_(<4 x s16>) = G_FPTRUNC [[FRINT]](<4 x s32>)190 ; NOFP16-NEXT: [[FPTRUNC1:%[0-9]+]]:_(<4 x s16>) = G_FPTRUNC [[FRINT1]](<4 x s32>)191 ; NOFP16-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<8 x s16>) = G_CONCAT_VECTORS [[FPTRUNC]](<4 x s16>), [[FPTRUNC1]](<4 x s16>)192 ; NOFP16-NEXT: $q0 = COPY [[CONCAT_VECTORS]](<8 x s16>)193 ; NOFP16-NEXT: RET_ReallyLR implicit $q0194 ;195 ; FP16-LABEL: name: test_v8f16.rint196 ; FP16: liveins: $q0197 ; FP16-NEXT: {{ $}}198 ; FP16-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0199 ; FP16-NEXT: [[FRINT:%[0-9]+]]:_(<8 x s16>) = G_FRINT [[COPY]]200 ; FP16-NEXT: $q0 = COPY [[FRINT]](<8 x s16>)201 ; FP16-NEXT: RET_ReallyLR implicit $q0202 %0:_(<8 x s16>) = COPY $q0203 %1:_(<8 x s16>) = G_FRINT %0204 $q0 = COPY %1(<8 x s16>)205 RET_ReallyLR implicit $q0206 207...208---209name: test_v2f32.rint210alignment: 4211tracksRegLiveness: true212machineFunctionInfo: {}213body: |214 bb.0:215 liveins: $d0216 217 ; NOFP16-LABEL: name: test_v2f32.rint218 ; NOFP16: liveins: $d0219 ; NOFP16-NEXT: {{ $}}220 ; NOFP16-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d0221 ; NOFP16-NEXT: [[FRINT:%[0-9]+]]:_(<2 x s32>) = G_FRINT [[COPY]]222 ; NOFP16-NEXT: $d0 = COPY [[FRINT]](<2 x s32>)223 ; NOFP16-NEXT: RET_ReallyLR implicit $d0224 ;225 ; FP16-LABEL: name: test_v2f32.rint226 ; FP16: liveins: $d0227 ; FP16-NEXT: {{ $}}228 ; FP16-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d0229 ; FP16-NEXT: [[FRINT:%[0-9]+]]:_(<2 x s32>) = G_FRINT [[COPY]]230 ; FP16-NEXT: $d0 = COPY [[FRINT]](<2 x s32>)231 ; FP16-NEXT: RET_ReallyLR implicit $d0232 %0:_(<2 x s32>) = COPY $d0233 %1:_(<2 x s32>) = G_FRINT %0234 $d0 = COPY %1(<2 x s32>)235 RET_ReallyLR implicit $d0236 237...238