brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · 393efcc Raw
111 lines · plain
1// RUN: %clang_cc1 -finclude-default-header -triple dxil-pc-shadermodel6.3-library %s \2// RUN:  -fnative-half-type -fnative-int16-type -emit-llvm -disable-llvm-passes -o - | \3// RUN:  FileCheck %s4// RUN: %clang_cc1 -finclude-default-header -triple spirv-unknown-vulkan-compute %s \5// RUN:  -fnative-half-type -fnative-int16-type -emit-llvm -disable-llvm-passes -o - | \6// RUN:  FileCheck %s7 8 half2 half_vec_mod_by_int(half2 p1) {9// CHECK-LABEL: half_vec_mod_by_int10// CHECK: %rem = frem reassoc nnan ninf nsz arcp afn <2 x half> %{{.*}}, splat (half 0xH4000)11    return  p1 % 2;12}13 14 half2 half_vec_mod_by_float(half2 p1) {15// CHECK-LABEL: half_vec_mod_by_float16// CHECK: %rem = frem reassoc nnan ninf nsz arcp afn <2 x half> %{{.*}}, splat (half 0xH4000)17    return  p1 % (half)2.0;18}19 20 half2 half_vec_mod_by_half(half2 p1, half p2 ) {21// CHECK-LABEL: half_vec_mod_by_half22// CHECK:  %splat.splatinsert = insertelement <2 x half> poison, half %{{.*}}, i64 023// CHECK:  %splat.splat = shufflevector <2 x half> %splat.splatinsert, <2 x half> poison, <2 x i32> zeroinitializer24// CHECK:  %rem = frem reassoc nnan ninf nsz arcp afn <2 x half> %{{.*}}, %splat.splat25    return  p1 % p2;26}27 28 half2 half_vec_mod_by_half_vec(half2 p1, half2 p2 ) {29// CHECK-LABEL: half_vec_mod_by_half_vec30// CHECK: %rem = frem reassoc nnan ninf nsz arcp afn <2 x half> %{{.*}}, %{{.*}}31    return  p1 % p2;32}33 34 half half_vec_mod_by_int(half p1) {35// CHECK-LABEL: half_vec_mod_by_int36// CHECK: %rem = frem reassoc nnan ninf nsz arcp afn half  %{{.*}}, 0xH400037    return  p1 % 2;38}39 40 half half_mod_by_float(half p1) {41// CHECK-LABEL: half_mod_by_float42// CHECK: %rem = frem reassoc nnan ninf nsz arcp afn half  %{{.*}}, 0xH400043    return  p1 % (half)2.0;44}45 46 half half_mod_by_half(half p1, half p2 ) {47// CHECK-LABEL: half_mod_by_half48// CHECK: %rem = frem reassoc nnan ninf nsz arcp afn half %{{.*}}, %{{.*}}49    return  p1 % p2;50}51 52 half half_mod_by_half_vec(half p1, half2 p2 ) {53// CHECK-LABEL: half_mod_by_half_vec54// CHECK: %splat.splatinsert = insertelement <2 x half> poison, half %{{.*}}, i64 055// CHECK: %splat.splat = shufflevector <2 x half> %splat.splatinsert, <2 x half> poison, <2 x i32> zeroinitializer56// CHECK: %rem = frem reassoc nnan ninf nsz arcp afn <2 x half> %splat.splat, %{{.*}}57    return  p1 % p2;58}59 60 float2 float_vec_mod_by_int(float2 p1) {61// CHECK-LABEL: float_vec_mod_by_int62// CHECK: %rem = frem reassoc nnan ninf nsz arcp afn <2 x float> %{{.*}}, splat (float 2.000000e+00)63    return  p1 % 2;64}65 66 float2 float_vec_mod_by_float_const(float2 p1) {67// CHECK-LABEL: float_vec_mod_by_float_const68// CHECK: %rem = frem reassoc nnan ninf nsz arcp afn <2 x float> %{{.*}}, splat (float 2.000000e+00)69    return  p1 % 2.0;70}71 72 float2 float_vec_mod_by_float(float2 p1, float p2 ) {73// CHECK-LABEL: float_vec_mod_by_float74// CHECK:  %splat.splatinsert = insertelement <2 x float> poison, float %{{.*}}, i64 075// CHECK:  %splat.splat = shufflevector <2 x float> %splat.splatinsert, <2 x float> poison, <2 x i32> zeroinitializer76// CHECK:  %rem = frem reassoc nnan ninf nsz arcp afn <2 x float> %{{.*}}, %splat.splat77    return  p1 % p2;78}79 80 float2 float_vec_mod_by_float_vec(float2 p1, float2 p2 ) {81// CHECK-LABEL: float_vec_mod_by_float_vec82// CHECK: %rem = frem reassoc nnan ninf nsz arcp afn <2 x float> %{{.*}}, %{{.*}}83    return  p1 % p2;84}85 86 float float_mod_by_int(float p1) {87// CHECK-LABEL: float_mod_by_int88// CHECK: %rem = frem reassoc nnan ninf nsz arcp afn float %{{.*}}, 2.000000e+0089    return  p1 % 2;90}91 92 float float_mod_by_float_const(float p1) {93// CHECK-LABEL: float_mod_by_float_const94// CHECK: %rem = frem reassoc nnan ninf nsz arcp afn float %{{.*}}, 2.000000e+0095    return  p1 % 2.0;96}97 98 float float_mod_by_float(float p1, float p2 ) {99// CHECK-LABEL: float_mod_by_float100// CHECK: %rem = frem reassoc nnan ninf nsz arcp afn float %{{.*}}, %{{.*}}101    return  p1 % p2;102}103 104 float float_mod_by_float_vec(float p1, float2 p2 ) {105// CHECK-LABEL: float_mod_by_float_vec106// CHECK: %splat.splatinsert = insertelement <2 x float> poison, float %{{.*}}, i64 0107// CHECK: %splat.splat = shufflevector <2 x float> %splat.splatinsert, <2 x float> poison, <2 x i32> zeroinitializer108// CHECK: %rem = frem reassoc nnan ninf nsz arcp afn <2 x float> %splat.splat, %{{.*}}109    return  p1 % p2;110}111