145 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 %s --check-prefixes=RV64I3# RUN: llc -mtriple=riscv64 -mattr=+zbb -run-pass=legalizer %s -o - \4# RUN: | FileCheck %s --check-prefixes=RV64ZBB5 6---7name: smin_i88body: |9 bb.0.entry:10 ; RV64I-LABEL: name: smin_i811 ; RV64I: [[COPY:%[0-9]+]]:_(s64) = COPY $x1012 ; RV64I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1113 ; RV64I-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 5614 ; RV64I-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)15 ; RV64I-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)16 ; RV64I-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[COPY1]], [[C]](s64)17 ; RV64I-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[SHL1]], [[C]](s64)18 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(slt), [[ASHR]](s64), [[ASHR1]]19 ; RV64I-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)20 ; RV64I-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)21 ; RV64I-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s64), [[TRUNC]], [[TRUNC1]]22 ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SELECT]](s32)23 ; RV64I-NEXT: [[SHL2:%[0-9]+]]:_(s64) = G_SHL [[ANYEXT]], [[C]](s64)24 ; RV64I-NEXT: [[ASHR2:%[0-9]+]]:_(s64) = G_ASHR [[SHL2]], [[C]](s64)25 ; RV64I-NEXT: $x10 = COPY [[ASHR2]](s64)26 ; RV64I-NEXT: PseudoRET implicit $x1027 ;28 ; RV64ZBB-LABEL: name: smin_i829 ; RV64ZBB: [[COPY:%[0-9]+]]:_(s64) = COPY $x1030 ; RV64ZBB-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1131 ; RV64ZBB-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 832 ; RV64ZBB-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY1]], 833 ; RV64ZBB-NEXT: [[SMIN:%[0-9]+]]:_(s64) = G_SMIN [[SEXT_INREG]], [[SEXT_INREG1]]34 ; RV64ZBB-NEXT: $x10 = COPY [[SMIN]](s64)35 ; RV64ZBB-NEXT: PseudoRET implicit $x1036 %0:_(s64) = COPY $x1037 %1:_(s64) = COPY $x1138 %2:_(s8) = G_TRUNC %0(s64)39 %3:_(s8) = G_TRUNC %1(s64)40 %4:_(s8) = G_SMIN %2, %341 %5:_(s64) = G_SEXT %4(s8)42 $x10 = COPY %5(s64)43 PseudoRET implicit $x1044...45 46---47name: smin_i1648body: |49 bb.0.entry:50 ; RV64I-LABEL: name: smin_i1651 ; RV64I: [[COPY:%[0-9]+]]:_(s64) = COPY $x1052 ; RV64I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1153 ; RV64I-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4854 ; RV64I-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)55 ; RV64I-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)56 ; RV64I-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[COPY1]], [[C]](s64)57 ; RV64I-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[SHL1]], [[C]](s64)58 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(slt), [[ASHR]](s64), [[ASHR1]]59 ; RV64I-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)60 ; RV64I-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)61 ; RV64I-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s64), [[TRUNC]], [[TRUNC1]]62 ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SELECT]](s32)63 ; RV64I-NEXT: [[SHL2:%[0-9]+]]:_(s64) = G_SHL [[ANYEXT]], [[C]](s64)64 ; RV64I-NEXT: [[ASHR2:%[0-9]+]]:_(s64) = G_ASHR [[SHL2]], [[C]](s64)65 ; RV64I-NEXT: $x10 = COPY [[ASHR2]](s64)66 ; RV64I-NEXT: PseudoRET implicit $x1067 ;68 ; RV64ZBB-LABEL: name: smin_i1669 ; RV64ZBB: [[COPY:%[0-9]+]]:_(s64) = COPY $x1070 ; RV64ZBB-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1171 ; RV64ZBB-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 1672 ; RV64ZBB-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY1]], 1673 ; RV64ZBB-NEXT: [[SMIN:%[0-9]+]]:_(s64) = G_SMIN [[SEXT_INREG]], [[SEXT_INREG1]]74 ; RV64ZBB-NEXT: $x10 = COPY [[SMIN]](s64)75 ; RV64ZBB-NEXT: PseudoRET implicit $x1076 %0:_(s64) = COPY $x1077 %1:_(s64) = COPY $x1178 %2:_(s16) = G_TRUNC %0(s64)79 %3:_(s16) = G_TRUNC %1(s64)80 %4:_(s16) = G_SMIN %2, %381 %5:_(s64) = G_SEXT %4(s16)82 $x10 = COPY %5(s64)83 PseudoRET implicit $x1084...85 86---87name: smin_i3288body: |89 bb.0.entry:90 ; RV64I-LABEL: name: smin_i3291 ; RV64I: [[COPY:%[0-9]+]]:_(s64) = COPY $x1092 ; RV64I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1193 ; RV64I-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)94 ; RV64I-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)95 ; RV64I-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 3296 ; RV64I-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY1]], 3297 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(slt), [[SEXT_INREG]](s64), [[SEXT_INREG1]]98 ; RV64I-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s64), [[TRUNC]], [[TRUNC1]]99 ; RV64I-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[SELECT]](s32)100 ; RV64I-NEXT: $x10 = COPY [[SEXT]](s64)101 ; RV64I-NEXT: PseudoRET implicit $x10102 ;103 ; RV64ZBB-LABEL: name: smin_i32104 ; RV64ZBB: [[COPY:%[0-9]+]]:_(s64) = COPY $x10105 ; RV64ZBB-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11106 ; RV64ZBB-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32107 ; RV64ZBB-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY1]], 32108 ; RV64ZBB-NEXT: [[SMIN:%[0-9]+]]:_(s64) = G_SMIN [[SEXT_INREG]], [[SEXT_INREG1]]109 ; RV64ZBB-NEXT: $x10 = COPY [[SMIN]](s64)110 ; RV64ZBB-NEXT: PseudoRET implicit $x10111 %0:_(s64) = COPY $x10112 %1:_(s64) = COPY $x11113 %2:_(s32) = G_TRUNC %0(s64)114 %3:_(s32) = G_TRUNC %1(s64)115 %4:_(s32) = G_SMIN %2, %3116 %5:_(s64) = G_SEXT %4(s32)117 $x10 = COPY %5(s64)118 PseudoRET implicit $x10119...120 121---122name: smin_i64123body: |124 bb.0.entry:125 ; RV64I-LABEL: name: smin_i64126 ; RV64I: [[COPY:%[0-9]+]]:_(s64) = COPY $x10127 ; RV64I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11128 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(slt), [[COPY]](s64), [[COPY1]]129 ; RV64I-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s64), [[COPY]], [[COPY1]]130 ; RV64I-NEXT: $x10 = COPY [[SELECT]](s64)131 ; RV64I-NEXT: PseudoRET implicit $x10132 ;133 ; RV64ZBB-LABEL: name: smin_i64134 ; RV64ZBB: [[COPY:%[0-9]+]]:_(s64) = COPY $x10135 ; RV64ZBB-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11136 ; RV64ZBB-NEXT: [[SMIN:%[0-9]+]]:_(s64) = G_SMIN [[COPY]], [[COPY1]]137 ; RV64ZBB-NEXT: $x10 = COPY [[SMIN]](s64)138 ; RV64ZBB-NEXT: PseudoRET implicit $x10139 %0:_(s64) = COPY $x10140 %1:_(s64) = COPY $x11141 %2:_(s64) = G_SMIN %0, %1142 $x10 = COPY %2(s64)143 PseudoRET implicit $x10144...145