117 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -mtriple=x86_64-apple-macosx10.7 -passes=inferattrs,dse -S %s | FileCheck %s3 4; Tests for libcalls only available on Darwin platforms.5 6declare void @memset_pattern4(ptr, ptr, i64)7declare void @memset_pattern8(ptr, ptr, i64)8declare void @memset_pattern16(ptr, ptr, i64)9 10define void @test_memset_pattern4_const_size(ptr noalias %a, ptr noalias %pattern) {11; CHECK-LABEL: @test_memset_pattern4_const_size(12; CHECK-NEXT: entry:13; CHECK-NEXT: [[A_GEP_17:%.*]] = getelementptr i8, ptr [[A:%.*]], i32 1714; CHECK-NEXT: store i8 1, ptr [[A_GEP_17]], align 115; CHECK-NEXT: call void @memset_pattern4(ptr [[A]], ptr [[PATTERN:%.*]], i64 17)16; CHECK-NEXT: ret void17;18entry:19 %a.gep.1 = getelementptr i8, ptr %a, i32 120 store i8 0, ptr %a.gep.121 %a.gep.17 = getelementptr i8, ptr %a, i32 1722 store i8 1, ptr %a.gep.1723 call void @memset_pattern4(ptr %a, ptr %pattern, i64 17)24 ret void25}26 27define void @test_memset_pattern4_variable_size(ptr noalias %a, ptr noalias %pattern, i64 %n) {28; CHECK-LABEL: @test_memset_pattern4_variable_size(29; CHECK-NEXT: entry:30; CHECK-NEXT: [[A_GEP_1:%.*]] = getelementptr i8, ptr [[A:%.*]], i32 131; CHECK-NEXT: store i8 0, ptr [[A_GEP_1]], align 132; CHECK-NEXT: [[A_GEP_17:%.*]] = getelementptr i8, ptr [[A]], i32 1733; CHECK-NEXT: store i8 1, ptr [[A_GEP_17]], align 134; CHECK-NEXT: call void @memset_pattern4(ptr [[A]], ptr [[PATTERN:%.*]], i64 [[N:%.*]])35; CHECK-NEXT: ret void36;37entry:38 %a.gep.1 = getelementptr i8, ptr %a, i32 139 store i8 0, ptr %a.gep.140 %a.gep.17 = getelementptr i8, ptr %a, i32 1741 store i8 1, ptr %a.gep.1742 call void @memset_pattern4(ptr %a, ptr %pattern, i64 %n)43 ret void44}45 46define void @test_memset_pattern8_const_size(ptr noalias %a, ptr noalias %pattern) {47; CHECK-LABEL: @test_memset_pattern8_const_size(48; CHECK-NEXT: entry:49; CHECK-NEXT: [[A_GEP_17:%.*]] = getelementptr i8, ptr [[A:%.*]], i32 1750; CHECK-NEXT: store i8 1, ptr [[A_GEP_17]], align 151; CHECK-NEXT: call void @memset_pattern8(ptr [[A]], ptr [[PATTERN:%.*]], i64 17)52; CHECK-NEXT: ret void53;54entry:55 %a.gep.1 = getelementptr i8, ptr %a, i32 156 store i8 0, ptr %a.gep.157 %a.gep.17 = getelementptr i8, ptr %a, i32 1758 store i8 1, ptr %a.gep.1759 call void @memset_pattern8(ptr %a, ptr %pattern, i64 17)60 ret void61}62 63define void @test_memset_pattern8_variable_size(ptr noalias %a, ptr noalias %pattern, i64 %n) {64; CHECK-LABEL: @test_memset_pattern8_variable_size(65; CHECK-NEXT: entry:66; CHECK-NEXT: [[A_GEP_1:%.*]] = getelementptr i8, ptr [[A:%.*]], i32 167; CHECK-NEXT: store i8 0, ptr [[A_GEP_1]], align 168; CHECK-NEXT: [[A_GEP_17:%.*]] = getelementptr i8, ptr [[A]], i32 1769; CHECK-NEXT: store i8 1, ptr [[A_GEP_17]], align 170; CHECK-NEXT: call void @memset_pattern8(ptr [[A]], ptr [[PATTERN:%.*]], i64 [[N:%.*]])71; CHECK-NEXT: ret void72;73entry:74 %a.gep.1 = getelementptr i8, ptr %a, i32 175 store i8 0, ptr %a.gep.176 %a.gep.17 = getelementptr i8, ptr %a, i32 1777 store i8 1, ptr %a.gep.1778 call void @memset_pattern8(ptr %a, ptr %pattern, i64 %n)79 ret void80}81 82define void @test_memset_pattern16_const_size(ptr noalias %a, ptr noalias %pattern) {83; CHECK-LABEL: @test_memset_pattern16_const_size(84; CHECK-NEXT: entry:85; CHECK-NEXT: [[A_GEP_17:%.*]] = getelementptr i8, ptr [[A:%.*]], i32 1786; CHECK-NEXT: store i8 1, ptr [[A_GEP_17]], align 187; CHECK-NEXT: call void @memset_pattern16(ptr [[A]], ptr [[PATTERN:%.*]], i64 17)88; CHECK-NEXT: ret void89;90entry:91 %a.gep.1 = getelementptr i8, ptr %a, i32 192 store i8 0, ptr %a.gep.193 %a.gep.17 = getelementptr i8, ptr %a, i32 1794 store i8 1, ptr %a.gep.1795 call void @memset_pattern16(ptr %a, ptr %pattern, i64 17)96 ret void97}98 99define void @test_memset_pattern16_variable_size(ptr noalias %a, ptr noalias %pattern, i64 %n) {100; CHECK-LABEL: @test_memset_pattern16_variable_size(101; CHECK-NEXT: entry:102; CHECK-NEXT: [[A_GEP_1:%.*]] = getelementptr i8, ptr [[A:%.*]], i32 1103; CHECK-NEXT: store i8 0, ptr [[A_GEP_1]], align 1104; CHECK-NEXT: [[A_GEP_17:%.*]] = getelementptr i8, ptr [[A]], i32 17105; CHECK-NEXT: store i8 1, ptr [[A_GEP_17]], align 1106; CHECK-NEXT: call void @memset_pattern16(ptr [[A]], ptr [[PATTERN:%.*]], i64 [[N:%.*]])107; CHECK-NEXT: ret void108;109entry:110 %a.gep.1 = getelementptr i8, ptr %a, i32 1111 store i8 0, ptr %a.gep.1112 %a.gep.17 = getelementptr i8, ptr %a, i32 17113 store i8 1, ptr %a.gep.17114 call void @memset_pattern16(ptr %a, ptr %pattern, i64 %n)115 ret void116}117