Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Hexagon: Add test for llvm.exp10 intrinsic#148664

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
arsenm merged 1 commit intomainfromusers/arsenm/hexagon/add-exp10-intrinsic-test
Jul 14, 2025

Conversation

arsenm
Copy link
Contributor

This is mostly to test the libcall behavior

@arsenmGraphite App
Copy link
ContributorAuthor

arsenm commentedJul 14, 2025
edited
Loading

@llvmbot
Copy link
Member

@llvm/pr-subscribers-backend-hexagon

Author: Matt Arsenault (arsenm)

Changes

This is mostly to test the libcall behavior


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

1 Files Affected:

  • (added) llvm/test/CodeGen/Hexagon/llvm.exp10.ll (+232)
diff --git a/llvm/test/CodeGen/Hexagon/llvm.exp10.ll b/llvm/test/CodeGen/Hexagon/llvm.exp10.llnew file mode 100644index 0000000000000..b5fcc4151225a--- /dev/null+++ b/llvm/test/CodeGen/Hexagon/llvm.exp10.ll@@ -0,0 +1,232 @@+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5+; RUN: llc -mtriple=hexagon < %s | FileCheck %s+; RUN: llc -mtriple=hexagon-unknown-linux-gnu < %s | FileCheck %s+; RUN: llc -mtriple=hexagon-unknown-linux-musl < %s | FileCheck %s++define half @exp10_f16(half %x) #0 {+; CHECK-LABEL: exp10_f16:+; CHECK:       // %bb.0:+; CHECK-NEXT:    {+; CHECK-NEXT:     call __extendhfsf2+; CHECK-NEXT:     allocframe(r29,#0):raw+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     call exp10f+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     call __truncsfhf2+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     r31:30 = dealloc_return(r30):raw+; CHECK-NEXT:    }+  %r = call half @llvm.exp10.f16(half %x)+  ret half %r+}++define <2 x half> @exp10_v2f16(<2 x half> %x) #0 {+; CHECK-LABEL: exp10_v2f16:+; CHECK:       // %bb.0:+; CHECK-NEXT:    {+; CHECK-NEXT:     call __extendhfsf2+; CHECK-NEXT:     r16 = r1+; CHECK-NEXT:     memd(r29+#-16) = r17:16+; CHECK-NEXT:     allocframe(#8)+; CHECK-NEXT:    } // 8-byte Folded Spill+; CHECK-NEXT:    {+; CHECK-NEXT:     call exp10f+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     call __truncsfhf2+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     call __extendhfsf2+; CHECK-NEXT:     r17 = r0+; CHECK-NEXT:     r0 = r16+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     call exp10f+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     call __truncsfhf2+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     r1 = zxth(r0)+; CHECK-NEXT:     r2 = zxth(r17)+; CHECK-NEXT:     r17:16 = memd(r29+#0)+; CHECK-NEXT:    } // 8-byte Folded Reload+; CHECK-NEXT:    {+; CHECK-NEXT:     r0 = r2+; CHECK-NEXT:     dealloc_return+; CHECK-NEXT:    }+  %r = call <2 x half> @llvm.exp10.v2f16(<2 x half> %x)+  ret <2 x half> %r+}++define float @exp10_f32(float %x) #0 {+; CHECK-LABEL: exp10_f32:+; CHECK:       // %bb.0:+; CHECK-NEXT:    {+; CHECK-NEXT:     call exp10f+; CHECK-NEXT:     allocframe(r29,#0):raw+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     r31:30 = dealloc_return(r30):raw+; CHECK-NEXT:    }+  %r = call float @llvm.exp10.f32(float %x)+  ret float %r+}++define <2 x float> @exp10_v2f32(<2 x float> %x) #0 {+; CHECK-LABEL: exp10_v2f32:+; CHECK:       // %bb.0:+; CHECK-NEXT:    {+; CHECK-NEXT:     call exp10f+; CHECK-NEXT:     r16 = r1+; CHECK-NEXT:     memd(r29+#-16) = r17:16+; CHECK-NEXT:     allocframe(#8)+; CHECK-NEXT:    } // 8-byte Folded Spill+; CHECK-NEXT:    {+; CHECK-NEXT:     call exp10f+; CHECK-NEXT:     r17 = r0+; CHECK-NEXT:     r0 = r16+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     r1:0 = combine(r0,r17)+; CHECK-NEXT:     r17:16 = memd(r29+#0)+; CHECK-NEXT:     dealloc_return+; CHECK-NEXT:    } // 8-byte Folded Reload+  %r = call <2 x float> @llvm.exp10.v2f32(<2 x float> %x)+  ret <2 x float> %r+}++define double @exp10_f64(double %x) #0 {+; CHECK-LABEL: exp10_f64:+; CHECK:       // %bb.0:+; CHECK-NEXT:    {+; CHECK-NEXT:     call exp10+; CHECK-NEXT:     allocframe(r29,#0):raw+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     r31:30 = dealloc_return(r30):raw+; CHECK-NEXT:    }+  %r = call double @llvm.exp10.f64(double %x)+  ret double %r+}++define <2 x double> @exp10_v2f64(<2 x double> %x) #0 {+; CHECK-LABEL: exp10_v2f64:+; CHECK:       // %bb.0:+; CHECK-NEXT:    {+; CHECK-NEXT:     r16 = r0+; CHECK-NEXT:     r1:0 = combine(r3,r2)+; CHECK-NEXT:     memd(r29+#-16) = r17:16+; CHECK-NEXT:     allocframe(#24)+; CHECK-NEXT:    } // 8-byte Folded Spill+; CHECK-NEXT:    {+; CHECK-NEXT:     call exp10+; CHECK-NEXT:     r19:18 = combine(r5,r4)+; CHECK-NEXT:     memd(r29+#8) = r19:18+; CHECK-NEXT:     memd(r29+#0) = r21:20+; CHECK-NEXT:    } // 8-byte Folded Spill+; CHECK-NEXT:    {+; CHECK-NEXT:     call exp10+; CHECK-NEXT:     r21:20 = combine(r1,r0)+; CHECK-NEXT:     r1:0 = combine(r19,r18)+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     memd(r16+#8) = r1:0+; CHECK-NEXT:     memd(r16+#0) = r21:20+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     r17:16 = memd(r29+#16)+; CHECK-NEXT:     r19:18 = memd(r29+#8)+; CHECK-NEXT:    } // 8-byte Folded Reload+; CHECK-NEXT:    {+; CHECK-NEXT:     r21:20 = memd(r29+#0)+; CHECK-NEXT:     dealloc_return+; CHECK-NEXT:    } // 8-byte Folded Reload+  %r = call <2 x double> @llvm.exp10.v2f64(<2 x double> %x)+  ret <2 x double> %r+}++define fp128 @exp10_f128(fp128 %x) #0 {+; CHECK-LABEL: exp10_f128:+; CHECK:       // %bb.0:+; CHECK-NEXT:    {+; CHECK-NEXT:     r16 = r0+; CHECK-NEXT:     memd(r29+#-16) = r17:16+; CHECK-NEXT:     allocframe(#24)+; CHECK-NEXT:    } // 8-byte Folded Spill+; CHECK-NEXT:    {+; CHECK-NEXT:     call exp10l+; CHECK-NEXT:     r0 = add(r29,#0)+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     r1:0 = memd(r29+#0)+; CHECK-NEXT:     r3:2 = memd(r29+#8)+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     memd(r16+#8) = r3:2+; CHECK-NEXT:     memd(r16+#0) = r1:0+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     r17:16 = memd(r29+#16)+; CHECK-NEXT:     dealloc_return+; CHECK-NEXT:    } // 8-byte Folded Reload+  %r = call fp128 @llvm.exp10.f128(fp128 %x)+  ret fp128 %r+}++define <2 x fp128> @exp10_v2f128(<2 x fp128> %x) #0 {+; CHECK-LABEL: exp10_v2f128:+; CHECK:       // %bb.0:+; CHECK-NEXT:    {+; CHECK-NEXT:     r16 = r0+; CHECK-NEXT:     memd(r29+#-16) = r17:16+; CHECK-NEXT:     allocframe(#56)+; CHECK-NEXT:    } // 8-byte Folded Spill+; CHECK-NEXT:    {+; CHECK-NEXT:     r0 = add(r29,#16)+; CHECK-NEXT:     memd(r29+#40) = r19:18+; CHECK-NEXT:     memd(r29+#32) = r21:20+; CHECK-NEXT:    } // 8-byte Folded Spill+; CHECK-NEXT:    {+; CHECK-NEXT:     call exp10l+; CHECK-NEXT:     r19:18 = memd(r29+#64)+; CHECK-NEXT:     r21:20 = memd(r29+#72)+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     call exp10l+; CHECK-NEXT:     r0 = add(r29,#0)+; CHECK-NEXT:     r3:2 = combine(r19,r18)+; CHECK-NEXT:     r5:4 = combine(r21,r20)+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     r1:0 = memd(r29+#16)+; CHECK-NEXT:     r3:2 = memd(r29+#24)+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     r5:4 = memd(r29+#0)+; CHECK-NEXT:     r7:6 = memd(r29+#8)+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     memd(r16+#24) = r7:6+; CHECK-NEXT:     memd(r16+#16) = r5:4+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     memd(r16+#8) = r3:2+; CHECK-NEXT:     memd(r16+#0) = r1:0+; CHECK-NEXT:    }+; CHECK-NEXT:    {+; CHECK-NEXT:     r17:16 = memd(r29+#48)+; CHECK-NEXT:     r19:18 = memd(r29+#40)+; CHECK-NEXT:    } // 8-byte Folded Reload+; CHECK-NEXT:    {+; CHECK-NEXT:     r21:20 = memd(r29+#32)+; CHECK-NEXT:     dealloc_return+; CHECK-NEXT:    } // 8-byte Folded Reload+  %r = call <2 x fp128> @llvm.exp10.v2f128(<2 x fp128> %x)+  ret <2 x fp128> %r+}++attributes #0 = { nounwind }

@arsenmarsenm marked this pull request as ready for reviewJuly 14, 2025 16:37
Copy link
Contributor

@aankit-caaankit-ca left a comment

Choose a reason for hiding this comment

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

LGTM

@arsenmGraphite App
Copy link
ContributorAuthor

arsenm commentedJul 14, 2025
edited
Loading

Merge activity

  • Jul 14, 11:46 PM UTC: A user started a stack merge that includes this pull request viaGraphite.
  • Jul 14, 11:48 PM UTC:Graphite rebased this pull request as part of a merge.
  • Jul 14, 11:50 PM UTC:Graphite rebased this pull request as part of a merge.
  • Jul 14, 11:54 PM UTC:Graphite rebased this pull request as part of a merge.
  • Jul 14, 11:56 PM UTC:@arsenm merged this pull request withGraphite.

@arsenmarsenmforce-pushed theusers/arsenm/hexagon/add-exp10-intrinsic-test branch 2 times, most recently from7174bfe to979c7e2CompareJuly 14, 2025 23:50
This is mostly to test the libcall behavior
@arsenmarsenmforce-pushed theusers/arsenm/hexagon/add-exp10-intrinsic-test branch from979c7e2 tofb800e1CompareJuly 14, 2025 23:54
@arsenmarsenm merged commit43206d1 intomainJul 14, 2025
7 of 9 checks passed
@arsenmarsenm deleted the users/arsenm/hexagon/add-exp10-intrinsic-test branchJuly 14, 2025 23:56
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Reviewers

@aankit-caaankit-caaankit-ca approved these changes

@androm3daandrom3daAwaiting requested review from androm3da

@kparzyszkparzyszAwaiting requested review from kparzysz

@SundeepKushwahaSundeepKushwahaAwaiting requested review from SundeepKushwaha

Assignees
No one assigned
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

3 participants
@arsenm@llvmbot@aankit-ca

[8]ページ先頭

©2009-2025 Movatter.jp