mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-01-09 05:33:11 +00:00
Fixed multiplication rewriting to shift/add to also support const*var. Closes #201
This commit is contained in:
parent
db4fe786a7
commit
1294d0b7a2
@ -20303,3 +20303,61 @@ tya
|
|||||||
clc
|
clc
|
||||||
adc {c1}
|
adc {c1}
|
||||||
tay
|
tay
|
||||||
|
//FRAGMENT pbuz1=vbuc1
|
||||||
|
NO_SYNTHESIS
|
||||||
|
//FRAGMENT pbuz1=vbsc1
|
||||||
|
NO_SYNTHESIS
|
||||||
|
//FRAGMENT pbuz1=vwuc1
|
||||||
|
lda #<{c1}
|
||||||
|
sta {z1}
|
||||||
|
lda #>{c1}
|
||||||
|
sta {z1}+1
|
||||||
|
//FRAGMENT 0_neq_pbuz1_then_la1
|
||||||
|
lda {z1}
|
||||||
|
ora {z1}+1
|
||||||
|
bne {la1}
|
||||||
|
//FRAGMENT vwuz1=pbuc1_derefidx_vbuz2
|
||||||
|
ldy {z2}
|
||||||
|
lda {c1},y
|
||||||
|
sta {z1}
|
||||||
|
lda #0
|
||||||
|
sta {z1}+1
|
||||||
|
//FRAGMENT vwuz1=pbuc1_derefidx_vbuaa
|
||||||
|
tay
|
||||||
|
lda {c1},y
|
||||||
|
sta {z1}
|
||||||
|
lda #0
|
||||||
|
sta {z1}+1
|
||||||
|
//FRAGMENT vwuz1=pbuc1_derefidx_vbuxx
|
||||||
|
lda {c1},x
|
||||||
|
sta {z1}
|
||||||
|
lda #0
|
||||||
|
sta {z1}+1
|
||||||
|
//FRAGMENT vwuz1=pbuc1_derefidx_vbuyy
|
||||||
|
lda {c1},y
|
||||||
|
sta {z1}
|
||||||
|
lda #0
|
||||||
|
sta {z1}+1
|
||||||
|
//FRAGMENT vwsz1=vbsz2
|
||||||
|
lda {z2}
|
||||||
|
sta {z1}
|
||||||
|
and #$80
|
||||||
|
beq !+
|
||||||
|
lda #$ff
|
||||||
|
!:
|
||||||
|
sta {z1}+1
|
||||||
|
//FRAGMENT vwuz1_le_vwuz2_then_la1
|
||||||
|
lda {z1}+1
|
||||||
|
cmp {z2}+1
|
||||||
|
bne !+
|
||||||
|
lda {z1}
|
||||||
|
cmp {z2}
|
||||||
|
beq {la1}
|
||||||
|
!:
|
||||||
|
bcc {la1}
|
||||||
|
//FRAGMENT vwuz1=_word_pbuc1_derefidx_vbuaa
|
||||||
|
tay
|
||||||
|
lda {c1},y
|
||||||
|
sta {z1}
|
||||||
|
lda #0
|
||||||
|
sta {z1}+1
|
||||||
|
398
src/main/fragment/cache/fragment-cache-rom6502x.asm
vendored
398
src/main/fragment/cache/fragment-cache-rom6502x.asm
vendored
@ -792,401 +792,3 @@ iny
|
|||||||
tax
|
tax
|
||||||
//FRAGMENT vbuyy=vbuaa
|
//FRAGMENT vbuyy=vbuaa
|
||||||
tay
|
tay
|
||||||
//FRAGMENT vbuz1=vbuz2_band_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
and {z2}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT _deref_pbuc1=_dec__deref_pbuc1
|
|
||||||
dec {c1}
|
|
||||||
//FRAGMENT pbuz1=pbuc1_plus_vbuz2
|
|
||||||
lda {z2}
|
|
||||||
clc
|
|
||||||
adc #<{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda #>{c1}
|
|
||||||
adc #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT pvoz1=pvoz2
|
|
||||||
lda {z2}
|
|
||||||
sta {z1}
|
|
||||||
lda {z2}+1
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT vbuz1=vbuz1_plus_2
|
|
||||||
lda {z1}
|
|
||||||
clc
|
|
||||||
adc #2
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuz1=pbuz2_derefidx_vbuc1
|
|
||||||
ldy #{c1}
|
|
||||||
lda ({z2}),y
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT pbuz1=pbuz2_plus_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
clc
|
|
||||||
adc {z2}
|
|
||||||
sta {z1}
|
|
||||||
lda #0
|
|
||||||
adc {z2}+1
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT pbuz1_neq_pbuc1_then_la1
|
|
||||||
lda {z1}+1
|
|
||||||
cmp #>{c1}
|
|
||||||
bne {la1}
|
|
||||||
lda {z1}
|
|
||||||
cmp #<{c1}
|
|
||||||
bne {la1}
|
|
||||||
//FRAGMENT _deref_pbuz1=_deref_pbuz2
|
|
||||||
ldy #0
|
|
||||||
lda ({z2}),y
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT vbuz1=vbuaa_band_vbuc1
|
|
||||||
and #{c1}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuz1=vbuxx_band_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
sax {z1}
|
|
||||||
//FRAGMENT vbuz1=vbuyy_band_vbuc1
|
|
||||||
tya
|
|
||||||
and #{c1}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuaa=vbuz1_band_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
and {z1}
|
|
||||||
//FRAGMENT vbuaa=vbuaa_band_vbuc1
|
|
||||||
and #{c1}
|
|
||||||
//FRAGMENT vbuaa=vbuxx_band_vbuc1
|
|
||||||
txa
|
|
||||||
and #{c1}
|
|
||||||
//FRAGMENT vbuaa=vbuyy_band_vbuc1
|
|
||||||
tya
|
|
||||||
and #{c1}
|
|
||||||
//FRAGMENT vbuxx=vbuz1_band_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
and {z1}
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuxx=vbuaa_band_vbuc1
|
|
||||||
ldx #{c1}
|
|
||||||
axs #0
|
|
||||||
//FRAGMENT vbuyy=vbuz1_band_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
and {z1}
|
|
||||||
tay
|
|
||||||
//FRAGMENT pbuz1=pbuc1_plus_vbuaa
|
|
||||||
clc
|
|
||||||
adc #<{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda #>{c1}
|
|
||||||
adc #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT pbuz1=pbuc1_plus_vbuxx
|
|
||||||
txa
|
|
||||||
clc
|
|
||||||
adc #<{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda #>{c1}
|
|
||||||
adc #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT pbuz1=pbuc1_plus_vbuyy
|
|
||||||
tya
|
|
||||||
clc
|
|
||||||
adc #<{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda #>{c1}
|
|
||||||
adc #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT vbuxx=vbuxx_plus_2
|
|
||||||
inx
|
|
||||||
inx
|
|
||||||
//FRAGMENT vbuaa=pbuz1_derefidx_vbuc1
|
|
||||||
ldy #{c1}
|
|
||||||
lda ({z1}),y
|
|
||||||
//FRAGMENT vbuxx=pbuz1_derefidx_vbuc1
|
|
||||||
ldy #{c1}
|
|
||||||
lda ({z1}),y
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuyy=pbuz1_derefidx_vbuc1
|
|
||||||
ldy #{c1}
|
|
||||||
lda ({z1}),y
|
|
||||||
tay
|
|
||||||
//FRAGMENT pbuz1=pbuz1_plus_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
clc
|
|
||||||
adc {z1}
|
|
||||||
sta {z1}
|
|
||||||
bcc !+
|
|
||||||
inc {z1}+1
|
|
||||||
!:
|
|
||||||
//FRAGMENT vbuz1=_dec_vbuz1
|
|
||||||
dec {z1}
|
|
||||||
//FRAGMENT pbuz1=pbuz2
|
|
||||||
lda {z2}
|
|
||||||
sta {z1}
|
|
||||||
lda {z2}+1
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuz2
|
|
||||||
ldy {z2}
|
|
||||||
lda {c1},y
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT pbuz1=_inc_pbuz2
|
|
||||||
clc
|
|
||||||
lda {z2}
|
|
||||||
adc #1
|
|
||||||
sta {z1}
|
|
||||||
lda {z2}+1
|
|
||||||
adc #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT _deref_pbuz1=vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2
|
|
||||||
ldy {z2}
|
|
||||||
lda {c1},y
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuz1_ge_vbuz2_then_la1
|
|
||||||
lda {z1}
|
|
||||||
cmp {z2}
|
|
||||||
bcs {la1}
|
|
||||||
//FRAGMENT vbuz1=vbuz1_minus_vbuz2
|
|
||||||
lda {z1}
|
|
||||||
sec
|
|
||||||
sbc {z2}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vwuz1=_word_vbuz2
|
|
||||||
lda {z2}
|
|
||||||
sta {z1}
|
|
||||||
lda #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT vwuz1=vwuz2_rol_5
|
|
||||||
lda {z2}
|
|
||||||
asl
|
|
||||||
sta {z1}
|
|
||||||
lda {z2}+1
|
|
||||||
rol
|
|
||||||
sta {z1}+1
|
|
||||||
asl {z1}
|
|
||||||
rol {z1}+1
|
|
||||||
asl {z1}
|
|
||||||
rol {z1}+1
|
|
||||||
asl {z1}
|
|
||||||
rol {z1}+1
|
|
||||||
asl {z1}
|
|
||||||
rol {z1}+1
|
|
||||||
//FRAGMENT pbuz1=pbuc1_plus_vwuz2
|
|
||||||
lda {z2}
|
|
||||||
clc
|
|
||||||
adc #<{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda {z2}+1
|
|
||||||
adc #>{c1}
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT pbuz1=pbuz2_plus_vbuz3
|
|
||||||
lda {z3}
|
|
||||||
clc
|
|
||||||
adc {z2}
|
|
||||||
sta {z1}
|
|
||||||
lda #0
|
|
||||||
adc {z2}+1
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT pbuz1=pbuz1_minus_vbuc1
|
|
||||||
sec
|
|
||||||
lda {z1}
|
|
||||||
sbc #{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda {z1}+1
|
|
||||||
sbc #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT vbuz1=_deref_pbuc1
|
|
||||||
lda {c1}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT _deref_pbuz1=vbuz2
|
|
||||||
lda {z2}
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT vbuxx=vbuxx_band_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
axs #0
|
|
||||||
//FRAGMENT vbuyy=vbuxx_band_vbuc1
|
|
||||||
txa
|
|
||||||
and #{c1}
|
|
||||||
tay
|
|
||||||
//FRAGMENT vbuxx=vbuyy_band_vbuc1
|
|
||||||
ldx #{c1}
|
|
||||||
tya
|
|
||||||
axs #0
|
|
||||||
//FRAGMENT vbuyy=vbuyy_band_vbuc1
|
|
||||||
tya
|
|
||||||
and #{c1}
|
|
||||||
tay
|
|
||||||
//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuaa
|
|
||||||
tay
|
|
||||||
lda {c1},y
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuxx
|
|
||||||
lda {c1},x
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuyy
|
|
||||||
lda {c1},y
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT vbuaa=pbuc1_derefidx_vbuz1
|
|
||||||
ldy {z1}
|
|
||||||
lda {c1},y
|
|
||||||
//FRAGMENT vbuxx=pbuc1_derefidx_vbuz1
|
|
||||||
ldy {z1}
|
|
||||||
ldx {c1},y
|
|
||||||
//FRAGMENT vbuyy=pbuc1_derefidx_vbuz1
|
|
||||||
ldx {z1}
|
|
||||||
ldy {c1},x
|
|
||||||
//FRAGMENT vbuz1=pbuc1_derefidx_vbuaa
|
|
||||||
tay
|
|
||||||
lda {c1},y
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuaa=pbuc1_derefidx_vbuaa
|
|
||||||
tay
|
|
||||||
lda {c1},y
|
|
||||||
//FRAGMENT vbuxx=pbuc1_derefidx_vbuaa
|
|
||||||
tay
|
|
||||||
ldx {c1},y
|
|
||||||
//FRAGMENT vbuyy=pbuc1_derefidx_vbuaa
|
|
||||||
tax
|
|
||||||
ldy {c1},x
|
|
||||||
//FRAGMENT vbuz1=pbuc1_derefidx_vbuxx
|
|
||||||
lda {c1},x
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT 0_neq_vbuaa_then_la1
|
|
||||||
cmp #0
|
|
||||||
bne {la1}
|
|
||||||
//FRAGMENT vbuaa_ge_vbuz1_then_la1
|
|
||||||
cmp {z1}
|
|
||||||
bcs {la1}
|
|
||||||
//FRAGMENT vbuxx=vbuxx_minus_vbuz1
|
|
||||||
txa
|
|
||||||
sec
|
|
||||||
sbc {z1}
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuz1=vbuz1_minus_vbuaa
|
|
||||||
eor #$ff
|
|
||||||
sec
|
|
||||||
adc {z1}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuxx=vbuxx_minus_vbuaa
|
|
||||||
sta $ff
|
|
||||||
txa
|
|
||||||
sec
|
|
||||||
sbc $ff
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuz1=vbuz1_minus_vbuxx
|
|
||||||
txa
|
|
||||||
eor #$ff
|
|
||||||
sec
|
|
||||||
adc {z1}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuxx=vbuxx_minus_vbuxx
|
|
||||||
lda #0
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuz1=vbuz1_minus_vbuyy
|
|
||||||
tya
|
|
||||||
eor #$ff
|
|
||||||
sec
|
|
||||||
adc {z1}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuxx=vbuxx_minus_vbuyy
|
|
||||||
txa
|
|
||||||
sty $ff
|
|
||||||
sec
|
|
||||||
sbc $ff
|
|
||||||
tax
|
|
||||||
//FRAGMENT vwuz1=_word_vbuaa
|
|
||||||
sta {z1}
|
|
||||||
lda #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT vwuz1=_word_vbuxx
|
|
||||||
txa
|
|
||||||
sta {z1}
|
|
||||||
lda #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT vwuz1=_word_vbuyy
|
|
||||||
tya
|
|
||||||
sta {z1}
|
|
||||||
lda #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT vbuaa_eq_vbuc1_then_la1
|
|
||||||
cmp #{c1}
|
|
||||||
beq {la1}
|
|
||||||
//FRAGMENT vbuaa=_deref_pbuc1
|
|
||||||
lda {c1}
|
|
||||||
//FRAGMENT vbuxx=_deref_pbuc1
|
|
||||||
ldx {c1}
|
|
||||||
//FRAGMENT _deref_pbuz1=vbuaa
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT _deref_pbuz1=vbuxx
|
|
||||||
txa
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT _deref_pbuz1=vbuyy
|
|
||||||
tya
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT vbuxx_ge_vbuz1_then_la1
|
|
||||||
cpx {z1}
|
|
||||||
bcs {la1}
|
|
||||||
//FRAGMENT vbuxx_eq_vbuc1_then_la1
|
|
||||||
cpx #{c1}
|
|
||||||
beq {la1}
|
|
||||||
//FRAGMENT vbuyy=_deref_pbuc1
|
|
||||||
ldy {c1}
|
|
||||||
//FRAGMENT vbuz1_ge_vbuxx_then_la1
|
|
||||||
lda {z1}
|
|
||||||
stx $ff
|
|
||||||
cmp $ff
|
|
||||||
bcs {la1}
|
|
||||||
//FRAGMENT vbuz1_ge_vbuyy_then_la1
|
|
||||||
lda {z1}
|
|
||||||
sty $ff
|
|
||||||
cmp $ff
|
|
||||||
bcs {la1}
|
|
||||||
//FRAGMENT vbuxx_ge_vbuyy_then_la1
|
|
||||||
sty $ff
|
|
||||||
cpx $ff
|
|
||||||
bcs {la1}
|
|
||||||
//FRAGMENT vbuaa=vbuxx
|
|
||||||
txa
|
|
||||||
//FRAGMENT vbuyy=vbuxx
|
|
||||||
txa
|
|
||||||
tay
|
|
||||||
//FRAGMENT vbuyy_eq_vbuc1_then_la1
|
|
||||||
cpy #{c1}
|
|
||||||
beq {la1}
|
|
||||||
//FRAGMENT vbuaa=vbuyy
|
|
||||||
tya
|
|
||||||
//FRAGMENT vbuxx=vbuyy
|
|
||||||
tya
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuyy_ge_vbuz1_then_la1
|
|
||||||
cpy {z1}
|
|
||||||
bcs {la1}
|
|
||||||
//FRAGMENT vwuz1=vwuz1_rol_5
|
|
||||||
asl {z1}
|
|
||||||
rol {z1}+1
|
|
||||||
asl {z1}
|
|
||||||
rol {z1}+1
|
|
||||||
asl {z1}
|
|
||||||
rol {z1}+1
|
|
||||||
asl {z1}
|
|
||||||
rol {z1}+1
|
|
||||||
asl {z1}
|
|
||||||
rol {z1}+1
|
|
||||||
//FRAGMENT pbuz1=pbuc1_plus_vwuz1
|
|
||||||
lda {z1}
|
|
||||||
clc
|
|
||||||
adc #<{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda {z1}+1
|
|
||||||
adc #>{c1}
|
|
||||||
sta {z1}+1
|
|
||||||
|
3297
src/main/fragment/cache/fragment-cache-wdc65c02.asm
vendored
3297
src/main/fragment/cache/fragment-cache-wdc65c02.asm
vendored
File diff suppressed because it is too large
Load Diff
@ -1,8 +1,8 @@
|
|||||||
// Test that division at runtime gives a proper error
|
// Test that multiplication at runtime gives a proper error
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
byte* screen = (char*)$400;
|
byte* screen = (char*)$400;
|
||||||
for (byte i: 2..5) {
|
for (byte i: 2..5) {
|
||||||
screen[i] = 5*i;
|
screen[i] = i*i;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -109,7 +109,7 @@ Simplifying constant integer cast $b
|
|||||||
Successful SSA optimization PassNCastSimplification
|
Successful SSA optimization PassNCastSimplification
|
||||||
Finalized unsigned number type (char) $b
|
Finalized unsigned number type (char) $b
|
||||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||||
Rewriting multiplication to remove identity multiply/divide [1] main::$0 = main::i#2 / 1
|
Rewriting multiplication to remove identity divide [1] main::$0 = main::i#2 / 1
|
||||||
Rewriting division to use shift [3] main::$1 = main::i#2 / 2
|
Rewriting division to use shift [3] main::$1 = main::i#2 / 2
|
||||||
Rewriting division to use shift [5] main::$2 = main::i#2 / 4
|
Rewriting division to use shift [5] main::$2 = main::i#2 / 4
|
||||||
Rewriting division to use shift [7] main::$3 = main::i#2 / 8
|
Rewriting division to use shift [7] main::$3 = main::i#2 / 8
|
||||||
|
@ -109,7 +109,7 @@ Simplifying constant integer cast $b
|
|||||||
Successful SSA optimization PassNCastSimplification
|
Successful SSA optimization PassNCastSimplification
|
||||||
Finalized unsigned number type (char) $b
|
Finalized unsigned number type (char) $b
|
||||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||||
Rewriting multiplication to remove identity multiply/divide [1] main::$0 = main::i#2 * 1
|
Rewriting multiplication to remove identity multiply [1] main::$0 = main::i#2 * 1
|
||||||
Rewriting multiplication to use shift [3] main::$1 = main::i#2 * 2
|
Rewriting multiplication to use shift [3] main::$1 = main::i#2 * 2
|
||||||
Rewriting multiplication to use shift [5] main::$2 = main::i#2 * 4
|
Rewriting multiplication to use shift [5] main::$2 = main::i#2 * 4
|
||||||
Rewriting multiplication to use shift [7] main::$3 = main::i#2 * 8
|
Rewriting multiplication to use shift [7] main::$3 = main::i#2 * 8
|
||||||
|
@ -195,7 +195,7 @@ Simplifying constant integer cast $12
|
|||||||
Successful SSA optimization PassNCastSimplification
|
Successful SSA optimization PassNCastSimplification
|
||||||
Finalized unsigned number type (char) $12
|
Finalized unsigned number type (char) $12
|
||||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||||
Rewriting multiplication to remove identity multiply/divide [1] main::$0 = main::i#2 * 1
|
Rewriting multiplication to remove identity multiply [1] main::$0 = main::i#2 * 1
|
||||||
Rewriting multiplication to use shift [3] main::$1 = main::i#2 * 2
|
Rewriting multiplication to use shift [3] main::$1 = main::i#2 * 2
|
||||||
Rewriting multiplication to use shift and addition[5] main::$2 = main::i#2 * 3
|
Rewriting multiplication to use shift and addition[5] main::$2 = main::i#2 * 3
|
||||||
Rewriting multiplication to use shift [7] main::$3 = main::i#2 * 4
|
Rewriting multiplication to use shift [7] main::$3 = main::i#2 * 4
|
||||||
|
Loading…
Reference in New Issue
Block a user