84 lines · plain
1; RUN: opt -S -passes=dxil-intrinsic-expansion,dxil-op-lower -mtriple=dxil-pc-shadermodel6.0-library < %s | FileCheck %s2 3; Make sure dxil operation function calls for all are generated for float and half.4 5; CHECK-LABEL: all_bool6; CHECK: icmp ne i1 %{{.*}}, false7define noundef i1 @all_bool(i1 noundef %p0) {8entry:9 %dx.all = call i1 @llvm.dx.all.i1(i1 %p0)10 ret i1 %dx.all11}12 13; CHECK-LABEL: all_int64_t14; CHECK: icmp ne i64 %{{.*}}, 015define noundef i1 @all_int64_t(i64 noundef %p0) {16entry:17 %dx.all = call i1 @llvm.dx.all.i64(i64 %p0)18 ret i1 %dx.all19}20 21; CHECK-LABEL: all_int22; CHECK: icmp ne i32 %{{.*}}, 023define noundef i1 @all_int(i32 noundef %p0) {24entry:25 %dx.all = call i1 @llvm.dx.all.i32(i32 %p0)26 ret i1 %dx.all27}28 29; CHECK-LABEL: all_int16_t30; CHECK: icmp ne i16 %{{.*}}, 031define noundef i1 @all_int16_t(i16 noundef %p0) {32entry:33 %dx.all = call i1 @llvm.dx.all.i16(i16 %p0)34 ret i1 %dx.all35}36 37; CHECK-LABEL: all_double38; CHECK: fcmp une double %{{.*}}, 0.000000e+0039define noundef i1 @all_double(double noundef %p0) {40entry:41 %dx.all = call i1 @llvm.dx.all.f64(double %p0)42 ret i1 %dx.all43}44 45; CHECK-LABEL: all_float46; CHECK: fcmp une float %{{.*}}, 0.000000e+0047define noundef i1 @all_float(float noundef %p0) {48entry:49 %dx.all = call i1 @llvm.dx.all.f32(float %p0)50 ret i1 %dx.all51}52 53; CHECK-LABEL: all_half54; CHECK: fcmp une half %{{.*}}, 0xH000055define noundef i1 @all_half(half noundef %p0) {56entry:57 %dx.all = call i1 @llvm.dx.all.f16(half %p0)58 ret i1 %dx.all59}60 61; CHECK-LABEL: all_bool462; CHECK: icmp ne <4 x i1> %{{.*}}, zeroinitialize63; CHECK: extractelement <4 x i1> %{{.*}}, i64 064; CHECK: extractelement <4 x i1> %{{.*}}, i64 165; CHECK: and i1 %{{.*}}, %{{.*}}66; CHECK: extractelement <4 x i1> %{{.*}}, i64 267; CHECK: and i1 %{{.*}}, %{{.*}}68; CHECK: extractelement <4 x i1> %{{.*}}, i64 369; CHECK: and i1 %{{.*}}, %{{.*}}70define noundef i1 @all_bool4(<4 x i1> noundef %p0) {71entry:72 %dx.all = call i1 @llvm.dx.all.v4i1(<4 x i1> %p0)73 ret i1 %dx.all74}75 76declare i1 @llvm.dx.all.v4i1(<4 x i1>)77declare i1 @llvm.dx.all.i1(i1)78declare i1 @llvm.dx.all.i16(i16)79declare i1 @llvm.dx.all.i32(i32)80declare i1 @llvm.dx.all.i64(i64)81declare i1 @llvm.dx.all.f16(half)82declare i1 @llvm.dx.all.f32(float)83declare i1 @llvm.dx.all.f64(double)84