1010define amdgpu_ps i64 @s_add_i64_const_low_bits_known0_0 (i64 inreg %reg ) {
1111; GFX9-LABEL: s_add_i64_const_low_bits_known0_0:
1212; 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
1514; GFX9-NEXT: ; return to shader part epilog
1615 %add = add i64 %reg , 1125899906842624 ; (1 << 50)
1716 ret i64 %add
@@ -20,8 +19,7 @@ define amdgpu_ps i64 @s_add_i64_const_low_bits_known0_0(i64 inreg %reg) {
2019define amdgpu_ps i64 @s_add_i64_const_low_bits_known0_1 (i64 inreg %reg ) {
2120; GFX9-LABEL: s_add_i64_const_low_bits_known0_1:
2221; 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
2523; GFX9-NEXT: ; return to shader part epilog
2624 %add = add i64 %reg , 4294967296 ; (1 << 32)
2725 ret i64 %add
@@ -30,8 +28,7 @@ define amdgpu_ps i64 @s_add_i64_const_low_bits_known0_1(i64 inreg %reg) {
3028define amdgpu_ps i64 @s_add_i64_const_low_bits_known0_2 (i64 inreg %reg ) {
3129; GFX9-LABEL: s_add_i64_const_low_bits_known0_2:
3230; 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
3532; GFX9-NEXT: ; return to shader part epilog
3633 %add = add i64 %reg , 8589934592 ; (1 << 33)
3734 ret i64 %add
@@ -40,8 +37,7 @@ define amdgpu_ps i64 @s_add_i64_const_low_bits_known0_2(i64 inreg %reg) {
4037define amdgpu_ps i64 @s_add_i64_const_low_bits_known0_3 (i64 inreg %reg ) {
4138; GFX9-LABEL: s_add_i64_const_low_bits_known0_3:
4239; 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
4541; GFX9-NEXT: ; return to shader part epilog
4642 %add = add i64 %reg , -9223372036854775808 ; (1 << 63)
4743 ret i64 %add
@@ -50,8 +46,7 @@ define amdgpu_ps i64 @s_add_i64_const_low_bits_known0_3(i64 inreg %reg) {
5046define amdgpu_ps i64 @s_add_i64_const_low_bits_known0_4 (i64 inreg %reg ) {
5147; GFX9-LABEL: s_add_i64_const_low_bits_known0_4:
5248; 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
5550; GFX9-NEXT: ; return to shader part epilog
5651 %add = add i64 %reg , -4294967296 ; 0xffffffff00000000
5752 ret i64 %add
@@ -61,9 +56,7 @@ define i64 @v_add_i64_const_low_bits_known0_0(i64 %reg) {
6156; GFX9-LABEL: v_add_i64_const_low_bits_known0_0:
6257; GFX9: ; %bb.0:
6358; 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
6760; GFX9-NEXT: s_setpc_b64 s[30:31]
6861 %add = add i64 %reg , 1125899906842624 ; (1 << 50)
6962 ret i64 %add
@@ -73,8 +66,7 @@ define i64 @v_add_i64_const_low_bits_known0_1(i64 %reg) {
7366; GFX9-LABEL: v_add_i64_const_low_bits_known0_1:
7467; GFX9: ; %bb.0:
7568; 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
7870; GFX9-NEXT: s_setpc_b64 s[30:31]
7971 %add = add i64 %reg , 4294967296 ; (1 << 32)
8072 ret i64 %add
@@ -84,8 +76,7 @@ define i64 @v_add_i64_const_low_bits_known0_2(i64 %reg) {
8476; GFX9-LABEL: v_add_i64_const_low_bits_known0_2:
8577; GFX9: ; %bb.0:
8678; 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
8980; GFX9-NEXT: s_setpc_b64 s[30:31]
9081 %add = add i64 %reg , 8589934592 ; (1 << 33)
9182 ret i64 %add
@@ -95,9 +86,7 @@ define i64 @v_add_i64_const_low_bits_known0_3(i64 %reg) {
9586; GFX9-LABEL: v_add_i64_const_low_bits_known0_3:
9687; GFX9: ; %bb.0:
9788; 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
10190; GFX9-NEXT: s_setpc_b64 s[30:31]
10291 %add = add i64 %reg , -9223372036854775808 ; (1 << 63)
10392 ret i64 %add
@@ -107,8 +96,7 @@ define i64 @v_add_i64_const_low_bits_known0_4(i64 %reg) {
10796; GFX9-LABEL: v_add_i64_const_low_bits_known0_4:
10897; GFX9: ; %bb.0:
10998; 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
112100; GFX9-NEXT: s_setpc_b64 s[30:31]
113101 %add = add i64 %reg , -4294967296 ; 0xffffffff00000000
114102 ret i64 %add
@@ -139,10 +127,8 @@ define <2 x i64> @v_add_v2i64_splat_const_low_bits_known0_0(<2 x i64> %reg) {
139127; GFX9-LABEL: v_add_v2i64_splat_const_low_bits_known0_0:
140128; GFX9: ; %bb.0:
141129; 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
146132; GFX9-NEXT: s_setpc_b64 s[30:31]
147133 %add = add <2 x i64 > %reg , <i64 4294967296 , i64 4294967296 > ; (1 << 32)
148134 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) {
152138; GFX9-LABEL: v_add_v2i64_nonsplat_const_low_bits_known0_0:
153139; GFX9: ; %bb.0:
154140; 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
159143; GFX9-NEXT: s_setpc_b64 s[30:31]
160144 %add = add <2 x i64 > %reg , <i64 4294967296 , i64 8589934592 > ; (1 << 32), (1 << 33)
161145 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) {
164148define amdgpu_ps <2 x i64 > @s_add_v2i64_splat_const_low_bits_known0_0 (<2 x i64 > inreg %reg ) {
165149; GFX9-LABEL: s_add_v2i64_splat_const_low_bits_known0_0:
166150; 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
171153; GFX9-NEXT: ; return to shader part epilog
172154 %add = add <2 x i64 > %reg , <i64 4294967296 , i64 4294967296 > ; (1 << 32)
173155 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>
176158define amdgpu_ps <2 x i64 > @s_add_v2i64_nonsplat_const_low_bits_known0_0 (<2 x i64 > inreg %reg ) {
177159; GFX9-LABEL: s_add_v2i64_nonsplat_const_low_bits_known0_0:
178160; 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
183163; GFX9-NEXT: ; return to shader part epilog
184164 %add = add <2 x i64 > %reg , <i64 4294967296 , i64 8589934592 > ; (1 << 32), (1 << 33)
185165 ret <2 x i64 > %add
0 commit comments