diff --git a/llvm/lib/Target/X86/GISel/X86LegalizerInfo.cpp b/llvm/lib/Target/X86/GISel/X86LegalizerInfo.cpp index c73179c4c9466..684580d6fca06 100644 --- a/llvm/lib/Target/X86/GISel/X86LegalizerInfo.cpp +++ b/llvm/lib/Target/X86/GISel/X86LegalizerInfo.cpp @@ -99,9 +99,10 @@ X86LegalizerInfo::X86LegalizerInfo(const X86Subtarget &STI, .widenScalarToNextPow2(0, /*Min=*/8) .clampScalar(0, s8, sMaxScalar); - getActionDefinitionsBuilder(G_LROUND).libcall(); - - getActionDefinitionsBuilder(G_LLROUND).libcall(); + getActionDefinitionsBuilder({G_LROUND, G_LLROUND, G_FCOS, G_FCOSH, G_FACOS, + G_FSIN, G_FSINH, G_FASIN, G_FTAN, G_FTANH, + G_FATAN, G_FATAN2}) + .libcall(); // merge/unmerge for (unsigned Op : {G_MERGE_VALUES, G_UNMERGE_VALUES}) { diff --git a/llvm/test/CodeGen/X86/llvm.acos.ll b/llvm/test/CodeGen/X86/llvm.acos.ll index 9ae67495ffccb..9176cf47bda78 100644 --- a/llvm/test/CodeGen/X86/llvm.acos.ll +++ b/llvm/test/CodeGen/X86/llvm.acos.ll @@ -1,39 +1,76 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 ; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X86,SDAG-X86 -; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X64,SDAG-X64 -; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X86,GISEL-X86 -; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X64,GISEL-X64 +; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=SDAG-X64 +; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X86,GISEL-X86 +; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=GISEL-X64 define float @use_acosf32(float %a) nounwind { -; X86-LABEL: use_acosf32: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: flds {{[0-9]+}}(%esp) -; X86-NEXT: fstps (%esp) -; X86-NEXT: calll acosf -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: use_acosf32: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: flds {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstps (%esp) +; SDAG-X86-NEXT: calll acosf +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl ; -; X64-LABEL: use_acosf32: -; X64: # %bb.0: -; X64-NEXT: jmp acosf@PLT # TAILCALL +; SDAG-X64-LABEL: use_acosf32: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp acosf@PLT # TAILCALL +; +; GISEL-X86-LABEL: use_acosf32: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl %eax, (%esp) +; GISEL-X86-NEXT: calll acosf +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl +; +; GISEL-X64-LABEL: use_acosf32: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq acosf +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %x = call float @llvm.acos.f32(float %a) ret float %x } define double @use_acosf64(double %a) nounwind { -; X86-LABEL: use_acosf64: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: fldl {{[0-9]+}}(%esp) -; X86-NEXT: fstpl (%esp) -; X86-NEXT: calll acos -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: use_acosf64: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: fldl {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstpl (%esp) +; SDAG-X86-NEXT: calll acos +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl ; -; X64-LABEL: use_acosf64: -; X64: # %bb.0: -; X64-NEXT: jmp acos@PLT # TAILCALL +; SDAG-X64-LABEL: use_acosf64: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp acos@PLT # TAILCALL +; +; GISEL-X86-LABEL: use_acosf64: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: leal {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %ecx +; GISEL-X86-NEXT: movl 4(%eax), %eax +; GISEL-X86-NEXT: xorl %edx, %edx +; GISEL-X86-NEXT: addl %esp, %edx +; GISEL-X86-NEXT: movl %ecx, (%esp) +; GISEL-X86-NEXT: movl %eax, 4(%edx) +; GISEL-X86-NEXT: calll acos +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl +; +; GISEL-X64-LABEL: use_acosf64: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq acos +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %x = call double @llvm.acos.f64(double %a) ret double %x } @@ -48,14 +85,23 @@ define x86_fp80 @use_acosf80(x86_fp80 %a) nounwind { ; X86-NEXT: addl $12, %esp ; X86-NEXT: retl ; -; X64-LABEL: use_acosf80: -; X64: # %bb.0: -; X64-NEXT: subq $24, %rsp -; X64-NEXT: fldt {{[0-9]+}}(%rsp) -; X64-NEXT: fstpt (%rsp) -; X64-NEXT: callq acosl@PLT -; X64-NEXT: addq $24, %rsp -; X64-NEXT: retq +; SDAG-X64-LABEL: use_acosf80: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: subq $24, %rsp +; SDAG-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; SDAG-X64-NEXT: fstpt (%rsp) +; SDAG-X64-NEXT: callq acosl@PLT +; SDAG-X64-NEXT: addq $24, %rsp +; SDAG-X64-NEXT: retq +; +; GISEL-X64-LABEL: use_acosf80: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: subq $24, %rsp +; GISEL-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; GISEL-X64-NEXT: fstpt (%rsp) +; GISEL-X64-NEXT: callq acosl +; GISEL-X64-NEXT: addq $24, %rsp +; GISEL-X64-NEXT: retq %x = call x86_fp80 @llvm.acos.f80(x86_fp80 %a) ret x86_fp80 %x } @@ -63,8 +109,3 @@ define x86_fp80 @use_acosf80(x86_fp80 %a) nounwind { declare float @llvm.acos.f32(float) declare double @llvm.acos.f64(double) declare x86_fp80 @llvm.acos.f80(x86_fp80) -;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: -; GISEL-X64: {{.*}} -; GISEL-X86: {{.*}} -; SDAG-X64: {{.*}} -; SDAG-X86: {{.*}} diff --git a/llvm/test/CodeGen/X86/llvm.asin.ll b/llvm/test/CodeGen/X86/llvm.asin.ll index f17e33ae3e8e3..87ffcc9c963c2 100644 --- a/llvm/test/CodeGen/X86/llvm.asin.ll +++ b/llvm/test/CodeGen/X86/llvm.asin.ll @@ -1,39 +1,76 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 ; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X86,SDAG-X86 -; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X64,SDAG-X64 -; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X86,GISEL-X86 -; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X64,GISEL-X64 +; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=SDAG-X64 +; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X86,GISEL-X86 +; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=GISEL-X64 define float @use_asinf32(float %a) nounwind { -; X86-LABEL: use_asinf32: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: flds {{[0-9]+}}(%esp) -; X86-NEXT: fstps (%esp) -; X86-NEXT: calll asinf -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: use_asinf32: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: flds {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstps (%esp) +; SDAG-X86-NEXT: calll asinf +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl ; -; X64-LABEL: use_asinf32: -; X64: # %bb.0: -; X64-NEXT: jmp asinf@PLT # TAILCALL +; SDAG-X64-LABEL: use_asinf32: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp asinf@PLT # TAILCALL +; +; GISEL-X86-LABEL: use_asinf32: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl %eax, (%esp) +; GISEL-X86-NEXT: calll asinf +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl +; +; GISEL-X64-LABEL: use_asinf32: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq asinf +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %x = call float @llvm.asin.f32(float %a) ret float %x } define double @use_asinf64(double %a) nounwind { -; X86-LABEL: use_asinf64: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: fldl {{[0-9]+}}(%esp) -; X86-NEXT: fstpl (%esp) -; X86-NEXT: calll asin -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: use_asinf64: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: fldl {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstpl (%esp) +; SDAG-X86-NEXT: calll asin +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl ; -; X64-LABEL: use_asinf64: -; X64: # %bb.0: -; X64-NEXT: jmp asin@PLT # TAILCALL +; SDAG-X64-LABEL: use_asinf64: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp asin@PLT # TAILCALL +; +; GISEL-X86-LABEL: use_asinf64: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: leal {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %ecx +; GISEL-X86-NEXT: movl 4(%eax), %eax +; GISEL-X86-NEXT: xorl %edx, %edx +; GISEL-X86-NEXT: addl %esp, %edx +; GISEL-X86-NEXT: movl %ecx, (%esp) +; GISEL-X86-NEXT: movl %eax, 4(%edx) +; GISEL-X86-NEXT: calll asin +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl +; +; GISEL-X64-LABEL: use_asinf64: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq asin +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %x = call double @llvm.asin.f64(double %a) ret double %x } @@ -48,14 +85,23 @@ define x86_fp80 @use_asinf80(x86_fp80 %a) nounwind { ; X86-NEXT: addl $12, %esp ; X86-NEXT: retl ; -; X64-LABEL: use_asinf80: -; X64: # %bb.0: -; X64-NEXT: subq $24, %rsp -; X64-NEXT: fldt {{[0-9]+}}(%rsp) -; X64-NEXT: fstpt (%rsp) -; X64-NEXT: callq asinl@PLT -; X64-NEXT: addq $24, %rsp -; X64-NEXT: retq +; SDAG-X64-LABEL: use_asinf80: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: subq $24, %rsp +; SDAG-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; SDAG-X64-NEXT: fstpt (%rsp) +; SDAG-X64-NEXT: callq asinl@PLT +; SDAG-X64-NEXT: addq $24, %rsp +; SDAG-X64-NEXT: retq +; +; GISEL-X64-LABEL: use_asinf80: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: subq $24, %rsp +; GISEL-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; GISEL-X64-NEXT: fstpt (%rsp) +; GISEL-X64-NEXT: callq asinl +; GISEL-X64-NEXT: addq $24, %rsp +; GISEL-X64-NEXT: retq %x = call x86_fp80 @llvm.asin.f80(x86_fp80 %a) ret x86_fp80 %x } @@ -63,8 +109,3 @@ define x86_fp80 @use_asinf80(x86_fp80 %a) nounwind { declare float @llvm.asin.f32(float) declare double @llvm.asin.f64(double) declare x86_fp80 @llvm.asin.f80(x86_fp80) -;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: -; GISEL-X64: {{.*}} -; GISEL-X86: {{.*}} -; SDAG-X64: {{.*}} -; SDAG-X86: {{.*}} diff --git a/llvm/test/CodeGen/X86/llvm.atan.ll b/llvm/test/CodeGen/X86/llvm.atan.ll index 013b5e75a63b7..c03361d18c1d2 100644 --- a/llvm/test/CodeGen/X86/llvm.atan.ll +++ b/llvm/test/CodeGen/X86/llvm.atan.ll @@ -1,39 +1,76 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 ; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X86,SDAG-X86 -; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X64,SDAG-X64 -; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X86,GISEL-X86 -; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X64,GISEL-X64 +; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=SDAG-X64 +; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X86,GISEL-X86 +; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=GISEL-X64 define float @use_atanf32(float %a) nounwind { -; X86-LABEL: use_atanf32: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: flds {{[0-9]+}}(%esp) -; X86-NEXT: fstps (%esp) -; X86-NEXT: calll atanf -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: use_atanf32: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: flds {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstps (%esp) +; SDAG-X86-NEXT: calll atanf +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl ; -; X64-LABEL: use_atanf32: -; X64: # %bb.0: -; X64-NEXT: jmp atanf@PLT # TAILCALL +; SDAG-X64-LABEL: use_atanf32: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp atanf@PLT # TAILCALL +; +; GISEL-X86-LABEL: use_atanf32: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl %eax, (%esp) +; GISEL-X86-NEXT: calll atanf +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl +; +; GISEL-X64-LABEL: use_atanf32: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq atanf +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %x = call float @llvm.atan.f32(float %a) ret float %x } define double @use_atanf64(double %a) nounwind { -; X86-LABEL: use_atanf64: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: fldl {{[0-9]+}}(%esp) -; X86-NEXT: fstpl (%esp) -; X86-NEXT: calll atan -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: use_atanf64: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: fldl {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstpl (%esp) +; SDAG-X86-NEXT: calll atan +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl ; -; X64-LABEL: use_atanf64: -; X64: # %bb.0: -; X64-NEXT: jmp atan@PLT # TAILCALL +; SDAG-X64-LABEL: use_atanf64: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp atan@PLT # TAILCALL +; +; GISEL-X86-LABEL: use_atanf64: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: leal {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %ecx +; GISEL-X86-NEXT: movl 4(%eax), %eax +; GISEL-X86-NEXT: xorl %edx, %edx +; GISEL-X86-NEXT: addl %esp, %edx +; GISEL-X86-NEXT: movl %ecx, (%esp) +; GISEL-X86-NEXT: movl %eax, 4(%edx) +; GISEL-X86-NEXT: calll atan +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl +; +; GISEL-X64-LABEL: use_atanf64: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq atan +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %x = call double @llvm.atan.f64(double %a) ret double %x } @@ -48,14 +85,23 @@ define x86_fp80 @use_atanf80(x86_fp80 %a) nounwind { ; X86-NEXT: addl $12, %esp ; X86-NEXT: retl ; -; X64-LABEL: use_atanf80: -; X64: # %bb.0: -; X64-NEXT: subq $24, %rsp -; X64-NEXT: fldt {{[0-9]+}}(%rsp) -; X64-NEXT: fstpt (%rsp) -; X64-NEXT: callq atanl@PLT -; X64-NEXT: addq $24, %rsp -; X64-NEXT: retq +; SDAG-X64-LABEL: use_atanf80: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: subq $24, %rsp +; SDAG-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; SDAG-X64-NEXT: fstpt (%rsp) +; SDAG-X64-NEXT: callq atanl@PLT +; SDAG-X64-NEXT: addq $24, %rsp +; SDAG-X64-NEXT: retq +; +; GISEL-X64-LABEL: use_atanf80: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: subq $24, %rsp +; GISEL-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; GISEL-X64-NEXT: fstpt (%rsp) +; GISEL-X64-NEXT: callq atanl +; GISEL-X64-NEXT: addq $24, %rsp +; GISEL-X64-NEXT: retq %x = call x86_fp80 @llvm.atan.f80(x86_fp80 %a) ret x86_fp80 %x } @@ -63,8 +109,3 @@ define x86_fp80 @use_atanf80(x86_fp80 %a) nounwind { declare float @llvm.atan.f32(float) declare double @llvm.atan.f64(double) declare x86_fp80 @llvm.atan.f80(x86_fp80) -;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: -; GISEL-X64: {{.*}} -; GISEL-X86: {{.*}} -; SDAG-X64: {{.*}} -; SDAG-X86: {{.*}} diff --git a/llvm/test/CodeGen/X86/llvm.atan2.ll b/llvm/test/CodeGen/X86/llvm.atan2.ll index b72cb1098a87f..aa56068e17780 100644 --- a/llvm/test/CodeGen/X86/llvm.atan2.ll +++ b/llvm/test/CodeGen/X86/llvm.atan2.ll @@ -1,69 +1,143 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 -; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X86,SDAG-X86 -; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X64,SDAG-X64 -; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X86,GISEL-X86 -; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X64,GISEL-X64 +; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=SDAG-X86 +; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=SDAG-X64 +; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=GISEL-X86 +; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=GISEL-X64 define float @use_atan2f32(float %a, float %b) nounwind { -; X86-LABEL: use_atan2f32: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: flds {{[0-9]+}}(%esp) -; X86-NEXT: flds {{[0-9]+}}(%esp) -; X86-NEXT: fstps {{[0-9]+}}(%esp) -; X86-NEXT: fstps (%esp) -; X86-NEXT: calll atan2f -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: use_atan2f32: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: flds {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: flds {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstps {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstps (%esp) +; SDAG-X86-NEXT: calll atan2f +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl ; -; X64-LABEL: use_atan2f32: -; X64: # %bb.0: -; X64-NEXT: jmp atan2f@PLT # TAILCALL +; SDAG-X64-LABEL: use_atan2f32: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp atan2f@PLT # TAILCALL +; +; GISEL-X86-LABEL: use_atan2f32: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %ecx +; GISEL-X86-NEXT: movl %eax, (%esp) +; GISEL-X86-NEXT: movl %ecx, {{[0-9]+}}(%esp) +; GISEL-X86-NEXT: calll atan2f +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl +; +; GISEL-X64-LABEL: use_atan2f32: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq atan2f +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %x = call float @llvm.atan2.f32(float %a, float %b) ret float %x } define double @use_atan2f64(double %a, double %b) nounwind { -; X86-LABEL: use_atan2f64: -; X86: # %bb.0: -; X86-NEXT: subl $28, %esp -; X86-NEXT: fldl {{[0-9]+}}(%esp) -; X86-NEXT: fldl {{[0-9]+}}(%esp) -; X86-NEXT: fstpl {{[0-9]+}}(%esp) -; X86-NEXT: fstpl (%esp) -; X86-NEXT: calll atan2 -; X86-NEXT: addl $28, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: use_atan2f64: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $28, %esp +; SDAG-X86-NEXT: fldl {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fldl {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstpl {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstpl (%esp) +; SDAG-X86-NEXT: calll atan2 +; SDAG-X86-NEXT: addl $28, %esp +; SDAG-X86-NEXT: retl +; +; SDAG-X64-LABEL: use_atan2f64: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp atan2@PLT # TAILCALL ; -; X64-LABEL: use_atan2f64: -; X64: # %bb.0: -; X64-NEXT: jmp atan2@PLT # TAILCALL +; GISEL-X86-LABEL: use_atan2f64: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: pushl %edi +; GISEL-X86-NEXT: pushl %esi +; GISEL-X86-NEXT: subl $20, %esp +; GISEL-X86-NEXT: leal {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %ecx +; GISEL-X86-NEXT: movl 4(%eax), %eax +; GISEL-X86-NEXT: leal {{[0-9]+}}(%esp), %edx +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %esi +; GISEL-X86-NEXT: movl 4(%edx), %edx +; GISEL-X86-NEXT: xorl %edi, %edi +; GISEL-X86-NEXT: addl %esp, %edi +; GISEL-X86-NEXT: movl %ecx, (%esp) +; GISEL-X86-NEXT: movl %eax, 4(%edi) +; GISEL-X86-NEXT: movl $8, %eax +; GISEL-X86-NEXT: addl %esp, %eax +; GISEL-X86-NEXT: movl %esi, {{[0-9]+}}(%esp) +; GISEL-X86-NEXT: movl %edx, 4(%eax) +; GISEL-X86-NEXT: calll atan2 +; GISEL-X86-NEXT: addl $20, %esp +; GISEL-X86-NEXT: popl %esi +; GISEL-X86-NEXT: popl %edi +; GISEL-X86-NEXT: retl +; +; GISEL-X64-LABEL: use_atan2f64: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq atan2 +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %x = call double @llvm.atan2.f64(double %a, double %b) ret double %x } define x86_fp80 @use_atan2f80(x86_fp80 %a, x86_fp80 %b) nounwind { -; X86-LABEL: use_atan2f80: -; X86: # %bb.0: -; X86-NEXT: subl $28, %esp -; X86-NEXT: fldt {{[0-9]+}}(%esp) -; X86-NEXT: fldt {{[0-9]+}}(%esp) -; X86-NEXT: fstpt {{[0-9]+}}(%esp) -; X86-NEXT: fstpt (%esp) -; X86-NEXT: calll atan2l -; X86-NEXT: addl $28, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: use_atan2f80: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $28, %esp +; SDAG-X86-NEXT: fldt {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fldt {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstpt {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstpt (%esp) +; SDAG-X86-NEXT: calll atan2l +; SDAG-X86-NEXT: addl $28, %esp +; SDAG-X86-NEXT: retl +; +; SDAG-X64-LABEL: use_atan2f80: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: subq $40, %rsp +; SDAG-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; SDAG-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; SDAG-X64-NEXT: fstpt {{[0-9]+}}(%rsp) +; SDAG-X64-NEXT: fstpt (%rsp) +; SDAG-X64-NEXT: callq atan2l@PLT +; SDAG-X64-NEXT: addq $40, %rsp +; SDAG-X64-NEXT: retq +; +; GISEL-X86-LABEL: use_atan2f80: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $28, %esp +; GISEL-X86-NEXT: fldt {{[0-9]+}}(%esp) +; GISEL-X86-NEXT: fldt {{[0-9]+}}(%esp) +; GISEL-X86-NEXT: fxch %st(1) +; GISEL-X86-NEXT: fstpt (%esp) +; GISEL-X86-NEXT: fstpt {{[0-9]+}}(%esp) +; GISEL-X86-NEXT: calll atan2l +; GISEL-X86-NEXT: addl $28, %esp +; GISEL-X86-NEXT: retl ; -; X64-LABEL: use_atan2f80: -; X64: # %bb.0: -; X64-NEXT: subq $40, %rsp -; X64-NEXT: fldt {{[0-9]+}}(%rsp) -; X64-NEXT: fldt {{[0-9]+}}(%rsp) -; X64-NEXT: fstpt {{[0-9]+}}(%rsp) -; X64-NEXT: fstpt (%rsp) -; X64-NEXT: callq atan2l@PLT -; X64-NEXT: addq $40, %rsp -; X64-NEXT: retq +; GISEL-X64-LABEL: use_atan2f80: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: subq $40, %rsp +; GISEL-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; GISEL-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; GISEL-X64-NEXT: fxch %st(1) +; GISEL-X64-NEXT: fstpt (%rsp) +; GISEL-X64-NEXT: fstpt {{[0-9]+}}(%rsp) +; GISEL-X64-NEXT: callq atan2l +; GISEL-X64-NEXT: addq $40, %rsp +; GISEL-X64-NEXT: retq %x = call x86_fp80 @llvm.atan2.f80(x86_fp80 %a, x86_fp80 %b) ret x86_fp80 %x } @@ -71,8 +145,3 @@ define x86_fp80 @use_atan2f80(x86_fp80 %a, x86_fp80 %b) nounwind { declare float @llvm.atan2.f32(float, float) declare double @llvm.atan2.f64(double, double) declare x86_fp80 @llvm.atan2.f80(x86_fp80, x86_fp80) -;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: -; GISEL-X64: {{.*}} -; GISEL-X86: {{.*}} -; SDAG-X64: {{.*}} -; SDAG-X86: {{.*}} diff --git a/llvm/test/CodeGen/X86/llvm.cos.ll b/llvm/test/CodeGen/X86/llvm.cos.ll index 35c22b8022d9c..af039854d3491 100644 --- a/llvm/test/CodeGen/X86/llvm.cos.ll +++ b/llvm/test/CodeGen/X86/llvm.cos.ll @@ -1,47 +1,76 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 ; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X86,SDAG-X86 -; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X64,SDAG-X64 -; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X86,GISEL-X86 -; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=GISEL-X64 +; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=SDAG-X64 +; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X86,GISEL-X86 +; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=GISEL-X64 define float @test_cos_f32(float %Val) nounwind { -; X86-LABEL: test_cos_f32: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: flds {{[0-9]+}}(%esp) -; X86-NEXT: fstps (%esp) -; X86-NEXT: calll cosf -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: test_cos_f32: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: flds {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstps (%esp) +; SDAG-X86-NEXT: calll cosf +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl +; +; SDAG-X64-LABEL: test_cos_f32: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp cosf@PLT # TAILCALL ; -; X64-LABEL: test_cos_f32: -; X64: # %bb.0: -; X64-NEXT: jmp cosf@PLT # TAILCALL +; GISEL-X86-LABEL: test_cos_f32: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl %eax, (%esp) +; GISEL-X86-NEXT: calll cosf +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl ; ; GISEL-X64-LABEL: test_cos_f32: ; GISEL-X64: # %bb.0: -; GISEL-X64-NEXT: jmp cosf@PLT # TAILCALL +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq cosf +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %res = call float @llvm.cos.f32(float %Val) ret float %res } define double @test_cos_f64(double %Val) nounwind { -; X86-LABEL: test_cos_f64: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: fldl {{[0-9]+}}(%esp) -; X86-NEXT: fstpl (%esp) -; X86-NEXT: calll cos -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: test_cos_f64: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: fldl {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstpl (%esp) +; SDAG-X86-NEXT: calll cos +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl +; +; SDAG-X64-LABEL: test_cos_f64: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp cos@PLT # TAILCALL ; -; X64-LABEL: test_cos_f64: -; X64: # %bb.0: -; X64-NEXT: jmp cos@PLT # TAILCALL +; GISEL-X86-LABEL: test_cos_f64: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: leal {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %ecx +; GISEL-X86-NEXT: movl 4(%eax), %eax +; GISEL-X86-NEXT: xorl %edx, %edx +; GISEL-X86-NEXT: addl %esp, %edx +; GISEL-X86-NEXT: movl %ecx, (%esp) +; GISEL-X86-NEXT: movl %eax, 4(%edx) +; GISEL-X86-NEXT: calll cos +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl ; ; GISEL-X64-LABEL: test_cos_f64: ; GISEL-X64: # %bb.0: -; GISEL-X64-NEXT: jmp cos@PLT # TAILCALL +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq cos +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %res = call double @llvm.cos.f64(double %Val) ret double %res } @@ -56,27 +85,23 @@ define x86_fp80 @test_cos_f80(x86_fp80 %Val) nounwind { ; X86-NEXT: addl $12, %esp ; X86-NEXT: retl ; -; X64-LABEL: test_cos_f80: -; X64: # %bb.0: -; X64-NEXT: subq $24, %rsp -; X64-NEXT: fldt {{[0-9]+}}(%rsp) -; X64-NEXT: fstpt (%rsp) -; X64-NEXT: callq cosl@PLT -; X64-NEXT: addq $24, %rsp -; X64-NEXT: retq +; SDAG-X64-LABEL: test_cos_f80: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: subq $24, %rsp +; SDAG-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; SDAG-X64-NEXT: fstpt (%rsp) +; SDAG-X64-NEXT: callq cosl@PLT +; SDAG-X64-NEXT: addq $24, %rsp +; SDAG-X64-NEXT: retq ; ; GISEL-X64-LABEL: test_cos_f80: ; GISEL-X64: # %bb.0: ; GISEL-X64-NEXT: subq $24, %rsp ; GISEL-X64-NEXT: fldt {{[0-9]+}}(%rsp) ; GISEL-X64-NEXT: fstpt (%rsp) -; GISEL-X64-NEXT: callq cosl@PLT +; GISEL-X64-NEXT: callq cosl ; GISEL-X64-NEXT: addq $24, %rsp ; GISEL-X64-NEXT: retq %res = call x86_fp80 @llvm.cos.f80(x86_fp80 %Val) ret x86_fp80 %res } -;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: -; GISEL-X86: {{.*}} -; SDAG-X64: {{.*}} -; SDAG-X86: {{.*}} diff --git a/llvm/test/CodeGen/X86/llvm.cosh.ll b/llvm/test/CodeGen/X86/llvm.cosh.ll index 5f0c2f1337eeb..a61867c11fd41 100644 --- a/llvm/test/CodeGen/X86/llvm.cosh.ll +++ b/llvm/test/CodeGen/X86/llvm.cosh.ll @@ -1,39 +1,76 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 ; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X86,SDAG-X86 -; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X64,SDAG-X64 -; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X86,GISEL-X86 -; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X64,GISEL-X64 +; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=SDAG-X64 +; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X86,GISEL-X86 +; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=GISEL-X64 define float @use_coshf32(float %a) nounwind { -; X86-LABEL: use_coshf32: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: flds {{[0-9]+}}(%esp) -; X86-NEXT: fstps (%esp) -; X86-NEXT: calll coshf -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: use_coshf32: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: flds {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstps (%esp) +; SDAG-X86-NEXT: calll coshf +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl ; -; X64-LABEL: use_coshf32: -; X64: # %bb.0: -; X64-NEXT: jmp coshf@PLT # TAILCALL +; SDAG-X64-LABEL: use_coshf32: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp coshf@PLT # TAILCALL +; +; GISEL-X86-LABEL: use_coshf32: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl %eax, (%esp) +; GISEL-X86-NEXT: calll coshf +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl +; +; GISEL-X64-LABEL: use_coshf32: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq coshf +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %x = call float @llvm.cosh.f32(float %a) ret float %x } define double @use_coshf64(double %a) nounwind { -; X86-LABEL: use_coshf64: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: fldl {{[0-9]+}}(%esp) -; X86-NEXT: fstpl (%esp) -; X86-NEXT: calll cosh -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: use_coshf64: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: fldl {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstpl (%esp) +; SDAG-X86-NEXT: calll cosh +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl ; -; X64-LABEL: use_coshf64: -; X64: # %bb.0: -; X64-NEXT: jmp cosh@PLT # TAILCALL +; SDAG-X64-LABEL: use_coshf64: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp cosh@PLT # TAILCALL +; +; GISEL-X86-LABEL: use_coshf64: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: leal {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %ecx +; GISEL-X86-NEXT: movl 4(%eax), %eax +; GISEL-X86-NEXT: xorl %edx, %edx +; GISEL-X86-NEXT: addl %esp, %edx +; GISEL-X86-NEXT: movl %ecx, (%esp) +; GISEL-X86-NEXT: movl %eax, 4(%edx) +; GISEL-X86-NEXT: calll cosh +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl +; +; GISEL-X64-LABEL: use_coshf64: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq cosh +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %x = call double @llvm.cosh.f64(double %a) ret double %x } @@ -48,14 +85,23 @@ define x86_fp80 @use_coshf80(x86_fp80 %a) nounwind { ; X86-NEXT: addl $12, %esp ; X86-NEXT: retl ; -; X64-LABEL: use_coshf80: -; X64: # %bb.0: -; X64-NEXT: subq $24, %rsp -; X64-NEXT: fldt {{[0-9]+}}(%rsp) -; X64-NEXT: fstpt (%rsp) -; X64-NEXT: callq coshl@PLT -; X64-NEXT: addq $24, %rsp -; X64-NEXT: retq +; SDAG-X64-LABEL: use_coshf80: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: subq $24, %rsp +; SDAG-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; SDAG-X64-NEXT: fstpt (%rsp) +; SDAG-X64-NEXT: callq coshl@PLT +; SDAG-X64-NEXT: addq $24, %rsp +; SDAG-X64-NEXT: retq +; +; GISEL-X64-LABEL: use_coshf80: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: subq $24, %rsp +; GISEL-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; GISEL-X64-NEXT: fstpt (%rsp) +; GISEL-X64-NEXT: callq coshl +; GISEL-X64-NEXT: addq $24, %rsp +; GISEL-X64-NEXT: retq %x = call x86_fp80 @llvm.cosh.f80(x86_fp80 %a) ret x86_fp80 %x } @@ -63,8 +109,3 @@ define x86_fp80 @use_coshf80(x86_fp80 %a) nounwind { declare float @llvm.cosh.f32(float) declare double @llvm.cosh.f64(double) declare x86_fp80 @llvm.cosh.f80(x86_fp80) -;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: -; GISEL-X64: {{.*}} -; GISEL-X86: {{.*}} -; SDAG-X64: {{.*}} -; SDAG-X86: {{.*}} diff --git a/llvm/test/CodeGen/X86/llvm.sin.ll b/llvm/test/CodeGen/X86/llvm.sin.ll index 1d2dcefa330e4..0f17f83d01023 100644 --- a/llvm/test/CodeGen/X86/llvm.sin.ll +++ b/llvm/test/CodeGen/X86/llvm.sin.ll @@ -1,47 +1,76 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 ; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X86,SDAG-X86 -; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X64,SDAG-X64 -; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X86,GISEL-X86 -; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=GISEL-X64 +; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=SDAG-X64 +; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X86,GISEL-X86 +; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=GISEL-X64 define float @test_sin_f32(float %Val) nounwind { -; X86-LABEL: test_sin_f32: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: flds {{[0-9]+}}(%esp) -; X86-NEXT: fstps (%esp) -; X86-NEXT: calll sinf -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: test_sin_f32: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: flds {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstps (%esp) +; SDAG-X86-NEXT: calll sinf +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl +; +; SDAG-X64-LABEL: test_sin_f32: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp sinf@PLT # TAILCALL ; -; X64-LABEL: test_sin_f32: -; X64: # %bb.0: -; X64-NEXT: jmp sinf@PLT # TAILCALL +; GISEL-X86-LABEL: test_sin_f32: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl %eax, (%esp) +; GISEL-X86-NEXT: calll sinf +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl ; ; GISEL-X64-LABEL: test_sin_f32: ; GISEL-X64: # %bb.0: -; GISEL-X64-NEXT: jmp sinf@PLT # TAILCALL +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq sinf +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %res = call float @llvm.sin.f32(float %Val) ret float %res } define double @test_sin_f64(double %Val) nounwind { -; X86-LABEL: test_sin_f64: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: fldl {{[0-9]+}}(%esp) -; X86-NEXT: fstpl (%esp) -; X86-NEXT: calll sin -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: test_sin_f64: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: fldl {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstpl (%esp) +; SDAG-X86-NEXT: calll sin +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl +; +; SDAG-X64-LABEL: test_sin_f64: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp sin@PLT # TAILCALL ; -; X64-LABEL: test_sin_f64: -; X64: # %bb.0: -; X64-NEXT: jmp sin@PLT # TAILCALL +; GISEL-X86-LABEL: test_sin_f64: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: leal {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %ecx +; GISEL-X86-NEXT: movl 4(%eax), %eax +; GISEL-X86-NEXT: xorl %edx, %edx +; GISEL-X86-NEXT: addl %esp, %edx +; GISEL-X86-NEXT: movl %ecx, (%esp) +; GISEL-X86-NEXT: movl %eax, 4(%edx) +; GISEL-X86-NEXT: calll sin +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl ; ; GISEL-X64-LABEL: test_sin_f64: ; GISEL-X64: # %bb.0: -; GISEL-X64-NEXT: jmp sin@PLT # TAILCALL +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq sin +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %res = call double @llvm.sin.f64(double %Val) ret double %res } @@ -56,27 +85,23 @@ define x86_fp80 @test_sin_f80(x86_fp80 %Val) nounwind { ; X86-NEXT: addl $12, %esp ; X86-NEXT: retl ; -; X64-LABEL: test_sin_f80: -; X64: # %bb.0: -; X64-NEXT: subq $24, %rsp -; X64-NEXT: fldt {{[0-9]+}}(%rsp) -; X64-NEXT: fstpt (%rsp) -; X64-NEXT: callq sinl@PLT -; X64-NEXT: addq $24, %rsp -; X64-NEXT: retq +; SDAG-X64-LABEL: test_sin_f80: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: subq $24, %rsp +; SDAG-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; SDAG-X64-NEXT: fstpt (%rsp) +; SDAG-X64-NEXT: callq sinl@PLT +; SDAG-X64-NEXT: addq $24, %rsp +; SDAG-X64-NEXT: retq ; ; GISEL-X64-LABEL: test_sin_f80: ; GISEL-X64: # %bb.0: ; GISEL-X64-NEXT: subq $24, %rsp ; GISEL-X64-NEXT: fldt {{[0-9]+}}(%rsp) ; GISEL-X64-NEXT: fstpt (%rsp) -; GISEL-X64-NEXT: callq sinl@PLT +; GISEL-X64-NEXT: callq sinl ; GISEL-X64-NEXT: addq $24, %rsp ; GISEL-X64-NEXT: retq %res = call x86_fp80 @llvm.sin.f80(x86_fp80 %Val) ret x86_fp80 %res } -;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: -; GISEL-X86: {{.*}} -; SDAG-X64: {{.*}} -; SDAG-X86: {{.*}} diff --git a/llvm/test/CodeGen/X86/llvm.sinh.ll b/llvm/test/CodeGen/X86/llvm.sinh.ll index de8a710b90c8f..ef30f8de06953 100644 --- a/llvm/test/CodeGen/X86/llvm.sinh.ll +++ b/llvm/test/CodeGen/X86/llvm.sinh.ll @@ -1,39 +1,76 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 ; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X86,SDAG-X86 -; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X64,SDAG-X64 -; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X86,GISEL-X86 -; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X64,GISEL-X64 +; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=SDAG-X64 +; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X86,GISEL-X86 +; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=GISEL-X64 define float @use_sinhf32(float %a) nounwind { -; X86-LABEL: use_sinhf32: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: flds {{[0-9]+}}(%esp) -; X86-NEXT: fstps (%esp) -; X86-NEXT: calll sinhf -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: use_sinhf32: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: flds {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstps (%esp) +; SDAG-X86-NEXT: calll sinhf +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl ; -; X64-LABEL: use_sinhf32: -; X64: # %bb.0: -; X64-NEXT: jmp sinhf@PLT # TAILCALL +; SDAG-X64-LABEL: use_sinhf32: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp sinhf@PLT # TAILCALL +; +; GISEL-X86-LABEL: use_sinhf32: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl %eax, (%esp) +; GISEL-X86-NEXT: calll sinhf +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl +; +; GISEL-X64-LABEL: use_sinhf32: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq sinhf +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %x = call float @llvm.sinh.f32(float %a) ret float %x } define double @use_sinhf64(double %a) nounwind { -; X86-LABEL: use_sinhf64: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: fldl {{[0-9]+}}(%esp) -; X86-NEXT: fstpl (%esp) -; X86-NEXT: calll sinh -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: use_sinhf64: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: fldl {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstpl (%esp) +; SDAG-X86-NEXT: calll sinh +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl ; -; X64-LABEL: use_sinhf64: -; X64: # %bb.0: -; X64-NEXT: jmp sinh@PLT # TAILCALL +; SDAG-X64-LABEL: use_sinhf64: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp sinh@PLT # TAILCALL +; +; GISEL-X86-LABEL: use_sinhf64: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: leal {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %ecx +; GISEL-X86-NEXT: movl 4(%eax), %eax +; GISEL-X86-NEXT: xorl %edx, %edx +; GISEL-X86-NEXT: addl %esp, %edx +; GISEL-X86-NEXT: movl %ecx, (%esp) +; GISEL-X86-NEXT: movl %eax, 4(%edx) +; GISEL-X86-NEXT: calll sinh +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl +; +; GISEL-X64-LABEL: use_sinhf64: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq sinh +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %x = call double @llvm.sinh.f64(double %a) ret double %x } @@ -48,14 +85,23 @@ define x86_fp80 @use_sinhf80(x86_fp80 %a) nounwind { ; X86-NEXT: addl $12, %esp ; X86-NEXT: retl ; -; X64-LABEL: use_sinhf80: -; X64: # %bb.0: -; X64-NEXT: subq $24, %rsp -; X64-NEXT: fldt {{[0-9]+}}(%rsp) -; X64-NEXT: fstpt (%rsp) -; X64-NEXT: callq sinhl@PLT -; X64-NEXT: addq $24, %rsp -; X64-NEXT: retq +; SDAG-X64-LABEL: use_sinhf80: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: subq $24, %rsp +; SDAG-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; SDAG-X64-NEXT: fstpt (%rsp) +; SDAG-X64-NEXT: callq sinhl@PLT +; SDAG-X64-NEXT: addq $24, %rsp +; SDAG-X64-NEXT: retq +; +; GISEL-X64-LABEL: use_sinhf80: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: subq $24, %rsp +; GISEL-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; GISEL-X64-NEXT: fstpt (%rsp) +; GISEL-X64-NEXT: callq sinhl +; GISEL-X64-NEXT: addq $24, %rsp +; GISEL-X64-NEXT: retq %x = call x86_fp80 @llvm.sinh.f80(x86_fp80 %a) ret x86_fp80 %x } @@ -63,8 +109,3 @@ define x86_fp80 @use_sinhf80(x86_fp80 %a) nounwind { declare float @llvm.sinh.f32(float) declare double @llvm.sinh.f64(double) declare x86_fp80 @llvm.sinh.f80(x86_fp80) -;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: -; GISEL-X64: {{.*}} -; GISEL-X86: {{.*}} -; SDAG-X64: {{.*}} -; SDAG-X86: {{.*}} diff --git a/llvm/test/CodeGen/X86/llvm.tan.ll b/llvm/test/CodeGen/X86/llvm.tan.ll index 32055512bc1db..4e76653cd1299 100644 --- a/llvm/test/CodeGen/X86/llvm.tan.ll +++ b/llvm/test/CodeGen/X86/llvm.tan.ll @@ -1,39 +1,76 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 ; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X86,SDAG-X86 -; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X64,SDAG-X64 -; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X86,GISEL-X86 -; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X64,GISEL-X64 +; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=SDAG-X64 +; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X86,GISEL-X86 +; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=GISEL-X64 define float @use_tanf32(float %a) nounwind { -; X86-LABEL: use_tanf32: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: flds {{[0-9]+}}(%esp) -; X86-NEXT: fstps (%esp) -; X86-NEXT: calll tanf -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: use_tanf32: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: flds {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstps (%esp) +; SDAG-X86-NEXT: calll tanf +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl ; -; X64-LABEL: use_tanf32: -; X64: # %bb.0: -; X64-NEXT: jmp tanf@PLT # TAILCALL +; SDAG-X64-LABEL: use_tanf32: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp tanf@PLT # TAILCALL +; +; GISEL-X86-LABEL: use_tanf32: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl %eax, (%esp) +; GISEL-X86-NEXT: calll tanf +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl +; +; GISEL-X64-LABEL: use_tanf32: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq tanf +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %x = call float @llvm.tan.f32(float %a) ret float %x } define double @use_tanf64(double %a) nounwind { -; X86-LABEL: use_tanf64: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: fldl {{[0-9]+}}(%esp) -; X86-NEXT: fstpl (%esp) -; X86-NEXT: calll tan -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: use_tanf64: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: fldl {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstpl (%esp) +; SDAG-X86-NEXT: calll tan +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl ; -; X64-LABEL: use_tanf64: -; X64: # %bb.0: -; X64-NEXT: jmp tan@PLT # TAILCALL +; SDAG-X64-LABEL: use_tanf64: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp tan@PLT # TAILCALL +; +; GISEL-X86-LABEL: use_tanf64: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: leal {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %ecx +; GISEL-X86-NEXT: movl 4(%eax), %eax +; GISEL-X86-NEXT: xorl %edx, %edx +; GISEL-X86-NEXT: addl %esp, %edx +; GISEL-X86-NEXT: movl %ecx, (%esp) +; GISEL-X86-NEXT: movl %eax, 4(%edx) +; GISEL-X86-NEXT: calll tan +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl +; +; GISEL-X64-LABEL: use_tanf64: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq tan +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %x = call double @llvm.tan.f64(double %a) ret double %x } @@ -48,14 +85,23 @@ define x86_fp80 @use_tanf80(x86_fp80 %a) nounwind { ; X86-NEXT: addl $12, %esp ; X86-NEXT: retl ; -; X64-LABEL: use_tanf80: -; X64: # %bb.0: -; X64-NEXT: subq $24, %rsp -; X64-NEXT: fldt {{[0-9]+}}(%rsp) -; X64-NEXT: fstpt (%rsp) -; X64-NEXT: callq tanl@PLT -; X64-NEXT: addq $24, %rsp -; X64-NEXT: retq +; SDAG-X64-LABEL: use_tanf80: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: subq $24, %rsp +; SDAG-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; SDAG-X64-NEXT: fstpt (%rsp) +; SDAG-X64-NEXT: callq tanl@PLT +; SDAG-X64-NEXT: addq $24, %rsp +; SDAG-X64-NEXT: retq +; +; GISEL-X64-LABEL: use_tanf80: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: subq $24, %rsp +; GISEL-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; GISEL-X64-NEXT: fstpt (%rsp) +; GISEL-X64-NEXT: callq tanl +; GISEL-X64-NEXT: addq $24, %rsp +; GISEL-X64-NEXT: retq %x = call x86_fp80 @llvm.tan.f80(x86_fp80 %a) ret x86_fp80 %x } @@ -63,8 +109,3 @@ define x86_fp80 @use_tanf80(x86_fp80 %a) nounwind { declare float @llvm.tan.f32(float) declare double @llvm.tan.f64(double) declare x86_fp80 @llvm.tan.f80(x86_fp80) -;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: -; GISEL-X64: {{.*}} -; GISEL-X86: {{.*}} -; SDAG-X64: {{.*}} -; SDAG-X86: {{.*}} diff --git a/llvm/test/CodeGen/X86/llvm.tanh.ll b/llvm/test/CodeGen/X86/llvm.tanh.ll index 6911a6888eff6..c4f6e2f179cf9 100644 --- a/llvm/test/CodeGen/X86/llvm.tanh.ll +++ b/llvm/test/CodeGen/X86/llvm.tanh.ll @@ -1,39 +1,76 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 ; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X86,SDAG-X86 -; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X64,SDAG-X64 -; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X86,GISEL-X86 -; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X64,GISEL-X64 +; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=SDAG-X64 +; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X86,GISEL-X86 +; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=GISEL-X64 define float @use_tanhf32(float %a) nounwind { -; X86-LABEL: use_tanhf32: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: flds {{[0-9]+}}(%esp) -; X86-NEXT: fstps (%esp) -; X86-NEXT: calll tanhf -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: use_tanhf32: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: flds {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstps (%esp) +; SDAG-X86-NEXT: calll tanhf +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl ; -; X64-LABEL: use_tanhf32: -; X64: # %bb.0: -; X64-NEXT: jmp tanhf@PLT # TAILCALL +; SDAG-X64-LABEL: use_tanhf32: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp tanhf@PLT # TAILCALL +; +; GISEL-X86-LABEL: use_tanhf32: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl %eax, (%esp) +; GISEL-X86-NEXT: calll tanhf +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl +; +; GISEL-X64-LABEL: use_tanhf32: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq tanhf +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %x = call float @llvm.tanh.f32(float %a) ret float %x } define double @use_tanhf64(double %a) nounwind { -; X86-LABEL: use_tanhf64: -; X86: # %bb.0: -; X86-NEXT: subl $12, %esp -; X86-NEXT: fldl {{[0-9]+}}(%esp) -; X86-NEXT: fstpl (%esp) -; X86-NEXT: calll tanh -; X86-NEXT: addl $12, %esp -; X86-NEXT: retl +; SDAG-X86-LABEL: use_tanhf64: +; SDAG-X86: # %bb.0: +; SDAG-X86-NEXT: subl $12, %esp +; SDAG-X86-NEXT: fldl {{[0-9]+}}(%esp) +; SDAG-X86-NEXT: fstpl (%esp) +; SDAG-X86-NEXT: calll tanh +; SDAG-X86-NEXT: addl $12, %esp +; SDAG-X86-NEXT: retl ; -; X64-LABEL: use_tanhf64: -; X64: # %bb.0: -; X64-NEXT: jmp tanh@PLT # TAILCALL +; SDAG-X64-LABEL: use_tanhf64: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: jmp tanh@PLT # TAILCALL +; +; GISEL-X86-LABEL: use_tanhf64: +; GISEL-X86: # %bb.0: +; GISEL-X86-NEXT: subl $12, %esp +; GISEL-X86-NEXT: leal {{[0-9]+}}(%esp), %eax +; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %ecx +; GISEL-X86-NEXT: movl 4(%eax), %eax +; GISEL-X86-NEXT: xorl %edx, %edx +; GISEL-X86-NEXT: addl %esp, %edx +; GISEL-X86-NEXT: movl %ecx, (%esp) +; GISEL-X86-NEXT: movl %eax, 4(%edx) +; GISEL-X86-NEXT: calll tanh +; GISEL-X86-NEXT: addl $12, %esp +; GISEL-X86-NEXT: retl +; +; GISEL-X64-LABEL: use_tanhf64: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: pushq %rax +; GISEL-X64-NEXT: callq tanh +; GISEL-X64-NEXT: popq %rax +; GISEL-X64-NEXT: retq %x = call double @llvm.tanh.f64(double %a) ret double %x } @@ -48,14 +85,23 @@ define x86_fp80 @use_tanhf80(x86_fp80 %a) nounwind { ; X86-NEXT: addl $12, %esp ; X86-NEXT: retl ; -; X64-LABEL: use_tanhf80: -; X64: # %bb.0: -; X64-NEXT: subq $24, %rsp -; X64-NEXT: fldt {{[0-9]+}}(%rsp) -; X64-NEXT: fstpt (%rsp) -; X64-NEXT: callq tanhl@PLT -; X64-NEXT: addq $24, %rsp -; X64-NEXT: retq +; SDAG-X64-LABEL: use_tanhf80: +; SDAG-X64: # %bb.0: +; SDAG-X64-NEXT: subq $24, %rsp +; SDAG-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; SDAG-X64-NEXT: fstpt (%rsp) +; SDAG-X64-NEXT: callq tanhl@PLT +; SDAG-X64-NEXT: addq $24, %rsp +; SDAG-X64-NEXT: retq +; +; GISEL-X64-LABEL: use_tanhf80: +; GISEL-X64: # %bb.0: +; GISEL-X64-NEXT: subq $24, %rsp +; GISEL-X64-NEXT: fldt {{[0-9]+}}(%rsp) +; GISEL-X64-NEXT: fstpt (%rsp) +; GISEL-X64-NEXT: callq tanhl +; GISEL-X64-NEXT: addq $24, %rsp +; GISEL-X64-NEXT: retq %x = call x86_fp80 @llvm.tanh.f80(x86_fp80 %a) ret x86_fp80 %x } @@ -63,8 +109,3 @@ define x86_fp80 @use_tanhf80(x86_fp80 %a) nounwind { declare float @llvm.tanh.f32(float) declare double @llvm.tanh.f64(double) declare x86_fp80 @llvm.tanh.f80(x86_fp80) -;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: -; GISEL-X64: {{.*}} -; GISEL-X86: {{.*}} -; SDAG-X64: {{.*}} -; SDAG-X86: {{.*}}