@@ -6,12 +6,12 @@ body: |
6
6
bb.0.entry:
7
7
; CHECK-LABEL: name: test_scalar_and_small
8
8
; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
9
- ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
10
- ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)
11
- ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)
12
- ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[TRUNC]], [[TRUNC1]]
13
- ; CHECK: $w0 = COPY [[AND]](s32)
14
- ; CHECK: $x0 = COPY [[COPY]](s64)
9
+ ; CHECK-NEXT : [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
10
+ ; CHECK-NEXT : [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)
11
+ ; CHECK-NEXT : [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)
12
+ ; CHECK-NEXT : [[AND:%[0-9]+]]:_(s32) = G_AND [[TRUNC]], [[TRUNC1]]
13
+ ; CHECK-NEXT : $w0 = COPY [[AND]](s32)
14
+ ; CHECK-NEXT : $x0 = COPY [[COPY]](s64)
15
15
%0:_(s64) = COPY $x0
16
16
%1:_(s64) = COPY $x1
17
17
%2:_(s8) = G_TRUNC %0(s64)
@@ -29,44 +29,88 @@ body: |
29
29
bb.0.entry:
30
30
; CHECK-LABEL: name: test_nonpow2
31
31
; CHECK: %ptr:_(p0) = COPY $x0
32
- ; CHECK: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD %ptr(p0) :: (load (s64), align 16)
33
- ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
34
- ; CHECK: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 8
35
- ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD %ptr, [[C1]](s64)
36
- ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY [[PTR_ADD]](p0)
37
- ; CHECK: [[ZEXTLOAD:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[COPY]](p0) :: (load (s16) from unknown-address + 8, align 8)
38
- ; CHECK: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2
39
- ; CHECK: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C2]](s64)
40
- ; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s8) from unknown-address + 10, align 2)
41
- ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
42
- ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD1]](s32), [[DEF]](s32)
43
- ; CHECK: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 16
44
- ; CHECK: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[MV]], [[C3]](s64)
45
- ; CHECK: [[OR:%[0-9]+]]:_(s64) = G_OR [[SHL]], [[ZEXTLOAD]]
46
- ; CHECK: [[OR1:%[0-9]+]]:_(s64) = G_OR [[C]], [[LOAD]]
47
- ; CHECK: [[OR2:%[0-9]+]]:_(s64) = G_OR [[OR]], [[C]]
48
- ; CHECK: [[LOAD2:%[0-9]+]]:_(s64) = G_LOAD %ptr(p0) :: (load (s64), align 16)
49
- ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY [[PTR_ADD]](p0)
50
- ; CHECK: [[ZEXTLOAD1:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[COPY1]](p0) :: (load (s16) from unknown-address + 8, align 8)
51
- ; CHECK: [[PTR_ADD2:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY1]], [[C2]](s64)
52
- ; CHECK: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD2]](p0) :: (load (s8) from unknown-address + 10, align 2)
53
- ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD3]](s32), [[DEF]](s32)
54
- ; CHECK: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[MV1]], [[C3]](s64)
55
- ; CHECK: [[OR3:%[0-9]+]]:_(s64) = G_OR [[SHL1]], [[ZEXTLOAD1]]
56
- ; CHECK: [[OR4:%[0-9]+]]:_(s64) = G_OR [[C]], [[LOAD2]]
57
- ; CHECK: [[OR5:%[0-9]+]]:_(s64) = G_OR [[OR3]], [[C]]
58
- ; CHECK: [[AND:%[0-9]+]]:_(s64) = G_AND [[OR1]], [[OR4]]
59
- ; CHECK: [[AND1:%[0-9]+]]:_(s64) = G_AND [[OR2]], [[OR5]]
60
- ; CHECK: [[COPY2:%[0-9]+]]:_(s64) = COPY [[AND]](s64)
61
- ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[AND1]](s64)
62
- ; CHECK: G_STORE [[COPY2]](s64), %ptr(p0) :: (store (s64), align 16)
63
- ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[TRUNC]], [[C3]](s64)
64
- ; CHECK: [[PTR_ADD3:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTR_ADD]], [[C2]](s64)
65
- ; CHECK: G_STORE [[TRUNC]](s32), [[PTR_ADD]](p0) :: (store (s16) into unknown-address + 8, align 8)
66
- ; CHECK: G_STORE [[LSHR]](s32), [[PTR_ADD3]](p0) :: (store (s8) into unknown-address + 10, align 2)
32
+ ; CHECK-NEXT : [[LOAD:%[0-9]+]]:_(s64) = G_LOAD %ptr(p0) :: (load (s64), align 16)
33
+ ; CHECK-NEXT : [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
34
+ ; CHECK-NEXT : [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 8
35
+ ; CHECK-NEXT : [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD %ptr, [[C1]](s64)
36
+ ; CHECK-NEXT : [[COPY:%[0-9]+]]:_(p0) = COPY [[PTR_ADD]](p0)
37
+ ; CHECK-NEXT : [[ZEXTLOAD:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[COPY]](p0) :: (load (s16) from unknown-address + 8, align 8)
38
+ ; CHECK-NEXT : [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2
39
+ ; CHECK-NEXT : [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C2]](s64)
40
+ ; CHECK-NEXT : [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s8) from unknown-address + 10, align 2)
41
+ ; CHECK-NEXT : [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
42
+ ; CHECK-NEXT : [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD1]](s32), [[DEF]](s32)
43
+ ; CHECK-NEXT : [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 16
44
+ ; CHECK-NEXT : [[SHL:%[0-9]+]]:_(s64) = G_SHL [[MV]], [[C3]](s64)
45
+ ; CHECK-NEXT : [[OR:%[0-9]+]]:_(s64) = G_OR [[SHL]], [[ZEXTLOAD]]
46
+ ; CHECK-NEXT : [[OR1:%[0-9]+]]:_(s64) = G_OR [[C]], [[LOAD]]
47
+ ; CHECK-NEXT : [[OR2:%[0-9]+]]:_(s64) = G_OR [[OR]], [[C]]
48
+ ; CHECK-NEXT : [[LOAD2:%[0-9]+]]:_(s64) = G_LOAD %ptr(p0) :: (load (s64), align 16)
49
+ ; CHECK-NEXT : [[COPY1:%[0-9]+]]:_(p0) = COPY [[PTR_ADD]](p0)
50
+ ; CHECK-NEXT : [[ZEXTLOAD1:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[COPY1]](p0) :: (load (s16) from unknown-address + 8, align 8)
51
+ ; CHECK-NEXT : [[PTR_ADD2:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY1]], [[C2]](s64)
52
+ ; CHECK-NEXT : [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD2]](p0) :: (load (s8) from unknown-address + 10, align 2)
53
+ ; CHECK-NEXT : [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD3]](s32), [[DEF]](s32)
54
+ ; CHECK-NEXT : [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[MV1]], [[C3]](s64)
55
+ ; CHECK-NEXT : [[OR3:%[0-9]+]]:_(s64) = G_OR [[SHL1]], [[ZEXTLOAD1]]
56
+ ; CHECK-NEXT : [[OR4:%[0-9]+]]:_(s64) = G_OR [[C]], [[LOAD2]]
57
+ ; CHECK-NEXT : [[OR5:%[0-9]+]]:_(s64) = G_OR [[OR3]], [[C]]
58
+ ; CHECK-NEXT : [[AND:%[0-9]+]]:_(s64) = G_AND [[OR1]], [[OR4]]
59
+ ; CHECK-NEXT : [[AND1:%[0-9]+]]:_(s64) = G_AND [[OR2]], [[OR5]]
60
+ ; CHECK-NEXT : [[COPY2:%[0-9]+]]:_(s64) = COPY [[AND]](s64)
61
+ ; CHECK-NEXT : [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[AND1]](s64)
62
+ ; CHECK-NEXT : G_STORE [[COPY2]](s64), %ptr(p0) :: (store (s64), align 16)
63
+ ; CHECK-NEXT : [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[TRUNC]], [[C3]](s64)
64
+ ; CHECK-NEXT : [[PTR_ADD3:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTR_ADD]], [[C2]](s64)
65
+ ; CHECK-NEXT : G_STORE [[TRUNC]](s32), [[PTR_ADD]](p0) :: (store (s16) into unknown-address + 8, align 8)
66
+ ; CHECK-NEXT : G_STORE [[LSHR]](s32), [[PTR_ADD3]](p0) :: (store (s8) into unknown-address + 10, align 2)
67
67
%ptr:_(p0) = COPY $x0
68
68
%a:_(s88) = G_LOAD %ptr(p0) :: (load (s88))
69
69
%b:_(s88) = G_LOAD %ptr(p0) :: (load (s88))
70
70
%and:_(s88) = G_AND %a, %b
71
71
G_STORE %and(s88), %ptr(p0) :: (store (s88))
72
72
...
73
+ ---
74
+ name : test_s318_and
75
+ tracksRegLiveness : true
76
+ body : |
77
+ bb.0:
78
+ liveins: $x0
79
+
80
+ ; CHECK-LABEL: name: test_s318_and
81
+ ; CHECK: liveins: $x0
82
+ ; CHECK-NEXT: {{ $}}
83
+ ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
84
+ ; CHECK-NEXT: %ptr:_(p0) = COPY $x0
85
+ ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[DEF]]
86
+ ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[DEF]]
87
+ ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[DEF]]
88
+ ; CHECK-NEXT: [[AND3:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[DEF]]
89
+ ; CHECK-NEXT: [[AND4:%[0-9]+]]:_(s64) = G_AND [[DEF]], [[DEF]]
90
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
91
+ ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 4611686018427387903
92
+ ; CHECK-NEXT: [[AND5:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C]]
93
+ ; CHECK-NEXT: [[AND6:%[0-9]+]]:_(s64) = G_AND [[AND1]], [[C]]
94
+ ; CHECK-NEXT: [[AND7:%[0-9]+]]:_(s64) = G_AND [[AND2]], [[C]]
95
+ ; CHECK-NEXT: [[AND8:%[0-9]+]]:_(s64) = G_AND [[AND3]], [[C]]
96
+ ; CHECK-NEXT: [[AND9:%[0-9]+]]:_(s64) = G_AND [[AND4]], [[C1]]
97
+ ; CHECK-NEXT: G_STORE [[AND5]](s64), %ptr(p0) :: (store (s64), align 64)
98
+ ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 8
99
+ ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD %ptr, [[C2]](s64)
100
+ ; CHECK-NEXT: G_STORE [[AND6]](s64), [[PTR_ADD]](p0) :: (store (s64) into unknown-address + 8)
101
+ ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 16
102
+ ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD %ptr, [[C3]](s64)
103
+ ; CHECK-NEXT: G_STORE [[AND7]](s64), [[PTR_ADD1]](p0) :: (store (s64) into unknown-address + 16, align 16)
104
+ ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 24
105
+ ; CHECK-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p0) = G_PTR_ADD %ptr, [[C4]](s64)
106
+ ; CHECK-NEXT: G_STORE [[AND8]](s64), [[PTR_ADD2]](p0) :: (store (s64) into unknown-address + 24)
107
+ ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 32
108
+ ; CHECK-NEXT: [[PTR_ADD3:%[0-9]+]]:_(p0) = G_PTR_ADD %ptr, [[C5]](s64)
109
+ ; CHECK-NEXT: G_STORE [[AND9]](s64), [[PTR_ADD3]](p0) :: (store (s64) into unknown-address + 32, align 32)
110
+ ; CHECK-NEXT: RET_ReallyLR implicit $x0
111
+ %a:_(s318) = G_IMPLICIT_DEF
112
+ %b:_(s318) = G_IMPLICIT_DEF
113
+ %ptr:_(p0) = COPY $x0
114
+ %and:_(s318) = G_AND %a, %b
115
+ G_STORE %and(s318), %ptr(p0) :: (store (s318))
116
+ RET_ReallyLR implicit $x0
0 commit comments