brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.8 KiB · 673b7f1 Raw
184 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-unknown | FileCheck %s --check-prefix=X863; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+movbe | FileCheck %s --check-prefix=X86-MOVBE4; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s --check-prefix=X645; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+movbe | FileCheck %s --check-prefix=X64-MOVBE6 7declare i64  @llvm.bswap.i64(i64)8declare i128 @llvm.bswap.i128(i128)9declare i256 @llvm.bswap.i256(i256)10 11define i64 @bswap_i64(i64 %a0) nounwind {12; X86-LABEL: bswap_i64:13; X86:       # %bb.0:14; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx15; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax16; X86-NEXT:    bswapl %eax17; X86-NEXT:    bswapl %edx18; X86-NEXT:    retl19;20; X86-MOVBE-LABEL: bswap_i64:21; X86-MOVBE:       # %bb.0:22; X86-MOVBE-NEXT:    movbel {{[0-9]+}}(%esp), %eax23; X86-MOVBE-NEXT:    movbel {{[0-9]+}}(%esp), %edx24; X86-MOVBE-NEXT:    retl25;26; X64-LABEL: bswap_i64:27; X64:       # %bb.0:28; X64-NEXT:    movq %rdi, %rax29; X64-NEXT:    bswapq %rax30; X64-NEXT:    retq31;32; X64-MOVBE-LABEL: bswap_i64:33; X64-MOVBE:       # %bb.0:34; X64-MOVBE-NEXT:    movq %rdi, %rax35; X64-MOVBE-NEXT:    bswapq %rax36; X64-MOVBE-NEXT:    retq37  %1 = call i64 @llvm.bswap.i64(i64 %a0)38  ret i64 %139}40 41define i128 @bswap_i128(i128 %a0) nounwind {42; X86-LABEL: bswap_i128:43; X86:       # %bb.0:44; X86-NEXT:    pushl %ebp45; X86-NEXT:    movl %esp, %ebp46; X86-NEXT:    pushl %edi47; X86-NEXT:    pushl %esi48; X86-NEXT:    andl $-16, %esp49; X86-NEXT:    movl 8(%ebp), %eax50; X86-NEXT:    movl 24(%ebp), %ecx51; X86-NEXT:    movl 28(%ebp), %edx52; X86-NEXT:    movl 32(%ebp), %esi53; X86-NEXT:    movl 36(%ebp), %edi54; X86-NEXT:    bswapl %edi55; X86-NEXT:    bswapl %esi56; X86-NEXT:    bswapl %edx57; X86-NEXT:    bswapl %ecx58; X86-NEXT:    movl %ecx, 12(%eax)59; X86-NEXT:    movl %edx, 8(%eax)60; X86-NEXT:    movl %esi, 4(%eax)61; X86-NEXT:    movl %edi, (%eax)62; X86-NEXT:    leal -8(%ebp), %esp63; X86-NEXT:    popl %esi64; X86-NEXT:    popl %edi65; X86-NEXT:    popl %ebp66; X86-NEXT:    retl $467;68; X86-MOVBE-LABEL: bswap_i128:69; X86-MOVBE:       # %bb.0:70; X86-MOVBE-NEXT:    pushl %ebp71; X86-MOVBE-NEXT:    movl %esp, %ebp72; X86-MOVBE-NEXT:    pushl %edi73; X86-MOVBE-NEXT:    pushl %esi74; X86-MOVBE-NEXT:    andl $-16, %esp75; X86-MOVBE-NEXT:    movl 8(%ebp), %eax76; X86-MOVBE-NEXT:    movl 32(%ebp), %ecx77; X86-MOVBE-NEXT:    movl 36(%ebp), %edx78; X86-MOVBE-NEXT:    movl 24(%ebp), %esi79; X86-MOVBE-NEXT:    movl 28(%ebp), %edi80; X86-MOVBE-NEXT:    movbel %esi, 12(%eax)81; X86-MOVBE-NEXT:    movbel %edi, 8(%eax)82; X86-MOVBE-NEXT:    movbel %ecx, 4(%eax)83; X86-MOVBE-NEXT:    movbel %edx, (%eax)84; X86-MOVBE-NEXT:    leal -8(%ebp), %esp85; X86-MOVBE-NEXT:    popl %esi86; X86-MOVBE-NEXT:    popl %edi87; X86-MOVBE-NEXT:    popl %ebp88; X86-MOVBE-NEXT:    retl $489;90; X64-LABEL: bswap_i128:91; X64:       # %bb.0:92; X64-NEXT:    movq %rsi, %rax93; X64-NEXT:    bswapq %rax94; X64-NEXT:    bswapq %rdi95; X64-NEXT:    movq %rdi, %rdx96; X64-NEXT:    retq97;98; X64-MOVBE-LABEL: bswap_i128:99; X64-MOVBE:       # %bb.0:100; X64-MOVBE-NEXT:    movq %rsi, %rax101; X64-MOVBE-NEXT:    bswapq %rax102; X64-MOVBE-NEXT:    bswapq %rdi103; X64-MOVBE-NEXT:    movq %rdi, %rdx104; X64-MOVBE-NEXT:    retq105  %1 = call i128 @llvm.bswap.i128(i128 %a0)106  ret i128 %1107}108 109define i256 @bswap_i256(i256 %a0) nounwind {110; X86-LABEL: bswap_i256:111; X86:       # %bb.0:112; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax113; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx114; X86-NEXT:    bswapl %ecx115; X86-NEXT:    movl %ecx, 28(%eax)116; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx117; X86-NEXT:    bswapl %ecx118; X86-NEXT:    movl %ecx, 24(%eax)119; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx120; X86-NEXT:    bswapl %ecx121; X86-NEXT:    movl %ecx, 20(%eax)122; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx123; X86-NEXT:    bswapl %ecx124; X86-NEXT:    movl %ecx, 16(%eax)125; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx126; X86-NEXT:    bswapl %ecx127; X86-NEXT:    movl %ecx, 12(%eax)128; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx129; X86-NEXT:    bswapl %ecx130; X86-NEXT:    movl %ecx, 8(%eax)131; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx132; X86-NEXT:    bswapl %ecx133; X86-NEXT:    movl %ecx, 4(%eax)134; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx135; X86-NEXT:    bswapl %ecx136; X86-NEXT:    movl %ecx, (%eax)137; X86-NEXT:    retl $4138;139; X86-MOVBE-LABEL: bswap_i256:140; X86-MOVBE:       # %bb.0:141; X86-MOVBE-NEXT:    movl {{[0-9]+}}(%esp), %eax142; X86-MOVBE-NEXT:    movl {{[0-9]+}}(%esp), %ecx143; X86-MOVBE-NEXT:    movbel %ecx, 28(%eax)144; X86-MOVBE-NEXT:    movl {{[0-9]+}}(%esp), %ecx145; X86-MOVBE-NEXT:    movbel %ecx, 24(%eax)146; X86-MOVBE-NEXT:    movl {{[0-9]+}}(%esp), %ecx147; X86-MOVBE-NEXT:    movbel %ecx, 20(%eax)148; X86-MOVBE-NEXT:    movl {{[0-9]+}}(%esp), %ecx149; X86-MOVBE-NEXT:    movbel %ecx, 16(%eax)150; X86-MOVBE-NEXT:    movl {{[0-9]+}}(%esp), %ecx151; X86-MOVBE-NEXT:    movbel %ecx, 12(%eax)152; X86-MOVBE-NEXT:    movl {{[0-9]+}}(%esp), %ecx153; X86-MOVBE-NEXT:    movbel %ecx, 8(%eax)154; X86-MOVBE-NEXT:    movl {{[0-9]+}}(%esp), %ecx155; X86-MOVBE-NEXT:    movbel %ecx, 4(%eax)156; X86-MOVBE-NEXT:    movl {{[0-9]+}}(%esp), %ecx157; X86-MOVBE-NEXT:    movbel %ecx, (%eax)158; X86-MOVBE-NEXT:    retl $4159;160; X64-LABEL: bswap_i256:161; X64:       # %bb.0:162; X64-NEXT:    movq %rdi, %rax163; X64-NEXT:    bswapq %r8164; X64-NEXT:    bswapq %rcx165; X64-NEXT:    bswapq %rdx166; X64-NEXT:    bswapq %rsi167; X64-NEXT:    movq %rsi, 24(%rdi)168; X64-NEXT:    movq %rdx, 16(%rdi)169; X64-NEXT:    movq %rcx, 8(%rdi)170; X64-NEXT:    movq %r8, (%rdi)171; X64-NEXT:    retq172;173; X64-MOVBE-LABEL: bswap_i256:174; X64-MOVBE:       # %bb.0:175; X64-MOVBE-NEXT:    movq %rdi, %rax176; X64-MOVBE-NEXT:    movbeq %rsi, 24(%rdi)177; X64-MOVBE-NEXT:    movbeq %rdx, 16(%rdi)178; X64-MOVBE-NEXT:    movbeq %rcx, 8(%rdi)179; X64-MOVBE-NEXT:    movbeq %r8, (%rdi)180; X64-MOVBE-NEXT:    retq181  %1 = call i256 @llvm.bswap.i256(i256 %a0)182  ret i256 %1183}184