1f79470583759d20c20268711e6111461aefa8461Jim Grosbach// REQUIRES: arm-registered-target
23ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// RUN: %clang_cc1 -emit-llvm -o - -triple arm-none-linux-gnueabi %s | FileCheck %s --check-prefix=NOHALF --check-prefix=CHECK
33ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// RUN: %clang_cc1 -emit-llvm -o - -triple aarch64-none-linux-gnueabi %s | FileCheck %s --check-prefix=NOHALF --check-prefix=CHECK
43ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// RUN: %clang_cc1 -emit-llvm -o - -triple arm-none-linux-gnueabi -fallow-half-arguments-and-returns %s | FileCheck %s --check-prefix=HALF --check-prefix=CHECK
53ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// RUN: %clang_cc1 -emit-llvm -o - -triple aarch64-none-linux-gnueabi -fallow-half-arguments-and-returns %s | FileCheck %s --check-prefix=HALF --check-prefix=CHECK
6e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar// RUN: %clang_cc1 -emit-llvm -o - -triple arm-none-linux-gnueabi -fnative-half-type %s \
7e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar// RUN:   | FileCheck %s --check-prefix=NATIVE-HALF
8e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar// RUN: %clang_cc1 -emit-llvm -o - -triple aarch64-none-linux-gnueabi -fnative-half-type %s \
9e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar// RUN:   | FileCheck %s --check-prefix=NATIVE-HALF
104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN: %clang_cc1 -emit-llvm -o - -x renderscript %s \
114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN:   | FileCheck %s --check-prefix=NATIVE-HALF
128eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikovtypedef unsigned cond_t;
138eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
148eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikovvolatile cond_t test;
15b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainarvolatile int i0;
168eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikovvolatile __fp16 h0 = 0.0, h1 = 1.0, h2;
178eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikovvolatile float f0, f1, f2;
183ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvolatile double d0;
198eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
208eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikovvoid foo(void) {
2193ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin  // CHECK-LABEL: define void @foo()
228eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
238eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // Check unary ops
248eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
253ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F16TOF32:call float @llvm.convert.from.fp16.f32]]
263ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // HALF: [[F16TOF32:fpext half]]
273ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: fptoui float
28e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fptoui half
298eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (h0);
303ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: uitofp i32
313ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F32TOF16:call i16 @llvm.convert.to.fp16.f32]]
323ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // HALF: [[F32TOF16:fptrunc float]]
33e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: uitofp i32 {{.*}} to half
343ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  h0 = (test);
353ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
368eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fcmp une float
37e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp une half
388eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (!h1);
393ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
408eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fsub float
413ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F32TOF16]]
423ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // HALF: [[F32TOF16]]
43e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fsub half
448eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h1 = -h1;
453ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
463ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
47e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: load volatile half
48e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF-NEXT: store volatile half
498eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h1 = +h1;
503ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
518eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fadd float
523ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
53e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fadd half
548eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h1++;
553ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
568eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fadd float
573ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
58e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fadd half
598eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  ++h1;
603ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
618eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fadd float
623ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
63e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fadd half
648eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  --h1;
653ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
668eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fadd float
673ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
68e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fadd half
698eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h1--;
708eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
718eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // Check binary ops with various operands
723ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
733ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
748eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fmul float
753ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
76e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fmul half
778eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h1 = h0 * h2;
783ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
793ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F32TOF16]]
803ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F16TOF32]]
818eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fmul float
823ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
83e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fmul half
843ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  h1 = h0 * (__fp16) -2.0f;
853ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
868eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fmul float
873ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
88e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
89e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fmul float
908eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h1 = h0 * f2;
913ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
928eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fmul float
933ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
94e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
95e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fmul float
968eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h1 = f0 * h2;
97b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
98b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fmul float
99b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
100b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fmul half
101b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  h1 = h0 * i0;
1028eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
1033ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
1043ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
1058eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fdiv float
1063ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
107e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fdiv half
1088eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h1 = (h0 / h2);
1093ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
1103ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F16TOF32]]
1118eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fdiv float
1123ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
113e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fdiv half
1143ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  h1 = (h0 / (__fp16) -2.0f);
1153ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
1168eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fdiv float
1173ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
118e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
119e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fdiv float
1208eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h1 = (h0 / f2);
1213ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
1228eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fdiv float
1233ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
124e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
125e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fdiv float
1268eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h1 = (f0 / h2);
127b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
128b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fdiv float
129b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
130b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fdiv half
131b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  h1 = (h0 / i0);
1328eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
1333ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
1343ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
1358eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fadd float
1363ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
137e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fadd half
1388eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h1 = (h2 + h0);
1393ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
1403ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F16TOF32]]
1418eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fadd float
1423ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
143e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fadd half
1448eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h1 = ((__fp16)-2.0 + h0);
1453ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
1468eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fadd float
1473ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
148e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
149e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fadd float
1508eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h1 = (h2 + f0);
1513ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
1528eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fadd float
1533ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
154e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
155e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fadd float
1568eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h1 = (f2 + h0);
157b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
158b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fadd float
159b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
160b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fadd half
161b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  h1 = (h0 + i0);
1628eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
1633ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
1643ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
1658eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fsub float
1663ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
167e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fsub half
1688eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h1 = (h2 - h0);
1693ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
1703ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F16TOF32]]
1718eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fsub float
1723ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
173e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fsub half
1743ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  h1 = ((__fp16)-2.0f - h0);
1753ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
1768eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fsub float
1773ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
178e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
179e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fsub float
1808eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h1 = (h2 - f0);
1813ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
1828eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fsub float
1833ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
184e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
185e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fsub float
1868eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h1 = (f2 - h0);
187b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
188b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fsub float
189b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
190b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fsub half
191b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  h1 = (h0 - i0);
1928eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
1933ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
1943ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
195e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp olt float
196e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp olt half
1978eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (h2 < h0);
1983ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
1993ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F16TOF32]]
200e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp olt float
201e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp olt half
2028eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (h2 < (__fp16)42.0);
2033ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
204e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp olt float
205e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
206e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp olt float
2078eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (h2 < f0);
2083ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
209e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp olt float
210e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
211e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp olt float
2128eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (f2 < h0);
213b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
214b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fcmp olt float
215b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fcmp olt half
216b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  test = (i0 < h0);
217b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
218b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fcmp olt float
219b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fcmp olt half
220b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  test = (h0 < i0);
2218eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
2223ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
2233ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
224e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp ogt float
225e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp ogt half
2268eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (h0 > h2);
2273ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
2283ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F16TOF32]]
229e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp ogt float
230e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp ogt half
2318eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = ((__fp16)42.0 > h2);
2323ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
233e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp ogt float
234e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
235e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp ogt float
2368eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (h0 > f2);
2373ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
238e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp ogt float
239e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
240e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp ogt float
2418eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (f0 > h2);
242b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
243b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fcmp ogt float
244b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fcmp ogt half
245b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  test = (i0 > h0);
246b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
247b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fcmp ogt float
248b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fcmp ogt half
249b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  test = (h0 > i0);
2508eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
2513ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
2523ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
253e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp ole float
254e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp ole half
2558eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (h2 <= h0);
2563ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
2573ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F16TOF32]]
258e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp ole float
259e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp ole half
2608eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (h2 <= (__fp16)42.0);
2613ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
262e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp ole float
263e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
264e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp ole float
2658eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (h2 <= f0);
2663ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
267e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp ole float
268e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
269e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp ole float
2708eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (f2 <= h0);
271b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
272b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fcmp ole float
273b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fcmp ole half
274b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  test = (i0 <= h0);
275b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
276b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fcmp ole float
277b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fcmp ole half
278b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  test = (h0 <= i0);
279b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
2808eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
2813ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
2823ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
283e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp oge float
284e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp oge half
2858eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (h0 >= h2);
2863ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
2873ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F16TOF32]]
288e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp oge float
289e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp oge half
2908eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (h0 >= (__fp16)-2.0);
2913ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
292e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp oge float
293e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
294e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp oge float
2958eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (h0 >= f2);
2963ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
297e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp oge float
298e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
299e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp oge float
3008eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (f0 >= h2);
301b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
302b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fcmp oge float
303b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fcmp oge half
304b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  test = (i0 >= h0);
305b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
306b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fcmp oge float
307b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fcmp oge half
308b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  test = (h0 >= i0);
3098eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
3103ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
3113ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
312e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp oeq float
313e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp oeq half
3148eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (h1 == h2);
3153ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
3163ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F16TOF32]]
317e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp oeq float
318e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp oeq half
3198eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (h1 == (__fp16)1.0);
3203ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
321e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp oeq float
322e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
323e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp oeq float
3248eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (h1 == f1);
3253ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
326e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp oeq float
327e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
328e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp oeq float
3298eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (f1 == h1);
330b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
331b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fcmp oeq float
332b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fcmp oeq half
333b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  test = (i0 == h0);
334b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
335b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fcmp oeq float
336b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fcmp oeq half
337b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  test = (h0 == i0);
3388eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
3393ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
3403ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
341e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp une float
342e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp une half
3438eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (h1 != h2);
3443ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
3453ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F16TOF32]]
346e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp une float
347e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp une half
3488eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (h1 != (__fp16)1.0);
3493ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
350e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp une float
351e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
352e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp une float
3538eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (h1 != f1);
3543ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
355e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp une float
356e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
357e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp une float
3588eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  test = (f1 != h1);
359b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
360b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fcmp une float
361b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fcmp une half
362b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  test = (i0 != h0);
363b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
364b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fcmp une float
365b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fcmp une half
366b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  test = (h0 != i0);
3678eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
3683ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
369e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fcmp une float
3703ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
3713ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
3723ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
373e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fcmp une half {{.*}}, 0xH0000
3748eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h1 = (h1 ? h2 : h0);
3758eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // Check assignments (inc. compound)
3768eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h0 = h1;
3773ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F32TOF16]]
3783ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // HALF: store {{.*}} half 0xHC000
379e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: store {{.*}} half 0xHC000
3803ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  h0 = (__fp16)-2.0f;
3813ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
382e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fptrunc float
3838eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h0 = f0;
3848eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
385b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: sitofp i32 {{.*}} to float
386b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
387b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: sitofp i32 {{.*}} to half
388b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  h0 = i0;
389b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
390b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fptosi float {{.*}} to i32
391b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fptosi half {{.*}} to i32
392b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  i0 = h0;
393b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
3943ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
3953ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
3968eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  // CHECK: fadd float
3973ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
398e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fadd half
3998eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h0 += h1;
4003ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
4013ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F16TOF32]]
402e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fadd float
4033ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
404e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fadd half
4053ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  h0 += (__fp16)1.0f;
4063ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
407e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fadd float
4083ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
409e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
410e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fadd float
411e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fptrunc float
4128eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h0 += f2;
413b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
414b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: sitofp i32 {{.*}} to float
415b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fadd float
416b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fptosi float {{.*}} to i32
417b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: sitofp i32 {{.*}} to half
418b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fadd half
419b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fptosi half {{.*}} to i32
420b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  i0 += h0;
421b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: sitofp i32 {{.*}} to float
422b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
423b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fadd float
424b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
425b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: sitofp i32 {{.*}} to half
426b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fadd half
427b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  h0 += i0;
4288eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
4293ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
4303ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
431e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fsub float
4323ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
433e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fsub half
4348eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h0 -= h1;
4353ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
4363ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F16TOF32]]
437e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fsub float
4383ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
439e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fsub half
4408eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h0 -= (__fp16)1.0;
4413ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
442e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fsub float
4433ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
444e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
445e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fsub float
446e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fptrunc float
4478eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h0 -= f2;
448b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
449b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: sitofp i32 {{.*}} to float
450b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fsub float
451b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fptosi float {{.*}} to i32
452b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: sitofp i32 {{.*}} to half
453b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fsub half
454b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fptosi half {{.*}} to i32
455b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  i0 -= h0;
456b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: sitofp i32 {{.*}} to float
457b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
458b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fsub float
459b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
460b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: sitofp i32 {{.*}} to half
461b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fsub half
462b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  h0 -= i0;
4638eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
4643ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
4653ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
466e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fmul float
4673ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
468e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fmul half
4698eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h0 *= h1;
4703ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
4713ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F16TOF32]]
472e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fmul float
4733ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
474e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fmul half
4758eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h0 *= (__fp16)1.0;
4763ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
477e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fmul float
4783ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
479e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
480e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fmul float
481e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fptrunc float
4828eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h0 *= f2;
483b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
484b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: sitofp i32 {{.*}} to float
485b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fmul float
486b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fptosi float {{.*}} to i32
487b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: sitofp i32 {{.*}} to half
488b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fmul half
489b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fptosi half {{.*}} to i32
490b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  i0 *= h0;
491b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: sitofp i32 {{.*}} to float
492b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
493b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fmul float
494b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
495b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: sitofp i32 {{.*}} to half
496b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fmul half
497b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  h0 *= i0;
4988eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov
4993ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
5003ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
501e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fdiv float
5023ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
503e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fdiv half
5048eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h0 /= h1;
5053ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
5063ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[F16TOF32]]
507e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fdiv float
5083ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
509e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fdiv half
5108eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h0 /= (__fp16)1.0;
5113ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
512e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // CHECK: fdiv float
5133ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
514e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half
515e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fdiv float
516e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fptrunc float
5178eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov  h0 /= f2;
518b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
519b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: sitofp i32 {{.*}} to float
520b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fdiv float
521b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fptosi float {{.*}} to i32
522b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: sitofp i32 {{.*}} to half
523b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fdiv half
524b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fptosi half {{.*}} to i32
525b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  i0 /= h0;
526b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: sitofp i32 {{.*}} to float
527b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F16TOF32]]
528b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: fdiv float
529b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // CHECK: [[F32TOF16]]
530b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: sitofp i32 {{.*}} to half
531b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  // NATIVE-HALF: fdiv half
532b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  h0 /= i0;
5333ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
5343ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // Check conversions to/from double
5353ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: call i16 @llvm.convert.to.fp16.f64(
5363ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // HALF: fptrunc double {{.*}} to half
537e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fptrunc double {{.*}} to half
5383ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  h0 = d0;
5393ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
5403ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: [[MID:%.*]] = fptrunc double {{%.*}} to float
5413ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: call i16 @llvm.convert.to.fp16.f32(float [[MID]])
5423ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // HALF: fptrunc float [[MID]] to half
543e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: [[MID:%.*]] = fptrunc double {{%.*}} to float
544e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fptrunc float {{.*}} to half
5453ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  h0 = (float)d0;
5463ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
5473ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: call double @llvm.convert.from.fp16.f64(
5483ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // HALF: fpext half {{.*}} to double
549e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext half {{.*}} to double
5503ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  d0 = h0;
5513ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
5523ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // NOHALF: [[MID:%.*]] = call float @llvm.convert.from.fp16.f32(
5533ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // HALF: [[MID:%.*]] = fpext half {{.*}} to float
5543ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  // CHECK: fpext float [[MID]] to double
555e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: [[MID:%.*]] = fpext half {{.*}} to float
556e9a54b6cc25f564aa5c99b62e888e484cede3959Pirama Arumuga Nainar  // NATIVE-HALF: fpext float [[MID]] to double
5573ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  d0 = (float)h0;
5588eb5b29ec11f5f6922132a68f8e88a9b0f69a489Anton Korobeynikov}
559