blob: b3068dd1ff1898812af64134015f8475112b95c1 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
object Test {
def main(args: Array[String]): Unit = {
intShiftLeftLongConstantFolded()
intShiftLeftLongAtRuntime()
intShiftLogicalRightLongConstantFolded()
intShiftLogicalRightLongAtRuntime()
intShiftArithmeticRightLongConstantFolded()
intShiftArithmeticRightLongAtRuntime()
}
def intShiftLeftLongConstantFolded(): Unit = {
assert(0x01030507 << 36L == 271601776)
val r = 0x01030507 << 36L
assert(r == 271601776)
}
def intShiftLeftLongAtRuntime(): Unit = {
var x: Int = 0x01030507
var y: Long = 36L
assert(x << y == 271601776)
val r = x << y
assert(r == 271601776)
}
def intShiftLogicalRightLongConstantFolded(): Unit = {
assert(0x90503010 >>> 36L == 151323393)
val r = 0x90503010 >>> 36L
assert(r == 151323393)
}
def intShiftLogicalRightLongAtRuntime(): Unit = {
var x: Int = 0x90503010
var y: Long = 36L
assert(x >>> y == 151323393)
val r = x >>> y
assert(r == 151323393)
}
def intShiftArithmeticRightLongConstantFolded(): Unit = {
assert(0x90503010 >> 36L == -117112063)
val r = 0x90503010 >> 36L
assert(r == -117112063)
}
def intShiftArithmeticRightLongAtRuntime(): Unit = {
var x: Int = 0x90503010
var y: Long = 36L
assert(x >> y == -117112063)
val r = x >> y
assert(r == -117112063)
}
}
|