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