This patch adds a cost estimate for some missing sign extensions.
ref: https://reviews.llvm.org/D14730
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
for example:
define <4 x double> @test_unsigned_v4i32_to_v4f64(<4 x i32> %v) nounwind readnone {
%conv = uitofp <4 x i32> %v to <4 x double>
ret <4 x double> %conv
}
define <4 x double> @test_signed_v4i32_to_v4f64(<4 x i32> %v) nounwind readnone {
%conv = sitofp <4 x i32> %v to <4 x double>
ret <4 x double> %conv
}to
.text
.file "585_1.ll"
.globl test_unsigned_v4i32_to_v4f64 // -- Begin function test_unsigned_v4i32_to_v4f64
.p2align 2
.type test_unsigned_v4i32_to_v4f64,@function
test_unsigned_v4i32_to_v4f64: // @test_unsigned_v4i32_to_v4f64
// %bb.0:
ushll2.2d v1, v0, #0
ushll.2d v0, v0, #0
ucvtf.2d v1, v1
ucvtf.2d v0, v0
ret
.Lfunc_end0:
.size test_unsigned_v4i32_to_v4f64, .Lfunc_end0-test_unsigned_v4i32_to_v4f64
// -- End function
.globl test_signed_v4i32_to_v4f64 // -- Begin function test_signed_v4i32_to_v4f64
.p2align 2
.type test_signed_v4i32_to_v4f64,@function
test_signed_v4i32_to_v4f64: // @test_signed_v4i32_to_v4f64
// %bb.0:
sshll2.2d v1, v0, #0
sshll.2d v0, v0, #0
scvtf.2d v1, v1
scvtf.2d v0, v0
ret
.Lfunc_end1:
.size test_signed_v4i32_to_v4f64, .Lfunc_end1-test_signed_v4i32_to_v4f64
// -- End function
.section ".note.GNU-stack","",@progbits