@@ -52,8 +52,7 @@ define amdgpu_ps float @not_and_and_and(i32 %a, i32 %b, i32 %c) {
52
52
;
53
53
; GFX950-GISEL-LABEL: not_and_and_and:
54
54
; 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
57
56
; GFX950-GISEL-NEXT: v_and_b32_e32 v0, v0, v1
58
57
; GFX950-GISEL-NEXT: ; return to shader part epilog
59
58
%nota = xor i32 %a , -1
@@ -103,8 +102,7 @@ define amdgpu_ps float @and_and_not_and(i32 %a, i32 %b, i32 %c) {
103
102
;
104
103
; GFX950-GISEL-LABEL: and_and_not_and:
105
104
; 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
108
106
; GFX950-GISEL-NEXT: v_and_b32_e32 v0, v0, v1
109
107
; GFX950-GISEL-NEXT: ; return to shader part epilog
110
108
%notc = xor i32 %c , -1
@@ -122,8 +120,7 @@ define amdgpu_ps float @and_and_and(i32 %a, i32 %b, i32 %c) {
122
120
;
123
121
; GFX950-GISEL-LABEL: and_and_and:
124
122
; 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
127
124
; GFX950-GISEL-NEXT: ; return to shader part epilog
128
125
%and1 = and i32 %a , %c
129
126
%and2 = and i32 %and1 , %b
@@ -141,8 +138,7 @@ define amdgpu_ps float @test_12(i32 %a, i32 %b) {
141
138
;
142
139
; GFX950-GISEL-LABEL: test_12:
143
140
; 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
146
142
; GFX950-GISEL-NEXT: ; return to shader part epilog
147
143
%nota = xor i32 %a , -1
148
144
%and1 = and i32 %nota , %b
@@ -214,9 +210,11 @@ define amdgpu_ps float @test_12_src_overflow(i32 %a, i32 %b, i32 %c) {
214
210
;
215
211
; GFX950-GISEL-LABEL: test_12_src_overflow:
216
212
; 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
220
218
; GFX950-GISEL-NEXT: ; return to shader part epilog
221
219
%nota = xor i32 %a , -1
222
220
%notc = xor i32 %c , -1
@@ -242,11 +240,9 @@ define amdgpu_ps float @test_100_src_overflow(i32 %a, i32 %b, i32 %c) {
242
240
;
243
241
; GFX950-GISEL-LABEL: test_100_src_overflow:
244
242
; 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
248
244
; 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
250
246
; GFX950-GISEL-NEXT: v_and_b32_e32 v0, v1, v0
251
247
; GFX950-GISEL-NEXT: v_not_b32_e32 v1, v2
252
248
; GFX950-GISEL-NEXT: v_and_b32_e32 v4, v4, v2
0 commit comments