|
12 | 12 | @.str4 = private unnamed_addr constant [18 x i8] c"DHRYSTONE PROGR \00", align 1
|
13 | 13 | @.str5 = private unnamed_addr constant [7 x i8] c"DHRYST\00", align 1
|
14 | 14 | @.str6 = private unnamed_addr constant [14 x i8] c"/tmp/rmXXXXXX\00", align 1
|
| 15 | +@empty = private unnamed_addr constant [31 x i8] zeroinitializer, align 1 |
15 | 16 | @spool.splbuf = internal global [512 x i8] zeroinitializer, align 16
|
16 | 17 |
|
17 | 18 | define i32 @t0() {
|
@@ -282,5 +283,31 @@ entry:
|
282 | 283 | ret void
|
283 | 284 | }
|
284 | 285 |
|
| 286 | +define void @copy_from_zero_constant(ptr nocapture %C) nounwind { |
| 287 | +; CHECK-LABEL: copy_from_zero_constant: |
| 288 | +; CHECK: @ %bb.0: @ %entry |
| 289 | +; CHECK-NEXT: vmov.i32 q8, #0x0 |
| 290 | +; CHECK-NEXT: movs r1, #15 |
| 291 | +; CHECK-NEXT: vst1.8 {d16, d17}, [r0], r1 |
| 292 | +; CHECK-NEXT: vst1.8 {d16, d17}, [r0] |
| 293 | +; CHECK-NEXT: bx lr |
| 294 | +; |
| 295 | +; CHECK-T1-LABEL: copy_from_zero_constant: |
| 296 | +; CHECK-T1: @ %bb.0: @ %entry |
| 297 | +; CHECK-T1-NEXT: .save {r7, lr} |
| 298 | +; CHECK-T1-NEXT: push {r7, lr} |
| 299 | +; CHECK-T1-NEXT: ldr r1, .LCPI8_0 |
| 300 | +; CHECK-T1-NEXT: movs r2, #31 |
| 301 | +; CHECK-T1-NEXT: bl __aeabi_memcpy |
| 302 | +; CHECK-T1-NEXT: pop {r7, pc} |
| 303 | +; CHECK-T1-NEXT: .p2align 2 |
| 304 | +; CHECK-T1-NEXT: @ %bb.1: |
| 305 | +; CHECK-T1-NEXT: .LCPI8_0: |
| 306 | +; CHECK-T1-NEXT: .long .Lempty |
| 307 | +entry: |
| 308 | + tail call void @llvm.memcpy.p0.p0.i64(ptr %C, ptr @empty, i64 31, i1 false) |
| 309 | + ret void |
| 310 | +} |
| 311 | + |
285 | 312 | declare void @llvm.memcpy.p0.p0.i32(ptr nocapture, ptr nocapture, i32, i1) nounwind
|
286 | 313 | declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture, i64, i1) nounwind
|
0 commit comments