Skip to content

Conversation

@JaydeepChauhan14
Copy link
Contributor

@JaydeepChauhan14 JaydeepChauhan14 commented Mar 20, 2025

  • Added test for x86_fp80 type for SQRT.
  • Added global-isel runs as precommit testing for SQRT.

@llvmbot
Copy link
Member

llvmbot commented Mar 20, 2025

@llvm/pr-subscribers-backend-x86

Author: None (JaydeepChauhan14)

Changes

Full diff: https://github.com/llvm/llvm-project/pull/132205.diff

1 Files Affected:

  • (modified) llvm/test/CodeGen/X86/sqrt.ll (+43)
diff --git a/llvm/test/CodeGen/X86/sqrt.ll b/llvm/test/CodeGen/X86/sqrt.ll
index becdbb18f42b0..c019261bc7368 100644
--- a/llvm/test/CodeGen/X86/sqrt.ll
+++ b/llvm/test/CodeGen/X86/sqrt.ll
@@ -1,8 +1,13 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=-avx,+sse2                             | FileCheck %s --check-prefix=SSE2
 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=-avx,+sse2 -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefix=SSE2
+; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=-avx,+sse2 -global-isel -global-isel-abort=2 | FileCheck %s --check-prefix=SSE2
 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=-avx2,+avx                             | FileCheck %s --check-prefix=AVX
 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=-avx2,+avx -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefix=AVX
+; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=-avx2,+avx -global-isel -global-isel-abort=2 | FileCheck %s --check-prefix=AVX
+; RUN: llc < %s -mtriple=i686-linux-gnu -fast-isel=1 | FileCheck %s --check-prefixes=X86,FASTISEL-X86
+; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel=0 -fast-isel=0 | FileCheck %s --check-prefixes=X86,SDAG-X86
+; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=X86,GISEL-X86
 
 define float @test_sqrt_f32(float %a) {
 ; SSE2-LABEL: test_sqrt_f32:
@@ -14,6 +19,12 @@ define float @test_sqrt_f32(float %a) {
 ; AVX:       ## %bb.0:
 ; AVX-NEXT:    vsqrtss %xmm0, %xmm0, %xmm0
 ; AVX-NEXT:    retq
+;
+; X86-LABEL: test_sqrt_f32:
+; X86:       # %bb.0:
+; X86-NEXT:    flds {{[0-9]+}}(%esp)
+; X86-NEXT:    fsqrt
+; X86-NEXT:    retl
   %res = call float @llvm.sqrt.f32(float %a)
   ret float %res
 }
@@ -29,9 +40,41 @@ define double @test_sqrt_f64(double %a) {
 ; AVX:       ## %bb.0:
 ; AVX-NEXT:    vsqrtsd %xmm0, %xmm0, %xmm0
 ; AVX-NEXT:    retq
+;
+; X86-LABEL: test_sqrt_f64:
+; X86:       # %bb.0:
+; X86-NEXT:    fldl {{[0-9]+}}(%esp)
+; X86-NEXT:    fsqrt
+; X86-NEXT:    retl
   %res = call double @llvm.sqrt.f64(double %a)
   ret double %res
 }
 declare double @llvm.sqrt.f64(double) nounwind readnone
 
+define x86_fp80 @test_sqrt_f80(x86_fp80 %a) {
+; SSE2-LABEL: test_sqrt_f80:
+; SSE2:       ## %bb.0:
+; SSE2-NEXT:    fldt {{[0-9]+}}(%rsp)
+; SSE2-NEXT:    fsqrt
+; SSE2-NEXT:    retq
+;
+; AVX-LABEL: test_sqrt_f80:
+; AVX:       ## %bb.0:
+; AVX-NEXT:    fldt {{[0-9]+}}(%rsp)
+; AVX-NEXT:    fsqrt
+; AVX-NEXT:    retq
+;
+; X86-LABEL: test_sqrt_f80:
+; X86:       # %bb.0:
+; X86-NEXT:    fldt {{[0-9]+}}(%esp)
+; X86-NEXT:    fsqrt
+; X86-NEXT:    retl
+  %res = call x86_fp80 @llvm.sqrt.f80(x86_fp80 %a)
+  ret x86_fp80 %res
+}
+declare x86_fp80 @llvm.sqrt.f80(x86_fp80) nounwind readnone
 
+;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
+; FASTISEL-X86: {{.*}}
+; GISEL-X86: {{.*}}
+; SDAG-X86: {{.*}}

Copy link
Collaborator

@RKSimon RKSimon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

worth renaming to isel-sqrt.ll if we're adding full isel coverage?

Copy link
Contributor

@e-kud e-kud left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@e-kud e-kud merged commit 7e4029d into llvm:main Mar 21, 2025
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants