llvm-project/clang/test/SemaHLSL/Operators/frem_modulo-errors.hlsl
Farzon Lotfi 589e1c73d0
[HLSL] Add support for modulo of floating point scalar and vectors (#135125)
fixes #135122

SemaExpr.cpp - Make all doubles fail. Add sema support for float scalars
and vectors when language mode is HLSL.
CGExprScalar.cpp - Allow emit frem when language mode is HLSL.
2025-04-10 14:27:49 -04:00

42 lines
1.6 KiB
HLSL

// RUN: %clang_cc1 -finclude-default-header -triple dxil-pc-shadermodel6.6-library %s -fnative-half-type -emit-llvm-only -disable-llvm-passes -verify
export double2 double_vec_mod_by_int(double2 p1) {
return p1 % 2;
// expected-error@-1 {{invalid operands to binary expression ('double2' (aka 'vector<double, 2>') and 'int')}}
}
export double2 double_vec_mod_by_float(double2 p1) {
return p1 % 2.0;
// expected-error@-1 {{invalid operands to binary expression ('double2' (aka 'vector<double, 2>') and 'float')}}
}
export double2 double_vec_mod_by_double(double2 p1, double p2 ) {
return p1 % p2;
// expected-error@-1 {{invalid operands to binary expression ('double2' (aka 'vector<double, 2>') and 'double')}}
}
export double2 double_vec_mod_by_double_vec(double2 p1, double2 p2 ) {
return p1 % p2;
// expected-error@-1 {{invalid operands to binary expression ('double2' (aka 'vector<double, 2>') and 'double2')}}
}
export double double_mod_by_int(double p1) {
return p1 % 2;
// expected-error@-1 {{invalid operands to binary expression ('double' and 'int')}}
}
export double double_mod_by_float(double p1) {
return p1 % 2.0;
// expected-error@-1 {{invalid operands to binary expression ('double' and 'float')}}
}
export double double_mod_by_double(double p1, double p2 ) {
return p1 % p2;
// expected-error@-1 {{invalid operands to binary expression ('double' and 'double')}}
}
export double double_mod_by_double_vec(double p1, double2 p2 ) {
return p1 % p2;
// expected-error@-1 {{invalid operands to binary expression ('double' and 'double2' (aka 'vector<double, 2>'))}}
}