|
5 | 5 | ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
|
6 | 6 | declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0
|
7 | 7 |
|
| 8 | +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) |
| 9 | +declare void @llvm.assume(i1 noundef) #0 |
| 10 | + |
8 | 11 | declare fastcc i1 @S_reginclass()
|
9 | 12 |
|
| 13 | +declare fastcc ptr @Perl_av_store(i64) |
| 14 | + |
10 | 15 | define fastcc i32 @S_regrepeat(ptr %startposp, i32 %max, i8 %0, i1 %cmp343) nounwind {
|
11 | 16 | ; CHECK-LABEL: S_regrepeat:
|
12 | 17 | ; CHECK: # %bb.0: # %entry
|
@@ -104,4 +109,71 @@ if.end1497: ; preds = %if.else1492, %sw.ep
|
104 | 109 | ret i32 %c.0
|
105 | 110 | }
|
106 | 111 |
|
| 112 | +define ptr @Perl_pp_refassign(ptr %PL_stack_sp, i1 %tobool.not, i1 %tobool3.not, i1 %cond1) nounwind { |
| 113 | +; CHECK-LABEL: Perl_pp_refassign: |
| 114 | +; CHECK: # %bb.0: # %entry |
| 115 | +; CHECK-NEXT: andi a1, a1, 1 |
| 116 | +; CHECK-NEXT: beqz a1, .LBB1_3 |
| 117 | +; CHECK-NEXT: # %bb.1: |
| 118 | +; CHECK-NEXT: li a1, 0 |
| 119 | +; CHECK-NEXT: andi a2, a2, 1 |
| 120 | +; CHECK-NEXT: bnez a2, .LBB1_4 |
| 121 | +; CHECK-NEXT: .LBB1_2: # %cond.true4 |
| 122 | +; CHECK-NEXT: ld a0, 0(a0) |
| 123 | +; CHECK-NEXT: snez a0, a0 |
| 124 | +; CHECK-NEXT: bnez a0, .LBB1_5 |
| 125 | +; CHECK-NEXT: j .LBB1_6 |
| 126 | +; CHECK-NEXT: .LBB1_3: # %cond.true |
| 127 | +; CHECK-NEXT: ld a1, 0(a0) |
| 128 | +; CHECK-NEXT: andi a2, a2, 1 |
| 129 | +; CHECK-NEXT: beqz a2, .LBB1_2 |
| 130 | +; CHECK-NEXT: .LBB1_4: |
| 131 | +; CHECK-NEXT: beqz zero, .LBB1_6 |
| 132 | +; CHECK-NEXT: .LBB1_5: # %sw.bb85 |
| 133 | +; CHECK-NEXT: addi sp, sp, -16 |
| 134 | +; CHECK-NEXT: sd ra, 8(sp) # 8-byte Folded Spill |
| 135 | +; CHECK-NEXT: ld a0, 0(a1) |
| 136 | +; CHECK-NEXT: call Perl_av_store |
| 137 | +; CHECK-NEXT: ld ra, 8(sp) # 8-byte Folded Reload |
| 138 | +; CHECK-NEXT: addi sp, sp, 16 |
| 139 | +; CHECK-NEXT: .LBB1_6: # %common.ret |
| 140 | +; CHECK-NEXT: li a0, 0 |
| 141 | +; CHECK-NEXT: ret |
| 142 | +entry: |
| 143 | + br i1 %tobool.not, label %cond.end, label %cond.true |
| 144 | + |
| 145 | +cond.true: ; preds = %entry |
| 146 | + %0 = load ptr, ptr %PL_stack_sp, align 8 |
| 147 | + br label %cond.end |
| 148 | + |
| 149 | +cond.end: ; preds = %cond.true, %entry |
| 150 | + %cond = phi ptr [ %0, %cond.true ], [ null, %entry ] |
| 151 | + br i1 %tobool3.not, label %cond.end7, label %cond.true4 |
| 152 | + |
| 153 | +cond.true4: ; preds = %cond.end |
| 154 | + %1 = load ptr, ptr %PL_stack_sp, align 8 |
| 155 | + %2 = icmp ne ptr %1, null |
| 156 | + br label %cond.end7 |
| 157 | + |
| 158 | +cond.end7: ; preds = %cond.true4, %cond.end |
| 159 | + %cond84 = phi i1 [ %2, %cond.true4 ], [ false, %cond.end ] |
| 160 | + br i1 %cond1, label %if.end48, label %sw.bb |
| 161 | + |
| 162 | +sw.bb: ; preds = %cond.end7 |
| 163 | + call void @llvm.assume(i1 %tobool.not) |
| 164 | + br label %if.end48 |
| 165 | + |
| 166 | +if.end48: ; preds = %sw.bb, %cond.end7 |
| 167 | + br i1 %cond84, label %sw.bb85, label %common.ret |
| 168 | + |
| 169 | +common.ret: ; preds = %sw.bb85, %if.end48 |
| 170 | + ret ptr null |
| 171 | + |
| 172 | +sw.bb85: ; preds = %if.end48 |
| 173 | + %3 = load i64, ptr %cond, align 8 |
| 174 | + %call125 = call fastcc ptr @Perl_av_store(i64 %3) |
| 175 | + br label %common.ret |
| 176 | +} |
| 177 | + |
107 | 178 | attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
|
| 179 | +attributes #1 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } |
0 commit comments