1 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm \ 2 // RUN: < %s | FileCheck %s --check-prefixes=CHECK 3 4 _Float16 add1(_Float16 a, _Float16 b) { 5 // CHECK-LABEL: define{{.*}} half @add1 6 // CHECK: alloca half 7 // CHECK: alloca half 8 // CHECK: store half {{.*}}, half* 9 // CHECK: store half {{.*}}, half* 10 // CHECK: load half, half* 11 // CHECK: load half, half* {{.*}} 12 // CHECK: fadd half {{.*}}, {{.*}} 13 // CHECK: ret half 14 return a + b; 15 } 16 17 _Float16 add2(_Float16 a, _Float16 b, _Float16 c) { 18 // CHECK-LABEL: define{{.*}} half @add2 19 // CHECK: alloca half 20 // CHECK: alloca half 21 // CHECK: alloca half 22 // CHECK: store half {{.*}}, half* 23 // CHECK: store half {{.*}}, half* 24 // CHECK: store half {{.*}}, half* 25 // CHECK: load half, half* {{.*}} 26 // CHECK: load half, half* {{.*}} 27 // CHECK: fadd half {{.*}}, {{.*}} 28 // CHECK: load half, half* {{.*}} 29 // CHECK: fadd half {{.*}}, {{.*}} 30 // CHECK: ret half 31 return a + b + c; 32 } 33 34 _Float16 sub(_Float16 a, _Float16 b) { 35 // CHECK-LABEL: define{{.*}} half @sub 36 // CHECK: alloca half 37 // CHECK: alloca half 38 // CHECK: store half {{.*}}, half* 39 // CHECK: store half {{.*}}, half* 40 // CHECK: load half, half* 41 // CHECK: load half, half* {{.*}} 42 // CHECK: fsub half {{.*}}, {{.*}} 43 // CHECK: ret half 44 return a - b; 45 } 46 47 _Float16 div(_Float16 a, _Float16 b) { 48 // CHECK-LABEL: define{{.*}} half @div 49 // CHECK: alloca half 50 // CHECK: alloca half 51 // CHECK: store half {{.*}}, half* 52 // CHECK: store half {{.*}}, half* 53 // CHECK: load half, half* {{.*}} 54 // CHECK: load half, half* {{.*}} 55 // CHECK: fdiv half {{.*}}, {{.*}} 56 // CHECK: ret half 57 return a / b; 58 } 59 60 _Float16 mul(_Float16 a, _Float16 b) { 61 // CHECK-LABEL: define{{.*}} half @mul 62 // CHECK: alloca half 63 // CHECK: alloca half 64 // CHECK: store half {{.*}}, half* 65 // CHECK: store half {{.*}}, half* 66 // CHECK: load half, half* {{.*}} 67 // CHECK: load half, half* {{.*}} 68 // CHECK: fmul half {{.*}}, {{.*}} 69 // CHECK: ret half 70 return a * b; 71 } 72 73 74