262 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 5---6name: zextload_i8_i167body: |8 bb.0:9 liveins: $x1010 11 ; CHECK-LABEL: name: zextload_i8_i1612 ; CHECK: liveins: $x1013 ; CHECK-NEXT: {{ $}}14 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1015 ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))16 ; CHECK-NEXT: $x10 = COPY [[ZEXTLOAD]](s32)17 ; CHECK-NEXT: PseudoRET implicit $x1018 %0:_(p0) = COPY $x1019 %2:_(s16) = G_ZEXTLOAD %0(p0) :: (load (s8))20 %3:_(s32) = G_ANYEXT %2(s16)21 $x10 = COPY %3(s32)22 PseudoRET implicit $x1023 24...25---26name: zextload_i8_i3227body: |28 bb.0:29 liveins: $x1030 31 ; CHECK-LABEL: name: zextload_i8_i3232 ; CHECK: liveins: $x1033 ; CHECK-NEXT: {{ $}}34 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1035 ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))36 ; CHECK-NEXT: $x10 = COPY [[ZEXTLOAD]](s32)37 ; CHECK-NEXT: PseudoRET implicit $x1038 %0:_(p0) = COPY $x1039 %2:_(s32) = G_ZEXTLOAD %0(p0) :: (load (s8))40 $x10 = COPY %2(s32)41 PseudoRET implicit $x1042 43...44---45name: zextload_i16_i3246body: |47 bb.0:48 liveins: $x1049 50 ; CHECK-LABEL: name: zextload_i16_i3251 ; CHECK: liveins: $x1052 ; CHECK-NEXT: {{ $}}53 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1054 ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s16))55 ; CHECK-NEXT: $x10 = COPY [[ZEXTLOAD]](s32)56 ; CHECK-NEXT: PseudoRET implicit $x1057 %0:_(p0) = COPY $x1058 %2:_(s32) = G_ZEXTLOAD %0(p0) :: (load (s16))59 $x10 = COPY %2(s32)60 PseudoRET implicit $x1061 62...63---64name: zextload_i8_i6465body: |66 bb.0:67 liveins: $x1068 69 ; CHECK-LABEL: name: zextload_i8_i6470 ; CHECK: liveins: $x1071 ; CHECK-NEXT: {{ $}}72 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1073 ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))74 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 075 ; CHECK-NEXT: $x10 = COPY [[ZEXTLOAD]](s32)76 ; CHECK-NEXT: $x11 = COPY [[C]](s32)77 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x1178 %0:_(p0) = COPY $x1079 %2:_(s64) = G_ZEXTLOAD %0(p0) :: (load (s8))80 %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %2(s64)81 $x10 = COPY %3(s32)82 $x11 = COPY %4(s32)83 PseudoRET implicit $x10, implicit $x1184 85...86---87name: zextload_i16_i6488body: |89 bb.0:90 liveins: $x1091 92 ; CHECK-LABEL: name: zextload_i16_i6493 ; CHECK: liveins: $x1094 ; CHECK-NEXT: {{ $}}95 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1096 ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s16))97 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 098 ; CHECK-NEXT: $x10 = COPY [[ZEXTLOAD]](s32)99 ; CHECK-NEXT: $x11 = COPY [[C]](s32)100 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11101 %0:_(p0) = COPY $x10102 %2:_(s64) = G_ZEXTLOAD %0(p0) :: (load (s16))103 %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %2(s64)104 $x10 = COPY %3(s32)105 $x11 = COPY %4(s32)106 PseudoRET implicit $x10, implicit $x11107 108...109---110name: zextload_i32_i64111body: |112 bb.0:113 liveins: $x10114 115 ; CHECK-LABEL: name: zextload_i32_i64116 ; CHECK: liveins: $x10117 ; CHECK-NEXT: {{ $}}118 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10119 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s32))120 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0121 ; CHECK-NEXT: $x10 = COPY [[LOAD]](s32)122 ; CHECK-NEXT: $x11 = COPY [[C]](s32)123 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11124 %0:_(p0) = COPY $x10125 %2:_(s64) = G_ZEXTLOAD %0(p0) :: (load (s32))126 %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %2(s64)127 $x10 = COPY %3(s32)128 $x11 = COPY %4(s32)129 PseudoRET implicit $x10, implicit $x11130 131...132---133name: sextload_i8_i16134body: |135 bb.0:136 liveins: $x10137 138 ; CHECK-LABEL: name: sextload_i8_i16139 ; CHECK: liveins: $x10140 ; CHECK-NEXT: {{ $}}141 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10142 ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))143 ; CHECK-NEXT: $x10 = COPY [[SEXTLOAD]](s32)144 ; CHECK-NEXT: PseudoRET implicit $x10145 %0:_(p0) = COPY $x10146 %2:_(s16) = G_SEXTLOAD %0(p0) :: (load (s8))147 %3:_(s32) = G_ANYEXT %2(s16)148 $x10 = COPY %3(s32)149 PseudoRET implicit $x10150 151...152---153name: sextload_i8_i32154body: |155 bb.0:156 liveins: $x10157 158 ; CHECK-LABEL: name: sextload_i8_i32159 ; CHECK: liveins: $x10160 ; CHECK-NEXT: {{ $}}161 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10162 ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))163 ; CHECK-NEXT: $x10 = COPY [[SEXTLOAD]](s32)164 ; CHECK-NEXT: PseudoRET implicit $x10165 %0:_(p0) = COPY $x10166 %2:_(s32) = G_SEXTLOAD %0(p0) :: (load (s8))167 $x10 = COPY %2(s32)168 PseudoRET implicit $x10169 170...171---172name: sextload_i16_i32173body: |174 bb.0:175 liveins: $x10176 177 ; CHECK-LABEL: name: sextload_i16_i32178 ; CHECK: liveins: $x10179 ; CHECK-NEXT: {{ $}}180 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10181 ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s16))182 ; CHECK-NEXT: $x10 = COPY [[SEXTLOAD]](s32)183 ; CHECK-NEXT: PseudoRET implicit $x10184 %0:_(p0) = COPY $x10185 %2:_(s32) = G_SEXTLOAD %0(p0) :: (load (s16))186 $x10 = COPY %2(s32)187 PseudoRET implicit $x10188 189...190---191name: sextload_i8_i64192body: |193 bb.0:194 liveins: $x10195 196 ; CHECK-LABEL: name: sextload_i8_i64197 ; CHECK: liveins: $x10198 ; CHECK-NEXT: {{ $}}199 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10200 ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))201 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 31202 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SEXTLOAD]], [[C]](s32)203 ; CHECK-NEXT: $x10 = COPY [[SEXTLOAD]](s32)204 ; CHECK-NEXT: $x11 = COPY [[ASHR]](s32)205 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11206 %0:_(p0) = COPY $x10207 %2:_(s64) = G_SEXTLOAD %0(p0) :: (load (s8))208 %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %2(s64)209 $x10 = COPY %3(s32)210 $x11 = COPY %4(s32)211 PseudoRET implicit $x10, implicit $x11212 213...214---215name: sextload_i16_i64216body: |217 bb.0:218 liveins: $x10219 220 ; CHECK-LABEL: name: sextload_i16_i64221 ; CHECK: liveins: $x10222 ; CHECK-NEXT: {{ $}}223 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10224 ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s16))225 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 31226 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SEXTLOAD]], [[C]](s32)227 ; CHECK-NEXT: $x10 = COPY [[SEXTLOAD]](s32)228 ; CHECK-NEXT: $x11 = COPY [[ASHR]](s32)229 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11230 %0:_(p0) = COPY $x10231 %2:_(s64) = G_SEXTLOAD %0(p0) :: (load (s16))232 %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %2(s64)233 $x10 = COPY %3(s32)234 $x11 = COPY %4(s32)235 PseudoRET implicit $x10, implicit $x11236 237...238---239name: sextload_i32_i64240body: |241 bb.0:242 liveins: $x10243 244 ; CHECK-LABEL: name: sextload_i32_i64245 ; CHECK: liveins: $x10246 ; CHECK-NEXT: {{ $}}247 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10248 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s32))249 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 31250 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[LOAD]], [[C]](s32)251 ; CHECK-NEXT: $x10 = COPY [[LOAD]](s32)252 ; CHECK-NEXT: $x11 = COPY [[ASHR]](s32)253 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11254 %0:_(p0) = COPY $x10255 %2:_(s64) = G_SEXTLOAD %0(p0) :: (load (s32))256 %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %2(s64)257 $x10 = COPY %3(s32)258 $x11 = COPY %4(s32)259 PseudoRET implicit $x10, implicit $x11260 261...262