162 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv64 -run-pass=legalizer %s -o - \3# RUN: | FileCheck %s4---5name: sext_i326body: |7 bb.0.entry:8 ; CHECK-LABEL: name: sext_i329 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x1010 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1111 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[COPY]], [[COPY1]]12 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[ADD]], 3213 ; CHECK-NEXT: $x10 = COPY [[SEXT_INREG]](s64)14 ; CHECK-NEXT: PseudoRET implicit $x1015 %0:_(s64) = COPY $x1016 %1:_(s64) = COPY $x1117 %2:_(s32) = G_TRUNC %0(s64)18 %3:_(s32) = G_TRUNC %1(s64)19 %4:_(s32) = G_ADD %2, %320 %5:_(s64) = G_SEXT %4(s32)21 $x10 = COPY %5(s64)22 PseudoRET implicit $x1023 24...25---26name: zext_i3227body: |28 bb.0.entry:29 ; CHECK-LABEL: name: zext_i3230 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x1031 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1132 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[COPY]], [[COPY1]]33 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[ADD]], 3234 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 429496729535 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[SEXT_INREG]], [[C]]36 ; CHECK-NEXT: $x10 = COPY [[AND]](s64)37 ; CHECK-NEXT: PseudoRET implicit $x1038 %0:_(s64) = COPY $x1039 %1:_(s64) = COPY $x1140 %2:_(s32) = G_TRUNC %0(s64)41 %3:_(s32) = G_TRUNC %1(s64)42 %4:_(s32) = G_ADD %2, %343 %5:_(s64) = G_ZEXT %4(s32)44 $x10 = COPY %5(s64)45 PseudoRET implicit $x1046 47...48---49name: anyext_16_i3250body: |51 ; CHECK-LABEL: name: anyext_16_i3252 ; CHECK: bb.0.entry:53 ; CHECK-NEXT: successors: %bb.1(0x80000000)54 ; CHECK-NEXT: {{ $}}55 ; CHECK-NEXT: bb.1:56 ; CHECK-NEXT: liveins: $x10, $x1157 ; CHECK-NEXT: {{ $}}58 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1059 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1160 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 061 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[C]](s64)62 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load (s16))63 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LOAD]](s16)64 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 165 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C1]]66 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[AND]](s64), [[ANYEXT]], [[TRUNC]]67 ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s64) = G_ANYEXT [[SELECT]](s32)68 ; CHECK-NEXT: $x10 = COPY [[ANYEXT1]](s64)69 ; CHECK-NEXT: PseudoRET implicit $x1070 bb.0.entry:71 bb.1:72 liveins: $x10, $x1173 74 %0:_(p0) = COPY $x1075 %1:_(s64) = COPY $x1176 %2:_(s1) = G_TRUNC %1(s64)77 %3:_(s32) = G_CONSTANT i32 078 %4:_(s16) = G_LOAD %0(p0) :: (load (s16))79 %5:_(s32) = G_ANYEXT %4(s16)80 %6:_(s32) = G_SELECT %2(s1), %5, %381 %7:_(s64) = G_ANYEXT %6(s32)82 $x10 = COPY %7(s64)83 PseudoRET implicit $x1084 85...86---87name: sext_16_i3288body: |89 ; CHECK-LABEL: name: sext_16_i3290 ; CHECK: bb.0.entry:91 ; CHECK-NEXT: successors: %bb.1(0x80000000)92 ; CHECK-NEXT: {{ $}}93 ; CHECK-NEXT: bb.1:94 ; CHECK-NEXT: liveins: $x10, $x1195 ; CHECK-NEXT: {{ $}}96 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1097 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1198 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 099 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[C]](s64)100 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load (s16))101 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[LOAD]](s16)102 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1103 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C1]]104 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[AND]](s64), [[SEXT]], [[TRUNC]]105 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SELECT]](s32)106 ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s64)107 ; CHECK-NEXT: PseudoRET implicit $x10108 bb.0.entry:109 bb.1:110 liveins: $x10, $x11111 112 %0:_(p0) = COPY $x10113 %1:_(s64) = COPY $x11114 %2:_(s1) = G_TRUNC %1(s64)115 %3:_(s32) = G_CONSTANT i32 0116 %4:_(s16) = G_LOAD %0(p0) :: (load (s16))117 %5:_(s32) = G_SEXT %4(s16)118 %6:_(s32) = G_SELECT %2(s1), %5, %3119 %7:_(s64) = G_ANYEXT %6(s32)120 $x10 = COPY %7(s64)121 PseudoRET implicit $x10122 123...124---125name: zext_16_i32126body: |127 ; CHECK-LABEL: name: zext_16_i32128 ; CHECK: bb.0.entry:129 ; CHECK-NEXT: successors: %bb.1(0x80000000)130 ; CHECK-NEXT: {{ $}}131 ; CHECK-NEXT: bb.1:132 ; CHECK-NEXT: liveins: $x10, $x11133 ; CHECK-NEXT: {{ $}}134 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10135 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11136 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0137 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[C]](s64)138 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load (s16))139 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[LOAD]](s16)140 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1141 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C1]]142 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[AND]](s64), [[ZEXT]], [[TRUNC]]143 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SELECT]](s32)144 ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s64)145 ; CHECK-NEXT: PseudoRET implicit $x10146 bb.0.entry:147 bb.1:148 liveins: $x10, $x11149 150 %0:_(p0) = COPY $x10151 %1:_(s64) = COPY $x11152 %2:_(s1) = G_TRUNC %1(s64)153 %3:_(s32) = G_CONSTANT i32 0154 %4:_(s16) = G_LOAD %0(p0) :: (load (s16))155 %5:_(s32) = G_ZEXT %4(s16)156 %6:_(s32) = G_SELECT %2(s1), %5, %3157 %7:_(s64) = G_ANYEXT %6(s32)158 $x10 = COPY %7(s64)159 PseudoRET implicit $x10160 161...162