84 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s3 4 5declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #16define dso_local void @copy_7_bytes(ptr noalias nocapture, ptr noalias nocapture readonly) nounwind #0 {7; CHECK-LABEL: copy_7_bytes:8; CHECK: # %bb.0:9; CHECK-NEXT: movl (%rsi), %eax10; CHECK-NEXT: movl 3(%rsi), %ecx11; CHECK-NEXT: movl %ecx, 3(%rdi)12; CHECK-NEXT: movl %eax, (%rdi)13; CHECK-NEXT: retq14 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %0, ptr align 1 %1, i64 7, i1 false)15 ret void16}17define dso_local void @copy_7_bytes_volatile(ptr noalias nocapture, ptr noalias nocapture readonly) nounwind #0 {18; CHECK-LABEL: copy_7_bytes_volatile:19; CHECK: # %bb.0:20; CHECK-NEXT: movzbl 6(%rsi), %eax21; CHECK-NEXT: movb %al, 6(%rdi)22; CHECK-NEXT: movzwl 4(%rsi), %eax23; CHECK-NEXT: movw %ax, 4(%rdi)24; CHECK-NEXT: movl (%rsi), %eax25; CHECK-NEXT: movl %eax, (%rdi)26; CHECK-NEXT: retq27 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %0, ptr align 1 %1, i64 7, i1 true)28 ret void29}30 31 32declare void @llvm.memmove.p0.p0.i64(ptr nocapture, ptr nocapture readonly, i64, i1 immarg) #133define dso_local void @move_7_bytes(ptr nocapture, ptr nocapture readonly) nounwind #0 {34; CHECK-LABEL: move_7_bytes:35; CHECK: # %bb.0:36; CHECK-NEXT: movl (%rsi), %eax37; CHECK-NEXT: movzwl 4(%rsi), %ecx38; CHECK-NEXT: movzbl 6(%rsi), %edx39; CHECK-NEXT: movb %dl, 6(%rdi)40; CHECK-NEXT: movw %cx, 4(%rdi)41; CHECK-NEXT: movl %eax, (%rdi)42; CHECK-NEXT: retq43 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %0, ptr align 1 %1, i64 7, i1 false)44 ret void45}46define dso_local void @move_7_bytes_volatile(ptr nocapture, ptr nocapture readonly) nounwind #0 {47; CHECK-LABEL: move_7_bytes_volatile:48; CHECK: # %bb.0:49; CHECK-NEXT: movl (%rsi), %eax50; CHECK-NEXT: movzwl 4(%rsi), %ecx51; CHECK-NEXT: movzbl 6(%rsi), %edx52; CHECK-NEXT: movb %dl, 6(%rdi)53; CHECK-NEXT: movw %cx, 4(%rdi)54; CHECK-NEXT: movl %eax, (%rdi)55; CHECK-NEXT: retq56 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %0, ptr align 1 %1, i64 7, i1 true)57 ret void58}59 60 61declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8 , i64, i1 immarg) #162define dso_local void @set_7_bytes(ptr noalias nocapture) nounwind #0 {63; CHECK-LABEL: set_7_bytes:64; CHECK: # %bb.0:65; CHECK-NEXT: movl $16843009, 3(%rdi) # imm = 0x101010166; CHECK-NEXT: movl $16843009, (%rdi) # imm = 0x101010167; CHECK-NEXT: retq68 tail call void @llvm.memset.p0.i64(ptr align 1 %0, i8 1, i64 7, i1 false)69 ret void70}71define dso_local void @set_7_bytes_volatile(ptr noalias nocapture) nounwind #0 {72; CHECK-LABEL: set_7_bytes_volatile:73; CHECK: # %bb.0:74; CHECK-NEXT: movb $1, 6(%rdi)75; CHECK-NEXT: movw $257, 4(%rdi) # imm = 0x10176; CHECK-NEXT: movl $16843009, (%rdi) # imm = 0x101010177; CHECK-NEXT: retq78 tail call void @llvm.memset.p0.i64(ptr align 1 %0, i8 1, i64 7, i1 true)79 ret void80}81 82attributes #0 = { noreturn nounwind uwtable "target-cpu"="x86-64" }83attributes #1 = { argmemonly nounwind }84