341 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -run-pass=legalizer %s -o - | FileCheck %s3 4--- |5 target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"6 target triple = "aarch64--"7 8 define void @test_sitofp_s32_s32() { ret void }9 define void @test_uitofp_s32_s32() { ret void }10 define void @test_sitofp_s32_s64() { ret void }11 define void @test_uitofp_s32_s64() { ret void }12 13 define void @test_sitofp_s64_s32() { ret void }14 define void @test_uitofp_s64_s32() { ret void }15 define void @test_sitofp_s64_s64() { ret void }16 define void @test_uitofp_s64_s64() { ret void }17 18 define void @test_sitofp_s32_s1() { ret void }19 define void @test_uitofp_s32_s1() { ret void }20 21 define void @test_sitofp_s64_s8() { ret void }22 define void @test_uitofp_s64_s8() { ret void }23 24 define void @test_sitofp_v4s32() { ret void }25 define void @test_uitofp_v4s32() { ret void }26 27 define void @test_uitofp_v2s64_v2i1() { ret void }28 define void @test_sitofp_v2s64_v2i1() { ret void }29 30 define void @test_sitofp_s32_s16() { ret void }31 define void @test_uitofp_s32_s16() { ret void }32...33 34---35name: test_sitofp_s32_s3236body: |37 bb.0:38 liveins: $w039 ; CHECK-LABEL: name: test_sitofp_s32_s3240 ; CHECK: liveins: $w041 ; CHECK-NEXT: {{ $}}42 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w043 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[COPY]](s32)44 ; CHECK-NEXT: $w0 = COPY [[SITOFP]](s32)45 %0:_(s32) = COPY $w046 %1:_(s32) = G_SITOFP %047 $w0 = COPY %148...49 50---51name: test_uitofp_s32_s3252body: |53 bb.0:54 liveins: $w055 ; CHECK-LABEL: name: test_uitofp_s32_s3256 ; CHECK: liveins: $w057 ; CHECK-NEXT: {{ $}}58 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w059 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[COPY]](s32)60 ; CHECK-NEXT: $w0 = COPY [[UITOFP]](s32)61 %0:_(s32) = COPY $w062 %1:_(s32) = G_UITOFP %063 $w0 = COPY %164...65 66---67name: test_sitofp_s32_s6468body: |69 bb.0:70 liveins: $x071 ; CHECK-LABEL: name: test_sitofp_s32_s6472 ; CHECK: liveins: $x073 ; CHECK-NEXT: {{ $}}74 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x075 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[COPY]](s64)76 ; CHECK-NEXT: $w0 = COPY [[SITOFP]](s32)77 %0:_(s64) = COPY $x078 %1:_(s32) = G_SITOFP %079 $w0 = COPY %180...81 82---83name: test_uitofp_s32_s6484body: |85 bb.0:86 liveins: $x087 ; CHECK-LABEL: name: test_uitofp_s32_s6488 ; CHECK: liveins: $x089 ; CHECK-NEXT: {{ $}}90 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x091 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[COPY]](s64)92 ; CHECK-NEXT: $w0 = COPY [[UITOFP]](s32)93 %0:_(s64) = COPY $x094 %1:_(s32) = G_UITOFP %095 $w0 = COPY %196...97 98---99name: test_sitofp_s64_s32100body: |101 bb.0:102 liveins: $w0103 ; CHECK-LABEL: name: test_sitofp_s64_s32104 ; CHECK: liveins: $w0105 ; CHECK-NEXT: {{ $}}106 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0107 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[COPY]](s32)108 ; CHECK-NEXT: $x0 = COPY [[SITOFP]](s64)109 %0:_(s32) = COPY $w0110 %1:_(s64) = G_SITOFP %0111 $x0 = COPY %1112...113 114---115name: test_uitofp_s64_s32116body: |117 bb.0:118 liveins: $w0119 ; CHECK-LABEL: name: test_uitofp_s64_s32120 ; CHECK: liveins: $w0121 ; CHECK-NEXT: {{ $}}122 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0123 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[COPY]](s32)124 ; CHECK-NEXT: $x0 = COPY [[UITOFP]](s64)125 %0:_(s32) = COPY $w0126 %1:_(s64) = G_UITOFP %0127 $x0 = COPY %1128...129 130---131name: test_sitofp_s64_s64132body: |133 bb.0:134 liveins: $x0135 ; CHECK-LABEL: name: test_sitofp_s64_s64136 ; CHECK: liveins: $x0137 ; CHECK-NEXT: {{ $}}138 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0139 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[COPY]](s64)140 ; CHECK-NEXT: $x0 = COPY [[SITOFP]](s64)141 %0:_(s64) = COPY $x0142 %1:_(s64) = G_SITOFP %0143 $x0 = COPY %1144...145 146---147name: test_uitofp_s64_s64148body: |149 bb.0:150 liveins: $x0151 ; CHECK-LABEL: name: test_uitofp_s64_s64152 ; CHECK: liveins: $x0153 ; CHECK-NEXT: {{ $}}154 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0155 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[COPY]](s64)156 ; CHECK-NEXT: $x0 = COPY [[UITOFP]](s64)157 %0:_(s64) = COPY $x0158 %1:_(s64) = G_UITOFP %0159 $x0 = COPY %1160...161 162 163---164name: test_sitofp_s32_s1165body: |166 bb.0:167 liveins: $w0168 ; CHECK-LABEL: name: test_sitofp_s32_s1169 ; CHECK: liveins: $w0170 ; CHECK-NEXT: {{ $}}171 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0172 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 1173 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[SEXT_INREG]](s32)174 ; CHECK-NEXT: $w0 = COPY [[SITOFP]](s32)175 %0:_(s32) = COPY $w0176 %1:_(s1) = G_TRUNC %0177 %2:_(s32) = G_SITOFP %1178 $w0 = COPY %2179...180 181---182name: test_uitofp_s32_s1183body: |184 bb.0:185 liveins: $w0186 ; CHECK-LABEL: name: test_uitofp_s32_s1187 ; CHECK: liveins: $w0188 ; CHECK-NEXT: {{ $}}189 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0190 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1191 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]192 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s32)193 ; CHECK-NEXT: $w0 = COPY [[UITOFP]](s32)194 %0:_(s32) = COPY $w0195 %1:_(s1) = G_TRUNC %0196 %2:_(s32) = G_UITOFP %1197 $w0 = COPY %2198...199 200---201name: test_sitofp_s64_s8202body: |203 bb.0:204 liveins: $w0205 ; CHECK-LABEL: name: test_sitofp_s64_s8206 ; CHECK: liveins: $w0207 ; CHECK-NEXT: {{ $}}208 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0209 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 8210 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[SEXT_INREG]](s32)211 ; CHECK-NEXT: $x0 = COPY [[SITOFP]](s64)212 %0:_(s32) = COPY $w0213 %1:_(s8) = G_TRUNC %0214 %2:_(s64) = G_SITOFP %1215 $x0 = COPY %2216...217 218---219name: test_uitofp_s64_s8220body: |221 bb.0:222 liveins: $w0223 ; CHECK-LABEL: name: test_uitofp_s64_s8224 ; CHECK: liveins: $w0225 ; CHECK-NEXT: {{ $}}226 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0227 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255228 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]229 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s32)230 ; CHECK-NEXT: $x0 = COPY [[UITOFP]](s64)231 %0:_(s32) = COPY $w0232 %1:_(s8) = G_TRUNC %0233 %2:_(s64) = G_UITOFP %1234 $x0 = COPY %2235...236 237---238name: test_sitofp_v4s32239body: |240 bb.0:241 liveins: $q0242 ; CHECK-LABEL: name: test_sitofp_v4s32243 ; CHECK: liveins: $q0244 ; CHECK-NEXT: {{ $}}245 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0246 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(<4 x s32>) = G_SITOFP [[SITOFP]](<4 x s32>)247 ; CHECK-NEXT: $q0 = COPY [[SITOFP]](<4 x s32>)248 %0:_(<4 x s32>) = COPY $q0249 %1:_(<4 x s32>) = G_SITOFP %1250 $q0 = COPY %1251...252 253---254name: test_uitofp_v4s32255body: |256 bb.0:257 liveins: $q0258 ; CHECK-LABEL: name: test_uitofp_v4s32259 ; CHECK: liveins: $q0260 ; CHECK-NEXT: {{ $}}261 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0262 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(<4 x s32>) = G_UITOFP [[UITOFP]](<4 x s32>)263 ; CHECK-NEXT: $q0 = COPY [[UITOFP]](<4 x s32>)264 %0:_(<4 x s32>) = COPY $q0265 %1:_(<4 x s32>) = G_UITOFP %1266 $q0 = COPY %1267...268 269---270name: test_uitofp_v2s64_v2i1271body: |272 bb.0:273 liveins: $q0274 ; CHECK-LABEL: name: test_uitofp_v2s64_v2i1275 ; CHECK: liveins: $q0276 ; CHECK-NEXT: {{ $}}277 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<2 x s64>) = G_IMPLICIT_DEF278 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1279 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)280 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(<2 x s64>) = G_AND [[DEF]], [[BUILD_VECTOR]]281 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(<2 x s64>) = G_UITOFP [[AND]](<2 x s64>)282 ; CHECK-NEXT: $q0 = COPY [[UITOFP]](<2 x s64>)283 %0:_(<2 x s1>) = G_IMPLICIT_DEF284 %1:_(<2 x s64>) = G_UITOFP %0285 $q0 = COPY %1286...287 288---289name: test_sitofp_v2s64_v2i1290body: |291 bb.0:292 liveins: $q0293 ; CHECK-LABEL: name: test_sitofp_v2s64_v2i1294 ; CHECK: liveins: $q0295 ; CHECK-NEXT: {{ $}}296 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<2 x s64>) = G_IMPLICIT_DEF297 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(<2 x s64>) = G_SEXT_INREG [[DEF]], 1298 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(<2 x s64>) = G_SITOFP [[SEXT_INREG]](<2 x s64>)299 ; CHECK-NEXT: $q0 = COPY [[SITOFP]](<2 x s64>)300 %0:_(<2 x s1>) = G_IMPLICIT_DEF301 %1:_(<2 x s64>) = G_SITOFP %0302 $q0 = COPY %1303...304 305---306name: test_sitofp_s32_s16307body: |308 bb.0:309 liveins: $w0310 ; CHECK-LABEL: name: test_sitofp_s32_s16311 ; CHECK: liveins: $w0312 ; CHECK-NEXT: {{ $}}313 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0314 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 16315 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[SEXT_INREG]](s32)316 ; CHECK-NEXT: $w0 = COPY [[SITOFP]](s32)317 %0:_(s32) = COPY $w0318 %1:_(s16) = G_TRUNC %0319 %2:_(s32) = G_SITOFP %1320 $w0 = COPY %2321...322 323---324name: test_uitofp_s32_s16325body: |326 bb.0:327 liveins: $w0328 ; CHECK-LABEL: name: test_uitofp_s32_s16329 ; CHECK: liveins: $w0330 ; CHECK-NEXT: {{ $}}331 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0332 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535333 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]334 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s32)335 ; CHECK-NEXT: $w0 = COPY [[UITOFP]](s32)336 %0:_(s32) = COPY $w0337 %1:_(s16) = G_TRUNC %0338 %2:_(s32) = G_UITOFP %1339 $w0 = COPY %2340...341