xref: /llvm-project/llvm/test/CodeGen/ARM/fpvcvtr.ll (revision c9bde5404a9d2d038f018cce3326be91580b4e37)
1*c9bde540SSjoerd Meijer; RUN: llc -mtriple=arm-eabi -mattr=+vfp2 %s -o - | FileCheck %s --check-prefix=CHECK-VFP
2*c9bde540SSjoerd Meijer; RUN: llc -mtriple=thumbv7-eabi -mattr=+vfp2 %s -o - | FileCheck %s --check-prefix=CHECK-VFP
3*c9bde540SSjoerd Meijer
4*c9bde540SSjoerd Meijerdeclare float @llvm.arm.vcvtr.f32(float)
5*c9bde540SSjoerd Meijerdeclare float @llvm.arm.vcvtru.f32(float)
6*c9bde540SSjoerd Meijerdeclare float @llvm.arm.vcvtr.f64(double)
7*c9bde540SSjoerd Meijerdeclare float @llvm.arm.vcvtru.f64(double)
8*c9bde540SSjoerd Meijer
9*c9bde540SSjoerd Meijerdefine float @test_vcvtrf0(float %f) {
10*c9bde540SSjoerd Meijerentry:
11*c9bde540SSjoerd Meijer; CHECK-VFP:  vcvtr.s32.f32  s0, s0
12*c9bde540SSjoerd Meijer  %vcvtr = tail call float @llvm.arm.vcvtr.f32(float %f)
13*c9bde540SSjoerd Meijer  ret float %vcvtr
14*c9bde540SSjoerd Meijer}
15*c9bde540SSjoerd Meijer
16*c9bde540SSjoerd Meijerdefine float @test_vcvtrf1(float %f) {
17*c9bde540SSjoerd Meijerentry:
18*c9bde540SSjoerd Meijer; CHECK-VFP:  vcvtr.u32.f32  s0, s0
19*c9bde540SSjoerd Meijer  %vcvtr = tail call float @llvm.arm.vcvtru.f32(float %f)
20*c9bde540SSjoerd Meijer  ret float %vcvtr
21*c9bde540SSjoerd Meijer}
22*c9bde540SSjoerd Meijer
23*c9bde540SSjoerd Meijerdefine float @test_vcvtrd0(double %d) {
24*c9bde540SSjoerd Meijerentry:
25*c9bde540SSjoerd Meijer; CHECK-VFP: vcvtr.s32.f64  s0, d{{.*}}
26*c9bde540SSjoerd Meijer  %vcvtr = tail call float @llvm.arm.vcvtr.f64(double %d)
27*c9bde540SSjoerd Meijer  ret float %vcvtr
28*c9bde540SSjoerd Meijer}
29*c9bde540SSjoerd Meijer
30*c9bde540SSjoerd Meijerdefine float @test_vcvtrd1(double %d) {
31*c9bde540SSjoerd Meijerentry:
32*c9bde540SSjoerd Meijer; CHECK-VFP: vcvtr.u32.f64  s0, d{{.*}}
33*c9bde540SSjoerd Meijer  %vcvtr = tail call float @llvm.arm.vcvtru.f64(double %d)
34*c9bde540SSjoerd Meijer  ret float %vcvtr
35*c9bde540SSjoerd Meijer}
36