378 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple=x86_64-linux-gnu -run-pass=legalizer %s -o - | FileCheck %s3 4--- |5 define i64 @test_sext_i1(i8 %a) {6 %val = trunc i8 %a to i17 %r = sext i1 %val to i648 ret i64 %r9 }10 11 define i64 @test_sext_i8(i8 %val) {12 %r = sext i8 %val to i6413 ret i64 %r14 }15 16 define i64 @test_sext_i16(i16 %val) {17 %r = sext i16 %val to i6418 ret i64 %r19 }20 21 define i64 @test_sext_i32(i32 %val) {22 %r = sext i32 %val to i6423 ret i64 %r24 }25 26 define i64 @test_zext_i1(i8 %a) {27 %val = trunc i8 %a to i128 %r = zext i1 %val to i6429 ret i64 %r30 }31 32 define i64 @test_zext_i8(i8 %val) {33 %r = zext i8 %val to i6434 ret i64 %r35 }36 37 define i64 @test_zext_i16(i16 %val) {38 %r = zext i16 %val to i6439 ret i64 %r40 }41 42 define i64 @test_zext_i32(i32 %val) {43 %r = zext i32 %val to i6444 ret i64 %r45 }46 47 define void @test_anyext_i1(i8 %a) {48 ret void49 }50 51 define void @test_anyext_i8(i8 %val) {52 ret void53 }54 55 define void @test_anyext_i16(i16 %val) {56 ret void57 }58 59 define void @test_anyext_i32(i32 %val) {60 ret void61 }62 63 64...65---66name: test_sext_i167alignment: 1668legalized: false69regBankSelected: false70registers:71 - { id: 0, class: _ }72 - { id: 1, class: _ }73 - { id: 2, class: _ }74body: |75 bb.1 (%ir-block.0):76 liveins: $edi77 78 ; CHECK-LABEL: name: test_sext_i179 ; CHECK: liveins: $edi80 ; CHECK-NEXT: {{ $}}81 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil82 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s8)83 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 6384 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ANYEXT]], [[C]](s8)85 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s8) = COPY [[C]](s8)86 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[COPY1]](s8)87 ; CHECK-NEXT: $rax = COPY [[ASHR]](s64)88 ; CHECK-NEXT: RET 0, implicit $rax89 %0(s8) = COPY $dil90 %1(s1) = G_TRUNC %0(s8)91 %2(s64) = G_SEXT %1(s1)92 $rax = COPY %2(s64)93 RET 0, implicit $rax94 95...96---97name: test_sext_i898alignment: 1699legalized: false100regBankSelected: false101registers:102 - { id: 0, class: _ }103 - { id: 1, class: _ }104body: |105 bb.1 (%ir-block.0):106 liveins: $edi107 108 ; CHECK-LABEL: name: test_sext_i8109 ; CHECK: liveins: $edi110 ; CHECK-NEXT: {{ $}}111 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil112 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[COPY]](s8)113 ; CHECK-NEXT: $rax = COPY [[SEXT]](s64)114 ; CHECK-NEXT: RET 0, implicit $rax115 %0(s8) = COPY $dil116 %1(s64) = G_SEXT %0(s8)117 $rax = COPY %1(s64)118 RET 0, implicit $rax119 120...121---122name: test_sext_i16123alignment: 16124legalized: false125regBankSelected: false126registers:127 - { id: 0, class: _ }128 - { id: 1, class: _ }129body: |130 bb.1 (%ir-block.0):131 liveins: $edi132 133 ; CHECK-LABEL: name: test_sext_i16134 ; CHECK: liveins: $edi135 ; CHECK-NEXT: {{ $}}136 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $di137 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[COPY]](s16)138 ; CHECK-NEXT: $rax = COPY [[SEXT]](s64)139 ; CHECK-NEXT: RET 0, implicit $rax140 %0(s16) = COPY $di141 %1(s64) = G_SEXT %0(s16)142 $rax = COPY %1(s64)143 RET 0, implicit $rax144 145...146---147name: test_sext_i32148alignment: 16149legalized: false150regBankSelected: false151registers:152 - { id: 0, class: _ }153 - { id: 1, class: _ }154body: |155 bb.1 (%ir-block.0):156 liveins: $edi157 158 ; CHECK-LABEL: name: test_sext_i32159 ; CHECK: liveins: $edi160 ; CHECK-NEXT: {{ $}}161 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi162 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[COPY]](s32)163 ; CHECK-NEXT: $rax = COPY [[SEXT]](s64)164 ; CHECK-NEXT: RET 0, implicit $rax165 %0(s32) = COPY $edi166 %1(s64) = G_SEXT %0(s32)167 $rax = COPY %1(s64)168 RET 0, implicit $rax169 170...171---172name: test_zext_i1173alignment: 16174legalized: false175regBankSelected: false176registers:177 - { id: 0, class: _ }178 - { id: 1, class: _ }179 - { id: 2, class: _ }180body: |181 bb.1 (%ir-block.0):182 liveins: $edi183 184 ; CHECK-LABEL: name: test_zext_i1185 ; CHECK: liveins: $edi186 ; CHECK-NEXT: {{ $}}187 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil188 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s8)189 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1190 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[ANYEXT]], [[C]]191 ; CHECK-NEXT: $rax = COPY [[AND]](s64)192 ; CHECK-NEXT: RET 0, implicit $rax193 %0(s8) = COPY $dil194 %1(s1) = G_TRUNC %0(s8)195 %2(s64) = G_ZEXT %1(s1)196 $rax = COPY %2(s64)197 RET 0, implicit $rax198 199...200---201name: test_zext_i8202alignment: 16203legalized: false204regBankSelected: false205registers:206 - { id: 0, class: _ }207 - { id: 1, class: _ }208body: |209 bb.1 (%ir-block.0):210 liveins: $edi211 212 ; CHECK-LABEL: name: test_zext_i8213 ; CHECK: liveins: $edi214 ; CHECK-NEXT: {{ $}}215 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil216 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY]](s8)217 ; CHECK-NEXT: $rax = COPY [[ZEXT]](s64)218 ; CHECK-NEXT: RET 0, implicit $rax219 %0(s8) = COPY $dil220 %1(s64) = G_ZEXT %0(s8)221 $rax = COPY %1(s64)222 RET 0, implicit $rax223 224...225---226name: test_zext_i16227alignment: 16228legalized: false229regBankSelected: false230registers:231 - { id: 0, class: _ }232 - { id: 1, class: _ }233body: |234 bb.1 (%ir-block.0):235 liveins: $edi236 237 ; CHECK-LABEL: name: test_zext_i16238 ; CHECK: liveins: $edi239 ; CHECK-NEXT: {{ $}}240 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $di241 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY]](s16)242 ; CHECK-NEXT: $rax = COPY [[ZEXT]](s64)243 ; CHECK-NEXT: RET 0, implicit $rax244 %0(s16) = COPY $di245 %1(s64) = G_ZEXT %0(s16)246 $rax = COPY %1(s64)247 RET 0, implicit $rax248 249...250---251name: test_zext_i32252alignment: 16253legalized: false254regBankSelected: false255registers:256 - { id: 0, class: _ }257 - { id: 1, class: _ }258body: |259 bb.1 (%ir-block.0):260 liveins: $edi261 262 ; CHECK-LABEL: name: test_zext_i32263 ; CHECK: liveins: $edi264 ; CHECK-NEXT: {{ $}}265 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi266 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY]](s32)267 ; CHECK-NEXT: $rax = COPY [[ZEXT]](s64)268 ; CHECK-NEXT: RET 0, implicit $rax269 %0(s32) = COPY $edi270 %1(s64) = G_ZEXT %0(s32)271 $rax = COPY %1(s64)272 RET 0, implicit $rax273 274...275---276name: test_anyext_i1277alignment: 16278legalized: false279regBankSelected: false280registers:281 - { id: 0, class: _ }282 - { id: 1, class: _ }283 - { id: 2, class: _ }284body: |285 bb.1 (%ir-block.0):286 liveins: $edi287 288 ; CHECK-LABEL: name: test_anyext_i1289 ; CHECK: liveins: $edi290 ; CHECK-NEXT: {{ $}}291 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil292 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s8)293 ; CHECK-NEXT: $rax = COPY [[ANYEXT]](s64)294 ; CHECK-NEXT: RET 0, implicit $rax295 %0(s8) = COPY $dil296 %1(s1) = G_TRUNC %0(s8)297 %2(s64) = G_ANYEXT %1(s1)298 $rax = COPY %2(s64)299 RET 0, implicit $rax300 301...302---303name: test_anyext_i8304alignment: 16305legalized: false306regBankSelected: false307registers:308 - { id: 0, class: _ }309 - { id: 1, class: _ }310body: |311 bb.1 (%ir-block.0):312 liveins: $edi313 314 ; CHECK-LABEL: name: test_anyext_i8315 ; CHECK: liveins: $edi316 ; CHECK-NEXT: {{ $}}317 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil318 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s8)319 ; CHECK-NEXT: $rax = COPY [[ANYEXT]](s64)320 ; CHECK-NEXT: RET 0, implicit $rax321 %0(s8) = COPY $dil322 %1(s64) = G_ANYEXT %0(s8)323 $rax = COPY %1(s64)324 RET 0, implicit $rax325 326...327---328name: test_anyext_i16329alignment: 16330legalized: false331regBankSelected: false332registers:333 - { id: 0, class: _ }334 - { id: 1, class: _ }335body: |336 bb.1 (%ir-block.0):337 liveins: $edi338 339 ; CHECK-LABEL: name: test_anyext_i16340 ; CHECK: liveins: $edi341 ; CHECK-NEXT: {{ $}}342 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $di343 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s16)344 ; CHECK-NEXT: $rax = COPY [[ANYEXT]](s64)345 ; CHECK-NEXT: RET 0, implicit $rax346 %0(s16) = COPY $di347 %1(s64) = G_ANYEXT %0(s16)348 $rax = COPY %1(s64)349 RET 0, implicit $rax350 351...352---353name: test_anyext_i32354alignment: 16355legalized: false356regBankSelected: false357registers:358 - { id: 0, class: _ }359 - { id: 1, class: _ }360body: |361 bb.1 (%ir-block.0):362 liveins: $edi363 364 ; CHECK-LABEL: name: test_anyext_i32365 ; CHECK: liveins: $edi366 ; CHECK-NEXT: {{ $}}367 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi368 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s32)369 ; CHECK-NEXT: $rax = COPY [[ANYEXT]](s64)370 ; CHECK-NEXT: RET 0, implicit $rax371 %0(s32) = COPY $edi372 %1(s64) = G_ANYEXT %0(s32)373 $rax = COPY %1(s64)374 RET 0, implicit $rax375 376...377 378