| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py | |
| ; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \ | |
| ; RUN: | FileCheck %s | |
| define void @foo(i16 %finder_idx) { | |
| ; CHECK-LABEL: foo: | |
| ; CHECK: # %bb.0: # %entry | |
| ; CHECK-NEXT: .LBB0_1: # %for.body | |
| ; CHECK-NEXT: slli a0, a0, 48 | |
| ; CHECK-NEXT: bltz a0, .LBB0_4 | |
| ; CHECK-NEXT: # %bb.2: # %while.cond.preheader.i | |
| ; CHECK-NEXT: j .LBB0_5 | |
| ; CHECK-NEXT: # %bb.3: # %exit1 | |
| ; CHECK-NEXT: li a0, 0 | |
| ; CHECK-NEXT: j .LBB0_1 | |
| ; CHECK-NEXT: .LBB0_4: # %while.cond1.preheader.i | |
| ; CHECK-NEXT: .LBB0_5: # %while.body | |
| entry: | |
| br label %for.body | |
| for.body: | |
| %info = phi i16 [ 0, %if.then ], [ %finder_idx, %entry ] | |
| %cmp.i = icmp sgt i16 %info, -1 | |
| %tobool = icmp eq ptr poison, null | |
| br i1 %cmp.i, label %while.cond.preheader.i, label %while.cond1.preheader.i | |
| while.cond1.preheader.i: | |
| unreachable | |
| while.cond.preheader.i: | |
| br label %exit | |
| exit: | |
| br i1 %tobool, label %exit1, label %while.body | |
| while.body: | |
| unreachable | |
| exit1: | |
| br label %if.then | |
| if.then: | |
| br label %for.body | |
| } | |
| define void @bar(i16 %finder_idx) { | |
| ; CHECK-LABEL: bar: | |
| ; CHECK: # %bb.0: # %entry | |
| ; CHECK-NEXT: .LBB1_1: # %for.body | |
| ; CHECK-NEXT: slli a0, a0, 48 | |
| ; CHECK-NEXT: bgez a0, .LBB1_4 | |
| ; CHECK-NEXT: # %bb.2: # %while.cond.preheader.i | |
| ; CHECK-NEXT: j .LBB1_5 | |
| ; CHECK-NEXT: # %bb.3: # %exit1 | |
| ; CHECK-NEXT: li a0, 0 | |
| ; CHECK-NEXT: j .LBB1_1 | |
| ; CHECK-NEXT: .LBB1_4: # %while.cond1.preheader.i | |
| ; CHECK-NEXT: .LBB1_5: # %while.body | |
| entry: | |
| br label %for.body | |
| for.body: | |
| %info = phi i16 [ 0, %if.then ], [ %finder_idx, %entry ] | |
| %cmp.i = icmp sle i16 %info, -1 | |
| %tobool = icmp eq ptr poison, null | |
| br i1 %cmp.i, label %while.cond.preheader.i, label %while.cond1.preheader.i | |
| while.cond1.preheader.i: | |
| unreachable | |
| while.cond.preheader.i: | |
| br label %exit | |
| exit: | |
| br i1 %tobool, label %exit1, label %while.body | |
| while.body: | |
| unreachable | |
| exit1: | |
| br label %if.then | |
| if.then: | |
| br label %for.body | |
| } |