191 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: add_i76body: |7 bb.0.entry:8 ; CHECK-LABEL: name: add_i79 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $x1010 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1111 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[COPY1]]12 ; CHECK-NEXT: $x10 = COPY [[ADD]](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_ADD %2, %319 %5:_(s32) = G_ANYEXT %4(s7)20 $x10 = COPY %5(s32)21 PseudoRET implicit $x1022 23...24---25name: add_i826body: |27 bb.0.entry:28 ; CHECK-LABEL: name: add_i829 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $x1030 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1131 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[COPY1]]32 ; CHECK-NEXT: $x10 = COPY [[ADD]](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_ADD %2, %339 %5:_(s32) = G_ANYEXT %4(s8)40 $x10 = COPY %5(s32)41 PseudoRET implicit $x1042 43...44---45name: add_i1646body: |47 bb.0.entry:48 ; CHECK-LABEL: name: add_i1649 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $x1050 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1151 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[COPY1]]52 ; CHECK-NEXT: $x10 = COPY [[ADD]](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_ADD %2, %359 %5:_(s32) = G_ANYEXT %4(s16)60 $x10 = COPY %5(s32)61 PseudoRET implicit $x1062 63...64---65name: add_i3266body: |67 bb.0.entry:68 ; CHECK-LABEL: name: add_i3269 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $x1070 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1171 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[COPY1]]72 ; CHECK-NEXT: $x10 = COPY [[ADD]](s32)73 ; CHECK-NEXT: PseudoRET implicit $x1074 %0:_(s32) = COPY $x1075 %1:_(s32) = COPY $x1176 %2:_(s32) = G_ADD %0, %177 $x10 = COPY %2(s32)78 PseudoRET implicit $x1079 80...81---82name: add_i4883body: |84 bb.0.entry:85 ; CHECK-LABEL: name: add_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: [[ADD:%[0-9]+]]:_(s32) = G_ADD %xlo, %ylo91 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[ADD]](s32), %ylo92 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[ADD]](s32)93 ; CHECK-NEXT: [[ADD1:%[0-9]+]]:_(s32) = G_ADD %xhi, %yhi94 ; CHECK-NEXT: [[ADD2:%[0-9]+]]:_(s32) = G_ADD [[ADD1]], [[ICMP]]95 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[ADD2]](s32)96 ; CHECK-NEXT: $x10 = COPY [[COPY]](s32)97 ; CHECK-NEXT: $x11 = COPY [[COPY1]](s32)98 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x1199 %xlo:_(s32) = COPY $x10100 %xhi:_(s32) = COPY $x11101 %ylo:_(s32) = COPY $x12102 %yhi:_(s32) = COPY $x13103 %x0:_(s64) = G_MERGE_VALUES %xlo(s32), %xhi(s32)104 %y0:_(s64) = G_MERGE_VALUES %ylo(s32), %yhi(s32)105 %x:_(s48) = G_TRUNC %x0(s64)106 %y:_(s48) = G_TRUNC %y0(s64)107 %z:_(s48) = G_ADD %x, %y108 %z0:_(s64) = G_ANYEXT %z(s48)109 %zlo:_(s32), %zhi:_(s32) = G_UNMERGE_VALUES %z0(s64)110 $x10 = COPY %zlo(s32)111 $x11 = COPY %zhi(s32)112 PseudoRET implicit $x10, implicit $x11113 114...115---116name: add_i64117body: |118 bb.0.entry:119 ; CHECK-LABEL: name: add_i64120 ; CHECK: %lo1:_(s32) = COPY $x10121 ; CHECK-NEXT: %hi1:_(s32) = COPY $x11122 ; CHECK-NEXT: %lo2:_(s32) = COPY $x12123 ; CHECK-NEXT: %hi2:_(s32) = COPY $x13124 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD %lo1, %lo2125 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[ADD]](s32), %lo2126 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[ADD]](s32)127 ; CHECK-NEXT: [[ADD1:%[0-9]+]]:_(s32) = G_ADD %hi1, %hi2128 ; CHECK-NEXT: [[ADD2:%[0-9]+]]:_(s32) = G_ADD [[ADD1]], [[ICMP]]129 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[ADD2]](s32)130 ; CHECK-NEXT: $x10 = COPY [[COPY]](s32)131 ; CHECK-NEXT: $x11 = COPY [[COPY1]](s32)132 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11133 %lo1:_(s32) = COPY $x10134 %hi1:_(s32) = COPY $x11135 %lo2:_(s32) = COPY $x12136 %hi2:_(s32) = COPY $x13137 %x1:_(s64) = G_MERGE_VALUES %lo1(s32), %hi1(s32)138 %x2:_(s64) = G_MERGE_VALUES %lo2(s32), %hi2(s32)139 %y:_(s64) = G_ADD %x1, %x2140 %loy:_(s32), %hiy:_(s32) = G_UNMERGE_VALUES %y(s64)141 $x10 = COPY %loy(s32)142 $x11 = COPY %hiy(s32)143 PseudoRET implicit $x10, implicit $x11144 145...146---147name: add_i96148body: |149 bb.0.entry:150 ; CHECK-LABEL: name: add_i96151 ; CHECK: %lo1:_(s32) = COPY $x10152 ; CHECK-NEXT: %mid1:_(s32) = COPY $x11153 ; CHECK-NEXT: %hi1:_(s32) = COPY $x12154 ; CHECK-NEXT: %lo2:_(s32) = COPY $x13155 ; CHECK-NEXT: %mid2:_(s32) = COPY $x14156 ; CHECK-NEXT: %hi2:_(s32) = COPY $x15157 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD %lo1, %lo2158 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[ADD]](s32), %lo2159 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[ADD]](s32)160 ; CHECK-NEXT: [[ADD1:%[0-9]+]]:_(s32) = G_ADD %mid1, %mid2161 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[ADD1]](s32), %mid1162 ; CHECK-NEXT: [[ADD2:%[0-9]+]]:_(s32) = G_ADD [[ADD1]], [[ICMP]]163 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0164 ; CHECK-NEXT: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[ADD2]](s32), [[C]]165 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ICMP2]], [[ICMP]]166 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[ICMP1]], [[AND]]167 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[ADD2]](s32)168 ; CHECK-NEXT: [[ADD3:%[0-9]+]]:_(s32) = G_ADD %hi1, %hi2169 ; CHECK-NEXT: [[ADD4:%[0-9]+]]:_(s32) = G_ADD [[ADD3]], [[OR]]170 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[ADD4]](s32)171 ; CHECK-NEXT: $x10 = COPY [[COPY]](s32)172 ; CHECK-NEXT: $x11 = COPY [[COPY1]](s32)173 ; CHECK-NEXT: $x12 = COPY [[COPY2]](s32)174 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11, implicit $x12175 %lo1:_(s32) = COPY $x10176 %mid1:_(s32) = COPY $x11177 %hi1:_(s32) = COPY $x12178 %lo2:_(s32) = COPY $x13179 %mid2:_(s32) = COPY $x14180 %hi2:_(s32) = COPY $x15181 %x1:_(s96) = G_MERGE_VALUES %lo1(s32), %mid1(s32), %hi1(s32)182 %x2:_(s96) = G_MERGE_VALUES %lo2(s32), %mid2(s32), %hi2(s32)183 %y:_(s96) = G_ADD %x1, %x2184 %lo:_(s32), %mid:_(s32), %hi:_(s32) = G_UNMERGE_VALUES %y(s96)185 $x10 = COPY %lo(s32)186 $x11 = COPY %mid(s32)187 $x12 = COPY %hi(s32)188 PseudoRET implicit $x10, implicit $x11, implicit $x12189 190...191