mirror of
https://github.com/Ed94/Odin.git
synced 2026-06-25 07:04:58 -07:00
Change ExactValue layout for complex/quaternion types to minimize its size
This commit is contained in:
+12
-12
@@ -5316,12 +5316,12 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value, bool allow_loc
|
||||
LLVMValueRef values[2] = {};
|
||||
switch (8*type_size_of(type)) {
|
||||
case 64:
|
||||
values[0] = lb_const_f32(m, cast(f32)value.value_complex.real);
|
||||
values[1] = lb_const_f32(m, cast(f32)value.value_complex.imag);
|
||||
values[0] = lb_const_f32(m, cast(f32)value.value_complex->real);
|
||||
values[1] = lb_const_f32(m, cast(f32)value.value_complex->imag);
|
||||
break;
|
||||
case 128:
|
||||
values[0] = LLVMConstReal(lb_type(m, t_f64), value.value_complex.real);
|
||||
values[1] = LLVMConstReal(lb_type(m, t_f64), value.value_complex.imag);
|
||||
values[0] = LLVMConstReal(lb_type(m, t_f64), value.value_complex->real);
|
||||
values[1] = LLVMConstReal(lb_type(m, t_f64), value.value_complex->imag);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -5335,17 +5335,17 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value, bool allow_loc
|
||||
switch (8*type_size_of(type)) {
|
||||
case 128:
|
||||
// @QuaternionLayout
|
||||
values[3] = lb_const_f32(m, cast(f32)value.value_quaternion.real);
|
||||
values[0] = lb_const_f32(m, cast(f32)value.value_quaternion.imag);
|
||||
values[1] = lb_const_f32(m, cast(f32)value.value_quaternion.jmag);
|
||||
values[2] = lb_const_f32(m, cast(f32)value.value_quaternion.kmag);
|
||||
values[3] = lb_const_f32(m, cast(f32)value.value_quaternion->real);
|
||||
values[0] = lb_const_f32(m, cast(f32)value.value_quaternion->imag);
|
||||
values[1] = lb_const_f32(m, cast(f32)value.value_quaternion->jmag);
|
||||
values[2] = lb_const_f32(m, cast(f32)value.value_quaternion->kmag);
|
||||
break;
|
||||
case 256:
|
||||
// @QuaternionLayout
|
||||
values[3] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion.real);
|
||||
values[0] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion.imag);
|
||||
values[1] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion.jmag);
|
||||
values[2] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion.kmag);
|
||||
values[3] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion->real);
|
||||
values[0] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion->imag);
|
||||
values[1] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion->jmag);
|
||||
values[2] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion->kmag);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user