10
10
define amdgpu_ps i64 @s_add_i64_const_low_bits_known0_0 (i64 inreg %reg ) {
11
11
; GFX9-LABEL: s_add_i64_const_low_bits_known0_0:
12
12
; GFX9: ; %bb.0:
13
- ; GFX9-NEXT: s_add_u32 s0, s0, 0
14
- ; GFX9-NEXT: s_addc_u32 s1, s1, 0x40000
13
+ ; GFX9-NEXT: s_add_i32 s1, s1, 0x40000
15
14
; GFX9-NEXT: ; return to shader part epilog
16
15
%add = add i64 %reg , 1125899906842624 ; (1 << 50)
17
16
ret i64 %add
@@ -20,8 +19,7 @@ define amdgpu_ps i64 @s_add_i64_const_low_bits_known0_0(i64 inreg %reg) {
20
19
define amdgpu_ps i64 @s_add_i64_const_low_bits_known0_1 (i64 inreg %reg ) {
21
20
; GFX9-LABEL: s_add_i64_const_low_bits_known0_1:
22
21
; GFX9: ; %bb.0:
23
- ; GFX9-NEXT: s_add_u32 s0, s0, 0
24
- ; GFX9-NEXT: s_addc_u32 s1, s1, 1
22
+ ; GFX9-NEXT: s_add_i32 s1, s1, 1
25
23
; GFX9-NEXT: ; return to shader part epilog
26
24
%add = add i64 %reg , 4294967296 ; (1 << 32)
27
25
ret i64 %add
@@ -30,8 +28,7 @@ define amdgpu_ps i64 @s_add_i64_const_low_bits_known0_1(i64 inreg %reg) {
30
28
define amdgpu_ps i64 @s_add_i64_const_low_bits_known0_2 (i64 inreg %reg ) {
31
29
; GFX9-LABEL: s_add_i64_const_low_bits_known0_2:
32
30
; GFX9: ; %bb.0:
33
- ; GFX9-NEXT: s_add_u32 s0, s0, 0
34
- ; GFX9-NEXT: s_addc_u32 s1, s1, 2
31
+ ; GFX9-NEXT: s_add_i32 s1, s1, 2
35
32
; GFX9-NEXT: ; return to shader part epilog
36
33
%add = add i64 %reg , 8589934592 ; (1 << 33)
37
34
ret i64 %add
@@ -40,8 +37,7 @@ define amdgpu_ps i64 @s_add_i64_const_low_bits_known0_2(i64 inreg %reg) {
40
37
define amdgpu_ps i64 @s_add_i64_const_low_bits_known0_3 (i64 inreg %reg ) {
41
38
; GFX9-LABEL: s_add_i64_const_low_bits_known0_3:
42
39
; GFX9: ; %bb.0:
43
- ; GFX9-NEXT: s_add_u32 s0, s0, 0
44
- ; GFX9-NEXT: s_addc_u32 s1, s1, 0x80000000
40
+ ; GFX9-NEXT: s_add_i32 s1, s1, 0x80000000
45
41
; GFX9-NEXT: ; return to shader part epilog
46
42
%add = add i64 %reg , -9223372036854775808 ; (1 << 63)
47
43
ret i64 %add
@@ -50,8 +46,7 @@ define amdgpu_ps i64 @s_add_i64_const_low_bits_known0_3(i64 inreg %reg) {
50
46
define amdgpu_ps i64 @s_add_i64_const_low_bits_known0_4 (i64 inreg %reg ) {
51
47
; GFX9-LABEL: s_add_i64_const_low_bits_known0_4:
52
48
; GFX9: ; %bb.0:
53
- ; GFX9-NEXT: s_add_u32 s0, s0, 0
54
- ; GFX9-NEXT: s_addc_u32 s1, s1, -1
49
+ ; GFX9-NEXT: s_add_i32 s1, s1, -1
55
50
; GFX9-NEXT: ; return to shader part epilog
56
51
%add = add i64 %reg , -4294967296 ; 0xffffffff00000000
57
52
ret i64 %add
@@ -61,9 +56,7 @@ define i64 @v_add_i64_const_low_bits_known0_0(i64 %reg) {
61
56
; GFX9-LABEL: v_add_i64_const_low_bits_known0_0:
62
57
; GFX9: ; %bb.0:
63
58
; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64
- ; GFX9-NEXT: v_mov_b32_e32 v2, 0x40000
65
- ; GFX9-NEXT: v_add_co_u32_e32 v0, vcc, 0, v0
66
- ; GFX9-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v2, vcc
59
+ ; GFX9-NEXT: v_add_u32_e32 v1, 0x40000, v1
67
60
; GFX9-NEXT: s_setpc_b64 s[30:31]
68
61
%add = add i64 %reg , 1125899906842624 ; (1 << 50)
69
62
ret i64 %add
@@ -73,8 +66,7 @@ define i64 @v_add_i64_const_low_bits_known0_1(i64 %reg) {
73
66
; GFX9-LABEL: v_add_i64_const_low_bits_known0_1:
74
67
; GFX9: ; %bb.0:
75
68
; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
76
- ; GFX9-NEXT: v_add_co_u32_e32 v0, vcc, 0, v0
77
- ; GFX9-NEXT: v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
69
+ ; GFX9-NEXT: v_add_u32_e32 v1, 1, v1
78
70
; GFX9-NEXT: s_setpc_b64 s[30:31]
79
71
%add = add i64 %reg , 4294967296 ; (1 << 32)
80
72
ret i64 %add
@@ -84,8 +76,7 @@ define i64 @v_add_i64_const_low_bits_known0_2(i64 %reg) {
84
76
; GFX9-LABEL: v_add_i64_const_low_bits_known0_2:
85
77
; GFX9: ; %bb.0:
86
78
; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
87
- ; GFX9-NEXT: v_add_co_u32_e32 v0, vcc, 0, v0
88
- ; GFX9-NEXT: v_addc_co_u32_e32 v1, vcc, 2, v1, vcc
79
+ ; GFX9-NEXT: v_add_u32_e32 v1, 2, v1
89
80
; GFX9-NEXT: s_setpc_b64 s[30:31]
90
81
%add = add i64 %reg , 8589934592 ; (1 << 33)
91
82
ret i64 %add
@@ -95,9 +86,7 @@ define i64 @v_add_i64_const_low_bits_known0_3(i64 %reg) {
95
86
; GFX9-LABEL: v_add_i64_const_low_bits_known0_3:
96
87
; GFX9: ; %bb.0:
97
88
; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
98
- ; GFX9-NEXT: v_bfrev_b32_e32 v2, 1
99
- ; GFX9-NEXT: v_add_co_u32_e32 v0, vcc, 0, v0
100
- ; GFX9-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v2, vcc
89
+ ; GFX9-NEXT: v_add_u32_e32 v1, 0x80000000, v1
101
90
; GFX9-NEXT: s_setpc_b64 s[30:31]
102
91
%add = add i64 %reg , -9223372036854775808 ; (1 << 63)
103
92
ret i64 %add
@@ -107,8 +96,7 @@ define i64 @v_add_i64_const_low_bits_known0_4(i64 %reg) {
107
96
; GFX9-LABEL: v_add_i64_const_low_bits_known0_4:
108
97
; GFX9: ; %bb.0:
109
98
; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
110
- ; GFX9-NEXT: v_add_co_u32_e32 v0, vcc, 0, v0
111
- ; GFX9-NEXT: v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
99
+ ; GFX9-NEXT: v_add_u32_e32 v1, -1, v1
112
100
; GFX9-NEXT: s_setpc_b64 s[30:31]
113
101
%add = add i64 %reg , -4294967296 ; 0xffffffff00000000
114
102
ret i64 %add
@@ -139,10 +127,8 @@ define <2 x i64> @v_add_v2i64_splat_const_low_bits_known0_0(<2 x i64> %reg) {
139
127
; GFX9-LABEL: v_add_v2i64_splat_const_low_bits_known0_0:
140
128
; GFX9: ; %bb.0:
141
129
; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
142
- ; GFX9-NEXT: v_add_co_u32_e32 v0, vcc, 0, v0
143
- ; GFX9-NEXT: v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
144
- ; GFX9-NEXT: v_add_co_u32_e32 v2, vcc, 0, v2
145
- ; GFX9-NEXT: v_addc_co_u32_e32 v3, vcc, 1, v3, vcc
130
+ ; GFX9-NEXT: v_add_u32_e32 v1, 1, v1
131
+ ; GFX9-NEXT: v_add_u32_e32 v3, 1, v3
146
132
; GFX9-NEXT: s_setpc_b64 s[30:31]
147
133
%add = add <2 x i64 > %reg , <i64 4294967296 , i64 4294967296 > ; (1 << 32)
148
134
ret <2 x i64 > %add
@@ -152,10 +138,8 @@ define <2 x i64> @v_add_v2i64_nonsplat_const_low_bits_known0_0(<2 x i64> %reg) {
152
138
; GFX9-LABEL: v_add_v2i64_nonsplat_const_low_bits_known0_0:
153
139
; GFX9: ; %bb.0:
154
140
; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
155
- ; GFX9-NEXT: v_add_co_u32_e32 v0, vcc, 0, v0
156
- ; GFX9-NEXT: v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
157
- ; GFX9-NEXT: v_add_co_u32_e32 v2, vcc, 0, v2
158
- ; GFX9-NEXT: v_addc_co_u32_e32 v3, vcc, 2, v3, vcc
141
+ ; GFX9-NEXT: v_add_u32_e32 v1, 1, v1
142
+ ; GFX9-NEXT: v_add_u32_e32 v3, 2, v3
159
143
; GFX9-NEXT: s_setpc_b64 s[30:31]
160
144
%add = add <2 x i64 > %reg , <i64 4294967296 , i64 8589934592 > ; (1 << 32), (1 << 33)
161
145
ret <2 x i64 > %add
@@ -164,10 +148,8 @@ define <2 x i64> @v_add_v2i64_nonsplat_const_low_bits_known0_0(<2 x i64> %reg) {
164
148
define amdgpu_ps <2 x i64 > @s_add_v2i64_splat_const_low_bits_known0_0 (<2 x i64 > inreg %reg ) {
165
149
; GFX9-LABEL: s_add_v2i64_splat_const_low_bits_known0_0:
166
150
; GFX9: ; %bb.0:
167
- ; GFX9-NEXT: s_add_u32 s0, s0, 0
168
- ; GFX9-NEXT: s_addc_u32 s1, s1, 1
169
- ; GFX9-NEXT: s_add_u32 s2, s2, 0
170
- ; GFX9-NEXT: s_addc_u32 s3, s3, 1
151
+ ; GFX9-NEXT: s_add_i32 s1, s1, 1
152
+ ; GFX9-NEXT: s_add_i32 s3, s3, 1
171
153
; GFX9-NEXT: ; return to shader part epilog
172
154
%add = add <2 x i64 > %reg , <i64 4294967296 , i64 4294967296 > ; (1 << 32)
173
155
ret <2 x i64 > %add
@@ -176,10 +158,8 @@ define amdgpu_ps <2 x i64> @s_add_v2i64_splat_const_low_bits_known0_0(<2 x i64>
176
158
define amdgpu_ps <2 x i64 > @s_add_v2i64_nonsplat_const_low_bits_known0_0 (<2 x i64 > inreg %reg ) {
177
159
; GFX9-LABEL: s_add_v2i64_nonsplat_const_low_bits_known0_0:
178
160
; GFX9: ; %bb.0:
179
- ; GFX9-NEXT: s_add_u32 s0, s0, 0
180
- ; GFX9-NEXT: s_addc_u32 s1, s1, 1
181
- ; GFX9-NEXT: s_add_u32 s2, s2, 0
182
- ; GFX9-NEXT: s_addc_u32 s3, s3, 2
161
+ ; GFX9-NEXT: s_add_i32 s1, s1, 1
162
+ ; GFX9-NEXT: s_add_i32 s3, s3, 2
183
163
; GFX9-NEXT: ; return to shader part epilog
184
164
%add = add <2 x i64 > %reg , <i64 4294967296 , i64 8589934592 > ; (1 << 32), (1 << 33)
185
165
ret <2 x i64 > %add
0 commit comments