1; RUN: ./amdgcn_glslc %s | FileCheck -check-prefix=GCN -check-prefix=FUNC %s
2
3; FUNC-LABEL: {{^}}@bfi_i32:
4; GCN: main
5; GCN: v_interp_mov
6; GCN: v_interp_mov
7; GCN: v_interp_mov
8; GCN: v_interp_mov
9; GCN-NEXT: v_bfm_b32
10; GCN-NEXT: v_lshlrev_b32
11; GCN-NEXT: v_bfi_b32
12; GCN-NEXT: epilog
13
14#shader fs bfi_i32
15#version 400
16flat in ivec4 v;
17out ivec4 o;
18void main() {
19    o.x = bitfieldInsert(v.x, v.y, v.z, v.w);
20}
21
22
23; FUNC-LABEL: {{^}}@bfi_u32:
24; GCN: main
25; GCN: v_interp_mov
26; GCN: v_interp_mov
27; GCN: v_interp_mov
28; GCN: v_interp_mov
29; GCN-NEXT: v_bfm_b32
30; GCN-NEXT: v_lshlrev_b32
31; GCN-NEXT: v_bfi_b32
32; GCN-NEXT: epilog
33
34#shader fs bfi_u32
35#version 400
36flat in uvec4 v;
37out uvec4 o;
38void main() {
39    o.x = bitfieldInsert(v.x, v.y, int(v.z), int(v.w));
40}
41