201 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 %s -o - | FileCheck %s3 4--- |5 define i32 @test_cmp_i8(i8 %a, i8 %b) {6 %r = icmp ult i8 %a, %b7 %res = zext i1 %r to i328 ret i32 %res9 }10 11 define i32 @test_cmp_i16(i16 %a, i16 %b) {12 %r = icmp ult i16 %a, %b13 %res = zext i1 %r to i3214 ret i32 %res15 }16 17 define i32 @test_cmp_i32(i32 %a, i32 %b) {18 %r = icmp ult i32 %a, %b19 %res = zext i1 %r to i3220 ret i32 %res21 }22 23 define i32 @test_cmp_i64(i64 %a, i64 %b) {24 %r = icmp ult i64 %a, %b25 %res = zext i1 %r to i3226 ret i32 %res27 }28 29 define i32 @test_cmp_p0(ptr %a, ptr %b) {30 %r = icmp ult ptr %a, %b31 %res = zext i1 %r to i3232 ret i32 %res33 }34 35...36---37name: test_cmp_i838alignment: 1639legalized: false40regBankSelected: false41registers:42 - { id: 0, class: _ }43 - { id: 1, class: _ }44 - { id: 2, class: _ }45 - { id: 3, class: _ }46body: |47 bb.1 (%ir-block.0):48 liveins: $edi, $esi49 50 ; CHECK-LABEL: name: test_cmp_i851 ; CHECK: liveins: $edi, $esi52 ; CHECK-NEXT: {{ $}}53 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil54 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s8) = COPY $sil55 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s8) = G_ICMP intpred(ult), [[COPY]](s8), [[COPY1]]56 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s8)57 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 158 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]]59 ; CHECK-NEXT: $eax = COPY [[AND]](s32)60 ; CHECK-NEXT: RET 0, implicit $eax61 %0(s8) = COPY $dil62 %1(s8) = COPY $sil63 %2(s1) = G_ICMP intpred(ult), %0(s8), %164 %3(s32) = G_ZEXT %2(s1)65 $eax = COPY %3(s32)66 RET 0, implicit $eax67 68...69---70name: test_cmp_i1671alignment: 1672legalized: false73regBankSelected: false74registers:75 - { id: 0, class: _ }76 - { id: 1, class: _ }77 - { id: 2, class: _ }78 - { id: 3, class: _ }79body: |80 bb.1 (%ir-block.0):81 liveins: $edi, $esi82 83 ; CHECK-LABEL: name: test_cmp_i1684 ; CHECK: liveins: $edi, $esi85 ; CHECK-NEXT: {{ $}}86 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $di87 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s16) = COPY $si88 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s8) = G_ICMP intpred(ult), [[COPY]](s16), [[COPY1]]89 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s8)90 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 191 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]]92 ; CHECK-NEXT: $eax = COPY [[AND]](s32)93 ; CHECK-NEXT: RET 0, implicit $eax94 %0(s16) = COPY $di95 %1(s16) = COPY $si96 %2(s1) = G_ICMP intpred(ult), %0(s16), %197 %3(s32) = G_ZEXT %2(s1)98 $eax = COPY %3(s32)99 RET 0, implicit $eax100 101...102---103name: test_cmp_i32104alignment: 16105legalized: false106regBankSelected: false107registers:108 - { id: 0, class: _ }109 - { id: 1, class: _ }110 - { id: 2, class: _ }111 - { id: 3, class: _ }112body: |113 bb.1 (%ir-block.0):114 liveins: $edi, $esi115 116 ; CHECK-LABEL: name: test_cmp_i32117 ; CHECK: liveins: $edi, $esi118 ; CHECK-NEXT: {{ $}}119 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi120 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $esi121 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s8) = G_ICMP intpred(ult), [[COPY]](s32), [[COPY1]]122 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s8)123 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1124 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]]125 ; CHECK-NEXT: $eax = COPY [[AND]](s32)126 ; CHECK-NEXT: RET 0, implicit $eax127 %0(s32) = COPY $edi128 %1(s32) = COPY $esi129 %2(s1) = G_ICMP intpred(ult), %0(s32), %1130 %3(s32) = G_ZEXT %2(s1)131 $eax = COPY %3(s32)132 RET 0, implicit $eax133 134...135---136name: test_cmp_i64137alignment: 16138legalized: false139regBankSelected: false140registers:141 - { id: 0, class: _ }142 - { id: 1, class: _ }143 - { id: 2, class: _ }144 - { id: 3, class: _ }145body: |146 bb.1 (%ir-block.0):147 liveins: $rdi, $rsi148 149 ; CHECK-LABEL: name: test_cmp_i64150 ; CHECK: liveins: $rdi, $rsi151 ; CHECK-NEXT: {{ $}}152 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $rdi153 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $rsi154 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s8) = G_ICMP intpred(ult), [[COPY]](s64), [[COPY1]]155 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s8)156 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1157 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]]158 ; CHECK-NEXT: $eax = COPY [[AND]](s32)159 ; CHECK-NEXT: RET 0, implicit $eax160 %0(s64) = COPY $rdi161 %1(s64) = COPY $rsi162 %2(s1) = G_ICMP intpred(ult), %0(s64), %1163 %3(s32) = G_ZEXT %2(s1)164 $eax = COPY %3(s32)165 RET 0, implicit $eax166 167...168---169name: test_cmp_p0170alignment: 16171legalized: false172regBankSelected: false173registers:174 - { id: 0, class: _ }175 - { id: 1, class: _ }176 - { id: 2, class: _ }177 - { id: 3, class: _ }178body: |179 bb.1 (%ir-block.0):180 liveins: $rdi, $rsi181 182 ; CHECK-LABEL: name: test_cmp_p0183 ; CHECK: liveins: $rdi, $rsi184 ; CHECK-NEXT: {{ $}}185 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $rdi186 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $rsi187 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s8) = G_ICMP intpred(ult), [[COPY]](p0), [[COPY1]]188 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s8)189 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1190 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]]191 ; CHECK-NEXT: $eax = COPY [[AND]](s32)192 ; CHECK-NEXT: RET 0, implicit $eax193 %0(p0) = COPY $rdi194 %1(p0) = COPY $rsi195 %2(s1) = G_ICMP intpred(ult), %0(p0), %1196 %3(s32) = G_ZEXT %2(s1)197 $eax = COPY %3(s32)198 RET 0, implicit $eax199 200...201