2
2
; RUN: llc -march=amdgcn -mcpu=gfx950 -verify-machineinstrs < %s | FileCheck -enable-var-scope -check-prefixes=GCN,GFX950-SDAG %s
3
3
; RUN: llc -global-isel -march=amdgcn -mcpu=gfx950 -verify-machineinstrs < %s | FileCheck -enable-var-scope -check-prefixes=GCN,GFX950-GISEL %s
4
4
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 )
7
7
8
8
define amdgpu_ps float @bitop3_b32_vvv (i32 %a , i32 %b , i32 %c ) {
9
9
; GCN-LABEL: bitop3_b32_vvv:
10
10
; GCN: ; %bb.0:
11
11
; GCN-NEXT: v_bitop3_b32 v0, v0, v1, v2 bitop3:0xf
12
12
; 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 )
14
14
%ret_cast = bitcast i32 %ret to float
15
15
ret float %ret_cast
16
16
}
@@ -20,7 +20,7 @@ define amdgpu_ps float @bitop3_b32_svv(i32 inreg %a, i32 %b, i32 %c) {
20
20
; GCN: ; %bb.0:
21
21
; GCN-NEXT: v_bitop3_b32 v0, s0, v0, v1 bitop3:0x10
22
22
; 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 )
24
24
%ret_cast = bitcast i32 %ret to float
25
25
ret float %ret_cast
26
26
}
@@ -31,7 +31,7 @@ define amdgpu_ps float @bitop3_b32_ssv(i32 inreg %a, i32 inreg %b, i32 %c) {
31
31
; GCN-NEXT: v_mov_b32_e32 v1, s1
32
32
; GCN-NEXT: v_bitop3_b32 v0, s0, v1, v0 bitop3:0x11
33
33
; 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 )
35
35
%ret_cast = bitcast i32 %ret to float
36
36
ret float %ret_cast
37
37
}
@@ -43,7 +43,7 @@ define amdgpu_ps float @bitop3_b32_sss(i32 inreg %a, i32 inreg %b, i32 inreg %c)
43
43
; GCN-NEXT: v_mov_b32_e32 v1, s2
44
44
; GCN-NEXT: v_bitop3_b32 v0, s0, v0, v1 bitop3:0x12
45
45
; 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 )
47
47
%ret_cast = bitcast i32 %ret to float
48
48
ret float %ret_cast
49
49
}
@@ -60,7 +60,7 @@ define amdgpu_ps float @bitop3_b32_vvi(i32 %a, i32 %b) {
60
60
; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 0x3e8
61
61
; GFX950-GISEL-NEXT: v_bitop3_b32 v0, v0, v1, v2 bitop3:0x13
62
62
; 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 )
64
64
%ret_cast = bitcast i32 %ret to float
65
65
ret float %ret_cast
66
66
}
@@ -79,7 +79,7 @@ define amdgpu_ps float @bitop3_b32_vii(i32 %a) {
79
79
; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 0x3e8
80
80
; GFX950-GISEL-NEXT: v_bitop3_b32 v0, v0, v1, v2 bitop3:0x14
81
81
; 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 )
83
83
%ret_cast = bitcast i32 %ret to float
84
84
ret float %ret_cast
85
85
}
@@ -102,7 +102,7 @@ define amdgpu_ps float @bitop3_b32_iii() {
102
102
; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 0x3e8
103
103
; GFX950-GISEL-NEXT: v_bitop3_b32 v0, v0, v1, v2 bitop3:0x15
104
104
; 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 )
106
106
%ret_cast = bitcast i32 %ret to float
107
107
ret float %ret_cast
108
108
}
@@ -112,7 +112,7 @@ define amdgpu_ps half @bitop3_b16_vvv(i16 %a, i16 %b, i16 %c) {
112
112
; GCN: ; %bb.0:
113
113
; GCN-NEXT: v_bitop3_b16 v0, v0, v1, v2 bitop3:0xf
114
114
; 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 )
116
116
%ret_cast = bitcast i16 %ret to half
117
117
ret half %ret_cast
118
118
}
@@ -122,7 +122,7 @@ define amdgpu_ps half @bitop3_b16_svv(i16 inreg %a, i16 %b, i16 %c) {
122
122
; GCN: ; %bb.0:
123
123
; GCN-NEXT: v_bitop3_b16 v0, s0, v0, v1 bitop3:0x10
124
124
; 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 )
126
126
%ret_cast = bitcast i16 %ret to half
127
127
ret half %ret_cast
128
128
}
@@ -133,7 +133,7 @@ define amdgpu_ps half @bitop3_b16_ssv(i16 inreg %a, i16 inreg %b, i16 %c) {
133
133
; GCN-NEXT: v_mov_b32_e32 v1, s1
134
134
; GCN-NEXT: v_bitop3_b16 v0, s0, v1, v0 bitop3:0x11
135
135
; 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 )
137
137
%ret_cast = bitcast i16 %ret to half
138
138
ret half %ret_cast
139
139
}
@@ -145,7 +145,7 @@ define amdgpu_ps half @bitop3_b16_sss(i16 inreg %a, i16 inreg %b, i16 inreg %c)
145
145
; GCN-NEXT: v_mov_b32_e32 v1, s2
146
146
; GCN-NEXT: v_bitop3_b16 v0, s0, v0, v1 bitop3:0x12
147
147
; 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 )
149
149
%ret_cast = bitcast i16 %ret to half
150
150
ret half %ret_cast
151
151
}
@@ -162,7 +162,7 @@ define amdgpu_ps half @bitop3_b16_vvi(i16 %a, i16 %b) {
162
162
; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 0x3e8
163
163
; GFX950-GISEL-NEXT: v_bitop3_b16 v0, v0, v1, v2 bitop3:0x13
164
164
; 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 )
166
166
%ret_cast = bitcast i16 %ret to half
167
167
ret half %ret_cast
168
168
}
@@ -181,7 +181,7 @@ define amdgpu_ps half @bitop3_b16_vii(i16 %a) {
181
181
; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 0x3e8
182
182
; GFX950-GISEL-NEXT: v_bitop3_b16 v0, v0, v1, v2 bitop3:0x14
183
183
; 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 )
185
185
%ret_cast = bitcast i16 %ret to half
186
186
ret half %ret_cast
187
187
}
@@ -203,7 +203,7 @@ define amdgpu_ps half @bitop3_b16_iii() {
203
203
; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 0x3e8
204
204
; GFX950-GISEL-NEXT: v_bitop3_b16 v0, v0, v1, v2 bitop3:0x15
205
205
; 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 )
207
207
%ret_cast = bitcast i16 %ret to half
208
208
ret half %ret_cast
209
209
}
0 commit comments