@@ -52,8 +52,7 @@ define amdgpu_ps float @not_and_and_and(i32 %a, i32 %b, i32 %c) {
5252;
5353; GFX950-GISEL-LABEL: not_and_and_and:
5454; GFX950-GISEL: ; %bb.0:
55- ; GFX950-GISEL-NEXT: v_not_b32_e32 v0, v0
56- ; GFX950-GISEL-NEXT: v_and_b32_e32 v0, v0, v2
55+ ; GFX950-GISEL-NEXT: v_bitop3_b32 v0, v0, v2, v0 bitop3:0xc
5756; GFX950-GISEL-NEXT: v_and_b32_e32 v0, v0, v1
5857; GFX950-GISEL-NEXT: ; return to shader part epilog
5958 %nota = xor i32 %a , -1
@@ -103,8 +102,7 @@ define amdgpu_ps float @and_and_not_and(i32 %a, i32 %b, i32 %c) {
103102;
104103; GFX950-GISEL-LABEL: and_and_not_and:
105104; GFX950-GISEL: ; %bb.0:
106- ; GFX950-GISEL-NEXT: v_not_b32_e32 v2, v2
107- ; GFX950-GISEL-NEXT: v_and_b32_e32 v0, v0, v2
105+ ; GFX950-GISEL-NEXT: v_bitop3_b32 v0, v0, v2, v0 bitop3:0x30
108106; GFX950-GISEL-NEXT: v_and_b32_e32 v0, v0, v1
109107; GFX950-GISEL-NEXT: ; return to shader part epilog
110108 %notc = xor i32 %c , -1
@@ -122,8 +120,7 @@ define amdgpu_ps float @and_and_and(i32 %a, i32 %b, i32 %c) {
122120;
123121; GFX950-GISEL-LABEL: and_and_and:
124122; GFX950-GISEL: ; %bb.0:
125- ; GFX950-GISEL-NEXT: v_and_b32_e32 v0, v0, v2
126- ; GFX950-GISEL-NEXT: v_and_b32_e32 v0, v0, v1
123+ ; GFX950-GISEL-NEXT: v_bitop3_b32 v0, v0, v1, v2 bitop3:0x80
127124; GFX950-GISEL-NEXT: ; return to shader part epilog
128125 %and1 = and i32 %a , %c
129126 %and2 = and i32 %and1 , %b
@@ -141,8 +138,7 @@ define amdgpu_ps float @test_12(i32 %a, i32 %b) {
141138;
142139; GFX950-GISEL-LABEL: test_12:
143140; GFX950-GISEL: ; %bb.0:
144- ; GFX950-GISEL-NEXT: v_not_b32_e32 v0, v0
145- ; GFX950-GISEL-NEXT: v_and_b32_e32 v0, v0, v1
141+ ; GFX950-GISEL-NEXT: v_bitop3_b32 v0, v0, v1, v0 bitop3:0xc
146142; GFX950-GISEL-NEXT: ; return to shader part epilog
147143 %nota = xor i32 %a , -1
148144 %and1 = and i32 %nota , %b
@@ -214,9 +210,11 @@ define amdgpu_ps float @test_12_src_overflow(i32 %a, i32 %b, i32 %c) {
214210;
215211; GFX950-GISEL-LABEL: test_12_src_overflow:
216212; GFX950-GISEL: ; %bb.0:
217- ; GFX950-GISEL-NEXT: v_not_b32_e32 v0, v0
218- ; GFX950-GISEL-NEXT: v_bfi_b32 v0, v2, v0, v0
219- ; GFX950-GISEL-NEXT: v_and_b32_e32 v0, v0, v1
213+ ; GFX950-GISEL-NEXT: v_not_b32_e32 v3, v0
214+ ; GFX950-GISEL-NEXT: v_not_b32_e32 v4, v2
215+ ; GFX950-GISEL-NEXT: v_bitop3_b32 v0, v0, v2, v0 bitop3:0xc
216+ ; GFX950-GISEL-NEXT: v_and_b32_e32 v2, v3, v4
217+ ; GFX950-GISEL-NEXT: v_bitop3_b32 v0, v0, v1, v2 bitop3:0xc8
220218; GFX950-GISEL-NEXT: ; return to shader part epilog
221219 %nota = xor i32 %a , -1
222220 %notc = xor i32 %c , -1
@@ -242,11 +240,9 @@ define amdgpu_ps float @test_100_src_overflow(i32 %a, i32 %b, i32 %c) {
242240;
243241; GFX950-GISEL-LABEL: test_100_src_overflow:
244242; GFX950-GISEL: ; %bb.0:
245- ; GFX950-GISEL-NEXT: v_or_b32_e32 v3, v2, v0
246- ; GFX950-GISEL-NEXT: v_not_b32_e32 v3, v3
247- ; GFX950-GISEL-NEXT: v_not_b32_e32 v4, v1
243+ ; GFX950-GISEL-NEXT: v_bitop3_b32 v3, v2, v0, v2 bitop3:3
248244; GFX950-GISEL-NEXT: v_and_b32_e32 v3, v1, v3
249- ; GFX950-GISEL-NEXT: v_and_b32_e32 v4, v0, v4
245+ ; GFX950-GISEL-NEXT: v_bitop3_b32 v4, v0, v1, v0 bitop3:0x30
250246; GFX950-GISEL-NEXT: v_and_b32_e32 v0, v1, v0
251247; GFX950-GISEL-NEXT: v_not_b32_e32 v1, v2
252248; GFX950-GISEL-NEXT: v_and_b32_e32 v4, v4, v2
0 commit comments