120 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv64 -run-pass=legalizer %s -o - | FileCheck %s3 4---5name: merge_i326body: |7 bb.0.entry:8 liveins: $x109 ; CHECK-LABEL: name: merge_i3210 ; CHECK: liveins: $x1011 ; CHECK-NEXT: {{ $}}12 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x1013 ; CHECK-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s64) = G_ASSERT_ZEXT [[COPY]], 1614 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1615 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ASSERT_ZEXT]], [[C]](s64)16 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[ASSERT_ZEXT]], [[SHL]]17 ; CHECK-NEXT: $x10 = COPY [[OR]](s64)18 ; CHECK-NEXT: PseudoRET implicit $x1019 %0:_(s64) = COPY $x1020 %1:_(s64) = G_ASSERT_ZEXT %0, 1621 %2:_(s16) = G_TRUNC %1(s64)22 %3:_(s32) = G_MERGE_VALUES %2(s16), %2(s16)23 %4:_(s64) = G_ZEXT %3(s32)24 $x10 = COPY %4(s64)25 PseudoRET implicit $x1026...27---28name: merge_i6429body: |30 bb.0.entry:31 liveins: $x1032 ; CHECK-LABEL: name: merge_i6433 ; CHECK: liveins: $x1034 ; CHECK-NEXT: {{ $}}35 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x1036 ; CHECK-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s64) = G_ASSERT_ZEXT [[COPY]], 3237 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 3238 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ASSERT_ZEXT]], [[C]](s64)39 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[ASSERT_ZEXT]], [[SHL]]40 ; CHECK-NEXT: $x10 = COPY [[OR]](s64)41 ; CHECK-NEXT: PseudoRET implicit $x1042 %0:_(s64) = COPY $x1043 %1:_(s64) = G_ASSERT_ZEXT %0, 3244 %2:_(s32) = G_TRUNC %1(s64)45 %3:_(s64) = G_MERGE_VALUES %2(s32), %2(s32)46 $x10 = COPY %3(s64)47 PseudoRET implicit $x1048...49---50name: merge_i12851body: |52 bb.0.entry:53 liveins: $x1054 ; CHECK-LABEL: name: merge_i12855 ; CHECK: liveins: $x1056 ; CHECK-NEXT: {{ $}}57 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x1058 ; CHECK-NEXT: $x10 = COPY [[COPY]](s64)59 ; CHECK-NEXT: PseudoRET implicit $x1060 %0:_(s64) = COPY $x1061 %1:_(s128) = G_MERGE_VALUES %0(s64), %0(s64)62 %2:_(s64) = G_TRUNC %1(s128)63 $x10 = COPY %2(s64)64 PseudoRET implicit $x1065...66---67name: unmerge_i3268body: |69 bb.0.entry:70 liveins: $x1071 ; CHECK-LABEL: name: unmerge_i3272 ; CHECK: liveins: $x1073 ; CHECK-NEXT: {{ $}}74 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x1075 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 429496729576 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]77 ; CHECK-NEXT: $x10 = COPY [[AND]](s64)78 ; CHECK-NEXT: PseudoRET implicit $x1079 %0:_(s64) = COPY $x1080 %1:_(s32), %2:_(s32) = G_UNMERGE_VALUES %0(s64)81 %3:_(s64) = G_ZEXT %1(s32)82 $x10 = COPY %3(s64)83 PseudoRET implicit $x1084...85---86name: unmerge_i6487body: |88 bb.0.entry:89 liveins: $x1090 ; CHECK-LABEL: name: unmerge_i6491 ; CHECK: liveins: $x1092 ; CHECK-NEXT: {{ $}}93 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x1094 ; CHECK-NEXT: $x10 = COPY [[COPY]](s64)95 ; CHECK-NEXT: PseudoRET implicit $x1096 %0:_(s64) = COPY $x1097 %1:_(s128) = G_ZEXT %0(s64)98 %2:_(s64), %3:_(s64) = G_UNMERGE_VALUES %1(s128)99 $x10 = COPY %2(s64)100 PseudoRET implicit $x10101...102---103name: unmerge_i128104body: |105 bb.0.entry:106 liveins: $x10107 ; CHECK-LABEL: name: unmerge_i128108 ; CHECK: liveins: $x10109 ; CHECK-NEXT: {{ $}}110 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10111 ; CHECK-NEXT: $x10 = COPY [[COPY]](s64)112 ; CHECK-NEXT: PseudoRET implicit $x10113 %0:_(s64) = COPY $x10114 %1:_(s256) = G_ZEXT %0(s64)115 %2:_(s128), %3:_(s128) = G_UNMERGE_VALUES %1(s256)116 %4:_(s64) = G_TRUNC %2(s128)117 $x10 = COPY %4(s64)118 PseudoRET implicit $x10119...120