[llvm] [X86][GlobalIsel] G_BITCAST test (PR #144928)

via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 19 10:12:32 PDT 2025


https://github.com/mahesh-attarde created https://github.com/llvm/llvm-project/pull/144928

Precommit for https://github.com/llvm/llvm-project/pull/144473

>From 266eac179fbc8aac727df660df506650e8ce3335 Mon Sep 17 00:00:00 2001
From: mattarde <mattarde at intel.com>
Date: Thu, 19 Jun 2025 10:10:11 -0700
Subject: [PATCH] bitcast test

---
 llvm/test/CodeGen/X86/isel-bitcast.ll | 62 +++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)
 create mode 100644 llvm/test/CodeGen/X86/isel-bitcast.ll

diff --git a/llvm/test/CodeGen/X86/isel-bitcast.ll b/llvm/test/CodeGen/X86/isel-bitcast.ll
new file mode 100644
index 0000000000000..2fcb122020708
--- /dev/null
+++ b/llvm/test/CodeGen/X86/isel-bitcast.ll
@@ -0,0 +1,62 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
+; RUN: llc < %s -mtriple=i686-- | FileCheck %s -check-prefixes=X86
+; RUN: llc < %s -mtriple=x86_64--| FileCheck %s -check-prefixes=X64
+; RUN: llc < %s -mtriple=i686-- | FileCheck %s -check-prefixes=X86
+; RUN: llc < %s -mtriple=x86_64--| FileCheck %s -check-prefixes=X64
+
+define i64 @test1(double %t) {
+; X86-LABEL: test1:
+; X86:       # %bb.0:
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
+; X86-NEXT:    retl
+;
+; X64-LABEL: test1:
+; X64:       # %bb.0:
+; X64-NEXT:    movq %xmm0, %rax
+; X64-NEXT:    retq
+        %u = bitcast double %t to i64           ; <i64> [#uses=1]
+        ret i64 %u
+}
+
+define double @test2(i64 %t) {
+; X86-LABEL: test2:
+; X86:       # %bb.0:
+; X86-NEXT:    fldl {{[0-9]+}}(%esp)
+; X86-NEXT:    retl
+;
+; X64-LABEL: test2:
+; X64:       # %bb.0:
+; X64-NEXT:    movq %rdi, %xmm0
+; X64-NEXT:    retq
+        %u = bitcast i64 %t to double           ; <double> [#uses=1]
+        ret double %u
+}
+
+define i32 @test3(float %t) {
+; X86-LABEL: test3:
+; X86:       # %bb.0:
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    retl
+;
+; X64-LABEL: test3:
+; X64:       # %bb.0:
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    retq
+        %u = bitcast float %t to i32            ; <i32> [#uses=1]
+        ret i32 %u
+}
+
+define float @test4(i32 %t) {
+; X86-LABEL: test4:
+; X86:       # %bb.0:
+; X86-NEXT:    flds {{[0-9]+}}(%esp)
+; X86-NEXT:    retl
+;
+; X64-LABEL: test4:
+; X64:       # %bb.0:
+; X64-NEXT:    movd %edi, %xmm0
+; X64-NEXT:    retq
+        %u = bitcast i32 %t to float            ; <float> [#uses=1]
+        ret float %u
+}



More information about the llvm-commits mailing list