brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.8 KiB · 5e168a8 Raw
233 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=x86_64-unknown-unknown | FileCheck %s --check-prefix=X644 5define <2 x i256> @test_shl(<2 x i256> %In) nounwind {6; X86-LABEL: test_shl:7; X86:       # %bb.0:8; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax9; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx10; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx11; X86-NEXT:    shldl $2, %ecx, %edx12; X86-NEXT:    movl %edx, 60(%eax)13; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx14; X86-NEXT:    shldl $2, %edx, %ecx15; X86-NEXT:    movl %ecx, 56(%eax)16; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx17; X86-NEXT:    shldl $2, %ecx, %edx18; X86-NEXT:    movl %edx, 52(%eax)19; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx20; X86-NEXT:    shldl $2, %edx, %ecx21; X86-NEXT:    movl %ecx, 48(%eax)22; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx23; X86-NEXT:    shldl $2, %ecx, %edx24; X86-NEXT:    movl %edx, 44(%eax)25; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx26; X86-NEXT:    shldl $2, %edx, %ecx27; X86-NEXT:    movl %ecx, 40(%eax)28; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx29; X86-NEXT:    shldl $2, %ecx, %edx30; X86-NEXT:    movl %edx, 36(%eax)31; X86-NEXT:    shll $2, %ecx32; X86-NEXT:    movl %ecx, 32(%eax)33; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx34; X86-NEXT:    shll $31, %ecx35; X86-NEXT:    movl %ecx, 28(%eax)36; X86-NEXT:    movl $0, 24(%eax)37; X86-NEXT:    movl $0, 20(%eax)38; X86-NEXT:    movl $0, 16(%eax)39; X86-NEXT:    movl $0, 12(%eax)40; X86-NEXT:    movl $0, 8(%eax)41; X86-NEXT:    movl $0, 4(%eax)42; X86-NEXT:    movl $0, (%eax)43; X86-NEXT:    retl $444;45; X64-LABEL: test_shl:46; X64:       # %bb.0:47; X64-NEXT:    movq %rdi, %rax48; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rcx49; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rdx50; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rdi51; X64-NEXT:    shldq $2, %rdx, %rcx52; X64-NEXT:    shldq $2, %rdi, %rdx53; X64-NEXT:    shldq $2, %r9, %rdi54; X64-NEXT:    shlq $63, %rsi55; X64-NEXT:    shlq $2, %r956; X64-NEXT:    movq %rcx, 56(%rax)57; X64-NEXT:    movq %rdx, 48(%rax)58; X64-NEXT:    movq %rdi, 40(%rax)59; X64-NEXT:    movq %r9, 32(%rax)60; X64-NEXT:    movq %rsi, 24(%rax)61; X64-NEXT:    xorps %xmm0, %xmm062; X64-NEXT:    movaps %xmm0, (%rax)63; X64-NEXT:    movq $0, 16(%rax)64; X64-NEXT:    retq65  %Amt = insertelement <2 x i256> <i256 1, i256 2>, i256 255, i32 066  %Out = shl <2 x i256> %In, %Amt67  ret <2 x i256> %Out68}69 70define <2 x i256> @test_srl(<2 x i256> %In) nounwind {71; X86-LABEL: test_srl:72; X86:       # %bb.0:73; X86-NEXT:    pushl %ebp74; X86-NEXT:    pushl %ebx75; X86-NEXT:    pushl %edi76; X86-NEXT:    pushl %esi77; X86-NEXT:    subl $8, %esp78; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx79; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp80; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx81; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx82; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax83; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi84; X86-NEXT:    movl %ebp, %esi85; X86-NEXT:    shldl $28, %edx, %esi86; X86-NEXT:    movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill87; X86-NEXT:    shldl $28, %ebx, %edx88; X86-NEXT:    movl %edx, (%esp) # 4-byte Spill89; X86-NEXT:    shldl $28, %ecx, %ebx90; X86-NEXT:    movl %ecx, %esi91; X86-NEXT:    shldl $28, %edi, %esi92; X86-NEXT:    shldl $28, %eax, %edi93; X86-NEXT:    movl %eax, %edx94; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax95; X86-NEXT:    shldl $28, %eax, %edx96; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx97; X86-NEXT:    shrdl $4, %eax, %ecx98; X86-NEXT:    shrl $4, %ebp99; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax100; X86-NEXT:    movl %ebp, 60(%eax)101; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload102; X86-NEXT:    movl %ebp, 56(%eax)103; X86-NEXT:    movl (%esp), %ebp # 4-byte Reload104; X86-NEXT:    movl %ebp, 52(%eax)105; X86-NEXT:    movl %ebx, 48(%eax)106; X86-NEXT:    movl %esi, 44(%eax)107; X86-NEXT:    movl %edi, 40(%eax)108; X86-NEXT:    movl %edx, 36(%eax)109; X86-NEXT:    movl %ecx, 32(%eax)110; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx111; X86-NEXT:    shrl $31, %ecx112; X86-NEXT:    movl %ecx, (%eax)113; X86-NEXT:    movl $0, 28(%eax)114; X86-NEXT:    movl $0, 24(%eax)115; X86-NEXT:    movl $0, 20(%eax)116; X86-NEXT:    movl $0, 16(%eax)117; X86-NEXT:    movl $0, 12(%eax)118; X86-NEXT:    movl $0, 8(%eax)119; X86-NEXT:    movl $0, 4(%eax)120; X86-NEXT:    addl $8, %esp121; X86-NEXT:    popl %esi122; X86-NEXT:    popl %edi123; X86-NEXT:    popl %ebx124; X86-NEXT:    popl %ebp125; X86-NEXT:    retl $4126;127; X64-LABEL: test_srl:128; X64:       # %bb.0:129; X64-NEXT:    movq %rdi, %rax130; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rcx131; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rdx132; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rsi133; X64-NEXT:    shrdq $4, %rsi, %r9134; X64-NEXT:    shrdq $4, %rdx, %rsi135; X64-NEXT:    shrdq $4, %rcx, %rdx136; X64-NEXT:    shrq $63, %r8137; X64-NEXT:    shrq $4, %rcx138; X64-NEXT:    movq %rcx, 56(%rdi)139; X64-NEXT:    movq %rdx, 48(%rdi)140; X64-NEXT:    movq %rsi, 40(%rdi)141; X64-NEXT:    movq %r9, 32(%rdi)142; X64-NEXT:    movq %r8, (%rdi)143; X64-NEXT:    xorps %xmm0, %xmm0144; X64-NEXT:    movaps %xmm0, 16(%rdi)145; X64-NEXT:    movq $0, 8(%rdi)146; X64-NEXT:    retq147  %Amt = insertelement <2 x i256> <i256 3, i256 4>, i256 255, i32 0148  %Out = lshr <2 x i256> %In, %Amt149  ret <2 x i256> %Out150}151 152define <2 x i256> @test_sra(<2 x i256> %In) nounwind {153; X86-LABEL: test_sra:154; X86:       # %bb.0:155; X86-NEXT:    pushl %ebp156; X86-NEXT:    pushl %ebx157; X86-NEXT:    pushl %edi158; X86-NEXT:    pushl %esi159; X86-NEXT:    subl $8, %esp160; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx161; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp162; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx163; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx164; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax165; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi166; X86-NEXT:    movl %ebp, %esi167; X86-NEXT:    shldl $26, %edx, %esi168; X86-NEXT:    movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill169; X86-NEXT:    shldl $26, %ebx, %edx170; X86-NEXT:    movl %edx, (%esp) # 4-byte Spill171; X86-NEXT:    shldl $26, %ecx, %ebx172; X86-NEXT:    movl %ecx, %esi173; X86-NEXT:    shldl $26, %edi, %esi174; X86-NEXT:    shldl $26, %eax, %edi175; X86-NEXT:    movl %eax, %edx176; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax177; X86-NEXT:    shldl $26, %eax, %edx178; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx179; X86-NEXT:    shrdl $6, %eax, %ecx180; X86-NEXT:    sarl $6, %ebp181; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax182; X86-NEXT:    movl %ebp, 60(%eax)183; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload184; X86-NEXT:    movl %ebp, 56(%eax)185; X86-NEXT:    movl (%esp), %ebp # 4-byte Reload186; X86-NEXT:    movl %ebp, 52(%eax)187; X86-NEXT:    movl %ebx, 48(%eax)188; X86-NEXT:    movl %esi, 44(%eax)189; X86-NEXT:    movl %edi, 40(%eax)190; X86-NEXT:    movl %edx, 36(%eax)191; X86-NEXT:    movl %ecx, 32(%eax)192; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx193; X86-NEXT:    sarl $31, %ecx194; X86-NEXT:    movl %ecx, 28(%eax)195; X86-NEXT:    movl %ecx, 24(%eax)196; X86-NEXT:    movl %ecx, 20(%eax)197; X86-NEXT:    movl %ecx, 16(%eax)198; X86-NEXT:    movl %ecx, 12(%eax)199; X86-NEXT:    movl %ecx, 8(%eax)200; X86-NEXT:    movl %ecx, 4(%eax)201; X86-NEXT:    movl %ecx, (%eax)202; X86-NEXT:    addl $8, %esp203; X86-NEXT:    popl %esi204; X86-NEXT:    popl %edi205; X86-NEXT:    popl %ebx206; X86-NEXT:    popl %ebp207; X86-NEXT:    retl $4208;209; X64-LABEL: test_sra:210; X64:       # %bb.0:211; X64-NEXT:    movq %rdi, %rax212; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rcx213; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rdx214; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rsi215; X64-NEXT:    shrdq $6, %rsi, %r9216; X64-NEXT:    shrdq $6, %rdx, %rsi217; X64-NEXT:    shrdq $6, %rcx, %rdx218; X64-NEXT:    sarq $63, %r8219; X64-NEXT:    sarq $6, %rcx220; X64-NEXT:    movq %rcx, 56(%rdi)221; X64-NEXT:    movq %rdx, 48(%rdi)222; X64-NEXT:    movq %rsi, 40(%rdi)223; X64-NEXT:    movq %r9, 32(%rdi)224; X64-NEXT:    movq %r8, 24(%rdi)225; X64-NEXT:    movq %r8, 16(%rdi)226; X64-NEXT:    movq %r8, 8(%rdi)227; X64-NEXT:    movq %r8, (%rdi)228; X64-NEXT:    retq229  %Amt = insertelement <2 x i256> <i256 5, i256 6>, i256 255, i32 0230  %Out = ashr <2 x i256> %In, %Amt231  ret <2 x i256> %Out232}233