brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · d66500e Raw
141 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s3 4define void @tiny_memset_to_rep_stos(ptr %ptr) minsize nounwind {5; CHECK-LABEL: tiny_memset_to_rep_stos:6; CHECK:       # %bb.0: # %entry7; CHECK-NEXT:    andq $0, (%rdi)8; CHECK-NEXT:    retq9entry:10  call void @llvm.memset.p0.i32(ptr align 4 %ptr, i8 0, i32 8, i1 false)11  ret void12}13 14define void @small_memset_to_rep_stos(ptr %ptr) minsize nounwind {15; CHECK-LABEL: small_memset_to_rep_stos:16; CHECK:       # %bb.0: # %entry17; CHECK-NEXT:    pushq $3218; CHECK-NEXT:    popq %rcx19; CHECK-NEXT:    xorl %eax, %eax20; CHECK-NEXT:    rep;stosl %eax, %es:(%rdi)21; CHECK-NEXT:    retq22entry:23  call void @llvm.memset.p0.i32(ptr align 4 %ptr, i8 0, i32 128, i1 false)24  ret void25}26 27define void @medium_memset_to_rep_stos(ptr %ptr) minsize nounwind {28; CHECK-LABEL: medium_memset_to_rep_stos:29; CHECK:       # %bb.0: # %entry30; CHECK-NEXT:    movl $128, %ecx31; CHECK-NEXT:    xorl %eax, %eax32; CHECK-NEXT:    rep;stosl %eax, %es:(%rdi)33; CHECK-NEXT:    retq34entry:35  call void @llvm.memset.p0.i32(ptr align 4 %ptr, i8 0, i32 512, i1 false)36  ret void37}38 39define void @large_memset_to_rep_stos(ptr %ptr) minsize nounwind {40; CHECK-LABEL: large_memset_to_rep_stos:41; CHECK:       # %bb.0: # %entry42; CHECK-NEXT:    movl $1024, %ecx # imm = 0x40043; CHECK-NEXT:    xorl %eax, %eax44; CHECK-NEXT:    rep;stosl %eax, %es:(%rdi)45; CHECK-NEXT:    retq46entry:47  call void @llvm.memset.p0.i32(ptr align 4 %ptr, i8 0, i32 4096, i1 false)48  ret void49}50 51define void @huge_memset_to_rep_stos(ptr %ptr) minsize nounwind {52; CHECK-LABEL: huge_memset_to_rep_stos:53; CHECK:       # %bb.0: # %entry54; CHECK-NEXT:    movl $2048, %ecx # imm = 0x80055; CHECK-NEXT:    xorl %eax, %eax56; CHECK-NEXT:    rep;stosl %eax, %es:(%rdi)57; CHECK-NEXT:    retq58entry:59  call void @llvm.memset.p0.i32(ptr align 4 %ptr, i8 0, i32 8192, i1 false)60  ret void61}62 63define void @odd_length_memset_to_rep_stos(ptr %ptr) minsize nounwind {64; CHECK-LABEL: odd_length_memset_to_rep_stos:65; CHECK:       # %bb.0: # %entry66; CHECK-NEXT:    movl $255, %ecx67; CHECK-NEXT:    xorl %eax, %eax68; CHECK-NEXT:    rep;stosb %al, %es:(%rdi)69; CHECK-NEXT:    retq70entry:71  call void @llvm.memset.p0.i32(ptr align 4 %ptr, i8 0, i32 255, i1 false)72  ret void73}74 75define void @align_1_memset_to_rep_stos(ptr %ptr) minsize nounwind {76; CHECK-LABEL: align_1_memset_to_rep_stos:77; CHECK:       # %bb.0: # %entry78; CHECK-NEXT:    pushq $6479; CHECK-NEXT:    popq %rcx80; CHECK-NEXT:    xorl %eax, %eax81; CHECK-NEXT:    rep;stosl %eax, %es:(%rdi)82; CHECK-NEXT:    retq83entry:84  call void @llvm.memset.p0.i32(ptr align 1 %ptr, i8 0, i32 256, i1 false)85  ret void86}87 88define void @align_2_memset_to_rep_stos(ptr %ptr) minsize nounwind {89; CHECK-LABEL: align_2_memset_to_rep_stos:90; CHECK:       # %bb.0: # %entry91; CHECK-NEXT:    pushq $6492; CHECK-NEXT:    popq %rcx93; CHECK-NEXT:    xorl %eax, %eax94; CHECK-NEXT:    rep;stosl %eax, %es:(%rdi)95; CHECK-NEXT:    retq96entry:97  call void @llvm.memset.p0.i32(ptr align 2 %ptr, i8 0, i32 256, i1 false)98  ret void99}100 101define void @align_4_memset_to_rep_stos(ptr %ptr) minsize nounwind {102; CHECK-LABEL: align_4_memset_to_rep_stos:103; CHECK:       # %bb.0: # %entry104; CHECK-NEXT:    pushq $64105; CHECK-NEXT:    popq %rcx106; CHECK-NEXT:    xorl %eax, %eax107; CHECK-NEXT:    rep;stosl %eax, %es:(%rdi)108; CHECK-NEXT:    retq109entry:110  call void @llvm.memset.p0.i32(ptr align 4 %ptr, i8 0, i32 256, i1 false)111  ret void112}113 114define void @align_8_memset_to_rep_stos(ptr %ptr) minsize nounwind {115; CHECK-LABEL: align_8_memset_to_rep_stos:116; CHECK:       # %bb.0: # %entry117; CHECK-NEXT:    pushq $64118; CHECK-NEXT:    popq %rcx119; CHECK-NEXT:    xorl %eax, %eax120; CHECK-NEXT:    rep;stosl %eax, %es:(%rdi)121; CHECK-NEXT:    retq122entry:123  call void @llvm.memset.p0.i32(ptr align 8 %ptr, i8 0, i32 256, i1 false)124  ret void125}126 127define void @small_memset_to_rep_stos_64(ptr %ptr) minsize nounwind {128; CHECK-LABEL: small_memset_to_rep_stos_64:129; CHECK:       # %bb.0: # %entry130; CHECK-NEXT:    pushq $32131; CHECK-NEXT:    popq %rcx132; CHECK-NEXT:    xorl %eax, %eax133; CHECK-NEXT:    rep;stosl %eax, %es:(%rdi)134; CHECK-NEXT:    retq135entry:136  call void @llvm.memset.p0.i64(ptr align 8 %ptr, i8 0, i64 128, i1 false)137  ret void138}139 140declare void @llvm.memset.p0.i32(ptr nocapture writeonly, i8, i32, i1)141