|  | // RUN: %clang_cc1 -finclude-default-header -x hlsl -triple dxil-pc-shadermodel6.2-library %s -fnative-half-type -emit-llvm -O1 -o - | FileCheck %s | 
|  |  | 
|  | //CHECK-LABEL: define {{.*}}test_ints | 
|  | //CHECK-SAME: {{.*}}(i16 {{.*}} [[VAL:%.*]]){{.*}} | 
|  | //CHECK-NOT: bitcast | 
|  | //CHECK: entry: | 
|  | //CHECK-NEXT: ret i16 [[VAL]] | 
|  | int16_t test_int(int16_t p0) | 
|  | { | 
|  | return asint16(p0); | 
|  | } | 
|  |  | 
|  | //CHECK-LABEL: define {{.*}}test_uint | 
|  | //CHECK-SAME: {{.*}}(i16 {{.*}} [[VAL:%.*]]){{.*}} | 
|  | //CHECK-NOT:bitcast | 
|  | //CHECK: entry: | 
|  | //CHECK-NEXT: ret i16 [[VAL]] | 
|  | int16_t test_uint(uint16_t p0) | 
|  | { | 
|  | return asint16(p0); | 
|  | } | 
|  |  | 
|  | //CHECK-LABEL: define {{.*}}test_half | 
|  | //CHECK-SAME: {{.*}}(half {{.*}} [[VAL:%.*]]){{.*}} | 
|  | //CHECK: [[RES:%.*]] = bitcast half [[VAL]] to i16 | 
|  | //CHECK-NEXT : ret i16 [[RES]] | 
|  | int16_t test_half(half p0) | 
|  | { | 
|  | return asint16(p0); | 
|  | } | 
|  |  | 
|  | //CHECK-LABEL: define {{.*}}test_vector_int | 
|  | //CHECK-SAME: {{.*}}(<4 x i16> {{.*}} [[VAL:%.*]]){{.*}} | 
|  | //CHECK-NOT: bitcast | 
|  | //CHECK: entry: | 
|  | //CHECK-NEXT: ret <4 x i16> [[VAL]] | 
|  | int16_t4 test_vector_int(int16_t4 p0) | 
|  | { | 
|  | return asint16(p0); | 
|  | } | 
|  |  | 
|  | //CHECK-LABEL: define {{.*}}test_vector_uint | 
|  | //CHECK-SAME: {{.*}}(<4 x i16> {{.*}} [[VAL:%.*]]){{.*}} | 
|  | //CHECK-NOT: bitcast | 
|  | //CHECK-NEXT: entry: | 
|  | //CHECK-NEXT: ret <4 x i16> [[VAL]] | 
|  | int16_t4 test_vector_uint(uint16_t4 p0) | 
|  | { | 
|  | return asint16(p0); | 
|  | } | 
|  |  | 
|  | //CHECK-LABEL: define {{.*}}fn | 
|  | //CHECK-SAME: {{.*}}(<4 x half> {{.*}} [[VAL:%.*]]){{.*}} | 
|  | //CHECK: [[RES:%.*]] = bitcast <4 x half> [[VAL]] to <4 x i16> | 
|  | //CHECK-NEXT: ret <4 x i16> [[RES]] | 
|  | int16_t4 fn(half4 p1) | 
|  | { | 
|  | return asint16(p1); | 
|  | } | 
|  |  |