184 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv32 -run-pass=legalizer %s -o - \3# RUN: | FileCheck %s4---5name: sub_i76body: |7 bb.0.entry:8 ; CHECK-LABEL: name: sub_i79 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $x1010 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1111 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[COPY1]]12 ; CHECK-NEXT: $x10 = COPY [[SUB]](s32)13 ; CHECK-NEXT: PseudoRET implicit $x1014 %0:_(s32) = COPY $x1015 %1:_(s32) = COPY $x1116 %2:_(s7) = G_TRUNC %0(s32)17 %3:_(s7) = G_TRUNC %1(s32)18 %4:_(s7) = G_SUB %2, %319 %5:_(s32) = G_ANYEXT %4(s7)20 $x10 = COPY %5(s32)21 PseudoRET implicit $x1022 23...24---25name: sub_i826body: |27 bb.0.entry:28 ; CHECK-LABEL: name: sub_i829 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $x1030 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1131 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[COPY1]]32 ; CHECK-NEXT: $x10 = COPY [[SUB]](s32)33 ; CHECK-NEXT: PseudoRET implicit $x1034 %0:_(s32) = COPY $x1035 %1:_(s32) = COPY $x1136 %2:_(s8) = G_TRUNC %0(s32)37 %3:_(s8) = G_TRUNC %1(s32)38 %4:_(s8) = G_SUB %2, %339 %5:_(s32) = G_ANYEXT %4(s8)40 $x10 = COPY %5(s32)41 PseudoRET implicit $x1042 43...44---45name: sub_i1646body: |47 bb.0.entry:48 ; CHECK-LABEL: name: sub_i1649 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $x1050 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1151 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[COPY1]]52 ; CHECK-NEXT: $x10 = COPY [[SUB]](s32)53 ; CHECK-NEXT: PseudoRET implicit $x1054 %0:_(s32) = COPY $x1055 %1:_(s32) = COPY $x1156 %2:_(s16) = G_TRUNC %0(s32)57 %3:_(s16) = G_TRUNC %1(s32)58 %4:_(s16) = G_SUB %2, %359 %5:_(s32) = G_ANYEXT %4(s16)60 $x10 = COPY %5(s32)61 PseudoRET implicit $x1062 63...64---65name: sub_i3266body: |67 bb.0.entry:68 ; CHECK-LABEL: name: sub_i3269 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $x1070 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1171 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[COPY1]]72 ; CHECK-NEXT: $x10 = COPY [[SUB]](s32)73 ; CHECK-NEXT: PseudoRET implicit $x1074 %0:_(s32) = COPY $x1075 %1:_(s32) = COPY $x1176 %2:_(s32) = G_SUB %0, %177 $x10 = COPY %2(s32)78 PseudoRET implicit $x1079 80...81---82name: sub_i4883body: |84 bb.0.entry:85 ; CHECK-LABEL: name: sub_i4886 ; CHECK: %xlo:_(s32) = COPY $x1087 ; CHECK-NEXT: %xhi:_(s32) = COPY $x1188 ; CHECK-NEXT: %ylo:_(s32) = COPY $x1289 ; CHECK-NEXT: %yhi:_(s32) = COPY $x1390 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB %xlo, %ylo91 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), %xlo(s32), %ylo92 ; CHECK-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB %xhi, %yhi93 ; CHECK-NEXT: [[SUB2:%[0-9]+]]:_(s32) = G_SUB [[SUB1]], [[ICMP]]94 ; CHECK-NEXT: $x10 = COPY [[SUB]](s32)95 ; CHECK-NEXT: $x11 = COPY [[SUB2]](s32)96 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x1197 %xlo:_(s32) = COPY $x1098 %xhi:_(s32) = COPY $x1199 %ylo:_(s32) = COPY $x12100 %yhi:_(s32) = COPY $x13101 %x0:_(s64) = G_MERGE_VALUES %xlo(s32), %xhi(s32)102 %y0:_(s64) = G_MERGE_VALUES %ylo(s32), %yhi(s32)103 %x:_(s48) = G_TRUNC %x0(s64)104 %y:_(s48) = G_TRUNC %y0(s64)105 %z:_(s48) = G_SUB %x, %y106 %z0:_(s64) = G_ANYEXT %z(s48)107 %zlo:_(s32), %zhi:_(s32) = G_UNMERGE_VALUES %z0(s64)108 $x10 = COPY %zlo(s32)109 $x11 = COPY %zhi(s32)110 PseudoRET implicit $x10, implicit $x11111 112...113---114name: sub_i64115body: |116 bb.0.entry:117 ; CHECK-LABEL: name: sub_i64118 ; CHECK: %lo1:_(s32) = COPY $x10119 ; CHECK-NEXT: %hi1:_(s32) = COPY $x11120 ; CHECK-NEXT: %lo2:_(s32) = COPY $x12121 ; CHECK-NEXT: %hi2:_(s32) = COPY $x13122 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB %lo1, %lo2123 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), %lo1(s32), %lo2124 ; CHECK-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB %hi1, %hi2125 ; CHECK-NEXT: [[SUB2:%[0-9]+]]:_(s32) = G_SUB [[SUB1]], [[ICMP]]126 ; CHECK-NEXT: $x10 = COPY [[SUB]](s32)127 ; CHECK-NEXT: $x11 = COPY [[SUB2]](s32)128 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11129 %lo1:_(s32) = COPY $x10130 %hi1:_(s32) = COPY $x11131 %lo2:_(s32) = COPY $x12132 %hi2:_(s32) = COPY $x13133 %x1:_(s64) = G_MERGE_VALUES %lo1(s32), %hi1(s32)134 %x2:_(s64) = G_MERGE_VALUES %lo2(s32), %hi2(s32)135 %y:_(s64) = G_SUB %x1, %x2136 %loy:_(s32), %hiy:_(s32) = G_UNMERGE_VALUES %y(s64)137 $x10 = COPY %loy(s32)138 $x11 = COPY %hiy(s32)139 PseudoRET implicit $x10, implicit $x11140 141...142---143name: sub_i96144body: |145 bb.0.entry:146 ; CHECK-LABEL: name: sub_i96147 ; CHECK: %lo1:_(s32) = COPY $x10148 ; CHECK-NEXT: %mid1:_(s32) = COPY $x11149 ; CHECK-NEXT: %hi1:_(s32) = COPY $x12150 ; CHECK-NEXT: %lo2:_(s32) = COPY $x13151 ; CHECK-NEXT: %mid2:_(s32) = COPY $x14152 ; CHECK-NEXT: %hi2:_(s32) = COPY $x15153 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB %lo1, %lo2154 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), %lo1(s32), %lo2155 ; CHECK-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB %mid1, %mid2156 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[SUB1]](s32), %mid1157 ; CHECK-NEXT: [[SUB2:%[0-9]+]]:_(s32) = G_SUB [[SUB1]], [[ICMP]]158 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0159 ; CHECK-NEXT: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[SUB1]](s32), [[C]]160 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ICMP2]], [[ICMP]]161 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[ICMP1]], [[AND]]162 ; CHECK-NEXT: [[SUB3:%[0-9]+]]:_(s32) = G_SUB %hi1, %hi2163 ; CHECK-NEXT: [[SUB4:%[0-9]+]]:_(s32) = G_SUB [[SUB3]], [[OR]]164 ; CHECK-NEXT: $x10 = COPY [[SUB]](s32)165 ; CHECK-NEXT: $x11 = COPY [[SUB2]](s32)166 ; CHECK-NEXT: $x12 = COPY [[SUB4]](s32)167 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11, implicit $x12168 %lo1:_(s32) = COPY $x10169 %mid1:_(s32) = COPY $x11170 %hi1:_(s32) = COPY $x12171 %lo2:_(s32) = COPY $x13172 %mid2:_(s32) = COPY $x14173 %hi2:_(s32) = COPY $x15174 %x1:_(s96) = G_MERGE_VALUES %lo1(s32), %mid1(s32), %hi1(s32)175 %x2:_(s96) = G_MERGE_VALUES %lo2(s32), %mid2(s32), %hi2(s32)176 %y:_(s96) = G_SUB %x1, %x2177 %lo:_(s32), %mid:_(s32), %hi:_(s32) = G_UNMERGE_VALUES %y(s96)178 $x10 = COPY %lo(s32)179 $x11 = COPY %mid(s32)180 $x12 = COPY %hi(s32)181 PseudoRET implicit $x10, implicit $x11, implicit $x12182 183...184