1 ; RUN: llc < %s -march=ptx32 | FileCheck %s
4 ; (note: we convert back to i32 to return)
6 define ptx_device i32 @cvt_pred_i16(i16 %x, i1 %y) {
7 ; CHECK: cvt.pred.u16 p0, rh1;
9 %a = trunc i16 %x to i1
11 %c = zext i1 %b to i32
15 define ptx_device i32 @cvt_pred_i32(i32 %x, i1 %y) {
16 ; CHECK: cvt.pred.u32 p0, r1;
18 %a = trunc i32 %x to i1
20 %c = zext i1 %b to i32
24 define ptx_device i32 @cvt_pred_i64(i64 %x, i1 %y) {
25 ; CHECK: cvt.pred.u64 p0, rd1;
27 %a = trunc i64 %x to i1
29 %c = zext i1 %b to i32
33 define ptx_device i32 @cvt_pred_f32(float %x, i1 %y) {
34 ; CHECK: cvt.rzi.pred.f32 p0, r1;
36 %a = fptoui float %x to i1
38 %c = zext i1 %b to i32
42 define ptx_device i32 @cvt_pred_f64(double %x, i1 %y) {
43 ; CHECK: cvt.rzi.pred.f64 p0, rd1;
45 %a = fptoui double %x to i1
47 %c = zext i1 %b to i32
53 define ptx_device i16 @cvt_i16_preds(i1 %x) {
54 ; CHECK: cvt.u16.pred rh0, p1;
56 %a = zext i1 %x to i16
60 define ptx_device i16 @cvt_i16_i32(i32 %x) {
61 ; CHECK: cvt.u16.u32 rh0, r1;
63 %a = trunc i32 %x to i16
67 define ptx_device i16 @cvt_i16_i64(i64 %x) {
68 ; CHECK: cvt.u16.u64 rh0, rd1;
70 %a = trunc i64 %x to i16
74 define ptx_device i16 @cvt_i16_f32(float %x) {
75 ; CHECK: cvt.rzi.u16.f32 rh0, r1;
77 %a = fptoui float %x to i16
81 define ptx_device i16 @cvt_i16_f64(double %x) {
82 ; CHECK: cvt.rzi.u16.f64 rh0, rd1;
84 %a = fptoui double %x to i16
90 define ptx_device i32 @cvt_i32_preds(i1 %x) {
91 ; CHECK: cvt.u32.pred r0, p1;
93 %a = zext i1 %x to i32
97 define ptx_device i32 @cvt_i32_i16(i16 %x) {
98 ; CHECK: cvt.u32.u16 r0, rh1;
100 %a = zext i16 %x to i32
104 define ptx_device i32 @cvt_i32_i64(i64 %x) {
105 ; CHECK: cvt.u32.u64 r0, rd1;
107 %a = trunc i64 %x to i32
111 define ptx_device i32 @cvt_i32_f32(float %x) {
112 ; CHECK: cvt.rzi.u32.f32 r0, r1;
114 %a = fptoui float %x to i32
118 define ptx_device i32 @cvt_i32_f64(double %x) {
119 ; CHECK: cvt.rzi.u32.f64 r0, rd1;
121 %a = fptoui double %x to i32
127 define ptx_device i64 @cvt_i64_preds(i1 %x) {
128 ; CHECK: cvt.u64.pred rd0, p1;
130 %a = zext i1 %x to i64
134 define ptx_device i64 @cvt_i64_i16(i16 %x) {
135 ; CHECK: cvt.u64.u16 rd0, rh1;
137 %a = zext i16 %x to i64
141 define ptx_device i64 @cvt_i64_i32(i32 %x) {
142 ; CHECK: cvt.u64.u32 rd0, r1;
144 %a = zext i32 %x to i64
148 define ptx_device i64 @cvt_i64_f32(float %x) {
149 ; CHECK: cvt.rzi.u64.f32 rd0, r1;
151 %a = fptoui float %x to i64
155 define ptx_device i64 @cvt_i64_f64(double %x) {
156 ; CHECK: cvt.rzi.u64.f64 rd0, rd1;
158 %a = fptoui double %x to i64
164 define ptx_device float @cvt_f32_preds(i1 %x) {
165 ; CHECK: cvt.rn.f32.pred r0, p1;
167 %a = uitofp i1 %x to float
171 define ptx_device float @cvt_f32_i16(i16 %x) {
172 ; CHECK: cvt.rn.f32.u16 r0, rh1;
174 %a = uitofp i16 %x to float
178 define ptx_device float @cvt_f32_i32(i32 %x) {
179 ; CHECK: cvt.rn.f32.u32 r0, r1;
181 %a = uitofp i32 %x to float
185 define ptx_device float @cvt_f32_i64(i64 %x) {
186 ; CHECK: cvt.rn.f32.u64 r0, rd1;
188 %a = uitofp i64 %x to float
192 define ptx_device float @cvt_f32_f64(double %x) {
193 ; CHECK: cvt.rn.f32.f64 r0, rd1;
195 %a = fptrunc double %x to float
201 define ptx_device double @cvt_f64_preds(i1 %x) {
202 ; CHECK: cvt.rn.f64.pred rd0, p1;
204 %a = uitofp i1 %x to double
208 define ptx_device double @cvt_f64_i16(i16 %x) {
209 ; CHECK: cvt.rn.f64.u16 rd0, rh1;
211 %a = uitofp i16 %x to double
215 define ptx_device double @cvt_f64_i32(i32 %x) {
216 ; CHECK: cvt.rn.f64.u32 rd0, r1;
218 %a = uitofp i32 %x to double
222 define ptx_device double @cvt_f64_i64(i64 %x) {
223 ; CHECK: cvt.rn.f64.u64 rd0, rd1;
225 %a = uitofp i64 %x to double
229 define ptx_device double @cvt_f64_f32(float %x) {
230 ; CHECK: cvt.f64.f32 rd0, r1;
232 %a = fpext float %x to double