} 1|| [ f >>temp ] when
] map ;
+: value-number-bb ( insns -- insns' )
+ 0 test-bb
+ cfg new 0 get >>entry dup cfg set
+ value-numbering
+ entry>> instructions>> ;
+
! Folding constants together
[
- {
+ V{
T{ ##load-reference f 0 0.0 }
T{ ##load-reference f 1 -0.0 }
}
] [
- {
+ V{
T{ ##load-reference f 0 0.0 }
T{ ##load-reference f 1 -0.0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-reference f 0 0.0 }
T{ ##copy f 1 0 any-rep }
}
] [
- {
+ V{
T{ ##load-reference f 0 0.0 }
T{ ##load-reference f 1 0.0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-reference f 0 t }
T{ ##copy f 1 0 any-rep }
}
] [
- {
+ V{
T{ ##load-reference f 0 t }
T{ ##load-reference f 1 t }
- } value-numbering-step
+ } value-number-bb
] unit-test
! ##load-reference/##replace fusion
cpu x86? [
[
- {
+ V{
T{ ##load-integer f 0 10 }
T{ ##replace-imm f 10 D 0 }
}
] [
- {
+ V{
T{ ##load-integer f 0 10 }
T{ ##replace f 0 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-reference f 0 f }
T{ ##replace-imm f f D 0 }
}
] [
- {
+ V{
T{ ##load-reference f 0 f }
T{ ##replace f 0 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
] when
cpu x86.32? [
[
- {
+ V{
T{ ##load-reference f 0 + }
T{ ##replace-imm f + D 0 }
}
] [
- {
+ V{
T{ ##load-reference f 0 + }
T{ ##replace f 0 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
] when
cpu x86.64? [
[
- {
+ V{
T{ ##load-integer f 0 10,000,000,000 }
T{ ##replace f 0 D 0 }
}
] [
- {
+ V{
T{ ##load-integer f 0 10,000,000,000 }
T{ ##replace f 0 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
! Boundary case
[
- {
+ V{
T{ ##load-integer f 0 0x7fffffff }
T{ ##replace f 0 D 0 }
}
] [
- {
+ V{
T{ ##load-integer f 0 0x7fffffff }
T{ ##replace f 0 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
] when
! Double compare elimination
[
- {
+ V{
T{ ##peek f 1 D 1 }
T{ ##peek f 2 D 2 }
T{ ##compare f 4 2 1 cc= }
T{ ##replace f 6 D 0 }
}
] [
- {
+ V{
T{ ##peek f 1 D 1 }
T{ ##peek f 2 D 2 }
T{ ##compare f 4 2 1 cc= }
T{ ##compare-imm f 6 4 f cc/= }
T{ ##replace f 6 D 0 }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##peek f 1 D 1 }
T{ ##compare-imm f 2 1 16 cc= }
T{ ##copy f 3 2 any-rep }
T{ ##replace f 3 D 0 }
}
] [
- {
+ V{
T{ ##peek f 1 D 1 }
T{ ##compare-imm f 2 1 16 cc= }
T{ ##compare-imm f 3 2 f cc/= }
T{ ##replace f 3 D 0 }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##peek f 1 D 1 }
T{ ##peek f 2 D 2 }
T{ ##compare-integer f 4 2 1 cc> }
T{ ##replace f 6 D 0 }
}
] [
- {
+ V{
T{ ##peek f 1 D 1 }
T{ ##peek f 2 D 2 }
T{ ##compare-integer f 4 2 1 cc> }
T{ ##compare-imm f 6 4 f cc/= }
T{ ##replace f 6 D 0 }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##peek f 1 D 1 }
T{ ##peek f 2 D 2 }
T{ ##compare-integer f 4 2 1 cc<= }
T{ ##replace f 6 D 0 }
}
] [
- {
+ V{
T{ ##peek f 1 D 1 }
T{ ##peek f 2 D 2 }
T{ ##compare-integer f 4 2 1 cc<= }
T{ ##compare-imm f 6 4 f cc= }
T{ ##replace f 6 D 0 }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##peek f 1 D 1 }
T{ ##compare-integer-imm f 2 1 100 cc<= }
T{ ##compare-integer-imm f 3 1 100 cc/<= }
T{ ##replace f 3 D 0 }
}
] [
- {
+ V{
T{ ##peek f 1 D 1 }
T{ ##compare-integer-imm f 2 1 100 cc<= }
T{ ##compare-imm f 3 2 f cc= }
T{ ##replace f 3 D 0 }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##peek f 8 D 0 }
T{ ##peek f 9 D -1 }
T{ ##compare-float-unordered f 12 8 9 cc< }
T{ ##replace f 14 D 0 }
}
] [
- {
+ V{
T{ ##peek f 8 D 0 }
T{ ##peek f 9 D -1 }
T{ ##compare-float-unordered f 12 8 9 cc< }
T{ ##compare-imm f 14 12 f cc= }
T{ ##replace f 14 D 0 }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##peek f 29 D -1 }
T{ ##peek f 30 D -2 }
T{ ##compare f 33 29 30 cc= }
T{ ##compare-branch f 29 30 cc= }
}
] [
- {
+ V{
T{ ##peek f 29 D -1 }
T{ ##peek f 30 D -2 }
T{ ##compare f 33 29 30 cc= }
T{ ##compare-imm-branch f 33 f cc/= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##peek f 29 D -1 }
T{ ##peek f 30 D -2 }
T{ ##compare-integer f 33 29 30 cc<= }
T{ ##compare-integer-branch f 29 30 cc<= }
}
] [
- {
+ V{
T{ ##peek f 29 D -1 }
T{ ##peek f 30 D -2 }
T{ ##compare-integer f 33 29 30 cc<= }
T{ ##compare-imm-branch f 33 f cc/= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##peek f 29 D -1 }
T{ ##peek f 30 D -2 }
T{ ##test f 33 29 30 cc= }
T{ ##test-branch f 29 30 cc= }
}
] [
- {
+ V{
T{ ##peek f 29 D -1 }
T{ ##peek f 30 D -2 }
T{ ##test f 33 29 30 cc= }
T{ ##compare-imm-branch f 33 f cc/= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##peek f 29 D -1 }
T{ ##test-imm f 33 29 30 cc= }
T{ ##test-imm-branch f 29 30 cc= }
}
] [
- {
+ V{
T{ ##peek f 29 D -1 }
T{ ##test-imm f 33 29 30 cc= }
T{ ##compare-imm-branch f 33 f cc/= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##peek f 1 D -1 }
T{ ##test-vector f 2 1 f float-4-rep vcc-any }
T{ ##test-vector-branch f 1 f float-4-rep vcc-any }
}
] [
- {
+ V{
T{ ##peek f 1 D -1 }
T{ ##test-vector f 2 1 f float-4-rep vcc-any }
T{ ##compare-imm-branch f 2 f cc/= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
cpu x86.32? [
[
- {
+ V{
T{ ##peek f 1 D 0 }
T{ ##compare-imm f 2 1 + cc= }
T{ ##compare-imm-branch f 1 + cc= }
}
] [
- {
+ V{
T{ ##peek f 1 D 0 }
T{ ##compare-imm f 2 1 + cc= }
T{ ##compare-imm-branch f 2 f cc/= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
] when
! Immediate operand fusion
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##add-imm f 2 0 100 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##add f 2 0 1 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##add-imm f 2 0 100 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##add f 2 1 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##add-imm f 2 0 -100 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##sub f 2 0 1 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##sub f 1 0 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##mul-imm f 2 0 100 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##mul f 2 0 1 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##mul-imm f 2 0 100 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##mul f 2 1 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 1 D 0 }
T{ ##shl-imm f 2 1 3 }
}
] [
- {
+ V{
T{ ##peek f 1 D 0 }
T{ ##mul-imm f 2 1 8 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 -1 }
T{ ##neg f 2 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 -1 }
T{ ##mul f 2 0 1 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 -1 }
T{ ##neg f 2 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 -1 }
T{ ##mul f 2 1 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 0 }
T{ ##neg f 2 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 0 }
T{ ##sub f 2 1 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 0 }
T{ ##neg f 2 0 }
T{ ##copy f 3 0 any-rep }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 0 }
T{ ##sub f 2 1 0 }
T{ ##sub f 3 1 2 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##neg f 1 0 }
T{ ##copy f 2 0 any-rep }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##neg f 1 0 }
T{ ##neg f 2 1 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##not f 1 0 }
T{ ##copy f 2 0 any-rep }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##not f 1 0 }
T{ ##not f 2 1 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##and-imm f 2 0 100 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##and f 2 0 1 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##and-imm f 2 0 100 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##and f 2 1 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##or-imm f 2 0 100 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##or f 2 0 1 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##or-imm f 2 0 100 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##or f 2 1 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##xor-imm f 2 0 100 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##xor f 2 0 1 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##xor-imm f 2 0 100 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##xor f 2 1 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##compare-imm f 2 0 100 cc= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##compare f 2 0 1 cc= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##compare-integer-imm f 2 0 100 cc<= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##compare-integer f 2 0 1 cc<= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
cpu x86.32? [
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-reference f 1 + }
T{ ##compare-imm f 2 0 + cc= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-reference f 1 + }
T{ ##compare f 2 0 1 cc= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-reference f 1 + }
T{ ##compare-imm-branch f 0 + cc= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-reference f 1 + }
T{ ##compare-branch f 0 1 cc= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
] when
cpu x86.32? [
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-reference f 1 3.5 }
T{ ##compare f 2 0 1 cc= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-reference f 1 3.5 }
T{ ##compare f 2 0 1 cc= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-reference f 1 3.5 }
T{ ##compare-branch f 0 1 cc= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-reference f 1 3.5 }
T{ ##compare-branch f 0 1 cc= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
] unless
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##compare-integer-imm f 2 0 100 cc>= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##compare-integer f 2 1 0 cc<= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##compare-integer-imm-branch f 0 100 cc<= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##compare-integer-branch f 0 1 cc<= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##compare-integer-imm-branch f 0 100 cc>= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##compare-integer-branch f 1 0 cc<= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
! Compare folding
[
- {
+ V{
T{ ##load-integer f 1 100 }
T{ ##load-integer f 2 200 }
T{ ##load-reference f 3 t }
}
] [
- {
+ V{
T{ ##load-integer f 1 100 }
T{ ##load-integer f 2 200 }
T{ ##compare-integer f 3 1 2 cc<= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##load-integer f 1 100 }
T{ ##load-integer f 2 200 }
T{ ##load-reference f 3 f }
}
] [
- {
+ V{
T{ ##load-integer f 1 100 }
T{ ##load-integer f 2 200 }
T{ ##compare-integer f 3 1 2 cc= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##load-integer f 1 100 }
T{ ##load-reference f 2 f }
}
] [
- {
+ V{
T{ ##load-integer f 1 100 }
T{ ##compare-integer-imm f 2 1 123 cc= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##load-integer f 1 10 }
T{ ##load-integer f 2 20 }
T{ ##load-reference f 3 f }
}
] [
- {
+ V{
T{ ##load-integer f 1 10 }
T{ ##load-integer f 2 20 }
T{ ##compare-integer f 3 1 2 cc= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-integer f 1 1 }
T{ ##load-integer f 2 2 }
T{ ##load-reference f 3 t }
}
] [
- {
+ V{
T{ ##load-integer f 1 1 }
T{ ##load-integer f 2 2 }
T{ ##compare-integer f 3 1 2 cc/= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-integer f 1 1 }
T{ ##load-integer f 2 2 }
T{ ##load-reference f 3 t }
}
] [
- {
+ V{
T{ ##load-integer f 1 1 }
T{ ##load-integer f 2 2 }
T{ ##compare-integer f 3 1 2 cc< }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-integer f 1 10 }
T{ ##load-integer f 2 20 }
T{ ##load-reference f 3 f }
}
] [
- {
+ V{
T{ ##load-integer f 1 10 }
T{ ##load-integer f 2 20 }
T{ ##compare-integer f 3 2 1 cc< }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-reference f 1 f }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##compare-integer f 1 0 0 cc< }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##copy f 1 0 any-rep }
T{ ##load-reference f 2 f }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##copy f 1 0 any-rep }
T{ ##compare-integer f 2 0 1 cc< }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-reference f 1 t }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##compare-integer f 1 0 0 cc<= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-reference f 1 f }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##compare-integer f 1 0 0 cc> }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-reference f 1 t }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##compare-integer f 1 0 0 cc>= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-reference f 1 f }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##compare-integer f 1 0 0 cc/= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-reference f 1 t }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##compare-integer f 1 0 0 cc= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-integer f 1 10 }
T{ ##load-reference f 2 t }
}
] [
- {
+ V{
T{ ##load-integer f 1 10 }
T{ ##compare-imm f 2 1 10 cc= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-integer f 1 10 }
T{ ##load-reference f 2 f }
}
] [
- {
+ V{
T{ ##load-integer f 1 10 }
T{ ##compare-imm f 2 1 20 cc= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-integer f 1 10 }
T{ ##load-reference f 2 t }
}
] [
- {
+ V{
T{ ##load-integer f 1 10 }
T{ ##compare-imm f 2 1 100 cc/= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-integer f 1 10 }
T{ ##load-reference f 2 f }
}
] [
- {
+ V{
T{ ##load-integer f 1 10 }
T{ ##compare-imm f 2 1 10 cc/= }
- } value-numbering-step
+ } value-number-bb
] unit-test
cpu x86.32? [
[
- {
+ V{
T{ ##load-reference f 1 + }
T{ ##load-reference f 2 f }
}
] [
- {
+ V{
T{ ##load-reference f 1 + }
T{ ##compare-imm f 2 1 + cc/= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-reference f 1 + }
T{ ##load-reference f 2 t }
}
] [
- {
+ V{
T{ ##load-reference f 1 + }
T{ ##compare-imm f 2 1 * cc/= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-reference f 1 + }
T{ ##load-reference f 2 t }
}
] [
- {
+ V{
T{ ##load-reference f 1 + }
T{ ##compare-imm f 2 1 + cc= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-reference f 1 + }
T{ ##load-reference f 2 f }
}
] [
- {
+ V{
T{ ##load-reference f 1 + }
T{ ##compare-imm f 2 1 * cc= }
- } value-numbering-step
+ } value-number-bb
] unit-test
] when
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-reference f 1 t }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##compare f 1 0 0 cc= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-reference f 1 f }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##compare f 1 0 0 cc/= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-integer f 1 12 }
T{ ##load-reference f 3 t }
}
] [
- {
+ V{
T{ ##load-integer f 1 12 }
T{ ##test-imm f 3 1 13 cc/= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-integer f 1 15 }
T{ ##load-reference f 3 f }
}
] [
- {
+ V{
T{ ##load-integer f 1 15 }
T{ ##test-imm f 3 1 16 cc/= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-integer f 1 12 }
T{ ##load-reference f 3 f }
}
] [
- {
+ V{
T{ ##load-integer f 1 12 }
T{ ##test-imm f 3 1 13 cc= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-integer f 1 15 }
T{ ##load-reference f 3 t }
}
] [
- {
+ V{
T{ ##load-integer f 1 15 }
T{ ##test-imm f 3 1 16 cc= }
- } value-numbering-step
+ } value-number-bb
] unit-test
! Rewriting a ##test of an ##and into a ##test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##peek f 1 D 1 }
T{ ##and f 2 0 1 }
T{ ##test f 3 0 1 cc= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##peek f 1 D 1 }
T{ ##and f 2 0 1 }
T{ ##test f 3 2 2 cc= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##and-imm f 2 0 12 }
T{ ##test-imm f 3 0 12 cc= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##and-imm f 2 0 12 }
T{ ##test f 3 2 2 cc= }
- } value-numbering-step
+ } value-number-bb
] unit-test
! Rewriting ##test into ##test-imm
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 10 }
T{ ##test-imm f 2 0 10 cc= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 10 }
T{ ##test f 2 0 1 cc= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 10 }
T{ ##test-imm f 2 0 10 cc= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 10 }
T{ ##test f 2 1 0 cc= }
- } value-numbering-step trim-temps
+ } value-number-bb trim-temps
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 10 }
T{ ##test-imm-branch f 0 10 cc= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 10 }
T{ ##test-branch f 0 1 cc= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 10 }
T{ ##test-imm-branch f 0 10 cc= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 10 }
T{ ##test-branch f 1 0 cc= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 10 }
T{ ##test-imm-branch f 0 10 cc= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 10 }
T{ ##test-branch f 1 0 cc= }
- } value-numbering-step
+ } value-number-bb
] unit-test
! Make sure the immediate fits
cpu x86.64? [
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100000000000 }
T{ ##test f 2 1 0 cc= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100000000000 }
T{ ##test f 2 1 0 cc= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100000000000 }
T{ ##test-branch f 1 0 cc= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100000000000 }
T{ ##test-branch f 1 0 cc= }
- } value-numbering-step
+ } value-number-bb
] unit-test
] when
! Rewriting ##compare into ##test
cpu x86? [
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##test f 1 0 0 cc= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##compare-integer-imm f 1 0 0 cc= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##test f 1 0 0 cc/= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##compare-integer-imm f 1 0 0 cc/= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##compare-integer-imm f 1 0 0 cc<= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##compare-integer-imm f 1 0 0 cc<= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##test-branch f 0 0 cc= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##compare-integer-imm-branch f 0 0 cc= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##test-branch f 0 0 cc/= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##compare-integer-imm-branch f 0 0 cc/= }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##compare-integer-imm-branch f 0 0 cc<= }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##compare-integer-imm-branch f 0 0 cc<= }
- } value-numbering-step
+ } value-number-bb
] unit-test
] when
! Reassociation
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##add-imm f 2 0 100 }
T{ ##add-imm f 4 0 150 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##add f 2 0 1 }
T{ ##load-integer f 3 50 }
T{ ##add f 4 2 3 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##add-imm f 2 0 100 }
T{ ##add-imm f 4 0 150 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##add f 2 1 0 }
T{ ##load-integer f 3 50 }
T{ ##add f 4 3 2 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##add-imm f 2 0 100 }
T{ ##add-imm f 4 0 50 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##add f 2 0 1 }
T{ ##load-integer f 3 50 }
T{ ##sub f 4 2 3 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##add-imm f 2 0 -100 }
T{ ##add-imm f 4 0 -150 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##sub f 2 0 1 }
T{ ##load-integer f 3 50 }
T{ ##sub f 4 2 3 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##mul-imm f 2 0 100 }
T{ ##mul-imm f 4 0 5000 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##mul f 2 0 1 }
T{ ##load-integer f 3 50 }
T{ ##mul f 4 2 3 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##mul-imm f 2 0 100 }
T{ ##mul-imm f 4 0 5000 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##mul f 2 1 0 }
T{ ##load-integer f 3 50 }
T{ ##mul f 4 3 2 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##and-imm f 2 0 100 }
T{ ##and-imm f 4 0 32 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##and f 2 0 1 }
T{ ##load-integer f 3 50 }
T{ ##and f 4 2 3 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##and-imm f 2 0 100 }
T{ ##and-imm f 4 0 32 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##and f 2 1 0 }
T{ ##load-integer f 3 50 }
T{ ##and f 4 3 2 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##or-imm f 2 0 100 }
T{ ##or-imm f 4 0 118 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##or f 2 0 1 }
T{ ##load-integer f 3 50 }
T{ ##or f 4 2 3 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##or-imm f 2 0 100 }
T{ ##or-imm f 4 0 118 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##or f 2 1 0 }
T{ ##load-integer f 3 50 }
T{ ##or f 4 3 2 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##xor-imm f 2 0 100 }
T{ ##xor-imm f 4 0 86 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##xor f 2 0 1 }
T{ ##load-integer f 3 50 }
T{ ##xor f 4 2 3 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##xor-imm f 2 0 100 }
T{ ##xor-imm f 4 0 86 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 100 }
T{ ##xor f 2 1 0 }
T{ ##load-integer f 3 50 }
T{ ##xor f 4 3 2 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##shl-imm f 1 0 10 }
T{ ##shl-imm f 2 0 21 }
T{ ##replace f 2 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##shl-imm f 1 0 10 }
T{ ##shl-imm f 2 1 11 }
T{ ##replace f 2 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##shl-imm f 1 0 10 }
T{ ##shl-imm f 2 1 $[ cell-bits 1 - ] }
T{ ##replace f 2 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##shl-imm f 1 0 10 }
T{ ##shl-imm f 2 1 $[ cell-bits 1 - ] }
T{ ##replace f 2 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##sar-imm f 1 0 10 }
T{ ##sar-imm f 2 0 21 }
T{ ##replace f 2 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##sar-imm f 1 0 10 }
T{ ##sar-imm f 2 1 11 }
T{ ##replace f 2 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##sar-imm f 1 0 10 }
T{ ##sar-imm f 2 1 $[ cell-bits 1 - ] }
T{ ##replace f 2 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##sar-imm f 1 0 10 }
T{ ##sar-imm f 2 1 $[ cell-bits 1 - ] }
T{ ##replace f 2 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##shr-imm f 1 0 10 }
T{ ##shr-imm f 2 0 21 }
T{ ##replace f 2 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##shr-imm f 1 0 10 }
T{ ##shr-imm f 2 1 11 }
T{ ##replace f 2 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##shr-imm f 1 0 10 }
T{ ##shr-imm f 2 1 $[ cell-bits 1 - ] }
T{ ##replace f 2 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##shr-imm f 1 0 10 }
T{ ##shr-imm f 2 1 $[ cell-bits 1 - ] }
T{ ##replace f 2 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##shr-imm f 1 0 10 }
T{ ##sar-imm f 2 1 11 }
T{ ##replace f 2 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##shr-imm f 1 0 10 }
T{ ##sar-imm f 2 1 11 }
T{ ##replace f 2 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
! Distributive law
2 \ vreg-counter set-global
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##add-imm f 1 0 10 }
T{ ##shl-imm f 3 0 2 }
T{ ##replace f 2 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##add-imm f 1 0 10 }
T{ ##shl-imm f 2 1 2 }
T{ ##replace f 2 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##add-imm f 1 0 10 }
T{ ##mul-imm f 4 0 3 }
T{ ##replace f 2 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##add-imm f 1 0 10 }
T{ ##mul-imm f 2 1 3 }
T{ ##replace f 2 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##add-imm f 1 0 -10 }
T{ ##shl-imm f 5 0 2 }
T{ ##replace f 2 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##sub-imm f 1 0 10 }
T{ ##shl-imm f 2 1 2 }
T{ ##replace f 2 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##add-imm f 1 0 -10 }
T{ ##mul-imm f 6 0 3 }
T{ ##replace f 2 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##sub-imm f 1 0 10 }
T{ ##mul-imm f 2 1 3 }
T{ ##replace f 2 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
! Simplification
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##peek f 1 D 1 }
T{ ##copy f 3 0 any-rep }
T{ ##replace f 3 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##peek f 1 D 1 }
T{ ##add-imm f 3 0 0 }
T{ ##replace f 3 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##peek f 1 D 1 }
T{ ##copy f 3 0 any-rep }
T{ ##replace f 3 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##peek f 1 D 1 }
T{ ##or-imm f 3 0 0 }
T{ ##replace f 3 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##peek f 1 D 1 }
T{ ##copy f 3 0 any-rep }
T{ ##replace f 3 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##peek f 1 D 1 }
T{ ##xor-imm f 3 0 0 }
T{ ##replace f 3 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##and-imm f 1 0 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##copy f 1 0 any-rep }
T{ ##replace f 1 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##and-imm f 1 0 -1 }
T{ ##replace f 1 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##copy f 1 0 any-rep }
T{ ##replace f 1 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##and f 1 0 0 }
T{ ##replace f 1 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##copy f 1 0 any-rep }
T{ ##replace f 1 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##or-imm f 1 0 0 }
T{ ##replace f 1 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 -1 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##or-imm f 1 0 -1 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##copy f 1 0 any-rep }
T{ ##replace f 1 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##or f 1 0 0 }
T{ ##replace f 1 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##copy f 1 0 any-rep }
T{ ##replace f 1 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##xor-imm f 1 0 0 }
T{ ##replace f 1 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##not f 1 0 }
T{ ##replace f 1 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##xor-imm f 1 0 -1 }
T{ ##replace f 1 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##xor f 1 0 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##copy f 2 0 any-rep }
T{ ##replace f 2 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##mul-imm f 2 0 1 }
T{ ##replace f 2 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##copy f 2 0 any-rep }
T{ ##replace f 2 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##shl-imm f 2 0 0 }
T{ ##replace f 2 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##copy f 2 0 any-rep }
T{ ##replace f 2 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##shr-imm f 2 0 0 }
T{ ##replace f 2 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##copy f 2 0 any-rep }
T{ ##replace f 2 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##sar-imm f 2 0 0 }
T{ ##replace f 2 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
! Constant folding
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 1 }
T{ ##load-integer f 2 3 }
T{ ##load-integer f 3 4 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 1 }
T{ ##load-integer f 2 3 }
T{ ##add f 3 1 2 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 1 }
T{ ##load-integer f 2 3 }
T{ ##load-integer f 3 -2 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 1 }
T{ ##load-integer f 2 3 }
T{ ##sub f 3 1 2 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 2 }
T{ ##load-integer f 2 3 }
T{ ##load-integer f 3 6 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 2 }
T{ ##load-integer f 2 3 }
T{ ##mul f 3 1 2 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 2 }
T{ ##load-integer f 2 1 }
T{ ##load-integer f 3 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 2 }
T{ ##load-integer f 2 1 }
T{ ##and f 3 1 2 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 2 }
T{ ##load-integer f 2 1 }
T{ ##load-integer f 3 3 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 2 }
T{ ##load-integer f 2 1 }
T{ ##or f 3 1 2 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 2 }
T{ ##load-integer f 2 3 }
T{ ##load-integer f 3 1 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 2 }
T{ ##load-integer f 2 3 }
T{ ##xor f 3 1 2 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 1 }
T{ ##load-integer f 3 8 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 1 }
T{ ##shl-imm f 3 1 3 }
- } value-numbering-step
+ } value-number-bb
] unit-test
cell 8 = [
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 -1 }
T{ ##load-integer f 3 0xffffffffffff }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 -1 }
T{ ##shr-imm f 3 1 16 }
- } value-numbering-step
+ } value-number-bb
] unit-test
] when
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 -8 }
T{ ##load-integer f 3 -4 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 -8 }
T{ ##sar-imm f 3 1 1 }
- } value-numbering-step
+ } value-number-bb
] unit-test
cell 8 = [
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 65536 }
T{ ##load-integer f 2 140737488355328 }
T{ ##add f 3 0 2 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 65536 }
T{ ##shl-imm f 2 1 31 }
T{ ##add f 3 0 2 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 2 140737488355328 }
T{ ##add f 3 0 2 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 2 140737488355328 }
T{ ##add f 3 0 2 }
- } value-numbering-step
+ } value-number-bb
] unit-test
! PPC ADDI can't hold immediates this big.
cpu ppc? [
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 2 2147483647 }
T{ ##add-imm f 3 0 2147483647 }
T{ ##add-imm f 4 3 2147483647 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 2 2147483647 }
T{ ##add f 3 0 2 }
T{ ##add f 4 3 2 }
- } value-numbering-step
+ } value-number-bb
] unit-test
] unless
] when
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 1 }
T{ ##load-integer f 2 -1 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 1 }
T{ ##neg f 2 1 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 1 }
T{ ##load-integer f 2 -2 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 1 1 }
T{ ##not f 2 1 }
- } value-numbering-step
+ } value-number-bb
] unit-test
! ##tagged>integer constant folding
[
- {
+ V{
T{ ##load-reference f 1 f }
T{ ##load-integer f 2 $[ \ f type-number ] }
T{ ##copy f 3 2 any-rep }
}
] [
- {
+ V{
T{ ##load-reference f 1 f }
T{ ##tagged>integer f 2 1 }
T{ ##and-imm f 3 2 15 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-integer f 1 100 }
T{ ##load-integer f 2 $[ 100 tag-fixnum ] }
T{ ##load-integer f 3 $[ 100 tag-fixnum 1 + ] }
}
] [
- {
+ V{
T{ ##load-integer f 1 100 }
T{ ##tagged>integer f 2 1 }
T{ ##add-imm f 3 2 1 }
- } value-numbering-step
+ } value-number-bb
] unit-test
! Alien boxing and unboxing
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##box-alien f 1 0 }
T{ ##copy f 2 0 any-rep }
T{ ##replace f 2 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##box-alien f 1 0 }
T{ ##unbox-alien f 2 1 }
T{ ##replace f 2 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##box-alien f 1 0 }
T{ ##copy f 2 0 any-rep }
T{ ##replace f 2 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##box-alien f 1 0 }
T{ ##unbox-any-c-ptr f 2 1 }
T{ ##replace f 2 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 2 0 }
T{ ##copy f 1 0 any-rep }
T{ ##replace f 1 D 0 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 2 0 }
T{ ##box-displaced-alien f 1 2 0 c-ptr }
T{ ##replace f 1 D 0 }
- } value-numbering-step
+ } value-number-bb
] unit-test
3 vreg-counter set-global
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 2 16 }
T{ ##box-displaced-alien f 1 2 0 c-ptr }
T{ ##add-imm f 3 4 16 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 2 16 }
T{ ##box-displaced-alien f 1 2 0 c-ptr }
T{ ##unbox-any-c-ptr f 3 1 }
- } value-numbering-step
+ } value-number-bb
] unit-test
4 vreg-counter set-global
[
- {
+ V{
T{ ##box-alien f 0 1 }
T{ ##load-integer f 2 16 }
T{ ##box-displaced-alien f 3 2 0 c-ptr }
T{ ##add-imm f 4 5 16 }
}
] [
- {
+ V{
T{ ##box-alien f 0 1 }
T{ ##load-integer f 2 16 }
T{ ##box-displaced-alien f 3 2 0 c-ptr }
T{ ##unbox-any-c-ptr f 4 3 }
- } value-numbering-step
+ } value-number-bb
] unit-test
3 vreg-counter set-global
[
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 2 0 }
T{ ##copy f 3 0 any-rep }
T{ ##replace f 3 D 1 }
}
] [
- {
+ V{
T{ ##peek f 0 D 0 }
T{ ##load-integer f 2 0 }
T{ ##box-displaced-alien f 3 2 0 c-ptr }
T{ ##replace f 3 D 1 }
- } value-numbering-step
+ } value-number-bb
] unit-test
! Various SIMD simplifications
[
- {
+ V{
T{ ##vector>scalar f 1 0 float-4-rep }
T{ ##copy f 2 0 any-rep }
}
] [
- {
+ V{
T{ ##vector>scalar f 1 0 float-4-rep }
T{ ##scalar>vector f 2 1 float-4-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##copy f 1 0 any-rep }
}
] [
- {
+ V{
T{ ##shuffle-vector-imm f 1 0 { 0 1 2 3 } float-4-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##shuffle-vector-imm f 1 0 { 1 2 3 0 } float-4-rep }
T{ ##shuffle-vector-imm f 2 0 { 0 2 3 1 } float-4-rep }
}
] [
- {
+ V{
T{ ##shuffle-vector-imm f 1 0 { 1 2 3 0 } float-4-rep }
T{ ##shuffle-vector-imm f 2 1 { 3 1 2 0 } float-4-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##shuffle-vector-imm f 1 0 { 1 2 3 0 } float-4-rep }
T{ ##shuffle-vector-imm f 2 1 { 1 0 } double-2-rep }
}
] [
- {
+ V{
T{ ##shuffle-vector-imm f 1 0 { 1 2 3 0 } float-4-rep }
T{ ##shuffle-vector-imm f 2 1 { 1 0 } double-2-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-integer f 0 55 }
T{ ##load-reference f 1 B{ 55 0 0 0 55 0 0 0 55 0 0 0 55 0 0 0 } }
T{ ##load-reference f 2 B{ 55 0 0 0 55 0 0 0 55 0 0 0 55 0 0 0 } }
}
] [
- {
+ V{
T{ ##load-integer f 0 55 }
T{ ##scalar>vector f 1 0 int-4-rep }
T{ ##shuffle-vector-imm f 2 1 { 0 0 0 0 } float-4-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-reference f 0 1.25 }
T{ ##load-reference f 1 B{ 0 0 160 63 0 0 160 63 0 0 160 63 0 0 160 63 } }
T{ ##load-reference f 2 B{ 0 0 160 63 0 0 160 63 0 0 160 63 0 0 160 63 } }
}
] [
- {
+ V{
T{ ##load-reference f 0 1.25 }
T{ ##scalar>vector f 1 0 float-4-rep }
T{ ##shuffle-vector-imm f 2 1 { 0 0 0 0 } float-4-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-reference f 0 1.25 }
T{ ##load-reference f 1 B{ 0 0 160 63 0 0 160 63 0 0 160 63 0 0 160 63 } }
T{ ##load-reference f 2 B{ 0 0 160 63 0 0 160 63 0 0 160 63 0 0 160 63 } }
}
] [
- {
+ V{
T{ ##load-reference f 0 1.25 }
T{ ##scalar>vector f 1 0 float-4-rep }
T{ ##shuffle-vector-imm f 2 1 { 0 0 0 0 } float-4-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-integer f 0 55 }
T{ ##load-reference f 1 B{ 55 0 55 0 55 0 55 0 55 0 55 0 55 0 55 0 } }
T{ ##load-reference f 2 B{ 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 } }
T{ ##load-reference f 3 B{ 0 55 0 55 0 55 0 55 0 55 0 55 0 55 0 55 } }
}
] [
- {
+ V{
T{ ##load-integer f 0 55 }
T{ ##scalar>vector f 1 0 short-8-rep }
T{ ##load-reference f 2 B{ 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 } }
T{ ##shuffle-vector f 3 1 2 float-4-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-reference f 0 1.25 }
T{ ##load-reference f 2 3.75 }
T{ ##load-reference f 4 B{ 0 0 0 0 0 0 244 63 0 0 0 0 0 0 14 64 } }
}
] [
- {
+ V{
T{ ##load-reference f 0 1.25 }
T{ ##load-reference f 2 3.75 }
T{ ##gather-vector-2 f 4 0 2 double-2-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-integer f 0 125 }
T{ ##load-integer f 2 375 }
T{ ##load-reference f 4 B{ 125 0 0 0 0 0 0 0 119 1 0 0 0 0 0 0 } }
}
] [
- {
+ V{
T{ ##load-integer f 0 125 }
T{ ##load-integer f 2 375 }
T{ ##gather-vector-2 f 4 0 2 longlong-2-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-reference f 0 1.25 }
T{ ##load-reference f 1 2.50 }
T{ ##load-reference f 2 3.75 }
T{ ##load-reference f 4 B{ 0 0 160 63 0 0 32 64 0 0 112 64 0 0 160 64 } }
}
] [
- {
+ V{
T{ ##load-reference f 0 1.25 }
T{ ##load-reference f 1 2.50 }
T{ ##load-reference f 2 3.75 }
T{ ##load-reference f 3 5.00 }
T{ ##gather-vector-4 f 4 0 1 2 3 float-4-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##load-integer f 0 125 }
T{ ##load-integer f 1 250 }
T{ ##load-integer f 2 375 }
T{ ##load-reference f 4 B{ 125 0 0 0 250 0 0 0 119 1 0 0 244 1 0 0 } }
}
] [
- {
+ V{
T{ ##load-integer f 0 125 }
T{ ##load-integer f 1 250 }
T{ ##load-integer f 2 375 }
T{ ##load-integer f 3 500 }
T{ ##gather-vector-4 f 4 0 1 2 3 int-4-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##zero-vector f 2 float-4-rep }
}
] [
- {
+ V{
T{ ##xor-vector f 2 1 1 float-4-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
! NOT x AND y => x ANDN y
[
- {
+ V{
T{ ##fill-vector f 3 float-4-rep }
T{ ##xor-vector f 4 0 3 float-4-rep }
T{ ##andn-vector f 5 0 1 float-4-rep }
}
] [
- {
+ V{
T{ ##fill-vector f 3 float-4-rep }
T{ ##xor-vector f 4 0 3 float-4-rep }
T{ ##and-vector f 5 4 1 float-4-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##not-vector f 4 0 float-4-rep }
T{ ##andn-vector f 5 0 1 float-4-rep }
}
] [
- {
+ V{
T{ ##not-vector f 4 0 float-4-rep }
T{ ##and-vector f 5 4 1 float-4-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
! x AND NOT y => y ANDN x
[
- {
+ V{
T{ ##fill-vector f 3 float-4-rep }
T{ ##xor-vector f 4 0 3 float-4-rep }
T{ ##andn-vector f 5 0 1 float-4-rep }
}
] [
- {
+ V{
T{ ##fill-vector f 3 float-4-rep }
T{ ##xor-vector f 4 0 3 float-4-rep }
T{ ##and-vector f 5 1 4 float-4-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##not-vector f 4 0 float-4-rep }
T{ ##andn-vector f 5 0 1 float-4-rep }
}
] [
- {
+ V{
T{ ##not-vector f 4 0 float-4-rep }
T{ ##and-vector f 5 1 4 float-4-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
! NOT x ANDN y => x AND y
[
- {
+ V{
T{ ##fill-vector f 3 float-4-rep }
T{ ##xor-vector f 4 0 3 float-4-rep }
T{ ##and-vector f 5 0 1 float-4-rep }
}
] [
- {
+ V{
T{ ##fill-vector f 3 float-4-rep }
T{ ##xor-vector f 4 0 3 float-4-rep }
T{ ##andn-vector f 5 4 1 float-4-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##not-vector f 4 0 float-4-rep }
T{ ##and-vector f 5 0 1 float-4-rep }
}
] [
- {
+ V{
T{ ##not-vector f 4 0 float-4-rep }
T{ ##andn-vector f 5 4 1 float-4-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
! AND <=> ANDN
[
- {
+ V{
T{ ##fill-vector f 3 float-4-rep }
T{ ##xor-vector f 4 0 3 float-4-rep }
T{ ##andn-vector f 5 0 1 float-4-rep }
T{ ##or-vector f 7 5 6 float-4-rep }
}
] [
- {
+ V{
T{ ##fill-vector f 3 float-4-rep }
T{ ##xor-vector f 4 0 3 float-4-rep }
T{ ##and-vector f 5 4 1 float-4-rep }
T{ ##andn-vector f 6 4 2 float-4-rep }
T{ ##or-vector f 7 5 6 float-4-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
- {
+ V{
T{ ##not-vector f 4 0 float-4-rep }
T{ ##andn-vector f 5 0 1 float-4-rep }
T{ ##and-vector f 6 0 2 float-4-rep }
T{ ##or-vector f 7 5 6 float-4-rep }
}
] [
- {
+ V{
T{ ##not-vector f 4 0 float-4-rep }
T{ ##and-vector f 5 4 1 float-4-rep }
T{ ##andn-vector f 6 4 2 float-4-rep }
T{ ##or-vector f 7 5 6 float-4-rep }
- } value-numbering-step
+ } value-number-bb
] unit-test
! Branch folding
T{ ##peek f 1 D 1 }
T{ ##add-imm f 2 1 2 }
T{ ##slot f 3 0 2 $[ cell log2 ] 7 }
- } value-numbering-step
+ } value-number-bb
] unit-test
] when
T{ ##tagged>integer f 2 1 }
T{ ##add-imm f 3 2 10 }
T{ ##load-memory-imm f 4 3 0 int-rep c:uchar }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
T{ ##tagged>integer f 3 1 }
T{ ##add-imm f 4 3 10 }
T{ ##store-memory-imm f 2 4 0 int-rep c:uchar }
- } value-numbering-step
+ } value-number-bb
] unit-test
! Displacement fusion on ##load/store-memory-imm
T{ ##tagged>integer f 3 1 }
T{ ##add f 4 2 3 }
T{ ##load-memory-imm f 5 4 0 int-rep c:uchar }
- } value-numbering-step
+ } value-number-bb
] unit-test
[
T{ ##tagged>integer f 3 1 }
T{ ##add f 4 2 3 }
T{ ##store-memory-imm f 5 4 0 int-rep c:uchar }
- } value-numbering-step
+ } value-number-bb
] unit-test
! Base offset fusion on ##load/store-memory -- only on x86
T{ ##tagged>integer f 3 1 }
T{ ##add-imm f 4 2 31337 }
T{ ##load-memory f 5 4 3 0 0 int-rep c:uchar }
- } value-numbering-step
+ } value-number-bb
] unit-test
! Displacement offset fusion on ##load/store-memory -- only on x86
T{ ##tagged>integer f 3 1 }
T{ ##add-imm f 4 3 31337 }
T{ ##load-memory f 5 2 4 0 1 int-rep c:uchar }
- } value-numbering-step
+ } value-number-bb
] unit-test
! Displacement offset fusion should not occur on
T{ ##tagged>integer f 3 1 }
T{ ##add-imm f 4 3 10 }
T{ ##load-memory f 5 2 4 1 1 int-rep c:uchar }
- } dup value-numbering-step assert=
+ } dup value-number-bb assert=
] unit-test
! Scale fusion on ##load/store-memory
T{ ##tagged>integer f 3 1 }
T{ ##shl-imm f 4 3 2 }
T{ ##load-memory f 5 2 4 0 0 int-rep c:uchar }
- } value-numbering-step
+ } value-number-bb
] unit-test
cpu x86? [
T{ ##tagged>integer f 3 1 }
T{ ##shl-imm f 4 3 2 }
T{ ##load-memory f 5 2 4 1 0 int-rep c:uchar }
- } dup value-numbering-step assert=
+ } dup value-number-bb assert=
] unit-test
! Don't do scale fusion if the scale factor is out of range
T{ ##tagged>integer f 3 1 }
T{ ##shl-imm f 4 3 4 }
T{ ##load-memory f 5 2 4 0 0 int-rep c:uchar }
- } dup value-numbering-step assert=
+ } dup value-number-bb assert=
] unit-test
] when