xref: /llvm-project/llvm/test/CodeGen/NVPTX/i1-int-to-fp.ll (revision b279f6b098d3849f7f1c1f539b108307d5f8ae2d)
1; RUN: llc < %s -mtriple=nvptx64 -mcpu=sm_20 | FileCheck %s
2; RUN: %if ptxas %{ llc < %s -mtriple=nvptx64 -mcpu=sm_20 | %ptxas-verify %}
3
4; CHECK-LABEL: foo
5; CHECK: setp.eq.b16 %[[P:p[0-9]+]], %{{.*}}, 1;
6; CHECK: selp.u32 %[[R:r[0-9]+]], 1, 0, %[[P]];
7; CHECK: cvt.rn.f32.u32 %f{{.*}}, %[[R]]
8define float @foo(i1 %a) {
9  %ret = uitofp i1 %a to float
10  ret float %ret
11}
12
13; CHECK-LABEL: foo2
14; CHECK: setp.eq.b16 %[[P:p[0-9]+]], %{{.*}}, 1;
15; CHECK: selp.s32 %[[R:r[0-9]+]], -1, 0, %[[P]];
16; CHECK: cvt.rn.f32.s32 %f{{.*}}, %[[R]]
17define float @foo2(i1 %a) {
18  %ret = sitofp i1 %a to float
19  ret float %ret
20}
21
22; CHECK-LABEL: foo3
23; CHECK: setp.eq.b16 %[[P:p[0-9]+]], %{{.*}}, 1;
24; CHECK: selp.u32 %[[R:r[0-9]+]], 1, 0, %[[P]];
25; CHECK: cvt.rn.f64.u32 %fd{{.*}}, %[[R]]
26define double @foo3(i1 %a) {
27  %ret = uitofp i1 %a to double
28  ret double %ret
29}
30
31; CHECK-LABEL: foo4
32; CHECK: setp.eq.b16 %[[P:p[0-9]+]], %{{.*}}, 1;
33; CHECK: selp.s32 %[[R:r[0-9]+]], -1, 0, %[[P]];
34; CHECK: cvt.rn.f64.s32 %fd{{.*}}, %[[R]]
35define double @foo4(i1 %a) {
36  %ret = sitofp i1 %a to double
37  ret double %ret
38}
39
40; CHECK-LABEL: foo5
41; CHECK: setp.eq.b16 %[[P:p[0-9]+]], %{{.*}}, 1;
42; CHECK: selp.u32 %[[R:r[0-9]+]], 1, 0, %[[P]];
43; CHECK: cvt.rn.f16.u32 %{{.*}}, %[[R]]
44define half @foo5(i1 %a) {
45  %ret = uitofp i1 %a to half
46  ret half %ret
47}
48
49; CHECK-LABEL: foo6
50; CHECK: setp.eq.b16 %[[P:p[0-9]+]], %{{.*}}, 1;
51; CHECK: selp.s32 %[[R:r[0-9]+]], -1, 0, %[[P]];
52; CHECK: cvt.rn.f16.s32 %{{.*}}, %[[R]]
53define half @foo6(i1 %a) {
54  %ret = sitofp i1 %a to half
55  ret half %ret
56}
57