330 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=x86_64-linux-gnu -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s3 4--- |5 6 define i8 @zext_i1_to_i8(i1 %val) {7 %res = zext i1 %val to i88 ret i8 %res9 }10 11 define i16 @zext_i1_to_i16(i1 %val) {12 %res = zext i1 %val to i1613 ret i16 %res14 }15 16 define i32 @zext_i1_to_i32(i1 %val) {17 %res = zext i1 %val to i3218 ret i32 %res19 }20 21 define i64 @zext_i1_to_i64(i1 %val) {22 %res = zext i1 %val to i6423 ret i64 %res24 }25 26 define i16 @zext_i8_to_i16(i8 %val) {27 %res = zext i8 %val to i1628 ret i16 %res29 }30 31 define i32 @zext_i8_to_i32(i8 %val) {32 %res = zext i8 %val to i3233 ret i32 %res34 }35 36 define i64 @zext_i8_to_i64(i8 %val) {37 %res = zext i8 %val to i6438 ret i64 %res39 }40 41 define i32 @zext_i16_to_i32(i16 %val) {42 %res = zext i16 %val to i3243 ret i32 %res44 }45 46 define i64 @zext_i16_to_i64(i16 %val) {47 %res = zext i16 %val to i6448 ret i64 %res49 }50 51 define i64 @zext_i32_to_i64(i32 %val) {52 %res = zext i32 %val to i6453 ret i64 %res54 }55 56...57---58name: zext_i1_to_i859alignment: 1660tracksRegLiveness: true61registers:62 - { id: 0, class: _ }63 - { id: 1, class: _ }64 - { id: 2, class: _ }65body: |66 bb.1 (%ir-block.0):67 liveins: $edi68 69 ; CHECK-LABEL: name: zext_i1_to_i870 ; CHECK: liveins: $edi71 ; CHECK-NEXT: {{ $}}72 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi73 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)74 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 175 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s8) = G_AND [[TRUNC]], [[C]]76 ; CHECK-NEXT: $al = COPY [[AND]](s8)77 ; CHECK-NEXT: RET 0, implicit $al78 %1:_(s32) = COPY $edi79 %0:_(s1) = G_TRUNC %1(s32)80 %2:_(s8) = G_ZEXT %0(s1)81 $al = COPY %2(s8)82 RET 0, implicit $al83 84...85---86name: zext_i1_to_i1687alignment: 1688tracksRegLiveness: true89registers:90 - { id: 0, class: _ }91 - { id: 1, class: _ }92 - { id: 2, class: _ }93body: |94 bb.1 (%ir-block.0):95 liveins: $edi96 97 ; CHECK-LABEL: name: zext_i1_to_i1698 ; CHECK: liveins: $edi99 ; CHECK-NEXT: {{ $}}100 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi101 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)102 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 1103 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]]104 ; CHECK-NEXT: $ax = COPY [[AND]](s16)105 ; CHECK-NEXT: RET 0, implicit $ax106 %1:_(s32) = COPY $edi107 %0:_(s1) = G_TRUNC %1(s32)108 %2:_(s16) = G_ZEXT %0(s1)109 $ax = COPY %2(s16)110 RET 0, implicit $ax111 112...113---114name: zext_i1_to_i32115alignment: 16116tracksRegLiveness: true117registers:118 - { id: 0, class: _ }119 - { id: 1, class: _ }120 - { id: 2, class: _ }121body: |122 bb.1 (%ir-block.0):123 liveins: $edi124 125 ; CHECK-LABEL: name: zext_i1_to_i32126 ; CHECK: liveins: $edi127 ; CHECK-NEXT: {{ $}}128 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi129 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1130 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]131 ; CHECK-NEXT: $eax = COPY [[AND]](s32)132 ; CHECK-NEXT: RET 0, implicit $eax133 %1:_(s32) = COPY $edi134 %0:_(s1) = G_TRUNC %1(s32)135 %2:_(s32) = G_ZEXT %0(s1)136 $eax = COPY %2(s32)137 RET 0, implicit $eax138 139...140---141name: zext_i1_to_i64142alignment: 16143tracksRegLiveness: true144registers:145 - { id: 0, class: _ }146 - { id: 1, class: _ }147 - { id: 2, class: _ }148body: |149 bb.1 (%ir-block.0):150 liveins: $edi151 152 ; CHECK-LABEL: name: zext_i1_to_i64153 ; CHECK: liveins: $edi154 ; CHECK-NEXT: {{ $}}155 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi156 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s32)157 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1158 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[ANYEXT]], [[C]]159 ; CHECK-NEXT: $rax = COPY [[AND]](s64)160 ; CHECK-NEXT: RET 0, implicit $rax161 %1:_(s32) = COPY $edi162 %0:_(s1) = G_TRUNC %1(s32)163 %2:_(s64) = G_ZEXT %0(s1)164 $rax = COPY %2(s64)165 RET 0, implicit $rax166 167...168---169name: zext_i8_to_i16170alignment: 16171tracksRegLiveness: true172registers:173 - { id: 0, class: _ }174 - { id: 1, class: _ }175 - { id: 2, class: _ }176body: |177 bb.1 (%ir-block.0):178 liveins: $edi179 180 ; CHECK-LABEL: name: zext_i8_to_i16181 ; CHECK: liveins: $edi182 ; CHECK-NEXT: {{ $}}183 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi184 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)185 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255186 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]]187 ; CHECK-NEXT: $ax = COPY [[AND]](s16)188 ; CHECK-NEXT: RET 0, implicit $ax189 %1:_(s32) = COPY $edi190 %0:_(s8) = G_TRUNC %1(s32)191 %2:_(s16) = G_ZEXT %0(s8)192 $ax = COPY %2(s16)193 RET 0, implicit $ax194 195...196---197name: zext_i8_to_i32198alignment: 16199tracksRegLiveness: true200registers:201 - { id: 0, class: _ }202 - { id: 1, class: _ }203 - { id: 2, class: _ }204body: |205 bb.1 (%ir-block.0):206 liveins: $edi207 208 ; CHECK-LABEL: name: zext_i8_to_i32209 ; CHECK: liveins: $edi210 ; CHECK-NEXT: {{ $}}211 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi212 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255213 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]214 ; CHECK-NEXT: $eax = COPY [[AND]](s32)215 ; CHECK-NEXT: RET 0, implicit $eax216 %1:_(s32) = COPY $edi217 %0:_(s8) = G_TRUNC %1(s32)218 %2:_(s32) = G_ZEXT %0(s8)219 $eax = COPY %2(s32)220 RET 0, implicit $eax221 222...223---224name: zext_i8_to_i64225alignment: 16226tracksRegLiveness: true227registers:228 - { id: 0, class: _ }229 - { id: 1, class: _ }230 - { id: 2, class: _ }231body: |232 bb.1 (%ir-block.0):233 liveins: $edi234 235 ; CHECK-LABEL: name: zext_i8_to_i64236 ; CHECK: liveins: $edi237 ; CHECK-NEXT: {{ $}}238 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi239 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s32)240 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 255241 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[ANYEXT]], [[C]]242 ; CHECK-NEXT: $rax = COPY [[AND]](s64)243 ; CHECK-NEXT: RET 0, implicit $rax244 %1:_(s32) = COPY $edi245 %0:_(s8) = G_TRUNC %1(s32)246 %2:_(s64) = G_ZEXT %0(s8)247 $rax = COPY %2(s64)248 RET 0, implicit $rax249 250...251---252name: zext_i16_to_i32253alignment: 16254tracksRegLiveness: true255registers:256 - { id: 0, class: _ }257 - { id: 1, class: _ }258 - { id: 2, class: _ }259body: |260 bb.1 (%ir-block.0):261 liveins: $edi262 263 ; CHECK-LABEL: name: zext_i16_to_i32264 ; CHECK: liveins: $edi265 ; CHECK-NEXT: {{ $}}266 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi267 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535268 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]269 ; CHECK-NEXT: $eax = COPY [[AND]](s32)270 ; CHECK-NEXT: RET 0, implicit $eax271 %1:_(s32) = COPY $edi272 %0:_(s16) = G_TRUNC %1(s32)273 %2:_(s32) = G_ZEXT %0(s16)274 $eax = COPY %2(s32)275 RET 0, implicit $eax276 277...278---279name: zext_i16_to_i64280alignment: 16281tracksRegLiveness: true282registers:283 - { id: 0, class: _ }284 - { id: 1, class: _ }285 - { id: 2, class: _ }286body: |287 bb.1 (%ir-block.0):288 liveins: $edi289 290 ; CHECK-LABEL: name: zext_i16_to_i64291 ; CHECK: liveins: $edi292 ; CHECK-NEXT: {{ $}}293 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi294 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s32)295 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 65535296 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[ANYEXT]], [[C]]297 ; CHECK-NEXT: $rax = COPY [[AND]](s64)298 ; CHECK-NEXT: RET 0, implicit $rax299 %1:_(s32) = COPY $edi300 %0:_(s16) = G_TRUNC %1(s32)301 %2:_(s64) = G_ZEXT %0(s16)302 $rax = COPY %2(s64)303 RET 0, implicit $rax304 305...306---307name: zext_i32_to_i64308alignment: 16309tracksRegLiveness: true310registers:311 - { id: 0, class: _ }312 - { id: 1, class: _ }313body: |314 bb.1 (%ir-block.0):315 liveins: $edi316 317 ; CHECK-LABEL: name: zext_i32_to_i64318 ; CHECK: liveins: $edi319 ; CHECK-NEXT: {{ $}}320 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi321 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY]](s32)322 ; CHECK-NEXT: $rax = COPY [[ZEXT]](s64)323 ; CHECK-NEXT: RET 0, implicit $rax324 %0:_(s32) = COPY $edi325 %1:_(s64) = G_ZEXT %0(s32)326 $rax = COPY %1(s64)327 RET 0, implicit $rax328 329...330