add support for identity matrix constructor

This commit is contained in:
teoxoy 2022-05-12 15:14:46 +02:00 committed by Dzmitry Malyshau
parent 95d5d165fb
commit afb6504b8b
11 changed files with 1016 additions and 935 deletions

View File

@ -2895,6 +2895,11 @@ impl<'a, W: Write> Writer<'a, W> {
// this is similar to `write_type`, but with the target kind
let scalar = glsl_scalar(target_kind, width)?;
match *inner {
TypeInner::Matrix { columns, rows, .. } => write!(
self.out,
"{}mat{}x{}",
scalar.prefix, columns as u8, rows as u8
)?,
TypeInner::Vector { size, .. } => {
write!(self.out, "{}vec{}", scalar.prefix, size as u8)?
}

View File

@ -2141,9 +2141,32 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> {
convert,
} => {
let inner = func_ctx.info[expr].ty.inner_with(&module.types);
let (size_str, src_width) = match *inner {
TypeInner::Vector { size, width, .. } => (back::vector_size_str(size), width),
TypeInner::Scalar { width, .. } => ("", width),
let get_width = |src_width| kind.to_hlsl_str(convert.unwrap_or(src_width));
match *inner {
TypeInner::Vector { size, width, .. } => {
write!(
self.out,
"{}{}(",
get_width(width)?,
back::vector_size_str(size)
)?;
}
TypeInner::Scalar { width, .. } => {
write!(self.out, "{}(", get_width(width)?,)?;
}
TypeInner::Matrix {
columns,
rows,
width,
} => {
write!(
self.out,
"{}{}x{}(",
get_width(width)?,
back::vector_size_str(columns),
back::vector_size_str(rows)
)?;
}
_ => {
return Err(Error::Unimplemented(format!(
"write_expr expression::as {:?}",
@ -2151,8 +2174,6 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> {
)));
}
};
let kind_str = kind.to_hlsl_str(convert.unwrap_or(src_width))?;
write!(self.out, "{}{}(", kind_str, size_str,)?;
self.write_expr(module, expr, func_ctx)?;
write!(self.out, ")")?;
}

View File

@ -1745,6 +1745,7 @@ impl<W: Write> Writer<W> {
let (src_kind, src_width) = match *context.resolve_type(expr) {
crate::TypeInner::Scalar { kind, width }
| crate::TypeInner::Vector { kind, width, .. } => (kind, width),
crate::TypeInner::Matrix { width, .. } => (crate::ScalarKind::Float, width),
_ => return Err(Error::Validation),
};
let is_bool_cast =
@ -1759,6 +1760,9 @@ impl<W: Write> Writer<W> {
};
write!(self.out, "{}<", op)?;
match *context.resolve_type(expr) {
crate::TypeInner::Matrix { columns, rows, .. } => {
put_numeric_type(&mut self.out, kind, &[rows, columns])?
}
crate::TypeInner::Vector { size, .. } => {
put_numeric_type(&mut self.out, kind, &[size])?
}

View File

@ -942,6 +942,7 @@ impl<'w> BlockContext<'w> {
match *self.fun_info[expr].ty.inner_with(&self.ir_module.types) {
crate::TypeInner::Scalar { kind, width } => (kind, None, width),
crate::TypeInner::Vector { kind, width, size } => (kind, Some(size), width),
crate::TypeInner::Matrix { width, .. } => (kind, None, width),
ref other => {
log::error!("As source {:?}", other);
return Err(Error::Validation("Unexpected Expression::As source"));

View File

@ -864,6 +864,15 @@ impl<'a> ResolveContext<'a> {
size,
width: convert.unwrap_or(width),
}),
Ti::Matrix {
columns,
rows,
width,
} => TypeResolution::Value(Ti::Matrix {
columns,
rows,
width: convert.unwrap_or(width),
}),
ref other => {
return Err(ResolveError::IncompatibleOperands(format!(
"{:?} as {:?}",

View File

@ -68,6 +68,14 @@ fn constructors() -> f32 {
_ = mat2x2(vec2(0.), vec2(0.));
_ = array(0, 1, 2, 3);
// identity constructors
_ = bool(bool());
_ = i32(i32());
_ = u32(u32());
_ = f32(f32());
_ = vec2<u32>(vec2<u32>());
_ = mat2x3<f32>(mat2x3<f32>());
return foo.a.x;
}

View File

@ -41,157 +41,163 @@ float constructors() {
uvec2 unnamed = uvec2(0u);
mat2x2 unnamed_1 = mat2x2(vec2(0.0), vec2(0.0));
int unnamed_2[4] = int[4](0, 1, 2, 3);
float _e59 = foo.a.x;
return _e59;
bool unnamed_3 = bool(false);
int unnamed_4 = int(0);
uint unnamed_5 = uint(0u);
float unnamed_6 = float(0.0);
uvec2 unnamed_7 = uvec2(uvec2(0u, 0u));
mat2x3 unnamed_8 = mat2x3(mat2x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)));
float _e71 = foo.a.x;
return _e71;
}
void logical() {
bool unnamed_3 = (!true);
bvec2 unnamed_4 = not(bvec2(true));
bool unnamed_5 = (true || false);
bool unnamed_6 = (true && false);
bool unnamed_7 = (true || false);
bvec3 unnamed_8 = bvec3(bvec3(true).x || bvec3(false).x, bvec3(true).y || bvec3(false).y, bvec3(true).z || bvec3(false).z);
bool unnamed_9 = (true && false);
bvec4 unnamed_10 = bvec4(bvec4(true).x && bvec4(false).x, bvec4(true).y && bvec4(false).y, bvec4(true).z && bvec4(false).z, bvec4(true).w && bvec4(false).w);
bool unnamed_9 = (!true);
bvec2 unnamed_10 = not(bvec2(true));
bool unnamed_11 = (true || false);
bool unnamed_12 = (true && false);
bool unnamed_13 = (true || false);
bvec3 unnamed_14 = bvec3(bvec3(true).x || bvec3(false).x, bvec3(true).y || bvec3(false).y, bvec3(true).z || bvec3(false).z);
bool unnamed_15 = (true && false);
bvec4 unnamed_16 = bvec4(bvec4(true).x && bvec4(false).x, bvec4(true).y && bvec4(false).y, bvec4(true).z && bvec4(false).z, bvec4(true).w && bvec4(false).w);
}
void arithmetic() {
ivec2 unnamed_11 = (-ivec2(1));
vec2 unnamed_12 = (-vec2(1.0));
int unnamed_13 = (2 + 1);
uint unnamed_14 = (2u + 1u);
float unnamed_15 = (2.0 + 1.0);
ivec2 unnamed_16 = (ivec2(2) + ivec2(1));
uvec3 unnamed_17 = (uvec3(2u) + uvec3(1u));
vec4 unnamed_18 = (vec4(2.0) + vec4(1.0));
int unnamed_19 = (2 - 1);
uint unnamed_20 = (2u - 1u);
float unnamed_21 = (2.0 - 1.0);
ivec2 unnamed_22 = (ivec2(2) - ivec2(1));
uvec3 unnamed_23 = (uvec3(2u) - uvec3(1u));
vec4 unnamed_24 = (vec4(2.0) - vec4(1.0));
int unnamed_25 = (2 * 1);
uint unnamed_26 = (2u * 1u);
float unnamed_27 = (2.0 * 1.0);
ivec2 unnamed_28 = (ivec2(2) * ivec2(1));
uvec3 unnamed_29 = (uvec3(2u) * uvec3(1u));
vec4 unnamed_30 = (vec4(2.0) * vec4(1.0));
int unnamed_31 = (2 / 1);
uint unnamed_32 = (2u / 1u);
float unnamed_33 = (2.0 / 1.0);
ivec2 unnamed_34 = (ivec2(2) / ivec2(1));
uvec3 unnamed_35 = (uvec3(2u) / uvec3(1u));
vec4 unnamed_36 = (vec4(2.0) / vec4(1.0));
int unnamed_37 = (2 % 1);
uint unnamed_38 = (2u % 1u);
float unnamed_39 = (2.0 - 1.0 * trunc(2.0 / 1.0));
ivec2 unnamed_40 = (ivec2(2) % ivec2(1));
uvec3 unnamed_41 = (uvec3(2u) % uvec3(1u));
vec4 unnamed_42 = (vec4(2.0) - vec4(1.0) * trunc(vec4(2.0) / vec4(1.0)));
ivec2 unnamed_43 = (ivec2(2) + ivec2(1));
ivec2 unnamed_44 = (ivec2(2) + ivec2(1));
uvec2 unnamed_45 = (uvec2(2u) + uvec2(1u));
uvec2 unnamed_46 = (uvec2(2u) + uvec2(1u));
vec2 unnamed_47 = (vec2(2.0) + vec2(1.0));
vec2 unnamed_48 = (vec2(2.0) + vec2(1.0));
ivec2 unnamed_49 = (ivec2(2) - ivec2(1));
ivec2 unnamed_50 = (ivec2(2) - ivec2(1));
uvec2 unnamed_51 = (uvec2(2u) - uvec2(1u));
uvec2 unnamed_52 = (uvec2(2u) - uvec2(1u));
vec2 unnamed_53 = (vec2(2.0) - vec2(1.0));
vec2 unnamed_54 = (vec2(2.0) - vec2(1.0));
ivec2 unnamed_55 = (ivec2(2) * 1);
ivec2 unnamed_56 = (2 * ivec2(1));
uvec2 unnamed_57 = (uvec2(2u) * 1u);
uvec2 unnamed_58 = (2u * uvec2(1u));
vec2 unnamed_59 = (vec2(2.0) * 1.0);
vec2 unnamed_60 = (2.0 * vec2(1.0));
ivec2 unnamed_61 = (ivec2(2) / ivec2(1));
ivec2 unnamed_62 = (ivec2(2) / ivec2(1));
uvec2 unnamed_63 = (uvec2(2u) / uvec2(1u));
uvec2 unnamed_64 = (uvec2(2u) / uvec2(1u));
vec2 unnamed_65 = (vec2(2.0) / vec2(1.0));
vec2 unnamed_66 = (vec2(2.0) / vec2(1.0));
ivec2 unnamed_67 = (ivec2(2) % ivec2(1));
ivec2 unnamed_68 = (ivec2(2) % ivec2(1));
uvec2 unnamed_69 = (uvec2(2u) % uvec2(1u));
uvec2 unnamed_70 = (uvec2(2u) % uvec2(1u));
vec2 unnamed_71 = (vec2(2.0) - vec2(1.0) * trunc(vec2(2.0) / vec2(1.0)));
vec2 unnamed_72 = (vec2(2.0) - vec2(1.0) * trunc(vec2(2.0) / vec2(1.0)));
mat3x3 unnamed_73 = (mat3x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)) + mat3x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)));
mat3x3 unnamed_74 = (mat3x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)) - mat3x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)));
mat3x3 unnamed_75 = (mat3x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)) * 1.0);
mat3x3 unnamed_76 = (2.0 * mat3x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)));
vec3 unnamed_77 = (mat4x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)) * vec4(1.0));
vec4 unnamed_78 = (vec3(2.0) * mat4x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)));
mat3x3 unnamed_79 = (mat4x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)) * mat3x4(vec4(0.0, 0.0, 0.0, 0.0), vec4(0.0, 0.0, 0.0, 0.0), vec4(0.0, 0.0, 0.0, 0.0)));
ivec2 unnamed_17 = (-ivec2(1));
vec2 unnamed_18 = (-vec2(1.0));
int unnamed_19 = (2 + 1);
uint unnamed_20 = (2u + 1u);
float unnamed_21 = (2.0 + 1.0);
ivec2 unnamed_22 = (ivec2(2) + ivec2(1));
uvec3 unnamed_23 = (uvec3(2u) + uvec3(1u));
vec4 unnamed_24 = (vec4(2.0) + vec4(1.0));
int unnamed_25 = (2 - 1);
uint unnamed_26 = (2u - 1u);
float unnamed_27 = (2.0 - 1.0);
ivec2 unnamed_28 = (ivec2(2) - ivec2(1));
uvec3 unnamed_29 = (uvec3(2u) - uvec3(1u));
vec4 unnamed_30 = (vec4(2.0) - vec4(1.0));
int unnamed_31 = (2 * 1);
uint unnamed_32 = (2u * 1u);
float unnamed_33 = (2.0 * 1.0);
ivec2 unnamed_34 = (ivec2(2) * ivec2(1));
uvec3 unnamed_35 = (uvec3(2u) * uvec3(1u));
vec4 unnamed_36 = (vec4(2.0) * vec4(1.0));
int unnamed_37 = (2 / 1);
uint unnamed_38 = (2u / 1u);
float unnamed_39 = (2.0 / 1.0);
ivec2 unnamed_40 = (ivec2(2) / ivec2(1));
uvec3 unnamed_41 = (uvec3(2u) / uvec3(1u));
vec4 unnamed_42 = (vec4(2.0) / vec4(1.0));
int unnamed_43 = (2 % 1);
uint unnamed_44 = (2u % 1u);
float unnamed_45 = (2.0 - 1.0 * trunc(2.0 / 1.0));
ivec2 unnamed_46 = (ivec2(2) % ivec2(1));
uvec3 unnamed_47 = (uvec3(2u) % uvec3(1u));
vec4 unnamed_48 = (vec4(2.0) - vec4(1.0) * trunc(vec4(2.0) / vec4(1.0)));
ivec2 unnamed_49 = (ivec2(2) + ivec2(1));
ivec2 unnamed_50 = (ivec2(2) + ivec2(1));
uvec2 unnamed_51 = (uvec2(2u) + uvec2(1u));
uvec2 unnamed_52 = (uvec2(2u) + uvec2(1u));
vec2 unnamed_53 = (vec2(2.0) + vec2(1.0));
vec2 unnamed_54 = (vec2(2.0) + vec2(1.0));
ivec2 unnamed_55 = (ivec2(2) - ivec2(1));
ivec2 unnamed_56 = (ivec2(2) - ivec2(1));
uvec2 unnamed_57 = (uvec2(2u) - uvec2(1u));
uvec2 unnamed_58 = (uvec2(2u) - uvec2(1u));
vec2 unnamed_59 = (vec2(2.0) - vec2(1.0));
vec2 unnamed_60 = (vec2(2.0) - vec2(1.0));
ivec2 unnamed_61 = (ivec2(2) * 1);
ivec2 unnamed_62 = (2 * ivec2(1));
uvec2 unnamed_63 = (uvec2(2u) * 1u);
uvec2 unnamed_64 = (2u * uvec2(1u));
vec2 unnamed_65 = (vec2(2.0) * 1.0);
vec2 unnamed_66 = (2.0 * vec2(1.0));
ivec2 unnamed_67 = (ivec2(2) / ivec2(1));
ivec2 unnamed_68 = (ivec2(2) / ivec2(1));
uvec2 unnamed_69 = (uvec2(2u) / uvec2(1u));
uvec2 unnamed_70 = (uvec2(2u) / uvec2(1u));
vec2 unnamed_71 = (vec2(2.0) / vec2(1.0));
vec2 unnamed_72 = (vec2(2.0) / vec2(1.0));
ivec2 unnamed_73 = (ivec2(2) % ivec2(1));
ivec2 unnamed_74 = (ivec2(2) % ivec2(1));
uvec2 unnamed_75 = (uvec2(2u) % uvec2(1u));
uvec2 unnamed_76 = (uvec2(2u) % uvec2(1u));
vec2 unnamed_77 = (vec2(2.0) - vec2(1.0) * trunc(vec2(2.0) / vec2(1.0)));
vec2 unnamed_78 = (vec2(2.0) - vec2(1.0) * trunc(vec2(2.0) / vec2(1.0)));
mat3x3 unnamed_79 = (mat3x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)) + mat3x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)));
mat3x3 unnamed_80 = (mat3x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)) - mat3x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)));
mat3x3 unnamed_81 = (mat3x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)) * 1.0);
mat3x3 unnamed_82 = (2.0 * mat3x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)));
vec3 unnamed_83 = (mat4x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)) * vec4(1.0));
vec4 unnamed_84 = (vec3(2.0) * mat4x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)));
mat3x3 unnamed_85 = (mat4x3(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)) * mat3x4(vec4(0.0, 0.0, 0.0, 0.0), vec4(0.0, 0.0, 0.0, 0.0), vec4(0.0, 0.0, 0.0, 0.0)));
}
void bit() {
int unnamed_80 = (~1);
uint unnamed_81 = (~1u);
ivec2 unnamed_82 = (~ivec2(1));
uvec3 unnamed_83 = (~uvec3(1u));
int unnamed_84 = (2 | 1);
uint unnamed_85 = (2u | 1u);
ivec2 unnamed_86 = (ivec2(2) | ivec2(1));
uvec3 unnamed_87 = (uvec3(2u) | uvec3(1u));
int unnamed_88 = (2 & 1);
uint unnamed_89 = (2u & 1u);
ivec2 unnamed_90 = (ivec2(2) & ivec2(1));
uvec3 unnamed_91 = (uvec3(2u) & uvec3(1u));
int unnamed_92 = (2 ^ 1);
uint unnamed_93 = (2u ^ 1u);
ivec2 unnamed_94 = (ivec2(2) ^ ivec2(1));
uvec3 unnamed_95 = (uvec3(2u) ^ uvec3(1u));
int unnamed_96 = (2 << 1u);
uint unnamed_97 = (2u << 1u);
ivec2 unnamed_98 = (ivec2(2) << uvec2(1u));
uvec3 unnamed_99 = (uvec3(2u) << uvec3(1u));
int unnamed_100 = (2 >> 1u);
uint unnamed_101 = (2u >> 1u);
ivec2 unnamed_102 = (ivec2(2) >> uvec2(1u));
uvec3 unnamed_103 = (uvec3(2u) >> uvec3(1u));
int unnamed_86 = (~1);
uint unnamed_87 = (~1u);
ivec2 unnamed_88 = (~ivec2(1));
uvec3 unnamed_89 = (~uvec3(1u));
int unnamed_90 = (2 | 1);
uint unnamed_91 = (2u | 1u);
ivec2 unnamed_92 = (ivec2(2) | ivec2(1));
uvec3 unnamed_93 = (uvec3(2u) | uvec3(1u));
int unnamed_94 = (2 & 1);
uint unnamed_95 = (2u & 1u);
ivec2 unnamed_96 = (ivec2(2) & ivec2(1));
uvec3 unnamed_97 = (uvec3(2u) & uvec3(1u));
int unnamed_98 = (2 ^ 1);
uint unnamed_99 = (2u ^ 1u);
ivec2 unnamed_100 = (ivec2(2) ^ ivec2(1));
uvec3 unnamed_101 = (uvec3(2u) ^ uvec3(1u));
int unnamed_102 = (2 << 1u);
uint unnamed_103 = (2u << 1u);
ivec2 unnamed_104 = (ivec2(2) << uvec2(1u));
uvec3 unnamed_105 = (uvec3(2u) << uvec3(1u));
int unnamed_106 = (2 >> 1u);
uint unnamed_107 = (2u >> 1u);
ivec2 unnamed_108 = (ivec2(2) >> uvec2(1u));
uvec3 unnamed_109 = (uvec3(2u) >> uvec3(1u));
}
void comparison() {
bool unnamed_104 = (2 == 1);
bool unnamed_105 = (2u == 1u);
bool unnamed_106 = (2.0 == 1.0);
bvec2 unnamed_107 = equal(ivec2(2), ivec2(1));
bvec3 unnamed_108 = equal(uvec3(2u), uvec3(1u));
bvec4 unnamed_109 = equal(vec4(2.0), vec4(1.0));
bool unnamed_110 = (2 != 1);
bool unnamed_111 = (2u != 1u);
bool unnamed_112 = (2.0 != 1.0);
bvec2 unnamed_113 = notEqual(ivec2(2), ivec2(1));
bvec3 unnamed_114 = notEqual(uvec3(2u), uvec3(1u));
bvec4 unnamed_115 = notEqual(vec4(2.0), vec4(1.0));
bool unnamed_116 = (2 < 1);
bool unnamed_117 = (2u < 1u);
bool unnamed_118 = (2.0 < 1.0);
bvec2 unnamed_119 = lessThan(ivec2(2), ivec2(1));
bvec3 unnamed_120 = lessThan(uvec3(2u), uvec3(1u));
bvec4 unnamed_121 = lessThan(vec4(2.0), vec4(1.0));
bool unnamed_122 = (2 <= 1);
bool unnamed_123 = (2u <= 1u);
bool unnamed_124 = (2.0 <= 1.0);
bvec2 unnamed_125 = lessThanEqual(ivec2(2), ivec2(1));
bvec3 unnamed_126 = lessThanEqual(uvec3(2u), uvec3(1u));
bvec4 unnamed_127 = lessThanEqual(vec4(2.0), vec4(1.0));
bool unnamed_128 = (2 > 1);
bool unnamed_129 = (2u > 1u);
bool unnamed_130 = (2.0 > 1.0);
bvec2 unnamed_131 = greaterThan(ivec2(2), ivec2(1));
bvec3 unnamed_132 = greaterThan(uvec3(2u), uvec3(1u));
bvec4 unnamed_133 = greaterThan(vec4(2.0), vec4(1.0));
bool unnamed_134 = (2 >= 1);
bool unnamed_135 = (2u >= 1u);
bool unnamed_136 = (2.0 >= 1.0);
bvec2 unnamed_137 = greaterThanEqual(ivec2(2), ivec2(1));
bvec3 unnamed_138 = greaterThanEqual(uvec3(2u), uvec3(1u));
bvec4 unnamed_139 = greaterThanEqual(vec4(2.0), vec4(1.0));
bool unnamed_110 = (2 == 1);
bool unnamed_111 = (2u == 1u);
bool unnamed_112 = (2.0 == 1.0);
bvec2 unnamed_113 = equal(ivec2(2), ivec2(1));
bvec3 unnamed_114 = equal(uvec3(2u), uvec3(1u));
bvec4 unnamed_115 = equal(vec4(2.0), vec4(1.0));
bool unnamed_116 = (2 != 1);
bool unnamed_117 = (2u != 1u);
bool unnamed_118 = (2.0 != 1.0);
bvec2 unnamed_119 = notEqual(ivec2(2), ivec2(1));
bvec3 unnamed_120 = notEqual(uvec3(2u), uvec3(1u));
bvec4 unnamed_121 = notEqual(vec4(2.0), vec4(1.0));
bool unnamed_122 = (2 < 1);
bool unnamed_123 = (2u < 1u);
bool unnamed_124 = (2.0 < 1.0);
bvec2 unnamed_125 = lessThan(ivec2(2), ivec2(1));
bvec3 unnamed_126 = lessThan(uvec3(2u), uvec3(1u));
bvec4 unnamed_127 = lessThan(vec4(2.0), vec4(1.0));
bool unnamed_128 = (2 <= 1);
bool unnamed_129 = (2u <= 1u);
bool unnamed_130 = (2.0 <= 1.0);
bvec2 unnamed_131 = lessThanEqual(ivec2(2), ivec2(1));
bvec3 unnamed_132 = lessThanEqual(uvec3(2u), uvec3(1u));
bvec4 unnamed_133 = lessThanEqual(vec4(2.0), vec4(1.0));
bool unnamed_134 = (2 > 1);
bool unnamed_135 = (2u > 1u);
bool unnamed_136 = (2.0 > 1.0);
bvec2 unnamed_137 = greaterThan(ivec2(2), ivec2(1));
bvec3 unnamed_138 = greaterThan(uvec3(2u), uvec3(1u));
bvec4 unnamed_139 = greaterThan(vec4(2.0), vec4(1.0));
bool unnamed_140 = (2 >= 1);
bool unnamed_141 = (2u >= 1u);
bool unnamed_142 = (2.0 >= 1.0);
bvec2 unnamed_143 = greaterThanEqual(ivec2(2), ivec2(1));
bvec3 unnamed_144 = greaterThanEqual(uvec3(2u), uvec3(1u));
bvec4 unnamed_145 = greaterThanEqual(vec4(2.0), vec4(1.0));
}
void assignment() {

View File

@ -64,161 +64,167 @@ float constructors()
uint2 unnamed = (0u).xx;
float2x2 unnamed_1 = float2x2((0.0).xx, (0.0).xx);
int unnamed_2[4] = Constructarray4_int_(0, 1, 2, 3);
float _expr59 = foo.a.x;
return _expr59;
bool unnamed_3 = bool(false);
int unnamed_4 = int(0);
uint unnamed_5 = uint(0u);
float unnamed_6 = float(0.0);
uint2 unnamed_7 = uint2(uint2(0u, 0u));
float2x3 unnamed_8 = float2x3(float2x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)));
float _expr71 = foo.a.x;
return _expr71;
}
void logical()
{
bool unnamed_3 = !true;
bool2 unnamed_4 = !(true).xx;
bool unnamed_5 = (true || false);
bool unnamed_6 = (true && false);
bool unnamed_7 = (true | false);
bool3 unnamed_8 = ((true).xxx | (false).xxx);
bool unnamed_9 = (true & false);
bool4 unnamed_10 = ((true).xxxx & (false).xxxx);
bool unnamed_9 = !true;
bool2 unnamed_10 = !(true).xx;
bool unnamed_11 = (true || false);
bool unnamed_12 = (true && false);
bool unnamed_13 = (true | false);
bool3 unnamed_14 = ((true).xxx | (false).xxx);
bool unnamed_15 = (true & false);
bool4 unnamed_16 = ((true).xxxx & (false).xxxx);
}
void arithmetic()
{
int2 unnamed_11 = -(1).xx;
float2 unnamed_12 = -(1.0).xx;
int unnamed_13 = (2 + 1);
uint unnamed_14 = (2u + 1u);
float unnamed_15 = (2.0 + 1.0);
int2 unnamed_16 = ((2).xx + (1).xx);
uint3 unnamed_17 = ((2u).xxx + (1u).xxx);
float4 unnamed_18 = ((2.0).xxxx + (1.0).xxxx);
int unnamed_19 = (2 - 1);
uint unnamed_20 = (2u - 1u);
float unnamed_21 = (2.0 - 1.0);
int2 unnamed_22 = ((2).xx - (1).xx);
uint3 unnamed_23 = ((2u).xxx - (1u).xxx);
float4 unnamed_24 = ((2.0).xxxx - (1.0).xxxx);
int unnamed_25 = (2 * 1);
uint unnamed_26 = (2u * 1u);
float unnamed_27 = (2.0 * 1.0);
int2 unnamed_28 = ((2).xx * (1).xx);
uint3 unnamed_29 = ((2u).xxx * (1u).xxx);
float4 unnamed_30 = ((2.0).xxxx * (1.0).xxxx);
int unnamed_31 = (2 / 1);
uint unnamed_32 = (2u / 1u);
float unnamed_33 = (2.0 / 1.0);
int2 unnamed_34 = ((2).xx / (1).xx);
uint3 unnamed_35 = ((2u).xxx / (1u).xxx);
float4 unnamed_36 = ((2.0).xxxx / (1.0).xxxx);
int unnamed_37 = (2 % 1);
uint unnamed_38 = (2u % 1u);
float unnamed_39 = fmod(2.0, 1.0);
int2 unnamed_40 = ((2).xx % (1).xx);
uint3 unnamed_41 = ((2u).xxx % (1u).xxx);
float4 unnamed_42 = fmod((2.0).xxxx, (1.0).xxxx);
int2 unnamed_43 = ((2).xx + (1).xx);
int2 unnamed_44 = ((2).xx + (1).xx);
uint2 unnamed_45 = ((2u).xx + (1u).xx);
uint2 unnamed_46 = ((2u).xx + (1u).xx);
float2 unnamed_47 = ((2.0).xx + (1.0).xx);
float2 unnamed_48 = ((2.0).xx + (1.0).xx);
int2 unnamed_49 = ((2).xx - (1).xx);
int2 unnamed_50 = ((2).xx - (1).xx);
uint2 unnamed_51 = ((2u).xx - (1u).xx);
uint2 unnamed_52 = ((2u).xx - (1u).xx);
float2 unnamed_53 = ((2.0).xx - (1.0).xx);
float2 unnamed_54 = ((2.0).xx - (1.0).xx);
int2 unnamed_55 = ((2).xx * 1);
int2 unnamed_56 = (2 * (1).xx);
uint2 unnamed_57 = ((2u).xx * 1u);
uint2 unnamed_58 = (2u * (1u).xx);
float2 unnamed_59 = ((2.0).xx * 1.0);
float2 unnamed_60 = (2.0 * (1.0).xx);
int2 unnamed_61 = ((2).xx / (1).xx);
int2 unnamed_62 = ((2).xx / (1).xx);
uint2 unnamed_63 = ((2u).xx / (1u).xx);
uint2 unnamed_64 = ((2u).xx / (1u).xx);
float2 unnamed_65 = ((2.0).xx / (1.0).xx);
float2 unnamed_66 = ((2.0).xx / (1.0).xx);
int2 unnamed_67 = ((2).xx % (1).xx);
int2 unnamed_68 = ((2).xx % (1).xx);
uint2 unnamed_69 = ((2u).xx % (1u).xx);
uint2 unnamed_70 = ((2u).xx % (1u).xx);
float2 unnamed_71 = fmod((2.0).xx, (1.0).xx);
float2 unnamed_72 = fmod((2.0).xx, (1.0).xx);
float3x3 unnamed_73 = (float3x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)) + float3x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)));
float3x3 unnamed_74 = (float3x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)) - float3x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)));
float3x3 unnamed_75 = mul(1.0, float3x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)));
float3x3 unnamed_76 = mul(float3x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)), 2.0);
float3 unnamed_77 = mul((1.0).xxxx, float4x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)));
float4 unnamed_78 = mul(float4x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)), (2.0).xxx);
float3x3 unnamed_79 = mul(float3x4(float4(0.0, 0.0, 0.0, 0.0), float4(0.0, 0.0, 0.0, 0.0), float4(0.0, 0.0, 0.0, 0.0)), float4x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)));
int2 unnamed_17 = -(1).xx;
float2 unnamed_18 = -(1.0).xx;
int unnamed_19 = (2 + 1);
uint unnamed_20 = (2u + 1u);
float unnamed_21 = (2.0 + 1.0);
int2 unnamed_22 = ((2).xx + (1).xx);
uint3 unnamed_23 = ((2u).xxx + (1u).xxx);
float4 unnamed_24 = ((2.0).xxxx + (1.0).xxxx);
int unnamed_25 = (2 - 1);
uint unnamed_26 = (2u - 1u);
float unnamed_27 = (2.0 - 1.0);
int2 unnamed_28 = ((2).xx - (1).xx);
uint3 unnamed_29 = ((2u).xxx - (1u).xxx);
float4 unnamed_30 = ((2.0).xxxx - (1.0).xxxx);
int unnamed_31 = (2 * 1);
uint unnamed_32 = (2u * 1u);
float unnamed_33 = (2.0 * 1.0);
int2 unnamed_34 = ((2).xx * (1).xx);
uint3 unnamed_35 = ((2u).xxx * (1u).xxx);
float4 unnamed_36 = ((2.0).xxxx * (1.0).xxxx);
int unnamed_37 = (2 / 1);
uint unnamed_38 = (2u / 1u);
float unnamed_39 = (2.0 / 1.0);
int2 unnamed_40 = ((2).xx / (1).xx);
uint3 unnamed_41 = ((2u).xxx / (1u).xxx);
float4 unnamed_42 = ((2.0).xxxx / (1.0).xxxx);
int unnamed_43 = (2 % 1);
uint unnamed_44 = (2u % 1u);
float unnamed_45 = fmod(2.0, 1.0);
int2 unnamed_46 = ((2).xx % (1).xx);
uint3 unnamed_47 = ((2u).xxx % (1u).xxx);
float4 unnamed_48 = fmod((2.0).xxxx, (1.0).xxxx);
int2 unnamed_49 = ((2).xx + (1).xx);
int2 unnamed_50 = ((2).xx + (1).xx);
uint2 unnamed_51 = ((2u).xx + (1u).xx);
uint2 unnamed_52 = ((2u).xx + (1u).xx);
float2 unnamed_53 = ((2.0).xx + (1.0).xx);
float2 unnamed_54 = ((2.0).xx + (1.0).xx);
int2 unnamed_55 = ((2).xx - (1).xx);
int2 unnamed_56 = ((2).xx - (1).xx);
uint2 unnamed_57 = ((2u).xx - (1u).xx);
uint2 unnamed_58 = ((2u).xx - (1u).xx);
float2 unnamed_59 = ((2.0).xx - (1.0).xx);
float2 unnamed_60 = ((2.0).xx - (1.0).xx);
int2 unnamed_61 = ((2).xx * 1);
int2 unnamed_62 = (2 * (1).xx);
uint2 unnamed_63 = ((2u).xx * 1u);
uint2 unnamed_64 = (2u * (1u).xx);
float2 unnamed_65 = ((2.0).xx * 1.0);
float2 unnamed_66 = (2.0 * (1.0).xx);
int2 unnamed_67 = ((2).xx / (1).xx);
int2 unnamed_68 = ((2).xx / (1).xx);
uint2 unnamed_69 = ((2u).xx / (1u).xx);
uint2 unnamed_70 = ((2u).xx / (1u).xx);
float2 unnamed_71 = ((2.0).xx / (1.0).xx);
float2 unnamed_72 = ((2.0).xx / (1.0).xx);
int2 unnamed_73 = ((2).xx % (1).xx);
int2 unnamed_74 = ((2).xx % (1).xx);
uint2 unnamed_75 = ((2u).xx % (1u).xx);
uint2 unnamed_76 = ((2u).xx % (1u).xx);
float2 unnamed_77 = fmod((2.0).xx, (1.0).xx);
float2 unnamed_78 = fmod((2.0).xx, (1.0).xx);
float3x3 unnamed_79 = (float3x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)) + float3x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)));
float3x3 unnamed_80 = (float3x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)) - float3x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)));
float3x3 unnamed_81 = mul(1.0, float3x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)));
float3x3 unnamed_82 = mul(float3x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)), 2.0);
float3 unnamed_83 = mul((1.0).xxxx, float4x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)));
float4 unnamed_84 = mul(float4x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)), (2.0).xxx);
float3x3 unnamed_85 = mul(float3x4(float4(0.0, 0.0, 0.0, 0.0), float4(0.0, 0.0, 0.0, 0.0), float4(0.0, 0.0, 0.0, 0.0)), float4x3(float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0)));
}
void bit()
{
int unnamed_80 = ~1;
uint unnamed_81 = ~1u;
int2 unnamed_82 = ~(1).xx;
uint3 unnamed_83 = ~(1u).xxx;
int unnamed_84 = (2 | 1);
uint unnamed_85 = (2u | 1u);
int2 unnamed_86 = ((2).xx | (1).xx);
uint3 unnamed_87 = ((2u).xxx | (1u).xxx);
int unnamed_88 = (2 & 1);
uint unnamed_89 = (2u & 1u);
int2 unnamed_90 = ((2).xx & (1).xx);
uint3 unnamed_91 = ((2u).xxx & (1u).xxx);
int unnamed_92 = (2 ^ 1);
uint unnamed_93 = (2u ^ 1u);
int2 unnamed_94 = ((2).xx ^ (1).xx);
uint3 unnamed_95 = ((2u).xxx ^ (1u).xxx);
int unnamed_96 = (2 << 1u);
uint unnamed_97 = (2u << 1u);
int2 unnamed_98 = ((2).xx << (1u).xx);
uint3 unnamed_99 = ((2u).xxx << (1u).xxx);
int unnamed_100 = (2 >> 1u);
uint unnamed_101 = (2u >> 1u);
int2 unnamed_102 = ((2).xx >> (1u).xx);
uint3 unnamed_103 = ((2u).xxx >> (1u).xxx);
int unnamed_86 = ~1;
uint unnamed_87 = ~1u;
int2 unnamed_88 = ~(1).xx;
uint3 unnamed_89 = ~(1u).xxx;
int unnamed_90 = (2 | 1);
uint unnamed_91 = (2u | 1u);
int2 unnamed_92 = ((2).xx | (1).xx);
uint3 unnamed_93 = ((2u).xxx | (1u).xxx);
int unnamed_94 = (2 & 1);
uint unnamed_95 = (2u & 1u);
int2 unnamed_96 = ((2).xx & (1).xx);
uint3 unnamed_97 = ((2u).xxx & (1u).xxx);
int unnamed_98 = (2 ^ 1);
uint unnamed_99 = (2u ^ 1u);
int2 unnamed_100 = ((2).xx ^ (1).xx);
uint3 unnamed_101 = ((2u).xxx ^ (1u).xxx);
int unnamed_102 = (2 << 1u);
uint unnamed_103 = (2u << 1u);
int2 unnamed_104 = ((2).xx << (1u).xx);
uint3 unnamed_105 = ((2u).xxx << (1u).xxx);
int unnamed_106 = (2 >> 1u);
uint unnamed_107 = (2u >> 1u);
int2 unnamed_108 = ((2).xx >> (1u).xx);
uint3 unnamed_109 = ((2u).xxx >> (1u).xxx);
}
void comparison()
{
bool unnamed_104 = (2 == 1);
bool unnamed_105 = (2u == 1u);
bool unnamed_106 = (2.0 == 1.0);
bool2 unnamed_107 = ((2).xx == (1).xx);
bool3 unnamed_108 = ((2u).xxx == (1u).xxx);
bool4 unnamed_109 = ((2.0).xxxx == (1.0).xxxx);
bool unnamed_110 = (2 != 1);
bool unnamed_111 = (2u != 1u);
bool unnamed_112 = (2.0 != 1.0);
bool2 unnamed_113 = ((2).xx != (1).xx);
bool3 unnamed_114 = ((2u).xxx != (1u).xxx);
bool4 unnamed_115 = ((2.0).xxxx != (1.0).xxxx);
bool unnamed_116 = (2 < 1);
bool unnamed_117 = (2u < 1u);
bool unnamed_118 = (2.0 < 1.0);
bool2 unnamed_119 = ((2).xx < (1).xx);
bool3 unnamed_120 = ((2u).xxx < (1u).xxx);
bool4 unnamed_121 = ((2.0).xxxx < (1.0).xxxx);
bool unnamed_122 = (2 <= 1);
bool unnamed_123 = (2u <= 1u);
bool unnamed_124 = (2.0 <= 1.0);
bool2 unnamed_125 = ((2).xx <= (1).xx);
bool3 unnamed_126 = ((2u).xxx <= (1u).xxx);
bool4 unnamed_127 = ((2.0).xxxx <= (1.0).xxxx);
bool unnamed_128 = (2 > 1);
bool unnamed_129 = (2u > 1u);
bool unnamed_130 = (2.0 > 1.0);
bool2 unnamed_131 = ((2).xx > (1).xx);
bool3 unnamed_132 = ((2u).xxx > (1u).xxx);
bool4 unnamed_133 = ((2.0).xxxx > (1.0).xxxx);
bool unnamed_134 = (2 >= 1);
bool unnamed_135 = (2u >= 1u);
bool unnamed_136 = (2.0 >= 1.0);
bool2 unnamed_137 = ((2).xx >= (1).xx);
bool3 unnamed_138 = ((2u).xxx >= (1u).xxx);
bool4 unnamed_139 = ((2.0).xxxx >= (1.0).xxxx);
bool unnamed_110 = (2 == 1);
bool unnamed_111 = (2u == 1u);
bool unnamed_112 = (2.0 == 1.0);
bool2 unnamed_113 = ((2).xx == (1).xx);
bool3 unnamed_114 = ((2u).xxx == (1u).xxx);
bool4 unnamed_115 = ((2.0).xxxx == (1.0).xxxx);
bool unnamed_116 = (2 != 1);
bool unnamed_117 = (2u != 1u);
bool unnamed_118 = (2.0 != 1.0);
bool2 unnamed_119 = ((2).xx != (1).xx);
bool3 unnamed_120 = ((2u).xxx != (1u).xxx);
bool4 unnamed_121 = ((2.0).xxxx != (1.0).xxxx);
bool unnamed_122 = (2 < 1);
bool unnamed_123 = (2u < 1u);
bool unnamed_124 = (2.0 < 1.0);
bool2 unnamed_125 = ((2).xx < (1).xx);
bool3 unnamed_126 = ((2u).xxx < (1u).xxx);
bool4 unnamed_127 = ((2.0).xxxx < (1.0).xxxx);
bool unnamed_128 = (2 <= 1);
bool unnamed_129 = (2u <= 1u);
bool unnamed_130 = (2.0 <= 1.0);
bool2 unnamed_131 = ((2).xx <= (1).xx);
bool3 unnamed_132 = ((2u).xxx <= (1u).xxx);
bool4 unnamed_133 = ((2.0).xxxx <= (1.0).xxxx);
bool unnamed_134 = (2 > 1);
bool unnamed_135 = (2u > 1u);
bool unnamed_136 = (2.0 > 1.0);
bool2 unnamed_137 = ((2).xx > (1).xx);
bool3 unnamed_138 = ((2u).xxx > (1u).xxx);
bool4 unnamed_139 = ((2.0).xxxx > (1.0).xxxx);
bool unnamed_140 = (2 >= 1);
bool unnamed_141 = (2u >= 1u);
bool unnamed_142 = (2.0 >= 1.0);
bool2 unnamed_143 = ((2).xx >= (1).xx);
bool3 unnamed_144 = ((2u).xxx >= (1u).xxx);
bool4 unnamed_145 = ((2.0).xxxx >= (1.0).xxxx);
}
void assignment()

View File

@ -25,10 +25,11 @@ constant metal::float4 const_type = {0.0, 0.0, 0.0, 0.0};
constant Foo const_Foo = {const_type, 0};
constant type_12 const_type_12_ = {const_Foo, const_Foo, const_Foo};
constant metal::float3 const_type_4_ = {0.0, 0.0, 0.0};
constant metal::float3x3 const_type_14_ = {const_type_4_, const_type_4_, const_type_4_};
constant metal::float4x3 const_type_15_ = {const_type_4_, const_type_4_, const_type_4_, const_type_4_};
constant metal::float3x4 const_type_16_ = {const_type, const_type, const_type};
constant metal::int3 const_type_17_ = {0, 0, 0};
constant metal::float2x3 const_type_14_ = {const_type_4_, const_type_4_};
constant metal::float3x3 const_type_15_ = {const_type_4_, const_type_4_, const_type_4_};
constant metal::float4x3 const_type_16_ = {const_type_4_, const_type_4_, const_type_4_, const_type_4_};
constant metal::float3x4 const_type_17_ = {const_type, const_type, const_type};
constant metal::int3 const_type_18_ = {0, 0, 0};
metal::float4 builtins(
) {
@ -66,167 +67,173 @@ float constructors(
metal::uint2 unnamed = metal::uint2(0u);
metal::float2x2 unnamed_1 = metal::float2x2(metal::float2(0.0), metal::float2(0.0));
type_13 unnamed_2 = type_13 {0, 1, 2, 3};
float _e59 = foo.a.x;
return _e59;
bool unnamed_3 = static_cast<bool>(false);
int unnamed_4 = static_cast<int>(0);
uint unnamed_5 = static_cast<uint>(0u);
float unnamed_6 = static_cast<float>(0.0);
metal::uint2 unnamed_7 = static_cast<metal::uint2>(const_type_11_);
metal::float2x3 unnamed_8 = static_cast<metal::float2x3>(const_type_14_);
float _e71 = foo.a.x;
return _e71;
}
void logical(
) {
bool unnamed_3 = !true;
metal::bool2 unnamed_4 = !metal::bool2(true);
bool unnamed_5 = true || false;
bool unnamed_6 = true && false;
bool unnamed_7 = true | false;
metal::bool3 unnamed_8 = metal::bool3(true) | metal::bool3(false);
bool unnamed_9 = true & false;
metal::bool4 unnamed_10 = metal::bool4(true) & metal::bool4(false);
bool unnamed_9 = !true;
metal::bool2 unnamed_10 = !metal::bool2(true);
bool unnamed_11 = true || false;
bool unnamed_12 = true && false;
bool unnamed_13 = true | false;
metal::bool3 unnamed_14 = metal::bool3(true) | metal::bool3(false);
bool unnamed_15 = true & false;
metal::bool4 unnamed_16 = metal::bool4(true) & metal::bool4(false);
}
void arithmetic(
) {
metal::int2 unnamed_11 = -metal::int2(1);
metal::float2 unnamed_12 = -metal::float2(1.0);
int unnamed_13 = 2 + 1;
uint unnamed_14 = 2u + 1u;
float unnamed_15 = 2.0 + 1.0;
metal::int2 unnamed_16 = metal::int2(2) + metal::int2(1);
metal::uint3 unnamed_17 = metal::uint3(2u) + metal::uint3(1u);
metal::float4 unnamed_18 = metal::float4(2.0) + metal::float4(1.0);
int unnamed_19 = 2 - 1;
uint unnamed_20 = 2u - 1u;
float unnamed_21 = 2.0 - 1.0;
metal::int2 unnamed_22 = metal::int2(2) - metal::int2(1);
metal::uint3 unnamed_23 = metal::uint3(2u) - metal::uint3(1u);
metal::float4 unnamed_24 = metal::float4(2.0) - metal::float4(1.0);
int unnamed_25 = 2 * 1;
uint unnamed_26 = 2u * 1u;
float unnamed_27 = 2.0 * 1.0;
metal::int2 unnamed_28 = metal::int2(2) * metal::int2(1);
metal::uint3 unnamed_29 = metal::uint3(2u) * metal::uint3(1u);
metal::float4 unnamed_30 = metal::float4(2.0) * metal::float4(1.0);
int unnamed_31 = 2 / 1;
uint unnamed_32 = 2u / 1u;
float unnamed_33 = 2.0 / 1.0;
metal::int2 unnamed_34 = metal::int2(2) / metal::int2(1);
metal::uint3 unnamed_35 = metal::uint3(2u) / metal::uint3(1u);
metal::float4 unnamed_36 = metal::float4(2.0) / metal::float4(1.0);
int unnamed_37 = 2 % 1;
uint unnamed_38 = 2u % 1u;
float unnamed_39 = metal::fmod(2.0, 1.0);
metal::int2 unnamed_40 = metal::int2(2) % metal::int2(1);
metal::uint3 unnamed_41 = metal::uint3(2u) % metal::uint3(1u);
metal::float4 unnamed_42 = metal::fmod(metal::float4(2.0), metal::float4(1.0));
metal::int2 unnamed_43 = metal::int2(2) + metal::int2(1);
metal::int2 unnamed_44 = metal::int2(2) + metal::int2(1);
metal::uint2 unnamed_45 = metal::uint2(2u) + metal::uint2(1u);
metal::uint2 unnamed_46 = metal::uint2(2u) + metal::uint2(1u);
metal::float2 unnamed_47 = metal::float2(2.0) + metal::float2(1.0);
metal::float2 unnamed_48 = metal::float2(2.0) + metal::float2(1.0);
metal::int2 unnamed_49 = metal::int2(2) - metal::int2(1);
metal::int2 unnamed_50 = metal::int2(2) - metal::int2(1);
metal::uint2 unnamed_51 = metal::uint2(2u) - metal::uint2(1u);
metal::uint2 unnamed_52 = metal::uint2(2u) - metal::uint2(1u);
metal::float2 unnamed_53 = metal::float2(2.0) - metal::float2(1.0);
metal::float2 unnamed_54 = metal::float2(2.0) - metal::float2(1.0);
metal::int2 unnamed_55 = metal::int2(2) * 1;
metal::int2 unnamed_56 = 2 * metal::int2(1);
metal::uint2 unnamed_57 = metal::uint2(2u) * 1u;
metal::uint2 unnamed_58 = 2u * metal::uint2(1u);
metal::float2 unnamed_59 = metal::float2(2.0) * 1.0;
metal::float2 unnamed_60 = 2.0 * metal::float2(1.0);
metal::int2 unnamed_61 = metal::int2(2) / metal::int2(1);
metal::int2 unnamed_62 = metal::int2(2) / metal::int2(1);
metal::uint2 unnamed_63 = metal::uint2(2u) / metal::uint2(1u);
metal::uint2 unnamed_64 = metal::uint2(2u) / metal::uint2(1u);
metal::float2 unnamed_65 = metal::float2(2.0) / metal::float2(1.0);
metal::float2 unnamed_66 = metal::float2(2.0) / metal::float2(1.0);
metal::int2 unnamed_67 = metal::int2(2) % metal::int2(1);
metal::int2 unnamed_68 = metal::int2(2) % metal::int2(1);
metal::uint2 unnamed_69 = metal::uint2(2u) % metal::uint2(1u);
metal::uint2 unnamed_70 = metal::uint2(2u) % metal::uint2(1u);
metal::float2 unnamed_71 = metal::fmod(metal::float2(2.0), metal::float2(1.0));
metal::float2 unnamed_72 = metal::fmod(metal::float2(2.0), metal::float2(1.0));
metal::float3x3 unnamed_73 = const_type_14_ + const_type_14_;
metal::float3x3 unnamed_74 = const_type_14_ - const_type_14_;
metal::float3x3 unnamed_75 = const_type_14_ * 1.0;
metal::float3x3 unnamed_76 = 2.0 * const_type_14_;
metal::float3 unnamed_77 = const_type_15_ * metal::float4(1.0);
metal::float4 unnamed_78 = metal::float3(2.0) * const_type_15_;
metal::float3x3 unnamed_79 = const_type_15_ * const_type_16_;
metal::int2 unnamed_17 = -metal::int2(1);
metal::float2 unnamed_18 = -metal::float2(1.0);
int unnamed_19 = 2 + 1;
uint unnamed_20 = 2u + 1u;
float unnamed_21 = 2.0 + 1.0;
metal::int2 unnamed_22 = metal::int2(2) + metal::int2(1);
metal::uint3 unnamed_23 = metal::uint3(2u) + metal::uint3(1u);
metal::float4 unnamed_24 = metal::float4(2.0) + metal::float4(1.0);
int unnamed_25 = 2 - 1;
uint unnamed_26 = 2u - 1u;
float unnamed_27 = 2.0 - 1.0;
metal::int2 unnamed_28 = metal::int2(2) - metal::int2(1);
metal::uint3 unnamed_29 = metal::uint3(2u) - metal::uint3(1u);
metal::float4 unnamed_30 = metal::float4(2.0) - metal::float4(1.0);
int unnamed_31 = 2 * 1;
uint unnamed_32 = 2u * 1u;
float unnamed_33 = 2.0 * 1.0;
metal::int2 unnamed_34 = metal::int2(2) * metal::int2(1);
metal::uint3 unnamed_35 = metal::uint3(2u) * metal::uint3(1u);
metal::float4 unnamed_36 = metal::float4(2.0) * metal::float4(1.0);
int unnamed_37 = 2 / 1;
uint unnamed_38 = 2u / 1u;
float unnamed_39 = 2.0 / 1.0;
metal::int2 unnamed_40 = metal::int2(2) / metal::int2(1);
metal::uint3 unnamed_41 = metal::uint3(2u) / metal::uint3(1u);
metal::float4 unnamed_42 = metal::float4(2.0) / metal::float4(1.0);
int unnamed_43 = 2 % 1;
uint unnamed_44 = 2u % 1u;
float unnamed_45 = metal::fmod(2.0, 1.0);
metal::int2 unnamed_46 = metal::int2(2) % metal::int2(1);
metal::uint3 unnamed_47 = metal::uint3(2u) % metal::uint3(1u);
metal::float4 unnamed_48 = metal::fmod(metal::float4(2.0), metal::float4(1.0));
metal::int2 unnamed_49 = metal::int2(2) + metal::int2(1);
metal::int2 unnamed_50 = metal::int2(2) + metal::int2(1);
metal::uint2 unnamed_51 = metal::uint2(2u) + metal::uint2(1u);
metal::uint2 unnamed_52 = metal::uint2(2u) + metal::uint2(1u);
metal::float2 unnamed_53 = metal::float2(2.0) + metal::float2(1.0);
metal::float2 unnamed_54 = metal::float2(2.0) + metal::float2(1.0);
metal::int2 unnamed_55 = metal::int2(2) - metal::int2(1);
metal::int2 unnamed_56 = metal::int2(2) - metal::int2(1);
metal::uint2 unnamed_57 = metal::uint2(2u) - metal::uint2(1u);
metal::uint2 unnamed_58 = metal::uint2(2u) - metal::uint2(1u);
metal::float2 unnamed_59 = metal::float2(2.0) - metal::float2(1.0);
metal::float2 unnamed_60 = metal::float2(2.0) - metal::float2(1.0);
metal::int2 unnamed_61 = metal::int2(2) * 1;
metal::int2 unnamed_62 = 2 * metal::int2(1);
metal::uint2 unnamed_63 = metal::uint2(2u) * 1u;
metal::uint2 unnamed_64 = 2u * metal::uint2(1u);
metal::float2 unnamed_65 = metal::float2(2.0) * 1.0;
metal::float2 unnamed_66 = 2.0 * metal::float2(1.0);
metal::int2 unnamed_67 = metal::int2(2) / metal::int2(1);
metal::int2 unnamed_68 = metal::int2(2) / metal::int2(1);
metal::uint2 unnamed_69 = metal::uint2(2u) / metal::uint2(1u);
metal::uint2 unnamed_70 = metal::uint2(2u) / metal::uint2(1u);
metal::float2 unnamed_71 = metal::float2(2.0) / metal::float2(1.0);
metal::float2 unnamed_72 = metal::float2(2.0) / metal::float2(1.0);
metal::int2 unnamed_73 = metal::int2(2) % metal::int2(1);
metal::int2 unnamed_74 = metal::int2(2) % metal::int2(1);
metal::uint2 unnamed_75 = metal::uint2(2u) % metal::uint2(1u);
metal::uint2 unnamed_76 = metal::uint2(2u) % metal::uint2(1u);
metal::float2 unnamed_77 = metal::fmod(metal::float2(2.0), metal::float2(1.0));
metal::float2 unnamed_78 = metal::fmod(metal::float2(2.0), metal::float2(1.0));
metal::float3x3 unnamed_79 = const_type_15_ + const_type_15_;
metal::float3x3 unnamed_80 = const_type_15_ - const_type_15_;
metal::float3x3 unnamed_81 = const_type_15_ * 1.0;
metal::float3x3 unnamed_82 = 2.0 * const_type_15_;
metal::float3 unnamed_83 = const_type_16_ * metal::float4(1.0);
metal::float4 unnamed_84 = metal::float3(2.0) * const_type_16_;
metal::float3x3 unnamed_85 = const_type_16_ * const_type_17_;
}
void bit(
) {
int unnamed_80 = ~1;
uint unnamed_81 = ~1u;
metal::int2 unnamed_82 = ~metal::int2(1);
metal::uint3 unnamed_83 = ~metal::uint3(1u);
int unnamed_84 = 2 | 1;
uint unnamed_85 = 2u | 1u;
metal::int2 unnamed_86 = metal::int2(2) | metal::int2(1);
metal::uint3 unnamed_87 = metal::uint3(2u) | metal::uint3(1u);
int unnamed_88 = 2 & 1;
uint unnamed_89 = 2u & 1u;
metal::int2 unnamed_90 = metal::int2(2) & metal::int2(1);
metal::uint3 unnamed_91 = metal::uint3(2u) & metal::uint3(1u);
int unnamed_92 = 2 ^ 1;
uint unnamed_93 = 2u ^ 1u;
metal::int2 unnamed_94 = metal::int2(2) ^ metal::int2(1);
metal::uint3 unnamed_95 = metal::uint3(2u) ^ metal::uint3(1u);
int unnamed_96 = 2 << 1u;
uint unnamed_97 = 2u << 1u;
metal::int2 unnamed_98 = metal::int2(2) << metal::uint2(1u);
metal::uint3 unnamed_99 = metal::uint3(2u) << metal::uint3(1u);
int unnamed_100 = 2 >> 1u;
uint unnamed_101 = 2u >> 1u;
metal::int2 unnamed_102 = metal::int2(2) >> metal::uint2(1u);
metal::uint3 unnamed_103 = metal::uint3(2u) >> metal::uint3(1u);
int unnamed_86 = ~1;
uint unnamed_87 = ~1u;
metal::int2 unnamed_88 = ~metal::int2(1);
metal::uint3 unnamed_89 = ~metal::uint3(1u);
int unnamed_90 = 2 | 1;
uint unnamed_91 = 2u | 1u;
metal::int2 unnamed_92 = metal::int2(2) | metal::int2(1);
metal::uint3 unnamed_93 = metal::uint3(2u) | metal::uint3(1u);
int unnamed_94 = 2 & 1;
uint unnamed_95 = 2u & 1u;
metal::int2 unnamed_96 = metal::int2(2) & metal::int2(1);
metal::uint3 unnamed_97 = metal::uint3(2u) & metal::uint3(1u);
int unnamed_98 = 2 ^ 1;
uint unnamed_99 = 2u ^ 1u;
metal::int2 unnamed_100 = metal::int2(2) ^ metal::int2(1);
metal::uint3 unnamed_101 = metal::uint3(2u) ^ metal::uint3(1u);
int unnamed_102 = 2 << 1u;
uint unnamed_103 = 2u << 1u;
metal::int2 unnamed_104 = metal::int2(2) << metal::uint2(1u);
metal::uint3 unnamed_105 = metal::uint3(2u) << metal::uint3(1u);
int unnamed_106 = 2 >> 1u;
uint unnamed_107 = 2u >> 1u;
metal::int2 unnamed_108 = metal::int2(2) >> metal::uint2(1u);
metal::uint3 unnamed_109 = metal::uint3(2u) >> metal::uint3(1u);
}
void comparison(
) {
bool unnamed_104 = 2 == 1;
bool unnamed_105 = 2u == 1u;
bool unnamed_106 = 2.0 == 1.0;
metal::bool2 unnamed_107 = metal::int2(2) == metal::int2(1);
metal::bool3 unnamed_108 = metal::uint3(2u) == metal::uint3(1u);
metal::bool4 unnamed_109 = metal::float4(2.0) == metal::float4(1.0);
bool unnamed_110 = 2 != 1;
bool unnamed_111 = 2u != 1u;
bool unnamed_112 = 2.0 != 1.0;
metal::bool2 unnamed_113 = metal::int2(2) != metal::int2(1);
metal::bool3 unnamed_114 = metal::uint3(2u) != metal::uint3(1u);
metal::bool4 unnamed_115 = metal::float4(2.0) != metal::float4(1.0);
bool unnamed_116 = 2 < 1;
bool unnamed_117 = 2u < 1u;
bool unnamed_118 = 2.0 < 1.0;
metal::bool2 unnamed_119 = metal::int2(2) < metal::int2(1);
metal::bool3 unnamed_120 = metal::uint3(2u) < metal::uint3(1u);
metal::bool4 unnamed_121 = metal::float4(2.0) < metal::float4(1.0);
bool unnamed_122 = 2 <= 1;
bool unnamed_123 = 2u <= 1u;
bool unnamed_124 = 2.0 <= 1.0;
metal::bool2 unnamed_125 = metal::int2(2) <= metal::int2(1);
metal::bool3 unnamed_126 = metal::uint3(2u) <= metal::uint3(1u);
metal::bool4 unnamed_127 = metal::float4(2.0) <= metal::float4(1.0);
bool unnamed_128 = 2 > 1;
bool unnamed_129 = 2u > 1u;
bool unnamed_130 = 2.0 > 1.0;
metal::bool2 unnamed_131 = metal::int2(2) > metal::int2(1);
metal::bool3 unnamed_132 = metal::uint3(2u) > metal::uint3(1u);
metal::bool4 unnamed_133 = metal::float4(2.0) > metal::float4(1.0);
bool unnamed_134 = 2 >= 1;
bool unnamed_135 = 2u >= 1u;
bool unnamed_136 = 2.0 >= 1.0;
metal::bool2 unnamed_137 = metal::int2(2) >= metal::int2(1);
metal::bool3 unnamed_138 = metal::uint3(2u) >= metal::uint3(1u);
metal::bool4 unnamed_139 = metal::float4(2.0) >= metal::float4(1.0);
bool unnamed_110 = 2 == 1;
bool unnamed_111 = 2u == 1u;
bool unnamed_112 = 2.0 == 1.0;
metal::bool2 unnamed_113 = metal::int2(2) == metal::int2(1);
metal::bool3 unnamed_114 = metal::uint3(2u) == metal::uint3(1u);
metal::bool4 unnamed_115 = metal::float4(2.0) == metal::float4(1.0);
bool unnamed_116 = 2 != 1;
bool unnamed_117 = 2u != 1u;
bool unnamed_118 = 2.0 != 1.0;
metal::bool2 unnamed_119 = metal::int2(2) != metal::int2(1);
metal::bool3 unnamed_120 = metal::uint3(2u) != metal::uint3(1u);
metal::bool4 unnamed_121 = metal::float4(2.0) != metal::float4(1.0);
bool unnamed_122 = 2 < 1;
bool unnamed_123 = 2u < 1u;
bool unnamed_124 = 2.0 < 1.0;
metal::bool2 unnamed_125 = metal::int2(2) < metal::int2(1);
metal::bool3 unnamed_126 = metal::uint3(2u) < metal::uint3(1u);
metal::bool4 unnamed_127 = metal::float4(2.0) < metal::float4(1.0);
bool unnamed_128 = 2 <= 1;
bool unnamed_129 = 2u <= 1u;
bool unnamed_130 = 2.0 <= 1.0;
metal::bool2 unnamed_131 = metal::int2(2) <= metal::int2(1);
metal::bool3 unnamed_132 = metal::uint3(2u) <= metal::uint3(1u);
metal::bool4 unnamed_133 = metal::float4(2.0) <= metal::float4(1.0);
bool unnamed_134 = 2 > 1;
bool unnamed_135 = 2u > 1u;
bool unnamed_136 = 2.0 > 1.0;
metal::bool2 unnamed_137 = metal::int2(2) > metal::int2(1);
metal::bool3 unnamed_138 = metal::uint3(2u) > metal::uint3(1u);
metal::bool4 unnamed_139 = metal::float4(2.0) > metal::float4(1.0);
bool unnamed_140 = 2 >= 1;
bool unnamed_141 = 2u >= 1u;
bool unnamed_142 = 2.0 >= 1.0;
metal::bool2 unnamed_143 = metal::int2(2) >= metal::int2(1);
metal::bool3 unnamed_144 = metal::uint3(2u) >= metal::uint3(1u);
metal::bool4 unnamed_145 = metal::float4(2.0) >= metal::float4(1.0);
}
void assignment(
) {
int a = 1;
metal::int3 vec0_ = const_type_17_;
metal::int3 vec0_ = const_type_18_;
int _e6 = a;
a = _e6 + 1;
int _e9 = a;

File diff suppressed because it is too large Load Diff

View File

@ -39,8 +39,14 @@ fn constructors() -> f32 {
_ = vec2<u32>(0u);
_ = mat2x2<f32>(vec2<f32>(0.0), vec2<f32>(0.0));
_ = array<i32,4u>(0, 1, 2, 3);
let _e59 = foo.a.x;
return _e59;
_ = bool(false);
_ = i32(0);
_ = u32(0u);
_ = f32(0.0);
_ = vec2<u32>(vec2<u32>(0u, 0u));
_ = mat2x3<f32>(mat2x3<f32>(vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0)));
let _e71 = foo.a.x;
return _e71;
}
fn logical() {