Sjoerd Meijer | 9bc93f6 | 2016-06-03 15:38:55 +0000 | [diff] [blame] | 1 | ; RUN: llc -mtriple=thumbv7m-arm-none-eabi -mcpu=cortex-m3 < %s | FileCheck %s |
| 2 | |
| 3 | %struct.mystruct = type { [31 x i8] } |
| 4 | |
| 5 | @.str = private unnamed_addr constant [31 x i8] c"012345678901234567890123456789\00", align 1 |
| 6 | @.str.1 = private unnamed_addr constant [21 x i8] c"01234567890123456789\00", align 1 |
| 7 | |
| 8 | @myglobal = common global %struct.mystruct zeroinitializer, align 1 |
| 9 | |
| 10 | define void @foo() #0 { |
| 11 | entry: |
| 12 | ; CHECK-LABEL: foo: |
| 13 | ; CHECK: __aeabi_memcpy |
| 14 | ; CHECK-NOT: ldm |
| 15 | %mystring = alloca [31 x i8], align 1 |
| 16 | %0 = getelementptr inbounds [31 x i8], [31 x i8]* %mystring, i32 0, i32 0 |
Daniel Neilson | 1e68724 | 2018-01-19 17:13:12 +0000 | [diff] [blame] | 17 | call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %0, i8* align 1 getelementptr inbounds ([31 x i8], [31 x i8]* @.str, i32 0, i32 0), i32 31, i1 false) |
Sjoerd Meijer | 9bc93f6 | 2016-06-03 15:38:55 +0000 | [diff] [blame] | 18 | ret void |
| 19 | } |
| 20 | |
| 21 | define void @bar() #0 { |
| 22 | entry: |
| 23 | ; CHECK-LABEL: bar: |
| 24 | ; CHECK-NOT: __aeabi_memcpy |
| 25 | %mystring = alloca [31 x i8], align 1 |
| 26 | %0 = getelementptr inbounds [31 x i8], [31 x i8]* %mystring, i32 0, i32 0 |
Daniel Neilson | 1e68724 | 2018-01-19 17:13:12 +0000 | [diff] [blame] | 27 | call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %0, i8* align 1 getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i32 0, i32 0), i32 21, i1 false) |
Sjoerd Meijer | 9bc93f6 | 2016-06-03 15:38:55 +0000 | [diff] [blame] | 28 | ret void |
| 29 | } |
| 30 | |
Daniel Neilson | 1e68724 | 2018-01-19 17:13:12 +0000 | [diff] [blame] | 31 | declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture readonly, i32, i1) #1 |
Sjoerd Meijer | 9bc93f6 | 2016-06-03 15:38:55 +0000 | [diff] [blame] | 32 | |
| 33 | attributes #0 = { minsize noinline nounwind optsize } |