bools can now upcast to any integer
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
This commit is contained in:
parent
f7d5bccdd9
commit
1571938e9f
|
@ -47,7 +47,7 @@ main := fn(): uint {
|
||||||
#### arithmetic
|
#### arithmetic
|
||||||
```hb
|
```hb
|
||||||
main := fn(): uint {
|
main := fn(): uint {
|
||||||
return 10 - 20 / 2 + 4 * (2 + 2) - 4 * 4 + (1 << 0) + -1
|
return 10 - 20 / 2 + 4 * (2 + 2) - 4 * 4 + (true << 0) + -1
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -891,8 +891,8 @@ main := fn(): int {
|
||||||
loop if y == H break else {
|
loop if y == H break else {
|
||||||
x := @as(int, 0)
|
x := @as(int, 0)
|
||||||
loop if x == W break else {
|
loop if x == W break else {
|
||||||
c_r := @itf(x)
|
c_r := @as(f64, @itf(x))
|
||||||
c_i := @itf(y)
|
c_i := @as(f64, @itf(y))
|
||||||
if c_i * c_r >= 10.0 return 0
|
if c_i * c_r >= 10.0 return 0
|
||||||
x += 1
|
x += 1
|
||||||
}
|
}
|
||||||
|
@ -1070,7 +1070,7 @@ sin := fn(theta: f32): f32 {
|
||||||
PI := 3.14159265358979323846
|
PI := 3.14159265358979323846
|
||||||
TABLE_SIZE := @as(i32, 256)
|
TABLE_SIZE := @as(i32, 256)
|
||||||
si := @fti(theta * 0.5 * @itf(TABLE_SIZE) / PI)
|
si := @fti(theta * 0.5 * @itf(TABLE_SIZE) / PI)
|
||||||
d := theta - @floatcast(@itf(si)) * 2.0 * PI / @itf(TABLE_SIZE)
|
d := theta - @itf(si) * 2.0 * PI / @itf(TABLE_SIZE)
|
||||||
ci := si + TABLE_SIZE / 4 & TABLE_SIZE - 1
|
ci := si + TABLE_SIZE / 4 & TABLE_SIZE - 1
|
||||||
si &= TABLE_SIZE - 1
|
si &= TABLE_SIZE - 1
|
||||||
return sin_table[@bitcast(si)] + (sin_table[@bitcast(ci)] - 0.5 * sin_table[@bitcast(si)] * d) * d
|
return sin_table[@bitcast(si)] + (sin_table[@bitcast(ci)] - 0.5 * sin_table[@bitcast(si)] * d) * d
|
||||||
|
@ -1760,7 +1760,7 @@ main := fn(): uint {
|
||||||
}
|
}
|
||||||
|
|
||||||
if multiple_breaks(0) != 3 {
|
if multiple_breaks(0) != 3 {
|
||||||
return 1
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
if multiple_breaks(4) != 10 {
|
if multiple_breaks(4) != 10 {
|
||||||
|
|
|
@ -5558,13 +5558,13 @@ impl<'a> Codegen<'a> {
|
||||||
self.wrap_in_opt(pos, src);
|
self.wrap_in_opt(pos, src);
|
||||||
} else {
|
} else {
|
||||||
debug_assert!(
|
debug_assert!(
|
||||||
src.ty.is_integer() || src.ty == ty::Id::NEVER,
|
src.ty.is_integer() || src.ty == ty::Id::BOOL,
|
||||||
"{} {}",
|
"{} {}",
|
||||||
self.ty_display(src.ty),
|
self.ty_display(src.ty),
|
||||||
self.ty_display(upcasted)
|
self.ty_display(upcasted)
|
||||||
);
|
);
|
||||||
debug_assert!(
|
debug_assert!(
|
||||||
upcasted.is_integer() || src.ty == ty::Id::NEVER,
|
upcasted.is_integer() || src.ty == ty::Id::BOOL,
|
||||||
"{} {}",
|
"{} {}",
|
||||||
self.ty_display(src.ty),
|
self.ty_display(src.ty),
|
||||||
self.ty_display(upcasted)
|
self.ty_display(upcasted)
|
||||||
|
|
|
@ -19,23 +19,22 @@ sin:
|
||||||
FDIV32 r14, r14, r15
|
FDIV32 r14, r14, r15
|
||||||
FTI32 r14, r14, 1b
|
FTI32 r14, r14, 1b
|
||||||
ANDI r15, r14, 255d
|
ANDI r15, r14, 255d
|
||||||
ITF64 r16, r14
|
|
||||||
MULI64 r15, r15, 4d
|
MULI64 r15, r15, 4d
|
||||||
LRA r17, r0, :sin_table
|
LRA r16, r0, :sin_table
|
||||||
LI32 r18, 1086918619w
|
LI32 r17, 1086918619w
|
||||||
FC64T32 r16, r16, 1b
|
ITF32 r18, r14
|
||||||
ADDI64 r14, r14, 64d
|
ADDI64 r14, r14, 64d
|
||||||
ADD64 r15, r17, r15
|
ADD64 r15, r16, r15
|
||||||
LI32 r19, 1132462080w
|
LI32 r19, 1132462080w
|
||||||
FMUL32 r16, r16, r18
|
FMUL32 r17, r18, r17
|
||||||
ANDI r14, r14, 255d
|
ANDI r14, r14, 255d
|
||||||
LI32 r18, 1056964608w
|
LI32 r18, 1056964608w
|
||||||
LD r15, r15, 0a, 4h
|
LD r15, r15, 0a, 4h
|
||||||
FDIV32 r16, r16, r19
|
FDIV32 r17, r17, r19
|
||||||
MULI64 r14, r14, 4d
|
MULI64 r14, r14, 4d
|
||||||
FMUL32 r18, r15, r18
|
FMUL32 r18, r15, r18
|
||||||
FSUB32 r13, r13, r16
|
FSUB32 r13, r13, r17
|
||||||
ADD64 r14, r17, r14
|
ADD64 r14, r16, r14
|
||||||
FMUL32 r16, r13, r18
|
FMUL32 r16, r13, r18
|
||||||
LD r14, r14, 0a, 4h
|
LD r14, r14, 0a, 4h
|
||||||
FSUB32 r14, r14, r16
|
FSUB32 r14, r14, r16
|
||||||
|
@ -43,6 +42,6 @@ sin:
|
||||||
FADD32 r13, r15, r13
|
FADD32 r13, r15, r13
|
||||||
CP r1, r13
|
CP r1, r13
|
||||||
JALA r0, r31, 0a
|
JALA r0, r31, 0a
|
||||||
code size: 1315
|
code size: 1311
|
||||||
ret: 826
|
ret: 826
|
||||||
status: Ok(())
|
status: Ok(())
|
||||||
|
|
Loading…
Reference in a new issue