// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.6-library -disable-llvm-passes -emit-llvm -finclude-default-header -fnative-half-type -o - %s | FileCheck %s // CHECK-LABEL: case1 // CHECK: [[ToBool:%.*]] = icmp ne <2 x i32> {{.*}}, zeroinitializer // CHECK-NEXT: [[BoolCmp:%.*]] = icmp eq <2 x i1> [[ToBool]], zeroinitializer // CHECK-NEXT: {{.*}} = zext <2 x i1> [[BoolCmp]] to <2 x i32> export uint32_t2 case1(uint32_t2 b) { return !b; } // CHECK-LABEL: case2 // CHECK: [[ToBool:%.*]] = icmp ne <3 x i32> {{.*}}, zeroinitializer // CHECK-NEXT: [[BoolCmp:%.*]] = icmp eq <3 x i1> [[ToBool]], zeroinitializer // CHECK-NEXT: {{.*}} = zext <3 x i1> [[BoolCmp]] to <3 x i32> export int32_t3 case2(int32_t3 b) { return !b; } // CHECK-LABEL: case3 // CHECK: [[ToBool:%.*]] = fcmp reassoc nnan ninf nsz arcp afn une half {{.*}}, 0xH0000 // CHECK-NEXT: [[BoolCmp:%.*]] = xor i1 [[ToBool]], true // CHECK-NEXT: {{.*}} = uitofp i1 [[BoolCmp]] to half export float16_t case3(float16_t b) { return !b; } // CHECK-LABEL: case4 // CHECK: [[ToBool:%.*]] = fcmp reassoc nnan ninf nsz arcp afn une <4 x float> {{.*}}, zeroinitializer // CHECK-NEXT: [[BoolCmp:%.*]] = icmp eq <4 x i1> [[ToBool]], zeroinitializer // CHECK-NEXT: {{.*}} = uitofp <4 x i1> [[BoolCmp]] to <4 x float> export float4 case4(float4 b) { return !b; }