[llvm] [LoongArch][NFC] Pre-commit tests for sitofp(load) combine (PR #165521)
Zhaoxin Yang via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 29 00:33:43 PDT 2025
https://github.com/ylzsx created https://github.com/llvm/llvm-project/pull/165521
None
>From 07c92bfc0b06f58972038fe91627a7abbdba07d7 Mon Sep 17 00:00:00 2001
From: yangzhaoxin <yangzhaoxin at loongson.cn>
Date: Wed, 29 Oct 2025 14:25:58 +0800
Subject: [PATCH] [LoongArch][NFC] Pre-commit tests for load-sitofp-combine.
---
.../CodeGen/LoongArch/load-itofp-combine.ll | 89 +++++++++++++++++++
1 file changed, 89 insertions(+)
create mode 100644 llvm/test/CodeGen/LoongArch/load-itofp-combine.ll
diff --git a/llvm/test/CodeGen/LoongArch/load-itofp-combine.ll b/llvm/test/CodeGen/LoongArch/load-itofp-combine.ll
new file mode 100644
index 0000000000000..f9b14be99b1ef
--- /dev/null
+++ b/llvm/test/CodeGen/LoongArch/load-itofp-combine.ll
@@ -0,0 +1,89 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
+; RUN: llc --mtriple=loongarch32 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA32F
+; RUN: llc --mtriple=loongarch32 --mattr=+d < %s | FileCheck %s --check-prefix=LA32D
+; RUN: llc --mtriple=loongarch64 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA64F
+; RUN: llc --mtriple=loongarch64 --mattr=+d < %s | FileCheck %s --check-prefix=LA64D
+
+define float @load_sitofp_f32(ptr %src) nounwind {
+; LA32F-LABEL: load_sitofp_f32:
+; LA32F: # %bb.0:
+; LA32F-NEXT: ld.w $a0, $a0, 0
+; LA32F-NEXT: movgr2fr.w $fa0, $a0
+; LA32F-NEXT: ffint.s.w $fa0, $fa0
+; LA32F-NEXT: ret
+;
+; LA32D-LABEL: load_sitofp_f32:
+; LA32D: # %bb.0:
+; LA32D-NEXT: ld.w $a0, $a0, 0
+; LA32D-NEXT: movgr2fr.w $fa0, $a0
+; LA32D-NEXT: ffint.s.w $fa0, $fa0
+; LA32D-NEXT: ret
+;
+; LA64F-LABEL: load_sitofp_f32:
+; LA64F: # %bb.0:
+; LA64F-NEXT: addi.d $sp, $sp, -16
+; LA64F-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill
+; LA64F-NEXT: ld.w $a0, $a0, 0
+; LA64F-NEXT: pcaddu18i $ra, %call36(__floatdisf)
+; LA64F-NEXT: jirl $ra, $ra, 0
+; LA64F-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload
+; LA64F-NEXT: addi.d $sp, $sp, 16
+; LA64F-NEXT: ret
+;
+; LA64D-LABEL: load_sitofp_f32:
+; LA64D: # %bb.0:
+; LA64D-NEXT: ld.w $a0, $a0, 0
+; LA64D-NEXT: movgr2fr.w $fa0, $a0
+; LA64D-NEXT: ffint.s.w $fa0, $fa0
+; LA64D-NEXT: ret
+ %1 = load i32, ptr %src
+ %2 = sitofp i32 %1 to float
+ ret float %2
+}
+
+define double @load_sitofp_f64(ptr %src) nounwind {
+; LA32F-LABEL: load_sitofp_f64:
+; LA32F: # %bb.0:
+; LA32F-NEXT: addi.w $sp, $sp, -16
+; LA32F-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill
+; LA32F-NEXT: ld.w $a2, $a0, 0
+; LA32F-NEXT: ld.w $a1, $a0, 4
+; LA32F-NEXT: move $a0, $a2
+; LA32F-NEXT: bl __floatdidf
+; LA32F-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload
+; LA32F-NEXT: addi.w $sp, $sp, 16
+; LA32F-NEXT: ret
+;
+; LA32D-LABEL: load_sitofp_f64:
+; LA32D: # %bb.0:
+; LA32D-NEXT: addi.w $sp, $sp, -16
+; LA32D-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill
+; LA32D-NEXT: ld.w $a2, $a0, 0
+; LA32D-NEXT: ld.w $a1, $a0, 4
+; LA32D-NEXT: move $a0, $a2
+; LA32D-NEXT: bl __floatdidf
+; LA32D-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload
+; LA32D-NEXT: addi.w $sp, $sp, 16
+; LA32D-NEXT: ret
+;
+; LA64F-LABEL: load_sitofp_f64:
+; LA64F: # %bb.0:
+; LA64F-NEXT: addi.d $sp, $sp, -16
+; LA64F-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill
+; LA64F-NEXT: ld.d $a0, $a0, 0
+; LA64F-NEXT: pcaddu18i $ra, %call36(__floatdidf)
+; LA64F-NEXT: jirl $ra, $ra, 0
+; LA64F-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload
+; LA64F-NEXT: addi.d $sp, $sp, 16
+; LA64F-NEXT: ret
+;
+; LA64D-LABEL: load_sitofp_f64:
+; LA64D: # %bb.0:
+; LA64D-NEXT: ld.d $a0, $a0, 0
+; LA64D-NEXT: movgr2fr.d $fa0, $a0
+; LA64D-NEXT: ffint.d.l $fa0, $fa0
+; LA64D-NEXT: ret
+ %1 = load i64, ptr %src
+ %2 = sitofp i64 %1 to double
+ ret double %2
+}
More information about the llvm-commits
mailing list