brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.0 KiB · b39d9a7 Raw
279 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=x86_64-unknown-unknown -mcpu=generic -mattr=+sse2 -fast-isel --fast-isel-abort=1 < %s | FileCheck %s --check-prefix=SSE23; RUN: llc -mtriple=x86_64-unknown-unknown -mcpu=generic -mattr=+avx -fast-isel --fast-isel-abort=1 < %s | FileCheck %s --check-prefix=AVX4; RUN: llc -mtriple=x86_64-unknown-unknown -mcpu=generic -mattr=+avx512f -fast-isel --fast-isel-abort=1 < %s | FileCheck %s --check-prefix=AVX5; RUN: llc -mtriple=i686-unknown-unknown -mcpu=generic -mattr=+sse2 -fast-isel --fast-isel-abort=1 < %s | FileCheck %s --check-prefix=SSE2_X866; RUN: llc -mtriple=i686-unknown-unknown -mcpu=generic -mattr=+avx -fast-isel --fast-isel-abort=1 < %s | FileCheck %s --check-prefix=AVX_X867; RUN: llc -mtriple=i686-unknown-unknown -mcpu=generic -mattr=+avx512f -fast-isel --fast-isel-abort=1 < %s | FileCheck %s --check-prefix=AVX_X868 9 10define double @int_to_double_rr(i32 %a) {11; SSE2-LABEL: int_to_double_rr:12; SSE2:       # %bb.0: # %entry13; SSE2-NEXT:    cvtsi2sd %edi, %xmm014; SSE2-NEXT:    retq15;16; AVX-LABEL: int_to_double_rr:17; AVX:       # %bb.0: # %entry18; AVX-NEXT:    vcvtsi2sd %edi, %xmm15, %xmm019; AVX-NEXT:    retq20;21; SSE2_X86-LABEL: int_to_double_rr:22; SSE2_X86:       # %bb.0: # %entry23; SSE2_X86-NEXT:    pushl %ebp24; SSE2_X86-NEXT:    .cfi_def_cfa_offset 825; SSE2_X86-NEXT:    .cfi_offset %ebp, -826; SSE2_X86-NEXT:    movl %esp, %ebp27; SSE2_X86-NEXT:    .cfi_def_cfa_register %ebp28; SSE2_X86-NEXT:    andl $-8, %esp29; SSE2_X86-NEXT:    subl $8, %esp30; SSE2_X86-NEXT:    cvtsi2sdl 8(%ebp), %xmm031; SSE2_X86-NEXT:    movsd %xmm0, (%esp)32; SSE2_X86-NEXT:    fldl (%esp)33; SSE2_X86-NEXT:    movl %ebp, %esp34; SSE2_X86-NEXT:    popl %ebp35; SSE2_X86-NEXT:    .cfi_def_cfa %esp, 436; SSE2_X86-NEXT:    retl37;38; AVX_X86-LABEL: int_to_double_rr:39; AVX_X86:       # %bb.0: # %entry40; AVX_X86-NEXT:    pushl %ebp41; AVX_X86-NEXT:    .cfi_def_cfa_offset 842; AVX_X86-NEXT:    .cfi_offset %ebp, -843; AVX_X86-NEXT:    movl %esp, %ebp44; AVX_X86-NEXT:    .cfi_def_cfa_register %ebp45; AVX_X86-NEXT:    andl $-8, %esp46; AVX_X86-NEXT:    subl $8, %esp47; AVX_X86-NEXT:    vcvtsi2sdl 8(%ebp), %xmm7, %xmm048; AVX_X86-NEXT:    vmovsd %xmm0, (%esp)49; AVX_X86-NEXT:    fldl (%esp)50; AVX_X86-NEXT:    movl %ebp, %esp51; AVX_X86-NEXT:    popl %ebp52; AVX_X86-NEXT:    .cfi_def_cfa %esp, 453; AVX_X86-NEXT:    retl54entry:55  %0 = sitofp i32 %a to double56  ret double %057}58 59define double @int_to_double_rm(ptr %a) {60; SSE2-LABEL: int_to_double_rm:61; SSE2:       # %bb.0: # %entry62; SSE2-NEXT:    cvtsi2sdl (%rdi), %xmm063; SSE2-NEXT:    retq64;65; AVX-LABEL: int_to_double_rm:66; AVX:       # %bb.0: # %entry67; AVX-NEXT:    vcvtsi2sdl (%rdi), %xmm15, %xmm068; AVX-NEXT:    retq69;70; SSE2_X86-LABEL: int_to_double_rm:71; SSE2_X86:       # %bb.0: # %entry72; SSE2_X86-NEXT:    pushl %ebp73; SSE2_X86-NEXT:    .cfi_def_cfa_offset 874; SSE2_X86-NEXT:    .cfi_offset %ebp, -875; SSE2_X86-NEXT:    movl %esp, %ebp76; SSE2_X86-NEXT:    .cfi_def_cfa_register %ebp77; SSE2_X86-NEXT:    andl $-8, %esp78; SSE2_X86-NEXT:    subl $8, %esp79; SSE2_X86-NEXT:    movl 8(%ebp), %eax80; SSE2_X86-NEXT:    cvtsi2sdl (%eax), %xmm081; SSE2_X86-NEXT:    movsd %xmm0, (%esp)82; SSE2_X86-NEXT:    fldl (%esp)83; SSE2_X86-NEXT:    movl %ebp, %esp84; SSE2_X86-NEXT:    popl %ebp85; SSE2_X86-NEXT:    .cfi_def_cfa %esp, 486; SSE2_X86-NEXT:    retl87;88; AVX_X86-LABEL: int_to_double_rm:89; AVX_X86:       # %bb.0: # %entry90; AVX_X86-NEXT:    pushl %ebp91; AVX_X86-NEXT:    .cfi_def_cfa_offset 892; AVX_X86-NEXT:    .cfi_offset %ebp, -893; AVX_X86-NEXT:    movl %esp, %ebp94; AVX_X86-NEXT:    .cfi_def_cfa_register %ebp95; AVX_X86-NEXT:    andl $-8, %esp96; AVX_X86-NEXT:    subl $8, %esp97; AVX_X86-NEXT:    movl 8(%ebp), %eax98; AVX_X86-NEXT:    vcvtsi2sdl (%eax), %xmm7, %xmm099; AVX_X86-NEXT:    vmovsd %xmm0, (%esp)100; AVX_X86-NEXT:    fldl (%esp)101; AVX_X86-NEXT:    movl %ebp, %esp102; AVX_X86-NEXT:    popl %ebp103; AVX_X86-NEXT:    .cfi_def_cfa %esp, 4104; AVX_X86-NEXT:    retl105entry:106  %0 = load i32, ptr %a107  %1 = sitofp i32 %0 to double108  ret double %1109}110 111define double @int_to_double_rm_optsize(ptr %a) optsize {112; SSE2-LABEL: int_to_double_rm_optsize:113; SSE2:       # %bb.0: # %entry114; SSE2-NEXT:    cvtsi2sdl (%rdi), %xmm0115; SSE2-NEXT:    retq116;117; AVX-LABEL: int_to_double_rm_optsize:118; AVX:       # %bb.0: # %entry119; AVX-NEXT:    vcvtsi2sdl (%rdi), %xmm15, %xmm0120; AVX-NEXT:    retq121;122; SSE2_X86-LABEL: int_to_double_rm_optsize:123; SSE2_X86:       # %bb.0: # %entry124; SSE2_X86-NEXT:    pushl %ebp125; SSE2_X86-NEXT:    .cfi_def_cfa_offset 8126; SSE2_X86-NEXT:    .cfi_offset %ebp, -8127; SSE2_X86-NEXT:    movl %esp, %ebp128; SSE2_X86-NEXT:    .cfi_def_cfa_register %ebp129; SSE2_X86-NEXT:    andl $-8, %esp130; SSE2_X86-NEXT:    subl $8, %esp131; SSE2_X86-NEXT:    movl 8(%ebp), %eax132; SSE2_X86-NEXT:    cvtsi2sdl (%eax), %xmm0133; SSE2_X86-NEXT:    movsd %xmm0, (%esp)134; SSE2_X86-NEXT:    fldl (%esp)135; SSE2_X86-NEXT:    movl %ebp, %esp136; SSE2_X86-NEXT:    popl %ebp137; SSE2_X86-NEXT:    .cfi_def_cfa %esp, 4138; SSE2_X86-NEXT:    retl139;140; AVX_X86-LABEL: int_to_double_rm_optsize:141; AVX_X86:       # %bb.0: # %entry142; AVX_X86-NEXT:    pushl %ebp143; AVX_X86-NEXT:    .cfi_def_cfa_offset 8144; AVX_X86-NEXT:    .cfi_offset %ebp, -8145; AVX_X86-NEXT:    movl %esp, %ebp146; AVX_X86-NEXT:    .cfi_def_cfa_register %ebp147; AVX_X86-NEXT:    andl $-8, %esp148; AVX_X86-NEXT:    subl $8, %esp149; AVX_X86-NEXT:    movl 8(%ebp), %eax150; AVX_X86-NEXT:    vcvtsi2sdl (%eax), %xmm7, %xmm0151; AVX_X86-NEXT:    vmovsd %xmm0, (%esp)152; AVX_X86-NEXT:    fldl (%esp)153; AVX_X86-NEXT:    movl %ebp, %esp154; AVX_X86-NEXT:    popl %ebp155; AVX_X86-NEXT:    .cfi_def_cfa %esp, 4156; AVX_X86-NEXT:    retl157entry:158  %0 = load i32, ptr %a159  %1 = sitofp i32 %0 to double160  ret double %1161}162 163define float @int_to_float_rr(i32 %a) {164; SSE2-LABEL: int_to_float_rr:165; SSE2:       # %bb.0: # %entry166; SSE2-NEXT:    cvtsi2ss %edi, %xmm0167; SSE2-NEXT:    retq168;169; AVX-LABEL: int_to_float_rr:170; AVX:       # %bb.0: # %entry171; AVX-NEXT:    vcvtsi2ss %edi, %xmm15, %xmm0172; AVX-NEXT:    retq173;174; SSE2_X86-LABEL: int_to_float_rr:175; SSE2_X86:       # %bb.0: # %entry176; SSE2_X86-NEXT:    pushl %eax177; SSE2_X86-NEXT:    .cfi_def_cfa_offset 8178; SSE2_X86-NEXT:    cvtsi2ssl {{[0-9]+}}(%esp), %xmm0179; SSE2_X86-NEXT:    movss %xmm0, (%esp)180; SSE2_X86-NEXT:    flds (%esp)181; SSE2_X86-NEXT:    popl %eax182; SSE2_X86-NEXT:    .cfi_def_cfa_offset 4183; SSE2_X86-NEXT:    retl184;185; AVX_X86-LABEL: int_to_float_rr:186; AVX_X86:       # %bb.0: # %entry187; AVX_X86-NEXT:    pushl %eax188; AVX_X86-NEXT:    .cfi_def_cfa_offset 8189; AVX_X86-NEXT:    vcvtsi2ssl {{[0-9]+}}(%esp), %xmm7, %xmm0190; AVX_X86-NEXT:    vmovss %xmm0, (%esp)191; AVX_X86-NEXT:    flds (%esp)192; AVX_X86-NEXT:    popl %eax193; AVX_X86-NEXT:    .cfi_def_cfa_offset 4194; AVX_X86-NEXT:    retl195entry:196  %0 = sitofp i32 %a to float197  ret float %0198}199 200define float @int_to_float_rm(ptr %a) {201; SSE2-LABEL: int_to_float_rm:202; SSE2:       # %bb.0: # %entry203; SSE2-NEXT:    cvtsi2ssl (%rdi), %xmm0204; SSE2-NEXT:    retq205;206; AVX-LABEL: int_to_float_rm:207; AVX:       # %bb.0: # %entry208; AVX-NEXT:    vcvtsi2ssl (%rdi), %xmm15, %xmm0209; AVX-NEXT:    retq210;211; SSE2_X86-LABEL: int_to_float_rm:212; SSE2_X86:       # %bb.0: # %entry213; SSE2_X86-NEXT:    pushl %eax214; SSE2_X86-NEXT:    .cfi_def_cfa_offset 8215; SSE2_X86-NEXT:    movl {{[0-9]+}}(%esp), %eax216; SSE2_X86-NEXT:    cvtsi2ssl (%eax), %xmm0217; SSE2_X86-NEXT:    movss %xmm0, (%esp)218; SSE2_X86-NEXT:    flds (%esp)219; SSE2_X86-NEXT:    popl %eax220; SSE2_X86-NEXT:    .cfi_def_cfa_offset 4221; SSE2_X86-NEXT:    retl222;223; AVX_X86-LABEL: int_to_float_rm:224; AVX_X86:       # %bb.0: # %entry225; AVX_X86-NEXT:    pushl %eax226; AVX_X86-NEXT:    .cfi_def_cfa_offset 8227; AVX_X86-NEXT:    movl {{[0-9]+}}(%esp), %eax228; AVX_X86-NEXT:    vcvtsi2ssl (%eax), %xmm7, %xmm0229; AVX_X86-NEXT:    vmovss %xmm0, (%esp)230; AVX_X86-NEXT:    flds (%esp)231; AVX_X86-NEXT:    popl %eax232; AVX_X86-NEXT:    .cfi_def_cfa_offset 4233; AVX_X86-NEXT:    retl234entry:235  %0 = load i32, ptr %a236  %1 = sitofp i32 %0 to float237  ret float %1238}239 240define float @int_to_float_rm_optsize(ptr %a) optsize {241; SSE2-LABEL: int_to_float_rm_optsize:242; SSE2:       # %bb.0: # %entry243; SSE2-NEXT:    cvtsi2ssl (%rdi), %xmm0244; SSE2-NEXT:    retq245;246; AVX-LABEL: int_to_float_rm_optsize:247; AVX:       # %bb.0: # %entry248; AVX-NEXT:    vcvtsi2ssl (%rdi), %xmm15, %xmm0249; AVX-NEXT:    retq250;251; SSE2_X86-LABEL: int_to_float_rm_optsize:252; SSE2_X86:       # %bb.0: # %entry253; SSE2_X86-NEXT:    pushl %eax254; SSE2_X86-NEXT:    .cfi_def_cfa_offset 8255; SSE2_X86-NEXT:    movl {{[0-9]+}}(%esp), %eax256; SSE2_X86-NEXT:    cvtsi2ssl (%eax), %xmm0257; SSE2_X86-NEXT:    movss %xmm0, (%esp)258; SSE2_X86-NEXT:    flds (%esp)259; SSE2_X86-NEXT:    popl %eax260; SSE2_X86-NEXT:    .cfi_def_cfa_offset 4261; SSE2_X86-NEXT:    retl262;263; AVX_X86-LABEL: int_to_float_rm_optsize:264; AVX_X86:       # %bb.0: # %entry265; AVX_X86-NEXT:    pushl %eax266; AVX_X86-NEXT:    .cfi_def_cfa_offset 8267; AVX_X86-NEXT:    movl {{[0-9]+}}(%esp), %eax268; AVX_X86-NEXT:    vcvtsi2ssl (%eax), %xmm7, %xmm0269; AVX_X86-NEXT:    vmovss %xmm0, (%esp)270; AVX_X86-NEXT:    flds (%esp)271; AVX_X86-NEXT:    popl %eax272; AVX_X86-NEXT:    .cfi_def_cfa_offset 4273; AVX_X86-NEXT:    retl274entry:275  %0 = load i32, ptr %a276  %1 = sitofp i32 %0 to float277  ret float %1278}279