brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.2 KiB · 76ade18 Raw
377 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 42# RUN: llc %s -mtriple=riscv64 -run-pass=peephole-opt -o - | FileCheck %s3 4# Make sure we shouldn't replace the %2 ADDI with the $x10 ADDI since it has a5# physical register destination.6 7--- |8  define void @foo(i32 signext %0) {9    tail call void @bar(i32 1)10    %2 = icmp ugt i32 %0, 111    br i1 %2, label %3, label %412 13  3:                                                ; preds = %114    tail call void @bar(i32 3)15    ret void16 17  4:                                                ; preds = %118    ret void19  }20 21  define void @ule_negone(ptr %a, i32 signext %b, ptr %c, ptr %d) {22    store i32 0, ptr %a23    %p = icmp ule i32 %b, -124    br i1 %p, label %block1, label %block225 26  block1:                                           ; preds = %027    store i32 %b, ptr %c28    br label %end_block29 30  block2:                                           ; preds = %031    store i32 87, ptr %d32    br label %end_block33 34  end_block:                                        ; preds = %block2, %block135    ret void36  }37 38  define void @ult_zero(ptr %a, i32 signext %b, ptr %c, ptr %d) {39    store i32 -1, ptr %a40    %p = icmp ult i32 %b, 041    br i1 %p, label %block1, label %block242 43  block1:                                           ; preds = %044    store i32 %b, ptr %c45    br label %end_block46 47  block2:                                           ; preds = %048    store i32 87, ptr %d49    br label %end_block50 51  end_block:                                        ; preds = %block2, %block152    ret void53  }54 55  define void @sle_zero(ptr %a, i32 signext %b, ptr %c, ptr %d) {56    store i32 1, ptr %a57    %p = icmp sle i32 %b, 058    br i1 %p, label %block1, label %block259 60  block1:                                           ; preds = %061    store i32 %b, ptr %c62    br label %end_block63 64  block2:                                           ; preds = %065    store i32 87, ptr %d66    br label %end_block67 68  end_block:                                        ; preds = %block2, %block169    ret void70  }71 72  define void @slt_zero(ptr %a, i32 signext %b, ptr %c, ptr %d) {73    store i32 -1, ptr %a74    %p = icmp slt i32 %b, 075    br i1 %p, label %block1, label %block276 77  block1:                                           ; preds = %078    store i32 %b, ptr %c79    br label %end_block80 81  block2:                                           ; preds = %082    store i32 87, ptr %d83    br label %end_block84 85  end_block:                                        ; preds = %block2, %block186    ret void87  }88 89  declare void @bar(...)90 91...92---93name:            foo94tracksRegLiveness: true95body:             |96  ; CHECK-LABEL: name: foo97  ; CHECK: bb.0 (%ir-block.1):98  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)99  ; CHECK-NEXT:   liveins: $x10100  ; CHECK-NEXT: {{  $}}101  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr = COPY $x10102  ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $x2, implicit $x2103  ; CHECK-NEXT:   $x10 = ADDI $x0, 1104  ; CHECK-NEXT:   PseudoCALL target-flags(riscv-call) @bar, csr_ilp32_lp64, implicit-def dead $x1, implicit $x10, implicit-def $x2105  ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $x2, implicit $x2106  ; CHECK-NEXT:   [[ADDI:%[0-9]+]]:gpr = ADDI $x0, 2107  ; CHECK-NEXT:   BLTU [[COPY]], killed [[ADDI]], %bb.2108  ; CHECK-NEXT:   PseudoBR %bb.1109  ; CHECK-NEXT: {{  $}}110  ; CHECK-NEXT: bb.1 (%ir-block.3):111  ; CHECK-NEXT:   $x10 = ADDI $x0, 3112  ; CHECK-NEXT:   PseudoTAIL target-flags(riscv-call) @bar, implicit $x2, implicit $x10113  ; CHECK-NEXT: {{  $}}114  ; CHECK-NEXT: bb.2 (%ir-block.4):115  ; CHECK-NEXT:   PseudoRET116  bb.0 (%ir-block.1):117    successors: %bb.1, %bb.2118    liveins: $x10119 120    %0:gpr = COPY $x10121    ADJCALLSTACKDOWN 0, 0, implicit-def dead $x2, implicit $x2122    $x10 = ADDI $x0, 1123    PseudoCALL target-flags(riscv-call) @bar, csr_ilp32_lp64, implicit-def dead $x1, implicit $x10, implicit-def $x2124    ADJCALLSTACKUP 0, 0, implicit-def dead $x2, implicit $x2125    %2:gpr = ADDI $x0, 2126    BLTU %0, killed %2, %bb.2127    PseudoBR %bb.1128 129  bb.1 (%ir-block.3):130    $x10 = ADDI $x0, 3131    PseudoTAIL target-flags(riscv-call) @bar, implicit $x2, implicit $x10132 133  bb.2 (%ir-block.4):134    PseudoRET135 136...137---138name:            ule_negone139tracksRegLiveness: true140body:             |141  ; CHECK-LABEL: name: ule_negone142  ; CHECK: bb.0:143  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)144  ; CHECK-NEXT:   liveins: $x10, $x11, $x12, $x13145  ; CHECK-NEXT: {{  $}}146  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr = COPY $x13147  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:gpr = COPY $x12148  ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:gpr = COPY $x11149  ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:gpr = COPY $x10150  ; CHECK-NEXT:   [[ADDI:%[0-9]+]]:gpr = ADDI $x0, 0151  ; CHECK-NEXT:   SW killed [[ADDI]], [[COPY3]], 0 :: (store (s32))152  ; CHECK-NEXT:   [[ADDI1:%[0-9]+]]:gpr = ADDI $x0, -1153  ; CHECK-NEXT:   BLTU killed [[ADDI1]], [[COPY2]], %bb.2154  ; CHECK-NEXT:   PseudoBR %bb.1155  ; CHECK-NEXT: {{  $}}156  ; CHECK-NEXT: bb.1:157  ; CHECK-NEXT:   successors: %bb.3(0x80000000)158  ; CHECK-NEXT: {{  $}}159  ; CHECK-NEXT:   [[COPY4:%[0-9]+]]:gpr = COPY [[COPY2]]160  ; CHECK-NEXT:   SW [[COPY4]], [[COPY1]], 0 :: (store (s32))161  ; CHECK-NEXT:   PseudoBR %bb.3162  ; CHECK-NEXT: {{  $}}163  ; CHECK-NEXT: bb.2:164  ; CHECK-NEXT:   successors: %bb.3(0x80000000)165  ; CHECK-NEXT: {{  $}}166  ; CHECK-NEXT:   [[ADDI2:%[0-9]+]]:gpr = ADDI $x0, 87167  ; CHECK-NEXT:   SW killed [[ADDI2]], [[COPY]], 0 :: (store (s32))168  ; CHECK-NEXT: {{  $}}169  ; CHECK-NEXT: bb.3:170  ; CHECK-NEXT:   PseudoRET171  bb.0:172    successors: %bb.1, %bb.2173    liveins: $x10, $x11, $x12, $x13174 175    %3:gpr = COPY $x13176    %2:gpr = COPY $x12177    %1:gpr = COPY $x11178    %0:gpr = COPY $x10179    %5:gpr = ADDI $x0, 0180    SW killed %5, %0, 0 :: (store (s32))181    %6:gpr = ADDI $x0, -1182    BLTU killed %6, %1, %bb.2183    PseudoBR %bb.1184 185  bb.1:186    %4:gpr = COPY %1187    SW %4, %2, 0 :: (store (s32))188    PseudoBR %bb.3189 190  bb.2:191    %7:gpr = ADDI $x0, 87192    SW killed %7, %3, 0 :: (store (s32))193 194  bb.3:195    PseudoRET196...197---198name:            ult_zero199tracksRegLiveness: true200body:             |201  ; CHECK-LABEL: name: ult_zero202  ; CHECK: bb.0:203  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)204  ; CHECK-NEXT:   liveins: $x10, $x11, $x12, $x13205  ; CHECK-NEXT: {{  $}}206  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr = COPY $x13207  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:gpr = COPY $x12208  ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:gpr = COPY $x11209  ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:gpr = COPY $x10210  ; CHECK-NEXT:   [[ADDI:%[0-9]+]]:gpr = ADDI $x0, -1211  ; CHECK-NEXT:   SW killed [[ADDI]], [[COPY3]], 0 :: (store (s32))212  ; CHECK-NEXT:   [[ADDI1:%[0-9]+]]:gpr = ADDI $x0, 0213  ; CHECK-NEXT:   BLTU [[COPY2]], killed [[ADDI1]], %bb.2214  ; CHECK-NEXT:   PseudoBR %bb.1215  ; CHECK-NEXT: {{  $}}216  ; CHECK-NEXT: bb.1:217  ; CHECK-NEXT:   successors: %bb.3(0x80000000)218  ; CHECK-NEXT: {{  $}}219  ; CHECK-NEXT:   [[COPY4:%[0-9]+]]:gpr = COPY [[COPY2]]220  ; CHECK-NEXT:   SW [[COPY4]], [[COPY1]], 0 :: (store (s32))221  ; CHECK-NEXT:   PseudoBR %bb.3222  ; CHECK-NEXT: {{  $}}223  ; CHECK-NEXT: bb.2:224  ; CHECK-NEXT:   successors: %bb.3(0x80000000)225  ; CHECK-NEXT: {{  $}}226  ; CHECK-NEXT:   [[ADDI2:%[0-9]+]]:gpr = ADDI $x0, 87227  ; CHECK-NEXT:   SW killed [[ADDI2]], [[COPY]], 0 :: (store (s32))228  ; CHECK-NEXT: {{  $}}229  ; CHECK-NEXT: bb.3:230  ; CHECK-NEXT:   PseudoRET231  bb.0:232    successors: %bb.1, %bb.2233    liveins: $x10, $x11, $x12, $x13234 235    %3:gpr = COPY $x13236    %2:gpr = COPY $x12237    %1:gpr = COPY $x11238    %0:gpr = COPY $x10239    %5:gpr = ADDI $x0, -1240    SW killed %5, %0, 0 :: (store (s32))241    %6:gpr = ADDI $x0, 0242    BLTU %1, killed %6, %bb.2243    PseudoBR %bb.1244 245  bb.1:246    %4:gpr = COPY %1247    SW %4, %2, 0 :: (store (s32))248    PseudoBR %bb.3249 250  bb.2:251    %7:gpr = ADDI $x0, 87252    SW killed %7, %3, 0 :: (store (s32))253 254  bb.3:255    PseudoRET256...257---258name:            sle_zero259tracksRegLiveness: true260body:             |261  ; CHECK-LABEL: name: sle_zero262  ; CHECK: bb.0:263  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)264  ; CHECK-NEXT:   liveins: $x10, $x11, $x12, $x13265  ; CHECK-NEXT: {{  $}}266  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr = COPY $x13267  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:gpr = COPY $x12268  ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:gpr = COPY $x11269  ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:gpr = COPY $x10270  ; CHECK-NEXT:   [[ADDI:%[0-9]+]]:gpr = ADDI $x0, 1271  ; CHECK-NEXT:   SW killed [[ADDI]], [[COPY3]], 0 :: (store (s32))272  ; CHECK-NEXT:   [[ADDI1:%[0-9]+]]:gpr = ADDI $x0, 0273  ; CHECK-NEXT:   BLT killed [[ADDI1]], [[COPY2]], %bb.2274  ; CHECK-NEXT:   PseudoBR %bb.1275  ; CHECK-NEXT: {{  $}}276  ; CHECK-NEXT: bb.1:277  ; CHECK-NEXT:   successors: %bb.3(0x80000000)278  ; CHECK-NEXT: {{  $}}279  ; CHECK-NEXT:   [[COPY4:%[0-9]+]]:gpr = COPY [[COPY2]]280  ; CHECK-NEXT:   SW [[COPY4]], [[COPY1]], 0 :: (store (s32))281  ; CHECK-NEXT:   PseudoBR %bb.3282  ; CHECK-NEXT: {{  $}}283  ; CHECK-NEXT: bb.2:284  ; CHECK-NEXT:   successors: %bb.3(0x80000000)285  ; CHECK-NEXT: {{  $}}286  ; CHECK-NEXT:   [[ADDI2:%[0-9]+]]:gpr = ADDI $x0, 87287  ; CHECK-NEXT:   SW killed [[ADDI2]], [[COPY]], 0 :: (store (s32))288  ; CHECK-NEXT: {{  $}}289  ; CHECK-NEXT: bb.3:290  ; CHECK-NEXT:   PseudoRET291  bb.0:292    successors: %bb.1, %bb.2293    liveins: $x10, $x11, $x12, $x13294 295    %3:gpr = COPY $x13296    %2:gpr = COPY $x12297    %1:gpr = COPY $x11298    %0:gpr = COPY $x10299    %5:gpr = ADDI $x0, 1300    SW killed %5, %0, 0 :: (store (s32))301    %6:gpr = ADDI $x0, 0302    BLT killed %6, %1, %bb.2303    PseudoBR %bb.1304 305  bb.1:306    %4:gpr = COPY %1307    SW %4, %2, 0 :: (store (s32))308    PseudoBR %bb.3309 310  bb.2:311    %7:gpr = ADDI $x0, 87312    SW killed %7, %3, 0 :: (store (s32))313 314  bb.3:315    PseudoRET316...317---318name:            slt_zero319tracksRegLiveness: true320body:             |321  ; CHECK-LABEL: name: slt_zero322  ; CHECK: bb.0:323  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)324  ; CHECK-NEXT:   liveins: $x10, $x11, $x12, $x13325  ; CHECK-NEXT: {{  $}}326  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr = COPY $x13327  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:gpr = COPY $x12328  ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:gpr = COPY $x11329  ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:gpr = COPY $x10330  ; CHECK-NEXT:   [[ADDI:%[0-9]+]]:gpr = ADDI $x0, -1331  ; CHECK-NEXT:   SW killed [[ADDI]], [[COPY3]], 0 :: (store (s32))332  ; CHECK-NEXT:   [[ADDI1:%[0-9]+]]:gpr = ADDI $x0, 0333  ; CHECK-NEXT:   BLT [[COPY2]], killed [[ADDI1]], %bb.2334  ; CHECK-NEXT:   PseudoBR %bb.1335  ; CHECK-NEXT: {{  $}}336  ; CHECK-NEXT: bb.1:337  ; CHECK-NEXT:   successors: %bb.3(0x80000000)338  ; CHECK-NEXT: {{  $}}339  ; CHECK-NEXT:   [[COPY4:%[0-9]+]]:gpr = COPY [[COPY2]]340  ; CHECK-NEXT:   SW [[COPY4]], [[COPY1]], 0 :: (store (s32))341  ; CHECK-NEXT:   PseudoBR %bb.3342  ; CHECK-NEXT: {{  $}}343  ; CHECK-NEXT: bb.2:344  ; CHECK-NEXT:   successors: %bb.3(0x80000000)345  ; CHECK-NEXT: {{  $}}346  ; CHECK-NEXT:   [[ADDI2:%[0-9]+]]:gpr = ADDI $x0, 87347  ; CHECK-NEXT:   SW killed [[ADDI2]], [[COPY]], 0 :: (store (s32))348  ; CHECK-NEXT: {{  $}}349  ; CHECK-NEXT: bb.3:350  ; CHECK-NEXT:   PseudoRET351  bb.0:352    successors: %bb.1, %bb.2353    liveins: $x10, $x11, $x12, $x13354 355    %3:gpr = COPY $x13356    %2:gpr = COPY $x12357    %1:gpr = COPY $x11358    %0:gpr = COPY $x10359    %5:gpr = ADDI $x0, -1360    SW killed %5, %0, 0 :: (store (s32))361    %6:gpr = ADDI $x0, 0362    BLT %1, killed %6, %bb.2363    PseudoBR %bb.1364 365  bb.1:366    %4:gpr = COPY %1367    SW %4, %2, 0 :: (store (s32))368    PseudoBR %bb.3369 370  bb.2:371    %7:gpr = ADDI $x0, 87372    SW killed %7, %3, 0 :: (store (s32))373 374  bb.3:375    PseudoRET376...377