22; RUN: llc -march=amdgcn -mcpu=gfx950 -verify-machineinstrs < %s | FileCheck -enable-var-scope -check-prefixes=GCN,GFX950-SDAG %s
33; RUN: llc -global-isel -march=amdgcn -mcpu=gfx950 -verify-machineinstrs < %s | FileCheck -enable-var-scope -check-prefixes=GCN,GFX950-GISEL %s
44
5- declare i32 @llvm.amdgcn.bitop3.i32 (i32 , i32 , i32 , i8 )
6- declare i16 @llvm.amdgcn.bitop3.i16 (i16 , i16 , i16 , i8 )
5+ declare i32 @llvm.amdgcn.bitop3.i32 (i32 , i32 , i32 , i32 )
6+ declare i16 @llvm.amdgcn.bitop3.i16 (i16 , i16 , i16 , i32 )
77
88define amdgpu_ps float @bitop3_b32_vvv (i32 %a , i32 %b , i32 %c ) {
99; GCN-LABEL: bitop3_b32_vvv:
1010; GCN: ; %bb.0:
1111; GCN-NEXT: v_bitop3_b32 v0, v0, v1, v2 bitop3:0xf
1212; GCN-NEXT: ; return to shader part epilog
13- %ret = call i32 @llvm.amdgcn.bitop3.i32 (i32 %a , i32 %b , i32 %c , i8 15 )
13+ %ret = call i32 @llvm.amdgcn.bitop3.i32 (i32 %a , i32 %b , i32 %c , i32 15 )
1414 %ret_cast = bitcast i32 %ret to float
1515 ret float %ret_cast
1616}
@@ -20,7 +20,7 @@ define amdgpu_ps float @bitop3_b32_svv(i32 inreg %a, i32 %b, i32 %c) {
2020; GCN: ; %bb.0:
2121; GCN-NEXT: v_bitop3_b32 v0, s0, v0, v1 bitop3:0x10
2222; GCN-NEXT: ; return to shader part epilog
23- %ret = call i32 @llvm.amdgcn.bitop3.i32 (i32 %a , i32 %b , i32 %c , i8 16 )
23+ %ret = call i32 @llvm.amdgcn.bitop3.i32 (i32 %a , i32 %b , i32 %c , i32 16 )
2424 %ret_cast = bitcast i32 %ret to float
2525 ret float %ret_cast
2626}
@@ -31,7 +31,7 @@ define amdgpu_ps float @bitop3_b32_ssv(i32 inreg %a, i32 inreg %b, i32 %c) {
3131; GCN-NEXT: v_mov_b32_e32 v1, s1
3232; GCN-NEXT: v_bitop3_b32 v0, s0, v1, v0 bitop3:0x11
3333; GCN-NEXT: ; return to shader part epilog
34- %ret = call i32 @llvm.amdgcn.bitop3.i32 (i32 %a , i32 %b , i32 %c , i8 17 )
34+ %ret = call i32 @llvm.amdgcn.bitop3.i32 (i32 %a , i32 %b , i32 %c , i32 17 )
3535 %ret_cast = bitcast i32 %ret to float
3636 ret float %ret_cast
3737}
@@ -43,7 +43,7 @@ define amdgpu_ps float @bitop3_b32_sss(i32 inreg %a, i32 inreg %b, i32 inreg %c)
4343; GCN-NEXT: v_mov_b32_e32 v1, s2
4444; GCN-NEXT: v_bitop3_b32 v0, s0, v0, v1 bitop3:0x12
4545; GCN-NEXT: ; return to shader part epilog
46- %ret = call i32 @llvm.amdgcn.bitop3.i32 (i32 %a , i32 %b , i32 %c , i8 18 )
46+ %ret = call i32 @llvm.amdgcn.bitop3.i32 (i32 %a , i32 %b , i32 %c , i32 18 )
4747 %ret_cast = bitcast i32 %ret to float
4848 ret float %ret_cast
4949}
@@ -60,7 +60,7 @@ define amdgpu_ps float @bitop3_b32_vvi(i32 %a, i32 %b) {
6060; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 0x3e8
6161; GFX950-GISEL-NEXT: v_bitop3_b32 v0, v0, v1, v2 bitop3:0x13
6262; GFX950-GISEL-NEXT: ; return to shader part epilog
63- %ret = call i32 @llvm.amdgcn.bitop3.i32 (i32 %a , i32 %b , i32 1000 , i8 19 )
63+ %ret = call i32 @llvm.amdgcn.bitop3.i32 (i32 %a , i32 %b , i32 1000 , i32 19 )
6464 %ret_cast = bitcast i32 %ret to float
6565 ret float %ret_cast
6666}
@@ -79,7 +79,7 @@ define amdgpu_ps float @bitop3_b32_vii(i32 %a) {
7979; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 0x3e8
8080; GFX950-GISEL-NEXT: v_bitop3_b32 v0, v0, v1, v2 bitop3:0x14
8181; GFX950-GISEL-NEXT: ; return to shader part epilog
82- %ret = call i32 @llvm.amdgcn.bitop3.i32 (i32 %a , i32 2000 , i32 1000 , i8 20 )
82+ %ret = call i32 @llvm.amdgcn.bitop3.i32 (i32 %a , i32 2000 , i32 1000 , i32 20 )
8383 %ret_cast = bitcast i32 %ret to float
8484 ret float %ret_cast
8585}
@@ -102,7 +102,7 @@ define amdgpu_ps float @bitop3_b32_iii() {
102102; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 0x3e8
103103; GFX950-GISEL-NEXT: v_bitop3_b32 v0, v0, v1, v2 bitop3:0x15
104104; GFX950-GISEL-NEXT: ; return to shader part epilog
105- %ret = call i32 @llvm.amdgcn.bitop3.i32 (i32 3000 , i32 2000 , i32 1000 , i8 21 )
105+ %ret = call i32 @llvm.amdgcn.bitop3.i32 (i32 3000 , i32 2000 , i32 1000 , i32 21 )
106106 %ret_cast = bitcast i32 %ret to float
107107 ret float %ret_cast
108108}
@@ -112,7 +112,7 @@ define amdgpu_ps half @bitop3_b16_vvv(i16 %a, i16 %b, i16 %c) {
112112; GCN: ; %bb.0:
113113; GCN-NEXT: v_bitop3_b16 v0, v0, v1, v2 bitop3:0xf
114114; GCN-NEXT: ; return to shader part epilog
115- %ret = call i16 @llvm.amdgcn.bitop3.i16 (i16 %a , i16 %b , i16 %c , i8 15 )
115+ %ret = call i16 @llvm.amdgcn.bitop3.i16 (i16 %a , i16 %b , i16 %c , i32 15 )
116116 %ret_cast = bitcast i16 %ret to half
117117 ret half %ret_cast
118118}
@@ -122,7 +122,7 @@ define amdgpu_ps half @bitop3_b16_svv(i16 inreg %a, i16 %b, i16 %c) {
122122; GCN: ; %bb.0:
123123; GCN-NEXT: v_bitop3_b16 v0, s0, v0, v1 bitop3:0x10
124124; GCN-NEXT: ; return to shader part epilog
125- %ret = call i16 @llvm.amdgcn.bitop3.i16 (i16 %a , i16 %b , i16 %c , i8 16 )
125+ %ret = call i16 @llvm.amdgcn.bitop3.i16 (i16 %a , i16 %b , i16 %c , i32 16 )
126126 %ret_cast = bitcast i16 %ret to half
127127 ret half %ret_cast
128128}
@@ -133,7 +133,7 @@ define amdgpu_ps half @bitop3_b16_ssv(i16 inreg %a, i16 inreg %b, i16 %c) {
133133; GCN-NEXT: v_mov_b32_e32 v1, s1
134134; GCN-NEXT: v_bitop3_b16 v0, s0, v1, v0 bitop3:0x11
135135; GCN-NEXT: ; return to shader part epilog
136- %ret = call i16 @llvm.amdgcn.bitop3.i16 (i16 %a , i16 %b , i16 %c , i8 17 )
136+ %ret = call i16 @llvm.amdgcn.bitop3.i16 (i16 %a , i16 %b , i16 %c , i32 17 )
137137 %ret_cast = bitcast i16 %ret to half
138138 ret half %ret_cast
139139}
@@ -145,7 +145,7 @@ define amdgpu_ps half @bitop3_b16_sss(i16 inreg %a, i16 inreg %b, i16 inreg %c)
145145; GCN-NEXT: v_mov_b32_e32 v1, s2
146146; GCN-NEXT: v_bitop3_b16 v0, s0, v0, v1 bitop3:0x12
147147; GCN-NEXT: ; return to shader part epilog
148- %ret = call i16 @llvm.amdgcn.bitop3.i16 (i16 %a , i16 %b , i16 %c , i8 18 )
148+ %ret = call i16 @llvm.amdgcn.bitop3.i16 (i16 %a , i16 %b , i16 %c , i32 18 )
149149 %ret_cast = bitcast i16 %ret to half
150150 ret half %ret_cast
151151}
@@ -162,7 +162,7 @@ define amdgpu_ps half @bitop3_b16_vvi(i16 %a, i16 %b) {
162162; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 0x3e8
163163; GFX950-GISEL-NEXT: v_bitop3_b16 v0, v0, v1, v2 bitop3:0x13
164164; GFX950-GISEL-NEXT: ; return to shader part epilog
165- %ret = call i16 @llvm.amdgcn.bitop3.i16 (i16 %a , i16 %b , i16 1000 , i8 19 )
165+ %ret = call i16 @llvm.amdgcn.bitop3.i16 (i16 %a , i16 %b , i16 1000 , i32 19 )
166166 %ret_cast = bitcast i16 %ret to half
167167 ret half %ret_cast
168168}
@@ -181,7 +181,7 @@ define amdgpu_ps half @bitop3_b16_vii(i16 %a) {
181181; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 0x3e8
182182; GFX950-GISEL-NEXT: v_bitop3_b16 v0, v0, v1, v2 bitop3:0x14
183183; GFX950-GISEL-NEXT: ; return to shader part epilog
184- %ret = call i16 @llvm.amdgcn.bitop3.i16 (i16 %a , i16 2000 , i16 1000 , i8 20 )
184+ %ret = call i16 @llvm.amdgcn.bitop3.i16 (i16 %a , i16 2000 , i16 1000 , i32 20 )
185185 %ret_cast = bitcast i16 %ret to half
186186 ret half %ret_cast
187187}
@@ -203,7 +203,7 @@ define amdgpu_ps half @bitop3_b16_iii() {
203203; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 0x3e8
204204; GFX950-GISEL-NEXT: v_bitop3_b16 v0, v0, v1, v2 bitop3:0x15
205205; GFX950-GISEL-NEXT: ; return to shader part epilog
206- %ret = call i16 @llvm.amdgcn.bitop3.i16 (i16 3000 , i16 2000 , i16 1000 , i8 21 )
206+ %ret = call i16 @llvm.amdgcn.bitop3.i16 (i16 3000 , i16 2000 , i16 1000 , i32 21 )
207207 %ret_cast = bitcast i16 %ret to half
208208 ret half %ret_cast
209209}
0 commit comments