[llvm] [Hexagon] Have fast-math-libcalls.ll use the default hexagonv68 cpu (PR #149647)
Sudharsan Veeravalli via llvm-commits
llvm-commits at lists.llvm.org
Sat Jul 19 05:40:03 PDT 2025
https://github.com/svs-quic updated https://github.com/llvm/llvm-project/pull/149647
>From 226a496ce41dc2e711418fd50659b5b397aa31c5 Mon Sep 17 00:00:00 2001
From: Sudharsan Veeravalli <quic_svs at quicinc.com>
Date: Sat, 19 Jul 2025 15:08:27 +0530
Subject: [PATCH 1/2] [Hexagon] Have fast-math-libcalls.ll use the default
hexagonv68 cpu
The test had hexagonv5 as the CPU which is pretty old.
---
.../CodeGen/Hexagon/fast-math-libcalls.ll | 69 +++++++++----------
1 file changed, 33 insertions(+), 36 deletions(-)
diff --git a/llvm/test/CodeGen/Hexagon/fast-math-libcalls.ll b/llvm/test/CodeGen/Hexagon/fast-math-libcalls.ll
index 6bc60132d3e6a..137e043839fe7 100644
--- a/llvm/test/CodeGen/Hexagon/fast-math-libcalls.ll
+++ b/llvm/test/CodeGen/Hexagon/fast-math-libcalls.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
-; RUN: llc -mtriple=hexagon -mcpu=hexagonv5 < %s | FileCheck %s
+; RUN: llc -mtriple=hexagon < %s | FileCheck %s
;---------------------------------------------------------------------
; fast sqrt
@@ -61,15 +61,9 @@ define double @fast_add_f64(double %x, double %y) {
; CHECK-LABEL: fast_add_f64:
; CHECK: .cfi_startproc
; CHECK-NEXT: // %bb.0:
-; CHECK-NEXT: .cfi_def_cfa r30, 8
-; CHECK-NEXT: .cfi_offset r31, -4
-; CHECK-NEXT: .cfi_offset r30, -8
-; CHECK-NEXT: {
-; CHECK-NEXT: call __hexagon_fast_adddf3
-; CHECK-NEXT: allocframe(r29,#0):raw
-; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: r31:30 = dealloc_return(r30):raw
+; CHECK-NEXT: r1:0 = dfadd(r1:0,r3:2)
+; CHECK-NEXT: jumpr r31
; CHECK-NEXT: }
%result = fadd nnan ninf nsz afn double %x, %y
ret double %result
@@ -95,15 +89,9 @@ define double @fast_sub_f64(double %x, double %y) {
; CHECK-LABEL: fast_sub_f64:
; CHECK: .cfi_startproc
; CHECK-NEXT: // %bb.0:
-; CHECK-NEXT: .cfi_def_cfa r30, 8
-; CHECK-NEXT: .cfi_offset r31, -4
-; CHECK-NEXT: .cfi_offset r30, -8
; CHECK-NEXT: {
-; CHECK-NEXT: call __hexagon_fast_subdf3
-; CHECK-NEXT: allocframe(r29,#0):raw
-; CHECK-NEXT: }
-; CHECK-NEXT: {
-; CHECK-NEXT: r31:30 = dealloc_return(r30):raw
+; CHECK-NEXT: r1:0 = dfsub(r1:0,r3:2)
+; CHECK-NEXT: jumpr r31
; CHECK-NEXT: }
%result = fsub nnan ninf nsz afn double %x, %y
ret double %result
@@ -129,15 +117,22 @@ define double @fast_mul_f64(double %x, double %y) {
; CHECK-LABEL: fast_mul_f64:
; CHECK: .cfi_startproc
; CHECK-NEXT: // %bb.0:
-; CHECK-NEXT: .cfi_def_cfa r30, 8
-; CHECK-NEXT: .cfi_offset r31, -4
-; CHECK-NEXT: .cfi_offset r30, -8
; CHECK-NEXT: {
-; CHECK-NEXT: call __hexagon_fast_muldf3
-; CHECK-NEXT: allocframe(r29,#0):raw
+; CHECK-NEXT: r5:4 = dfmpyfix(r1:0,r3:2)
+; CHECK-NEXT: r7:6 = dfmpyfix(r3:2,r1:0)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: r31:30 = dealloc_return(r30):raw
+; CHECK-NEXT: r1:0 = dfmpyll(r5:4,r7:6)
+; CHECK-NEXT: }
+; CHECK-NEXT: {
+; CHECK-NEXT: r1:0 += dfmpylh(r5:4,r7:6)
+; CHECK-NEXT: }
+; CHECK-NEXT: {
+; CHECK-NEXT: r1:0 += dfmpylh(r7:6,r5:4)
+; CHECK-NEXT: }
+; CHECK-NEXT: {
+; CHECK-NEXT: r1:0 += dfmpyhh(r5:4,r7:6)
+; CHECK-NEXT: jumpr r31
; CHECK-NEXT: }
%result = fmul nnan ninf nsz afn double %x, %y
ret double %result
@@ -152,38 +147,40 @@ define float @fast_div_f32(float %x, float %y) {
; CHECK: .cfi_startproc
; CHECK-NEXT: // %bb.0:
; CHECK-NEXT: {
+; CHECK-NEXT: r3,p0 = sfrecipa(r0,r1)
+; CHECK-NEXT: r7 = sffixupd(r0,r1)
+; CHECK-NEXT: r4 = ##1065353216
+; CHECK-NEXT: }
+; CHECK-NEXT: {
; CHECK-NEXT: r2 = sffixupn(r0,r1)
-; CHECK-NEXT: r4,p0 = sfrecipa(r0,r1)
; CHECK-NEXT: r5 = ##1065353216
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: r1 = sffixupd(r0,r1)
-; CHECK-NEXT: r6 = ##1065353216
+; CHECK-NEXT: r4 -= sfmpy(r7,r3):lib
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: r5 -= sfmpy(r1,r4):lib
; CHECK-NEXT: r0 = and(r2,##-2147483648)
-; CHECK-NEXT: r3 = r2
+; CHECK-NEXT: r6 = r2
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: r4 += sfmpy(r5,r4):lib
+; CHECK-NEXT: r3 += sfmpy(r4,r3):lib
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: r0 += sfmpy(r2,r4):lib
-; CHECK-NEXT: r6 -= sfmpy(r1,r4):lib
+; CHECK-NEXT: r0 += sfmpy(r2,r3):lib
+; CHECK-NEXT: r5 -= sfmpy(r7,r3):lib
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: r3 -= sfmpy(r1,r0):lib
-; CHECK-NEXT: r4 += sfmpy(r6,r4):lib
+; CHECK-NEXT: r6 -= sfmpy(r7,r0):lib
+; CHECK-NEXT: r3 += sfmpy(r5,r3):lib
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: r0 += sfmpy(r3,r4):lib
+; CHECK-NEXT: r0 += sfmpy(r6,r3):lib
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: r2 -= sfmpy(r0,r1):lib
+; CHECK-NEXT: r2 -= sfmpy(r0,r7):lib
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: r0 += sfmpy(r2,r4,p0):scale
+; CHECK-NEXT: r0 += sfmpy(r2,r3,p0):scale
; CHECK-NEXT: jumpr r31
; CHECK-NEXT: }
%result = fdiv nnan ninf nsz afn float %x, %y
>From 108e5ebb048fa5f897d8ef6e61f254a44af5956b Mon Sep 17 00:00:00 2001
From: Sudharsan Veeravalli <quic_svs at quicinc.com>
Date: Sat, 19 Jul 2025 18:09:41 +0530
Subject: [PATCH 2/2] Update test to v65
---
.../CodeGen/Hexagon/fast-math-libcalls.ll | 41 +++++++++++--------
1 file changed, 23 insertions(+), 18 deletions(-)
diff --git a/llvm/test/CodeGen/Hexagon/fast-math-libcalls.ll b/llvm/test/CodeGen/Hexagon/fast-math-libcalls.ll
index 137e043839fe7..e14b47c473c6d 100644
--- a/llvm/test/CodeGen/Hexagon/fast-math-libcalls.ll
+++ b/llvm/test/CodeGen/Hexagon/fast-math-libcalls.ll
@@ -1,5 +1,5 @@
; 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 -mcpu=hexagonv65 < %s | FileCheck %s
;---------------------------------------------------------------------
; fast sqrt
@@ -61,9 +61,15 @@ define double @fast_add_f64(double %x, double %y) {
; CHECK-LABEL: fast_add_f64:
; CHECK: .cfi_startproc
; CHECK-NEXT: // %bb.0:
+; CHECK-NEXT: .cfi_def_cfa r30, 8
+; CHECK-NEXT: .cfi_offset r31, -4
+; CHECK-NEXT: .cfi_offset r30, -8
; CHECK-NEXT: {
-; CHECK-NEXT: r1:0 = dfadd(r1:0,r3:2)
-; CHECK-NEXT: jumpr r31
+; CHECK-NEXT: call __hexagon_fast_adddf3
+; CHECK-NEXT: allocframe(r29,#0):raw
+; CHECK-NEXT: }
+; CHECK-NEXT: {
+; CHECK-NEXT: r31:30 = dealloc_return(r30):raw
; CHECK-NEXT: }
%result = fadd nnan ninf nsz afn double %x, %y
ret double %result
@@ -89,9 +95,15 @@ define double @fast_sub_f64(double %x, double %y) {
; CHECK-LABEL: fast_sub_f64:
; CHECK: .cfi_startproc
; CHECK-NEXT: // %bb.0:
+; CHECK-NEXT: .cfi_def_cfa r30, 8
+; CHECK-NEXT: .cfi_offset r31, -4
+; CHECK-NEXT: .cfi_offset r30, -8
; CHECK-NEXT: {
-; CHECK-NEXT: r1:0 = dfsub(r1:0,r3:2)
-; CHECK-NEXT: jumpr r31
+; CHECK-NEXT: call __hexagon_fast_subdf3
+; CHECK-NEXT: allocframe(r29,#0):raw
+; CHECK-NEXT: }
+; CHECK-NEXT: {
+; CHECK-NEXT: r31:30 = dealloc_return(r30):raw
; CHECK-NEXT: }
%result = fsub nnan ninf nsz afn double %x, %y
ret double %result
@@ -117,22 +129,15 @@ define double @fast_mul_f64(double %x, double %y) {
; CHECK-LABEL: fast_mul_f64:
; CHECK: .cfi_startproc
; CHECK-NEXT: // %bb.0:
+; CHECK-NEXT: .cfi_def_cfa r30, 8
+; CHECK-NEXT: .cfi_offset r31, -4
+; CHECK-NEXT: .cfi_offset r30, -8
; CHECK-NEXT: {
-; CHECK-NEXT: r5:4 = dfmpyfix(r1:0,r3:2)
-; CHECK-NEXT: r7:6 = dfmpyfix(r3:2,r1:0)
-; CHECK-NEXT: }
-; CHECK-NEXT: {
-; CHECK-NEXT: r1:0 = dfmpyll(r5:4,r7:6)
-; CHECK-NEXT: }
-; CHECK-NEXT: {
-; CHECK-NEXT: r1:0 += dfmpylh(r5:4,r7:6)
-; CHECK-NEXT: }
-; CHECK-NEXT: {
-; CHECK-NEXT: r1:0 += dfmpylh(r7:6,r5:4)
+; CHECK-NEXT: call __hexagon_fast_muldf3
+; CHECK-NEXT: allocframe(r29,#0):raw
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: r1:0 += dfmpyhh(r5:4,r7:6)
-; CHECK-NEXT: jumpr r31
+; CHECK-NEXT: r31:30 = dealloc_return(r30):raw
; CHECK-NEXT: }
%result = fmul nnan ninf nsz afn double %x, %y
ret double %result
More information about the llvm-commits
mailing list