brintos

brintos / llvm-project-archived public Read only

0
0
Text · 90.7 KiB · 5045540 Raw
2226 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefix=GFX9 %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 < %s | FileCheck -check-prefix=GFX10 %s4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-TRUE16 %s5; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-FAKE16 %s6 7define <2 x i8> @shuffle_v2i8_rebroadcast(ptr addrspace(1) %arg0) {8; GFX9-LABEL: shuffle_v2i8_rebroadcast:9; GFX9:       ; %bb.0: ; %entry10; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; GFX9-NEXT:    global_load_ushort v0, v[0:1], off12; GFX9-NEXT:    s_waitcnt vmcnt(0)13; GFX9-NEXT:    v_lshrrev_b16_e32 v0, 8, v014; GFX9-NEXT:    v_mov_b32_e32 v1, v015; GFX9-NEXT:    s_setpc_b64 s[30:31]16;17; GFX10-LABEL: shuffle_v2i8_rebroadcast:18; GFX10:       ; %bb.0: ; %entry19; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20; GFX10-NEXT:    global_load_ushort v0, v[0:1], off21; GFX10-NEXT:    s_waitcnt vmcnt(0)22; GFX10-NEXT:    v_lshrrev_b16 v0, 8, v023; GFX10-NEXT:    v_mov_b32_e32 v1, v024; GFX10-NEXT:    s_setpc_b64 s[30:31]25;26; GFX11-TRUE16-LABEL: shuffle_v2i8_rebroadcast:27; GFX11-TRUE16:       ; %bb.0: ; %entry28; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)29; GFX11-TRUE16-NEXT:    global_load_d16_b16 v0, v[0:1], off30; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)31; GFX11-TRUE16-NEXT:    v_lshrrev_b16 v1.l, 8, v0.l32; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)33; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v1.l34; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]35;36; GFX11-FAKE16-LABEL: shuffle_v2i8_rebroadcast:37; GFX11-FAKE16:       ; %bb.0: ; %entry38; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)39; GFX11-FAKE16-NEXT:    global_load_u16 v0, v[0:1], off40; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)41; GFX11-FAKE16-NEXT:    v_lshrrev_b16 v0, 8, v042; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)43; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v044; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]45entry:46  %val0 = load <2 x i8>, ptr addrspace(1) %arg047  %val1 = shufflevector <2 x i8> %val0, <2 x i8> poison, <2 x i32> <i32 1, i32 1>48  ret <2 x i8> %val149}50 51define <4 x i8> @shuffle_v4i8_rebroadcast(ptr addrspace(1) %arg0) {52; GFX9-LABEL: shuffle_v4i8_rebroadcast:53; GFX9:       ; %bb.0: ; %entry54; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)55; GFX9-NEXT:    global_load_dword v0, v[0:1], off56; GFX9-NEXT:    s_waitcnt vmcnt(0)57; GFX9-NEXT:    v_lshrrev_b32_e32 v0, 8, v058; GFX9-NEXT:    v_mov_b32_e32 v1, v059; GFX9-NEXT:    v_mov_b32_e32 v2, v060; GFX9-NEXT:    v_mov_b32_e32 v3, v061; GFX9-NEXT:    s_setpc_b64 s[30:31]62;63; GFX10-LABEL: shuffle_v4i8_rebroadcast:64; GFX10:       ; %bb.0: ; %entry65; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)66; GFX10-NEXT:    global_load_dword v0, v[0:1], off67; GFX10-NEXT:    s_waitcnt vmcnt(0)68; GFX10-NEXT:    v_lshrrev_b32_e32 v0, 8, v069; GFX10-NEXT:    v_mov_b32_e32 v1, v070; GFX10-NEXT:    v_mov_b32_e32 v2, v071; GFX10-NEXT:    v_mov_b32_e32 v3, v072; GFX10-NEXT:    s_setpc_b64 s[30:31]73;74; GFX11-TRUE16-LABEL: shuffle_v4i8_rebroadcast:75; GFX11-TRUE16:       ; %bb.0: ; %entry76; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)77; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off78; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)79; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 8, v080; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)81; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v3.l82; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v3.l83; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v3.l84; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]85;86; GFX11-FAKE16-LABEL: shuffle_v4i8_rebroadcast:87; GFX11-FAKE16:       ; %bb.0: ; %entry88; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)89; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off90; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)91; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, 8, v092; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)93; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v094; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v095; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v096; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]97entry:98  %val0 = load <4 x i8>, ptr addrspace(1) %arg099  %val1 = shufflevector <4 x i8> %val0, <4 x i8> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>100  ret <4 x i8> %val1101}102 103define <8 x i8> @shuffle_v8i8_rebroadcast(ptr addrspace(1) %arg0) {104; GFX9-LABEL: shuffle_v8i8_rebroadcast:105; GFX9:       ; %bb.0: ; %entry106; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)107; GFX9-NEXT:    global_load_dword v0, v[0:1], off108; GFX9-NEXT:    s_waitcnt vmcnt(0)109; GFX9-NEXT:    v_lshrrev_b32_e32 v0, 8, v0110; GFX9-NEXT:    v_mov_b32_e32 v1, v0111; GFX9-NEXT:    v_mov_b32_e32 v2, v0112; GFX9-NEXT:    v_mov_b32_e32 v3, v0113; GFX9-NEXT:    v_mov_b32_e32 v4, v0114; GFX9-NEXT:    v_mov_b32_e32 v5, v0115; GFX9-NEXT:    v_mov_b32_e32 v6, v0116; GFX9-NEXT:    v_mov_b32_e32 v7, v0117; GFX9-NEXT:    s_setpc_b64 s[30:31]118;119; GFX10-LABEL: shuffle_v8i8_rebroadcast:120; GFX10:       ; %bb.0: ; %entry121; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)122; GFX10-NEXT:    global_load_dword v0, v[0:1], off123; GFX10-NEXT:    s_waitcnt vmcnt(0)124; GFX10-NEXT:    v_lshrrev_b32_e32 v0, 8, v0125; GFX10-NEXT:    v_mov_b32_e32 v1, v0126; GFX10-NEXT:    v_mov_b32_e32 v2, v0127; GFX10-NEXT:    v_mov_b32_e32 v3, v0128; GFX10-NEXT:    v_mov_b32_e32 v4, v0129; GFX10-NEXT:    v_mov_b32_e32 v5, v0130; GFX10-NEXT:    v_mov_b32_e32 v6, v0131; GFX10-NEXT:    v_mov_b32_e32 v7, v0132; GFX10-NEXT:    s_setpc_b64 s[30:31]133;134; GFX11-TRUE16-LABEL: shuffle_v8i8_rebroadcast:135; GFX11-TRUE16:       ; %bb.0: ; %entry136; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)137; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off138; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)139; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v7, 8, v0140; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)141; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v7.l142; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v7.l143; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.l144; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v7.l145; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v4.l, v7.l146; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v7.l147; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v6.l, v7.l148; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]149;150; GFX11-FAKE16-LABEL: shuffle_v8i8_rebroadcast:151; GFX11-FAKE16:       ; %bb.0: ; %entry152; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)153; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off154; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)155; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, 8, v0156; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)157; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v0158; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v0159; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v0160; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v0161; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v5, v0162; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v0163; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v7, v0164; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]165entry:166  %val0 = load <8 x i8>, ptr addrspace(1) %arg0167  %val1 = shufflevector <8 x i8> %val0, <8 x i8> poison, <8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>168  ret <8 x i8> %val1169}170 171define <16 x i8> @shuffle_v16i8_rebroadcast(ptr addrspace(1) %arg0) {172; GFX9-LABEL: shuffle_v16i8_rebroadcast:173; GFX9:       ; %bb.0: ; %entry174; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)175; GFX9-NEXT:    global_load_dword v0, v[0:1], off176; GFX9-NEXT:    s_waitcnt vmcnt(0)177; GFX9-NEXT:    v_lshrrev_b32_e32 v0, 8, v0178; GFX9-NEXT:    v_mov_b32_e32 v1, v0179; GFX9-NEXT:    v_mov_b32_e32 v2, v0180; GFX9-NEXT:    v_mov_b32_e32 v3, v0181; GFX9-NEXT:    v_mov_b32_e32 v4, v0182; GFX9-NEXT:    v_mov_b32_e32 v5, v0183; GFX9-NEXT:    v_mov_b32_e32 v6, v0184; GFX9-NEXT:    v_mov_b32_e32 v7, v0185; GFX9-NEXT:    v_mov_b32_e32 v8, v0186; GFX9-NEXT:    v_mov_b32_e32 v9, v0187; GFX9-NEXT:    v_mov_b32_e32 v10, v0188; GFX9-NEXT:    v_mov_b32_e32 v11, v0189; GFX9-NEXT:    v_mov_b32_e32 v12, v0190; GFX9-NEXT:    v_mov_b32_e32 v13, v0191; GFX9-NEXT:    v_mov_b32_e32 v14, v0192; GFX9-NEXT:    v_mov_b32_e32 v15, v0193; GFX9-NEXT:    s_setpc_b64 s[30:31]194;195; GFX10-LABEL: shuffle_v16i8_rebroadcast:196; GFX10:       ; %bb.0: ; %entry197; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)198; GFX10-NEXT:    global_load_dword v0, v[0:1], off199; GFX10-NEXT:    s_waitcnt vmcnt(0)200; GFX10-NEXT:    v_lshrrev_b32_e32 v0, 8, v0201; GFX10-NEXT:    v_mov_b32_e32 v1, v0202; GFX10-NEXT:    v_mov_b32_e32 v2, v0203; GFX10-NEXT:    v_mov_b32_e32 v3, v0204; GFX10-NEXT:    v_mov_b32_e32 v4, v0205; GFX10-NEXT:    v_mov_b32_e32 v5, v0206; GFX10-NEXT:    v_mov_b32_e32 v6, v0207; GFX10-NEXT:    v_mov_b32_e32 v7, v0208; GFX10-NEXT:    v_mov_b32_e32 v8, v0209; GFX10-NEXT:    v_mov_b32_e32 v9, v0210; GFX10-NEXT:    v_mov_b32_e32 v10, v0211; GFX10-NEXT:    v_mov_b32_e32 v11, v0212; GFX10-NEXT:    v_mov_b32_e32 v12, v0213; GFX10-NEXT:    v_mov_b32_e32 v13, v0214; GFX10-NEXT:    v_mov_b32_e32 v14, v0215; GFX10-NEXT:    v_mov_b32_e32 v15, v0216; GFX10-NEXT:    s_setpc_b64 s[30:31]217;218; GFX11-TRUE16-LABEL: shuffle_v16i8_rebroadcast:219; GFX11-TRUE16:       ; %bb.0: ; %entry220; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)221; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off222; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)223; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v15, 8, v0224; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)225; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v15.l226; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v15.l227; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v15.l228; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v15.l229; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v4.l, v15.l230; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v15.l231; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v6.l, v15.l232; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v15.l233; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v8.l, v15.l234; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v9.l, v15.l235; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v10.l, v15.l236; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v11.l, v15.l237; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v12.l, v15.l238; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v13.l, v15.l239; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v14.l, v15.l240; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]241;242; GFX11-FAKE16-LABEL: shuffle_v16i8_rebroadcast:243; GFX11-FAKE16:       ; %bb.0: ; %entry244; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)245; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off246; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)247; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, 8, v0248; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)249; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v0250; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v0251; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v0252; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v0253; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v5, v0254; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v0255; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v7, v0256; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, v0257; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v9, v0258; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, v0259; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v11, v0260; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v12, v0261; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v13, v0262; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v14, v0263; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v15, v0264; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]265entry:266  %val0 = load <16 x i8>, ptr addrspace(1) %arg0267  %val1 = shufflevector <16 x i8> %val0, <16 x i8> poison, <16 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>268  ret <16 x i8> %val1269}270 271define <32 x i8> @shuffle_v32i8_rebroadcast(ptr addrspace(1) %arg0) {272; GFX9-LABEL: shuffle_v32i8_rebroadcast:273; GFX9:       ; %bb.0: ; %entry274; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)275; GFX9-NEXT:    global_load_dword v0, v[0:1], off276; GFX9-NEXT:    s_waitcnt vmcnt(0)277; GFX9-NEXT:    v_lshrrev_b32_e32 v0, 8, v0278; GFX9-NEXT:    v_mov_b32_e32 v1, v0279; GFX9-NEXT:    v_mov_b32_e32 v2, v0280; GFX9-NEXT:    v_mov_b32_e32 v3, v0281; GFX9-NEXT:    v_mov_b32_e32 v4, v0282; GFX9-NEXT:    v_mov_b32_e32 v5, v0283; GFX9-NEXT:    v_mov_b32_e32 v6, v0284; GFX9-NEXT:    v_mov_b32_e32 v7, v0285; GFX9-NEXT:    v_mov_b32_e32 v8, v0286; GFX9-NEXT:    v_mov_b32_e32 v9, v0287; GFX9-NEXT:    v_mov_b32_e32 v10, v0288; GFX9-NEXT:    v_mov_b32_e32 v11, v0289; GFX9-NEXT:    v_mov_b32_e32 v12, v0290; GFX9-NEXT:    v_mov_b32_e32 v13, v0291; GFX9-NEXT:    v_mov_b32_e32 v14, v0292; GFX9-NEXT:    v_mov_b32_e32 v15, v0293; GFX9-NEXT:    v_mov_b32_e32 v16, v0294; GFX9-NEXT:    v_mov_b32_e32 v17, v0295; GFX9-NEXT:    v_mov_b32_e32 v18, v0296; GFX9-NEXT:    v_mov_b32_e32 v19, v0297; GFX9-NEXT:    v_mov_b32_e32 v20, v0298; GFX9-NEXT:    v_mov_b32_e32 v21, v0299; GFX9-NEXT:    v_mov_b32_e32 v22, v0300; GFX9-NEXT:    v_mov_b32_e32 v23, v0301; GFX9-NEXT:    v_mov_b32_e32 v24, v0302; GFX9-NEXT:    v_mov_b32_e32 v25, v0303; GFX9-NEXT:    v_mov_b32_e32 v26, v0304; GFX9-NEXT:    v_mov_b32_e32 v27, v0305; GFX9-NEXT:    v_mov_b32_e32 v28, v0306; GFX9-NEXT:    v_mov_b32_e32 v29, v0307; GFX9-NEXT:    v_mov_b32_e32 v30, v0308; GFX9-NEXT:    v_mov_b32_e32 v31, v0309; GFX9-NEXT:    s_setpc_b64 s[30:31]310;311; GFX10-LABEL: shuffle_v32i8_rebroadcast:312; GFX10:       ; %bb.0: ; %entry313; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)314; GFX10-NEXT:    global_load_dword v0, v[0:1], off315; GFX10-NEXT:    s_waitcnt vmcnt(0)316; GFX10-NEXT:    v_lshrrev_b32_e32 v0, 8, v0317; GFX10-NEXT:    v_mov_b32_e32 v1, v0318; GFX10-NEXT:    v_mov_b32_e32 v2, v0319; GFX10-NEXT:    v_mov_b32_e32 v3, v0320; GFX10-NEXT:    v_mov_b32_e32 v4, v0321; GFX10-NEXT:    v_mov_b32_e32 v5, v0322; GFX10-NEXT:    v_mov_b32_e32 v6, v0323; GFX10-NEXT:    v_mov_b32_e32 v7, v0324; GFX10-NEXT:    v_mov_b32_e32 v8, v0325; GFX10-NEXT:    v_mov_b32_e32 v9, v0326; GFX10-NEXT:    v_mov_b32_e32 v10, v0327; GFX10-NEXT:    v_mov_b32_e32 v11, v0328; GFX10-NEXT:    v_mov_b32_e32 v12, v0329; GFX10-NEXT:    v_mov_b32_e32 v13, v0330; GFX10-NEXT:    v_mov_b32_e32 v14, v0331; GFX10-NEXT:    v_mov_b32_e32 v15, v0332; GFX10-NEXT:    v_mov_b32_e32 v16, v0333; GFX10-NEXT:    v_mov_b32_e32 v17, v0334; GFX10-NEXT:    v_mov_b32_e32 v18, v0335; GFX10-NEXT:    v_mov_b32_e32 v19, v0336; GFX10-NEXT:    v_mov_b32_e32 v20, v0337; GFX10-NEXT:    v_mov_b32_e32 v21, v0338; GFX10-NEXT:    v_mov_b32_e32 v22, v0339; GFX10-NEXT:    v_mov_b32_e32 v23, v0340; GFX10-NEXT:    v_mov_b32_e32 v24, v0341; GFX10-NEXT:    v_mov_b32_e32 v25, v0342; GFX10-NEXT:    v_mov_b32_e32 v26, v0343; GFX10-NEXT:    v_mov_b32_e32 v27, v0344; GFX10-NEXT:    v_mov_b32_e32 v28, v0345; GFX10-NEXT:    v_mov_b32_e32 v29, v0346; GFX10-NEXT:    v_mov_b32_e32 v30, v0347; GFX10-NEXT:    v_mov_b32_e32 v31, v0348; GFX10-NEXT:    s_setpc_b64 s[30:31]349;350; GFX11-TRUE16-LABEL: shuffle_v32i8_rebroadcast:351; GFX11-TRUE16:       ; %bb.0: ; %entry352; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)353; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off354; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)355; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v31, 8, v0356; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)357; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v31.l358; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v31.l359; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v31.l360; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v31.l361; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v4.l, v31.l362; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v31.l363; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v6.l, v31.l364; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v31.l365; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v8.l, v31.l366; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v9.l, v31.l367; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v10.l, v31.l368; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v11.l, v31.l369; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v12.l, v31.l370; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v13.l, v31.l371; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v14.l, v31.l372; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v15.l, v31.l373; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v16.l, v31.l374; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v17.l, v31.l375; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v18.l, v31.l376; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v19.l, v31.l377; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v20.l, v31.l378; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v21.l, v31.l379; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v22.l, v31.l380; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v23.l, v31.l381; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v24.l, v31.l382; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v25.l, v31.l383; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v26.l, v31.l384; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v27.l, v31.l385; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v28.l, v31.l386; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v29.l, v31.l387; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v30.l, v31.l388; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]389;390; GFX11-FAKE16-LABEL: shuffle_v32i8_rebroadcast:391; GFX11-FAKE16:       ; %bb.0: ; %entry392; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)393; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off394; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)395; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, 8, v0396; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)397; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v0398; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v0399; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v0400; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v0401; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v5, v0402; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v0403; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v7, v0404; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, v0405; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v9, v0406; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, v0407; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v11, v0408; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v12, v0409; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v13, v0410; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v14, v0411; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v15, v0412; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v16, v0413; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v17, v0414; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v18, v0415; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v19, v0416; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v20, v0417; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v21, v0418; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v22, v0419; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v23, v0420; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v24, v0421; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v25, v0422; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v26, v0423; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v27, v0424; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v28, v0425; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v29, v0426; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v30, v0427; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v31, v0428; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]429entry:430  %val0 = load <32 x i8>, ptr addrspace(1) %arg0431  %val1 = shufflevector <32 x i8> %val0, <32 x i8> poison, <32 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>432  ret <32 x i8> %val1433}434 435define <2 x i16> @shuffle_v2i16_rebroadcast(ptr addrspace(1) %arg0) {436; GFX9-LABEL: shuffle_v2i16_rebroadcast:437; GFX9:       ; %bb.0: ; %entry438; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)439; GFX9-NEXT:    global_load_dword v0, v[0:1], off440; GFX9-NEXT:    s_mov_b32 s4, 0x7060302441; GFX9-NEXT:    s_waitcnt vmcnt(0)442; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s4443; GFX9-NEXT:    s_setpc_b64 s[30:31]444;445; GFX10-LABEL: shuffle_v2i16_rebroadcast:446; GFX10:       ; %bb.0: ; %entry447; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)448; GFX10-NEXT:    global_load_dword v0, v[0:1], off449; GFX10-NEXT:    s_waitcnt vmcnt(0)450; GFX10-NEXT:    v_perm_b32 v0, v0, v0, 0x7060302451; GFX10-NEXT:    s_setpc_b64 s[30:31]452;453; GFX11-TRUE16-LABEL: shuffle_v2i16_rebroadcast:454; GFX11-TRUE16:       ; %bb.0: ; %entry455; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)456; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off457; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)458; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h459; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]460;461; GFX11-FAKE16-LABEL: shuffle_v2i16_rebroadcast:462; GFX11-FAKE16:       ; %bb.0: ; %entry463; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)464; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off465; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)466; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x7060302467; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]468entry:469  %val0 = load <2 x i16>, ptr addrspace(1) %arg0470  %val1 = shufflevector <2 x i16> %val0, <2 x i16> poison, <2 x i32> <i32 1, i32 1>471  ret <2 x i16> %val1472}473 474define <4 x i16> @shuffle_v4i16_rebroadcast(ptr addrspace(1) %arg0) {475; GFX9-LABEL: shuffle_v4i16_rebroadcast:476; GFX9:       ; %bb.0: ; %entry477; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)478; GFX9-NEXT:    global_load_dword v0, v[0:1], off479; GFX9-NEXT:    s_mov_b32 s4, 0x7060302480; GFX9-NEXT:    s_waitcnt vmcnt(0)481; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s4482; GFX9-NEXT:    v_mov_b32_e32 v1, v0483; GFX9-NEXT:    s_setpc_b64 s[30:31]484;485; GFX10-LABEL: shuffle_v4i16_rebroadcast:486; GFX10:       ; %bb.0: ; %entry487; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)488; GFX10-NEXT:    global_load_dword v0, v[0:1], off489; GFX10-NEXT:    s_waitcnt vmcnt(0)490; GFX10-NEXT:    v_perm_b32 v0, v0, v0, 0x7060302491; GFX10-NEXT:    v_mov_b32_e32 v1, v0492; GFX10-NEXT:    s_setpc_b64 s[30:31]493;494; GFX11-TRUE16-LABEL: shuffle_v4i16_rebroadcast:495; GFX11-TRUE16:       ; %bb.0: ; %entry496; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)497; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off498; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)499; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h500; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)501; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, v0502; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]503;504; GFX11-FAKE16-LABEL: shuffle_v4i16_rebroadcast:505; GFX11-FAKE16:       ; %bb.0: ; %entry506; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)507; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off508; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)509; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x7060302510; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)511; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v0512; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]513entry:514  %val0 = load <4 x i16>, ptr addrspace(1) %arg0515  %val1 = shufflevector <4 x i16> %val0, <4 x i16> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>516  ret <4 x i16> %val1517}518 519define <8 x i16> @shuffle_v8i16_rebroadcast(ptr addrspace(1) %arg0) {520; GFX9-LABEL: shuffle_v8i16_rebroadcast:521; GFX9:       ; %bb.0: ; %entry522; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)523; GFX9-NEXT:    global_load_dword v0, v[0:1], off524; GFX9-NEXT:    s_mov_b32 s4, 0x7060302525; GFX9-NEXT:    s_waitcnt vmcnt(0)526; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s4527; GFX9-NEXT:    v_mov_b32_e32 v1, v0528; GFX9-NEXT:    v_mov_b32_e32 v2, v0529; GFX9-NEXT:    v_mov_b32_e32 v3, v0530; GFX9-NEXT:    s_setpc_b64 s[30:31]531;532; GFX10-LABEL: shuffle_v8i16_rebroadcast:533; GFX10:       ; %bb.0: ; %entry534; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)535; GFX10-NEXT:    global_load_dword v0, v[0:1], off536; GFX10-NEXT:    s_waitcnt vmcnt(0)537; GFX10-NEXT:    v_perm_b32 v0, v0, v0, 0x7060302538; GFX10-NEXT:    v_mov_b32_e32 v1, v0539; GFX10-NEXT:    v_mov_b32_e32 v2, v0540; GFX10-NEXT:    v_mov_b32_e32 v3, v0541; GFX10-NEXT:    s_setpc_b64 s[30:31]542;543; GFX11-TRUE16-LABEL: shuffle_v8i16_rebroadcast:544; GFX11-TRUE16:       ; %bb.0: ; %entry545; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)546; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off547; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)548; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h549; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)550; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, v0551; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v0552; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v0553; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]554;555; GFX11-FAKE16-LABEL: shuffle_v8i16_rebroadcast:556; GFX11-FAKE16:       ; %bb.0: ; %entry557; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)558; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off559; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)560; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x7060302561; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)562; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v0563; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v0564; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v0565; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]566entry:567  %val0 = load <8 x i16>, ptr addrspace(1) %arg0568  %val1 = shufflevector <8 x i16> %val0, <8 x i16> poison, <8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>569  ret <8 x i16> %val1570}571 572define <16 x i16> @shuffle_v16i16_rebroadcast(ptr addrspace(1) %arg0) {573; GFX9-LABEL: shuffle_v16i16_rebroadcast:574; GFX9:       ; %bb.0: ; %entry575; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)576; GFX9-NEXT:    global_load_dword v0, v[0:1], off577; GFX9-NEXT:    s_mov_b32 s4, 0x7060302578; GFX9-NEXT:    s_waitcnt vmcnt(0)579; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s4580; GFX9-NEXT:    v_mov_b32_e32 v1, v0581; GFX9-NEXT:    v_mov_b32_e32 v2, v0582; GFX9-NEXT:    v_mov_b32_e32 v3, v0583; GFX9-NEXT:    v_mov_b32_e32 v4, v0584; GFX9-NEXT:    v_mov_b32_e32 v5, v0585; GFX9-NEXT:    v_mov_b32_e32 v6, v0586; GFX9-NEXT:    v_mov_b32_e32 v7, v0587; GFX9-NEXT:    s_setpc_b64 s[30:31]588;589; GFX10-LABEL: shuffle_v16i16_rebroadcast:590; GFX10:       ; %bb.0: ; %entry591; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)592; GFX10-NEXT:    global_load_dword v0, v[0:1], off593; GFX10-NEXT:    s_waitcnt vmcnt(0)594; GFX10-NEXT:    v_perm_b32 v0, v0, v0, 0x7060302595; GFX10-NEXT:    v_mov_b32_e32 v1, v0596; GFX10-NEXT:    v_mov_b32_e32 v2, v0597; GFX10-NEXT:    v_mov_b32_e32 v3, v0598; GFX10-NEXT:    v_mov_b32_e32 v4, v0599; GFX10-NEXT:    v_mov_b32_e32 v5, v0600; GFX10-NEXT:    v_mov_b32_e32 v6, v0601; GFX10-NEXT:    v_mov_b32_e32 v7, v0602; GFX10-NEXT:    s_setpc_b64 s[30:31]603;604; GFX11-TRUE16-LABEL: shuffle_v16i16_rebroadcast:605; GFX11-TRUE16:       ; %bb.0: ; %entry606; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)607; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off608; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)609; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h610; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)611; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, v0612; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v0613; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v0614; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v0615; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v5, v0616; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v0617; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v7, v0618; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]619;620; GFX11-FAKE16-LABEL: shuffle_v16i16_rebroadcast:621; GFX11-FAKE16:       ; %bb.0: ; %entry622; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)623; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off624; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)625; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x7060302626; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)627; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v0628; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v0629; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v0630; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v0631; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v5, v0632; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v0633; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v7, v0634; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]635entry:636  %val0 = load <16 x i16>, ptr addrspace(1) %arg0637  %val1 = shufflevector <16 x i16> %val0, <16 x i16> poison, <16 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>638  ret <16 x i16> %val1639}640 641define <32 x i16> @shuffle_v32i16_rebroadcast(ptr addrspace(1) %arg0) {642; GFX9-LABEL: shuffle_v32i16_rebroadcast:643; GFX9:       ; %bb.0: ; %entry644; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)645; GFX9-NEXT:    global_load_dword v0, v[0:1], off646; GFX9-NEXT:    s_mov_b32 s4, 0x7060302647; GFX9-NEXT:    s_waitcnt vmcnt(0)648; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s4649; GFX9-NEXT:    v_mov_b32_e32 v1, v0650; GFX9-NEXT:    v_mov_b32_e32 v2, v0651; GFX9-NEXT:    v_mov_b32_e32 v3, v0652; GFX9-NEXT:    v_mov_b32_e32 v4, v0653; GFX9-NEXT:    v_mov_b32_e32 v5, v0654; GFX9-NEXT:    v_mov_b32_e32 v6, v0655; GFX9-NEXT:    v_mov_b32_e32 v7, v0656; GFX9-NEXT:    v_mov_b32_e32 v8, v0657; GFX9-NEXT:    v_mov_b32_e32 v9, v0658; GFX9-NEXT:    v_mov_b32_e32 v10, v0659; GFX9-NEXT:    v_mov_b32_e32 v11, v0660; GFX9-NEXT:    v_mov_b32_e32 v12, v0661; GFX9-NEXT:    v_mov_b32_e32 v13, v0662; GFX9-NEXT:    v_mov_b32_e32 v14, v0663; GFX9-NEXT:    v_mov_b32_e32 v15, v0664; GFX9-NEXT:    s_setpc_b64 s[30:31]665;666; GFX10-LABEL: shuffle_v32i16_rebroadcast:667; GFX10:       ; %bb.0: ; %entry668; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)669; GFX10-NEXT:    global_load_dword v0, v[0:1], off670; GFX10-NEXT:    s_waitcnt vmcnt(0)671; GFX10-NEXT:    v_perm_b32 v0, v0, v0, 0x7060302672; GFX10-NEXT:    v_mov_b32_e32 v1, v0673; GFX10-NEXT:    v_mov_b32_e32 v2, v0674; GFX10-NEXT:    v_mov_b32_e32 v3, v0675; GFX10-NEXT:    v_mov_b32_e32 v4, v0676; GFX10-NEXT:    v_mov_b32_e32 v5, v0677; GFX10-NEXT:    v_mov_b32_e32 v6, v0678; GFX10-NEXT:    v_mov_b32_e32 v7, v0679; GFX10-NEXT:    v_mov_b32_e32 v8, v0680; GFX10-NEXT:    v_mov_b32_e32 v9, v0681; GFX10-NEXT:    v_mov_b32_e32 v10, v0682; GFX10-NEXT:    v_mov_b32_e32 v11, v0683; GFX10-NEXT:    v_mov_b32_e32 v12, v0684; GFX10-NEXT:    v_mov_b32_e32 v13, v0685; GFX10-NEXT:    v_mov_b32_e32 v14, v0686; GFX10-NEXT:    v_mov_b32_e32 v15, v0687; GFX10-NEXT:    s_setpc_b64 s[30:31]688;689; GFX11-TRUE16-LABEL: shuffle_v32i16_rebroadcast:690; GFX11-TRUE16:       ; %bb.0: ; %entry691; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)692; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off693; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)694; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h695; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)696; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, v0697; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v0698; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v0699; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v0700; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v5, v0701; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v0702; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v7, v0703; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v8, v0704; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v9, v0705; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, v0706; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v11, v0707; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v12, v0708; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v13, v0709; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v14, v0710; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v15, v0711; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]712;713; GFX11-FAKE16-LABEL: shuffle_v32i16_rebroadcast:714; GFX11-FAKE16:       ; %bb.0: ; %entry715; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)716; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off717; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)718; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x7060302719; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)720; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v0721; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v0722; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v0723; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v0724; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v5, v0725; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v0726; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v7, v0727; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, v0728; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v9, v0729; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, v0730; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v11, v0731; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v12, v0732; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v13, v0733; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v14, v0734; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v15, v0735; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]736entry:737  %val0 = load <32 x i16>, ptr addrspace(1) %arg0738  %val1 = shufflevector <32 x i16> %val0, <32 x i16> poison, <32 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>739  ret <32 x i16> %val1740}741 742define <2 x i32> @shuffle_v2i32_rebroadcast(ptr addrspace(1) %arg0) {743; GFX9-LABEL: shuffle_v2i32_rebroadcast:744; GFX9:       ; %bb.0: ; %entry745; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)746; GFX9-NEXT:    global_load_dword v0, v[0:1], off offset:4747; GFX9-NEXT:    s_waitcnt vmcnt(0)748; GFX9-NEXT:    v_mov_b32_e32 v1, v0749; GFX9-NEXT:    s_setpc_b64 s[30:31]750;751; GFX10-LABEL: shuffle_v2i32_rebroadcast:752; GFX10:       ; %bb.0: ; %entry753; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)754; GFX10-NEXT:    global_load_dword v0, v[0:1], off offset:4755; GFX10-NEXT:    s_waitcnt vmcnt(0)756; GFX10-NEXT:    v_mov_b32_e32 v1, v0757; GFX10-NEXT:    s_setpc_b64 s[30:31]758;759; GFX11-LABEL: shuffle_v2i32_rebroadcast:760; GFX11:       ; %bb.0: ; %entry761; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)762; GFX11-NEXT:    global_load_b32 v0, v[0:1], off offset:4763; GFX11-NEXT:    s_waitcnt vmcnt(0)764; GFX11-NEXT:    v_mov_b32_e32 v1, v0765; GFX11-NEXT:    s_setpc_b64 s[30:31]766entry:767  %val0 = load <2 x i32>, ptr addrspace(1) %arg0768  %val1 = shufflevector <2 x i32> %val0, <2 x i32> poison, <2 x i32> <i32 1, i32 1>769  ret <2 x i32> %val1770}771 772define <4 x i32> @shuffle_v4i32_rebroadcast(ptr addrspace(1) %arg0) {773; GFX9-LABEL: shuffle_v4i32_rebroadcast:774; GFX9:       ; %bb.0: ; %entry775; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)776; GFX9-NEXT:    global_load_dword v0, v[0:1], off offset:4777; GFX9-NEXT:    s_waitcnt vmcnt(0)778; GFX9-NEXT:    v_mov_b32_e32 v1, v0779; GFX9-NEXT:    v_mov_b32_e32 v2, v0780; GFX9-NEXT:    v_mov_b32_e32 v3, v0781; GFX9-NEXT:    s_setpc_b64 s[30:31]782;783; GFX10-LABEL: shuffle_v4i32_rebroadcast:784; GFX10:       ; %bb.0: ; %entry785; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)786; GFX10-NEXT:    global_load_dword v0, v[0:1], off offset:4787; GFX10-NEXT:    s_waitcnt vmcnt(0)788; GFX10-NEXT:    v_mov_b32_e32 v1, v0789; GFX10-NEXT:    v_mov_b32_e32 v2, v0790; GFX10-NEXT:    v_mov_b32_e32 v3, v0791; GFX10-NEXT:    s_setpc_b64 s[30:31]792;793; GFX11-LABEL: shuffle_v4i32_rebroadcast:794; GFX11:       ; %bb.0: ; %entry795; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)796; GFX11-NEXT:    global_load_b32 v0, v[0:1], off offset:4797; GFX11-NEXT:    s_waitcnt vmcnt(0)798; GFX11-NEXT:    v_mov_b32_e32 v1, v0799; GFX11-NEXT:    v_mov_b32_e32 v2, v0800; GFX11-NEXT:    v_mov_b32_e32 v3, v0801; GFX11-NEXT:    s_setpc_b64 s[30:31]802entry:803  %val0 = load <4 x i32>, ptr addrspace(1) %arg0804  %val1 = shufflevector <4 x i32> %val0, <4 x i32> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>805  ret <4 x i32> %val1806}807 808define <8 x i32> @shuffle_v8i32_rebroadcast(ptr addrspace(1) %arg0) {809; GFX9-LABEL: shuffle_v8i32_rebroadcast:810; GFX9:       ; %bb.0: ; %entry811; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)812; GFX9-NEXT:    global_load_dword v0, v[0:1], off offset:4813; GFX9-NEXT:    s_waitcnt vmcnt(0)814; GFX9-NEXT:    v_mov_b32_e32 v1, v0815; GFX9-NEXT:    v_mov_b32_e32 v2, v0816; GFX9-NEXT:    v_mov_b32_e32 v3, v0817; GFX9-NEXT:    v_mov_b32_e32 v4, v0818; GFX9-NEXT:    v_mov_b32_e32 v5, v0819; GFX9-NEXT:    v_mov_b32_e32 v6, v0820; GFX9-NEXT:    v_mov_b32_e32 v7, v0821; GFX9-NEXT:    s_setpc_b64 s[30:31]822;823; GFX10-LABEL: shuffle_v8i32_rebroadcast:824; GFX10:       ; %bb.0: ; %entry825; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)826; GFX10-NEXT:    global_load_dword v0, v[0:1], off offset:4827; GFX10-NEXT:    s_waitcnt vmcnt(0)828; GFX10-NEXT:    v_mov_b32_e32 v1, v0829; GFX10-NEXT:    v_mov_b32_e32 v2, v0830; GFX10-NEXT:    v_mov_b32_e32 v3, v0831; GFX10-NEXT:    v_mov_b32_e32 v4, v0832; GFX10-NEXT:    v_mov_b32_e32 v5, v0833; GFX10-NEXT:    v_mov_b32_e32 v6, v0834; GFX10-NEXT:    v_mov_b32_e32 v7, v0835; GFX10-NEXT:    s_setpc_b64 s[30:31]836;837; GFX11-LABEL: shuffle_v8i32_rebroadcast:838; GFX11:       ; %bb.0: ; %entry839; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)840; GFX11-NEXT:    global_load_b32 v0, v[0:1], off offset:4841; GFX11-NEXT:    s_waitcnt vmcnt(0)842; GFX11-NEXT:    v_mov_b32_e32 v1, v0843; GFX11-NEXT:    v_mov_b32_e32 v2, v0844; GFX11-NEXT:    v_mov_b32_e32 v3, v0845; GFX11-NEXT:    v_mov_b32_e32 v4, v0846; GFX11-NEXT:    v_mov_b32_e32 v5, v0847; GFX11-NEXT:    v_mov_b32_e32 v6, v0848; GFX11-NEXT:    v_mov_b32_e32 v7, v0849; GFX11-NEXT:    s_setpc_b64 s[30:31]850entry:851  %val0 = load <8 x i32>, ptr addrspace(1) %arg0852  %val1 = shufflevector <8 x i32> %val0, <8 x i32> poison, <8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>853  ret <8 x i32> %val1854}855 856define <16 x i32> @shuffle_v16i32_rebroadcast(ptr addrspace(1) %arg0) {857; GFX9-LABEL: shuffle_v16i32_rebroadcast:858; GFX9:       ; %bb.0: ; %entry859; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)860; GFX9-NEXT:    global_load_dword v0, v[0:1], off offset:4861; GFX9-NEXT:    s_waitcnt vmcnt(0)862; GFX9-NEXT:    v_mov_b32_e32 v1, v0863; GFX9-NEXT:    v_mov_b32_e32 v2, v0864; GFX9-NEXT:    v_mov_b32_e32 v3, v0865; GFX9-NEXT:    v_mov_b32_e32 v4, v0866; GFX9-NEXT:    v_mov_b32_e32 v5, v0867; GFX9-NEXT:    v_mov_b32_e32 v6, v0868; GFX9-NEXT:    v_mov_b32_e32 v7, v0869; GFX9-NEXT:    v_mov_b32_e32 v8, v0870; GFX9-NEXT:    v_mov_b32_e32 v9, v0871; GFX9-NEXT:    v_mov_b32_e32 v10, v0872; GFX9-NEXT:    v_mov_b32_e32 v11, v0873; GFX9-NEXT:    v_mov_b32_e32 v12, v0874; GFX9-NEXT:    v_mov_b32_e32 v13, v0875; GFX9-NEXT:    v_mov_b32_e32 v14, v0876; GFX9-NEXT:    v_mov_b32_e32 v15, v0877; GFX9-NEXT:    s_setpc_b64 s[30:31]878;879; GFX10-LABEL: shuffle_v16i32_rebroadcast:880; GFX10:       ; %bb.0: ; %entry881; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)882; GFX10-NEXT:    global_load_dword v0, v[0:1], off offset:4883; GFX10-NEXT:    s_waitcnt vmcnt(0)884; GFX10-NEXT:    v_mov_b32_e32 v1, v0885; GFX10-NEXT:    v_mov_b32_e32 v2, v0886; GFX10-NEXT:    v_mov_b32_e32 v3, v0887; GFX10-NEXT:    v_mov_b32_e32 v4, v0888; GFX10-NEXT:    v_mov_b32_e32 v5, v0889; GFX10-NEXT:    v_mov_b32_e32 v6, v0890; GFX10-NEXT:    v_mov_b32_e32 v7, v0891; GFX10-NEXT:    v_mov_b32_e32 v8, v0892; GFX10-NEXT:    v_mov_b32_e32 v9, v0893; GFX10-NEXT:    v_mov_b32_e32 v10, v0894; GFX10-NEXT:    v_mov_b32_e32 v11, v0895; GFX10-NEXT:    v_mov_b32_e32 v12, v0896; GFX10-NEXT:    v_mov_b32_e32 v13, v0897; GFX10-NEXT:    v_mov_b32_e32 v14, v0898; GFX10-NEXT:    v_mov_b32_e32 v15, v0899; GFX10-NEXT:    s_setpc_b64 s[30:31]900;901; GFX11-LABEL: shuffle_v16i32_rebroadcast:902; GFX11:       ; %bb.0: ; %entry903; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)904; GFX11-NEXT:    global_load_b32 v0, v[0:1], off offset:4905; GFX11-NEXT:    s_waitcnt vmcnt(0)906; GFX11-NEXT:    v_mov_b32_e32 v1, v0907; GFX11-NEXT:    v_mov_b32_e32 v2, v0908; GFX11-NEXT:    v_mov_b32_e32 v3, v0909; GFX11-NEXT:    v_mov_b32_e32 v4, v0910; GFX11-NEXT:    v_mov_b32_e32 v5, v0911; GFX11-NEXT:    v_mov_b32_e32 v6, v0912; GFX11-NEXT:    v_mov_b32_e32 v7, v0913; GFX11-NEXT:    v_mov_b32_e32 v8, v0914; GFX11-NEXT:    v_mov_b32_e32 v9, v0915; GFX11-NEXT:    v_mov_b32_e32 v10, v0916; GFX11-NEXT:    v_mov_b32_e32 v11, v0917; GFX11-NEXT:    v_mov_b32_e32 v12, v0918; GFX11-NEXT:    v_mov_b32_e32 v13, v0919; GFX11-NEXT:    v_mov_b32_e32 v14, v0920; GFX11-NEXT:    v_mov_b32_e32 v15, v0921; GFX11-NEXT:    s_setpc_b64 s[30:31]922entry:923  %val0 = load <16 x i32>, ptr addrspace(1) %arg0924  %val1 = shufflevector <16 x i32> %val0, <16 x i32> poison, <16 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>925  ret <16 x i32> %val1926}927 928define <32 x i32> @shuffle_v32i32_rebroadcast(ptr addrspace(1) %arg0) {929; GFX9-LABEL: shuffle_v32i32_rebroadcast:930; GFX9:       ; %bb.0: ; %entry931; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)932; GFX9-NEXT:    global_load_dword v0, v[0:1], off offset:4933; GFX9-NEXT:    s_waitcnt vmcnt(0)934; GFX9-NEXT:    v_mov_b32_e32 v1, v0935; GFX9-NEXT:    v_mov_b32_e32 v2, v0936; GFX9-NEXT:    v_mov_b32_e32 v3, v0937; GFX9-NEXT:    v_mov_b32_e32 v4, v0938; GFX9-NEXT:    v_mov_b32_e32 v5, v0939; GFX9-NEXT:    v_mov_b32_e32 v6, v0940; GFX9-NEXT:    v_mov_b32_e32 v7, v0941; GFX9-NEXT:    v_mov_b32_e32 v8, v0942; GFX9-NEXT:    v_mov_b32_e32 v9, v0943; GFX9-NEXT:    v_mov_b32_e32 v10, v0944; GFX9-NEXT:    v_mov_b32_e32 v11, v0945; GFX9-NEXT:    v_mov_b32_e32 v12, v0946; GFX9-NEXT:    v_mov_b32_e32 v13, v0947; GFX9-NEXT:    v_mov_b32_e32 v14, v0948; GFX9-NEXT:    v_mov_b32_e32 v15, v0949; GFX9-NEXT:    v_mov_b32_e32 v16, v0950; GFX9-NEXT:    v_mov_b32_e32 v17, v0951; GFX9-NEXT:    v_mov_b32_e32 v18, v0952; GFX9-NEXT:    v_mov_b32_e32 v19, v0953; GFX9-NEXT:    v_mov_b32_e32 v20, v0954; GFX9-NEXT:    v_mov_b32_e32 v21, v0955; GFX9-NEXT:    v_mov_b32_e32 v22, v0956; GFX9-NEXT:    v_mov_b32_e32 v23, v0957; GFX9-NEXT:    v_mov_b32_e32 v24, v0958; GFX9-NEXT:    v_mov_b32_e32 v25, v0959; GFX9-NEXT:    v_mov_b32_e32 v26, v0960; GFX9-NEXT:    v_mov_b32_e32 v27, v0961; GFX9-NEXT:    v_mov_b32_e32 v28, v0962; GFX9-NEXT:    v_mov_b32_e32 v29, v0963; GFX9-NEXT:    v_mov_b32_e32 v30, v0964; GFX9-NEXT:    v_mov_b32_e32 v31, v0965; GFX9-NEXT:    s_setpc_b64 s[30:31]966;967; GFX10-LABEL: shuffle_v32i32_rebroadcast:968; GFX10:       ; %bb.0: ; %entry969; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)970; GFX10-NEXT:    global_load_dword v0, v[0:1], off offset:4971; GFX10-NEXT:    s_waitcnt vmcnt(0)972; GFX10-NEXT:    v_mov_b32_e32 v1, v0973; GFX10-NEXT:    v_mov_b32_e32 v2, v0974; GFX10-NEXT:    v_mov_b32_e32 v3, v0975; GFX10-NEXT:    v_mov_b32_e32 v4, v0976; GFX10-NEXT:    v_mov_b32_e32 v5, v0977; GFX10-NEXT:    v_mov_b32_e32 v6, v0978; GFX10-NEXT:    v_mov_b32_e32 v7, v0979; GFX10-NEXT:    v_mov_b32_e32 v8, v0980; GFX10-NEXT:    v_mov_b32_e32 v9, v0981; GFX10-NEXT:    v_mov_b32_e32 v10, v0982; GFX10-NEXT:    v_mov_b32_e32 v11, v0983; GFX10-NEXT:    v_mov_b32_e32 v12, v0984; GFX10-NEXT:    v_mov_b32_e32 v13, v0985; GFX10-NEXT:    v_mov_b32_e32 v14, v0986; GFX10-NEXT:    v_mov_b32_e32 v15, v0987; GFX10-NEXT:    v_mov_b32_e32 v16, v0988; GFX10-NEXT:    v_mov_b32_e32 v17, v0989; GFX10-NEXT:    v_mov_b32_e32 v18, v0990; GFX10-NEXT:    v_mov_b32_e32 v19, v0991; GFX10-NEXT:    v_mov_b32_e32 v20, v0992; GFX10-NEXT:    v_mov_b32_e32 v21, v0993; GFX10-NEXT:    v_mov_b32_e32 v22, v0994; GFX10-NEXT:    v_mov_b32_e32 v23, v0995; GFX10-NEXT:    v_mov_b32_e32 v24, v0996; GFX10-NEXT:    v_mov_b32_e32 v25, v0997; GFX10-NEXT:    v_mov_b32_e32 v26, v0998; GFX10-NEXT:    v_mov_b32_e32 v27, v0999; GFX10-NEXT:    v_mov_b32_e32 v28, v01000; GFX10-NEXT:    v_mov_b32_e32 v29, v01001; GFX10-NEXT:    v_mov_b32_e32 v30, v01002; GFX10-NEXT:    v_mov_b32_e32 v31, v01003; GFX10-NEXT:    s_setpc_b64 s[30:31]1004;1005; GFX11-LABEL: shuffle_v32i32_rebroadcast:1006; GFX11:       ; %bb.0: ; %entry1007; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1008; GFX11-NEXT:    global_load_b32 v0, v[0:1], off offset:41009; GFX11-NEXT:    s_waitcnt vmcnt(0)1010; GFX11-NEXT:    v_mov_b32_e32 v1, v01011; GFX11-NEXT:    v_mov_b32_e32 v2, v01012; GFX11-NEXT:    v_mov_b32_e32 v3, v01013; GFX11-NEXT:    v_mov_b32_e32 v4, v01014; GFX11-NEXT:    v_mov_b32_e32 v5, v01015; GFX11-NEXT:    v_mov_b32_e32 v6, v01016; GFX11-NEXT:    v_mov_b32_e32 v7, v01017; GFX11-NEXT:    v_mov_b32_e32 v8, v01018; GFX11-NEXT:    v_mov_b32_e32 v9, v01019; GFX11-NEXT:    v_mov_b32_e32 v10, v01020; GFX11-NEXT:    v_mov_b32_e32 v11, v01021; GFX11-NEXT:    v_mov_b32_e32 v12, v01022; GFX11-NEXT:    v_mov_b32_e32 v13, v01023; GFX11-NEXT:    v_mov_b32_e32 v14, v01024; GFX11-NEXT:    v_mov_b32_e32 v15, v01025; GFX11-NEXT:    v_mov_b32_e32 v16, v01026; GFX11-NEXT:    v_mov_b32_e32 v17, v01027; GFX11-NEXT:    v_mov_b32_e32 v18, v01028; GFX11-NEXT:    v_mov_b32_e32 v19, v01029; GFX11-NEXT:    v_mov_b32_e32 v20, v01030; GFX11-NEXT:    v_mov_b32_e32 v21, v01031; GFX11-NEXT:    v_mov_b32_e32 v22, v01032; GFX11-NEXT:    v_mov_b32_e32 v23, v01033; GFX11-NEXT:    v_mov_b32_e32 v24, v01034; GFX11-NEXT:    v_mov_b32_e32 v25, v01035; GFX11-NEXT:    v_mov_b32_e32 v26, v01036; GFX11-NEXT:    v_mov_b32_e32 v27, v01037; GFX11-NEXT:    v_mov_b32_e32 v28, v01038; GFX11-NEXT:    v_mov_b32_e32 v29, v01039; GFX11-NEXT:    v_mov_b32_e32 v30, v01040; GFX11-NEXT:    v_mov_b32_e32 v31, v01041; GFX11-NEXT:    s_setpc_b64 s[30:31]1042entry:1043  %val0 = load <32 x i32>, ptr addrspace(1) %arg01044  %val1 = shufflevector <32 x i32> %val0, <32 x i32> poison, <32 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>1045  ret <32 x i32> %val11046}1047 1048define <2 x bfloat> @shuffle_v2bf16_rebroadcast(ptr addrspace(1) %arg0) {1049; GFX9-LABEL: shuffle_v2bf16_rebroadcast:1050; GFX9:       ; %bb.0: ; %entry1051; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1052; GFX9-NEXT:    global_load_dword v0, v[0:1], off1053; GFX9-NEXT:    s_mov_b32 s4, 0x70603021054; GFX9-NEXT:    s_waitcnt vmcnt(0)1055; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s41056; GFX9-NEXT:    s_setpc_b64 s[30:31]1057;1058; GFX10-LABEL: shuffle_v2bf16_rebroadcast:1059; GFX10:       ; %bb.0: ; %entry1060; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1061; GFX10-NEXT:    global_load_dword v0, v[0:1], off1062; GFX10-NEXT:    s_waitcnt vmcnt(0)1063; GFX10-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021064; GFX10-NEXT:    s_setpc_b64 s[30:31]1065;1066; GFX11-TRUE16-LABEL: shuffle_v2bf16_rebroadcast:1067; GFX11-TRUE16:       ; %bb.0: ; %entry1068; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1069; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off1070; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1071; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h1072; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]1073;1074; GFX11-FAKE16-LABEL: shuffle_v2bf16_rebroadcast:1075; GFX11-FAKE16:       ; %bb.0: ; %entry1076; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1077; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off1078; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1079; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021080; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]1081entry:1082  %val0 = load <2 x bfloat>, ptr addrspace(1) %arg01083  %val1 = shufflevector <2 x bfloat> %val0, <2 x bfloat> poison, <2 x i32> <i32 1, i32 1>1084  ret <2 x bfloat> %val11085}1086 1087define <3 x bfloat> @shuffle_v3bf16_rebroadcast(ptr addrspace(1) %arg0) {1088; GFX9-LABEL: shuffle_v3bf16_rebroadcast:1089; GFX9:       ; %bb.0: ; %entry1090; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1091; GFX9-NEXT:    global_load_dword v1, v[0:1], off1092; GFX9-NEXT:    s_mov_b32 s4, 0x70603021093; GFX9-NEXT:    s_waitcnt vmcnt(0)1094; GFX9-NEXT:    v_perm_b32 v0, v1, v1, s41095; GFX9-NEXT:    v_alignbit_b32 v1, s4, v1, 161096; GFX9-NEXT:    s_setpc_b64 s[30:31]1097;1098; GFX10-LABEL: shuffle_v3bf16_rebroadcast:1099; GFX10:       ; %bb.0: ; %entry1100; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1101; GFX10-NEXT:    global_load_dword v1, v[0:1], off1102; GFX10-NEXT:    s_waitcnt vmcnt(0)1103; GFX10-NEXT:    v_perm_b32 v0, v1, v1, 0x70603021104; GFX10-NEXT:    v_alignbit_b32 v1, s4, v1, 161105; GFX10-NEXT:    s_setpc_b64 s[30:31]1106;1107; GFX11-TRUE16-LABEL: shuffle_v3bf16_rebroadcast:1108; GFX11-TRUE16:       ; %bb.0: ; %entry1109; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1110; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off1111; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1112; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h1113; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v0.h1114; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]1115;1116; GFX11-FAKE16-LABEL: shuffle_v3bf16_rebroadcast:1117; GFX11-FAKE16:       ; %bb.0: ; %entry1118; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1119; GFX11-FAKE16-NEXT:    global_load_b32 v1, v[0:1], off1120; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1121; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v1, v1, 0x70603021122; GFX11-FAKE16-NEXT:    v_alignbit_b32 v1, s0, v1, 161123; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]1124entry:1125  %val0 = load <3 x bfloat>, ptr addrspace(1) %arg01126  %val1 = shufflevector <3 x bfloat> %val0, <3 x bfloat> poison, <3 x i32> <i32 1, i32 1, i32 1>1127  ret <3 x bfloat> %val11128}1129 1130define <4 x bfloat> @shuffle_v4bf16_rebroadcast(ptr addrspace(1) %arg0) {1131; GFX9-LABEL: shuffle_v4bf16_rebroadcast:1132; GFX9:       ; %bb.0: ; %entry1133; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1134; GFX9-NEXT:    global_load_dword v0, v[0:1], off1135; GFX9-NEXT:    s_mov_b32 s4, 0x70603021136; GFX9-NEXT:    s_waitcnt vmcnt(0)1137; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s41138; GFX9-NEXT:    v_mov_b32_e32 v1, v01139; GFX9-NEXT:    s_setpc_b64 s[30:31]1140;1141; GFX10-LABEL: shuffle_v4bf16_rebroadcast:1142; GFX10:       ; %bb.0: ; %entry1143; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1144; GFX10-NEXT:    global_load_dword v0, v[0:1], off1145; GFX10-NEXT:    s_waitcnt vmcnt(0)1146; GFX10-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021147; GFX10-NEXT:    v_mov_b32_e32 v1, v01148; GFX10-NEXT:    s_setpc_b64 s[30:31]1149;1150; GFX11-TRUE16-LABEL: shuffle_v4bf16_rebroadcast:1151; GFX11-TRUE16:       ; %bb.0: ; %entry1152; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1153; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off1154; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1155; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h1156; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1157; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, v01158; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]1159;1160; GFX11-FAKE16-LABEL: shuffle_v4bf16_rebroadcast:1161; GFX11-FAKE16:       ; %bb.0: ; %entry1162; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1163; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off1164; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1165; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021166; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1167; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v01168; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]1169entry:1170  %val0 = load <4 x bfloat>, ptr addrspace(1) %arg01171  %val1 = shufflevector <4 x bfloat> %val0, <4 x bfloat> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>1172  ret <4 x bfloat> %val11173}1174 1175define <6 x bfloat> @shuffle_v6bf16_rebroadcast(ptr addrspace(1) %arg0) {1176; GFX9-LABEL: shuffle_v6bf16_rebroadcast:1177; GFX9:       ; %bb.0: ; %entry1178; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1179; GFX9-NEXT:    global_load_dword v0, v[0:1], off1180; GFX9-NEXT:    s_mov_b32 s4, 0x70603021181; GFX9-NEXT:    s_waitcnt vmcnt(0)1182; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s41183; GFX9-NEXT:    v_mov_b32_e32 v1, v01184; GFX9-NEXT:    v_mov_b32_e32 v2, v01185; GFX9-NEXT:    s_setpc_b64 s[30:31]1186;1187; GFX10-LABEL: shuffle_v6bf16_rebroadcast:1188; GFX10:       ; %bb.0: ; %entry1189; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1190; GFX10-NEXT:    global_load_dword v0, v[0:1], off1191; GFX10-NEXT:    s_waitcnt vmcnt(0)1192; GFX10-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021193; GFX10-NEXT:    v_mov_b32_e32 v1, v01194; GFX10-NEXT:    v_mov_b32_e32 v2, v01195; GFX10-NEXT:    s_setpc_b64 s[30:31]1196;1197; GFX11-TRUE16-LABEL: shuffle_v6bf16_rebroadcast:1198; GFX11-TRUE16:       ; %bb.0: ; %entry1199; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1200; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off1201; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1202; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h1203; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1204; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, v01205; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v01206; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]1207;1208; GFX11-FAKE16-LABEL: shuffle_v6bf16_rebroadcast:1209; GFX11-FAKE16:       ; %bb.0: ; %entry1210; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1211; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off1212; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1213; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021214; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1215; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v01216; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v01217; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]1218entry:1219  %val0 = load <6 x bfloat>, ptr addrspace(1) %arg01220  %val1 = shufflevector <6 x bfloat> %val0, <6 x bfloat> poison, <6 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>1221  ret <6 x bfloat> %val11222}1223 1224define <8 x bfloat> @shuffle_v8bf16_rebroadcast(ptr addrspace(1) %arg0) {1225; GFX9-LABEL: shuffle_v8bf16_rebroadcast:1226; GFX9:       ; %bb.0: ; %entry1227; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1228; GFX9-NEXT:    global_load_dword v0, v[0:1], off1229; GFX9-NEXT:    s_mov_b32 s4, 0x70603021230; GFX9-NEXT:    s_waitcnt vmcnt(0)1231; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s41232; GFX9-NEXT:    v_mov_b32_e32 v1, v01233; GFX9-NEXT:    v_mov_b32_e32 v2, v01234; GFX9-NEXT:    v_mov_b32_e32 v3, v01235; GFX9-NEXT:    s_setpc_b64 s[30:31]1236;1237; GFX10-LABEL: shuffle_v8bf16_rebroadcast:1238; GFX10:       ; %bb.0: ; %entry1239; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1240; GFX10-NEXT:    global_load_dword v0, v[0:1], off1241; GFX10-NEXT:    s_waitcnt vmcnt(0)1242; GFX10-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021243; GFX10-NEXT:    v_mov_b32_e32 v1, v01244; GFX10-NEXT:    v_mov_b32_e32 v2, v01245; GFX10-NEXT:    v_mov_b32_e32 v3, v01246; GFX10-NEXT:    s_setpc_b64 s[30:31]1247;1248; GFX11-TRUE16-LABEL: shuffle_v8bf16_rebroadcast:1249; GFX11-TRUE16:       ; %bb.0: ; %entry1250; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1251; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off1252; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1253; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h1254; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1255; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, v01256; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v01257; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v01258; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]1259;1260; GFX11-FAKE16-LABEL: shuffle_v8bf16_rebroadcast:1261; GFX11-FAKE16:       ; %bb.0: ; %entry1262; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1263; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off1264; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1265; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021266; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1267; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v01268; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v01269; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v01270; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]1271entry:1272  %val0 = load <8 x bfloat>, ptr addrspace(1) %arg01273  %val1 = shufflevector <8 x bfloat> %val0, <8 x bfloat> poison, <8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>1274  ret <8 x bfloat> %val11275}1276 1277define <16 x bfloat> @shuffle_v16bf16_rebroadcast(ptr addrspace(1) %arg0) {1278; GFX9-LABEL: shuffle_v16bf16_rebroadcast:1279; GFX9:       ; %bb.0: ; %entry1280; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1281; GFX9-NEXT:    global_load_dword v0, v[0:1], off1282; GFX9-NEXT:    s_mov_b32 s4, 0x70603021283; GFX9-NEXT:    s_waitcnt vmcnt(0)1284; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s41285; GFX9-NEXT:    v_mov_b32_e32 v1, v01286; GFX9-NEXT:    v_mov_b32_e32 v2, v01287; GFX9-NEXT:    v_mov_b32_e32 v3, v01288; GFX9-NEXT:    v_mov_b32_e32 v4, v01289; GFX9-NEXT:    v_mov_b32_e32 v5, v01290; GFX9-NEXT:    v_mov_b32_e32 v6, v01291; GFX9-NEXT:    v_mov_b32_e32 v7, v01292; GFX9-NEXT:    s_setpc_b64 s[30:31]1293;1294; GFX10-LABEL: shuffle_v16bf16_rebroadcast:1295; GFX10:       ; %bb.0: ; %entry1296; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1297; GFX10-NEXT:    global_load_dword v0, v[0:1], off1298; GFX10-NEXT:    s_waitcnt vmcnt(0)1299; GFX10-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021300; GFX10-NEXT:    v_mov_b32_e32 v1, v01301; GFX10-NEXT:    v_mov_b32_e32 v2, v01302; GFX10-NEXT:    v_mov_b32_e32 v3, v01303; GFX10-NEXT:    v_mov_b32_e32 v4, v01304; GFX10-NEXT:    v_mov_b32_e32 v5, v01305; GFX10-NEXT:    v_mov_b32_e32 v6, v01306; GFX10-NEXT:    v_mov_b32_e32 v7, v01307; GFX10-NEXT:    s_setpc_b64 s[30:31]1308;1309; GFX11-TRUE16-LABEL: shuffle_v16bf16_rebroadcast:1310; GFX11-TRUE16:       ; %bb.0: ; %entry1311; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1312; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off1313; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1314; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h1315; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1316; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, v01317; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v01318; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v01319; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v01320; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v5, v01321; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v01322; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v7, v01323; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]1324;1325; GFX11-FAKE16-LABEL: shuffle_v16bf16_rebroadcast:1326; GFX11-FAKE16:       ; %bb.0: ; %entry1327; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1328; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off1329; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1330; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021331; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1332; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v01333; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v01334; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v01335; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v01336; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v5, v01337; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v01338; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v7, v01339; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]1340entry:1341  %val0 = load <16 x bfloat>, ptr addrspace(1) %arg01342  %val1 = shufflevector <16 x bfloat> %val0, <16 x bfloat> poison, <16 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>1343  ret <16 x bfloat> %val11344}1345 1346define <32 x bfloat> @shuffle_v32bf16_rebroadcast(ptr addrspace(1) %arg0) {1347; GFX9-LABEL: shuffle_v32bf16_rebroadcast:1348; GFX9:       ; %bb.0: ; %entry1349; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1350; GFX9-NEXT:    global_load_dword v0, v[0:1], off1351; GFX9-NEXT:    s_mov_b32 s4, 0x70603021352; GFX9-NEXT:    s_waitcnt vmcnt(0)1353; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s41354; GFX9-NEXT:    v_mov_b32_e32 v1, v01355; GFX9-NEXT:    v_mov_b32_e32 v2, v01356; GFX9-NEXT:    v_mov_b32_e32 v3, v01357; GFX9-NEXT:    v_mov_b32_e32 v4, v01358; GFX9-NEXT:    v_mov_b32_e32 v5, v01359; GFX9-NEXT:    v_mov_b32_e32 v6, v01360; GFX9-NEXT:    v_mov_b32_e32 v7, v01361; GFX9-NEXT:    v_mov_b32_e32 v8, v01362; GFX9-NEXT:    v_mov_b32_e32 v9, v01363; GFX9-NEXT:    v_mov_b32_e32 v10, v01364; GFX9-NEXT:    v_mov_b32_e32 v11, v01365; GFX9-NEXT:    v_mov_b32_e32 v12, v01366; GFX9-NEXT:    v_mov_b32_e32 v13, v01367; GFX9-NEXT:    v_mov_b32_e32 v14, v01368; GFX9-NEXT:    v_mov_b32_e32 v15, v01369; GFX9-NEXT:    s_setpc_b64 s[30:31]1370;1371; GFX10-LABEL: shuffle_v32bf16_rebroadcast:1372; GFX10:       ; %bb.0: ; %entry1373; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1374; GFX10-NEXT:    global_load_dword v0, v[0:1], off1375; GFX10-NEXT:    s_waitcnt vmcnt(0)1376; GFX10-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021377; GFX10-NEXT:    v_mov_b32_e32 v1, v01378; GFX10-NEXT:    v_mov_b32_e32 v2, v01379; GFX10-NEXT:    v_mov_b32_e32 v3, v01380; GFX10-NEXT:    v_mov_b32_e32 v4, v01381; GFX10-NEXT:    v_mov_b32_e32 v5, v01382; GFX10-NEXT:    v_mov_b32_e32 v6, v01383; GFX10-NEXT:    v_mov_b32_e32 v7, v01384; GFX10-NEXT:    v_mov_b32_e32 v8, v01385; GFX10-NEXT:    v_mov_b32_e32 v9, v01386; GFX10-NEXT:    v_mov_b32_e32 v10, v01387; GFX10-NEXT:    v_mov_b32_e32 v11, v01388; GFX10-NEXT:    v_mov_b32_e32 v12, v01389; GFX10-NEXT:    v_mov_b32_e32 v13, v01390; GFX10-NEXT:    v_mov_b32_e32 v14, v01391; GFX10-NEXT:    v_mov_b32_e32 v15, v01392; GFX10-NEXT:    s_setpc_b64 s[30:31]1393;1394; GFX11-TRUE16-LABEL: shuffle_v32bf16_rebroadcast:1395; GFX11-TRUE16:       ; %bb.0: ; %entry1396; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1397; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off1398; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1399; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h1400; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1401; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, v01402; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v01403; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v01404; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v01405; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v5, v01406; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v01407; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v7, v01408; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v8, v01409; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v9, v01410; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, v01411; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v11, v01412; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v12, v01413; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v13, v01414; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v14, v01415; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v15, v01416; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]1417;1418; GFX11-FAKE16-LABEL: shuffle_v32bf16_rebroadcast:1419; GFX11-FAKE16:       ; %bb.0: ; %entry1420; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1421; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off1422; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1423; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021424; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1425; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v01426; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v01427; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v01428; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v01429; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v5, v01430; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v01431; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v7, v01432; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, v01433; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v9, v01434; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, v01435; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v11, v01436; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v12, v01437; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v13, v01438; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v14, v01439; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v15, v01440; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]1441entry:1442  %val0 = load <32 x bfloat>, ptr addrspace(1) %arg01443  %val1 = shufflevector <32 x bfloat> %val0, <32 x bfloat> poison, <32 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>1444  ret <32 x bfloat> %val11445}1446 1447define <2 x half> @shuffle_v2f16_rebroadcast(ptr addrspace(1) %arg0) {1448; GFX9-LABEL: shuffle_v2f16_rebroadcast:1449; GFX9:       ; %bb.0: ; %entry1450; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1451; GFX9-NEXT:    global_load_dword v0, v[0:1], off1452; GFX9-NEXT:    s_mov_b32 s4, 0x70603021453; GFX9-NEXT:    s_waitcnt vmcnt(0)1454; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s41455; GFX9-NEXT:    s_setpc_b64 s[30:31]1456;1457; GFX10-LABEL: shuffle_v2f16_rebroadcast:1458; GFX10:       ; %bb.0: ; %entry1459; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1460; GFX10-NEXT:    global_load_dword v0, v[0:1], off1461; GFX10-NEXT:    s_waitcnt vmcnt(0)1462; GFX10-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021463; GFX10-NEXT:    s_setpc_b64 s[30:31]1464;1465; GFX11-TRUE16-LABEL: shuffle_v2f16_rebroadcast:1466; GFX11-TRUE16:       ; %bb.0: ; %entry1467; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1468; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off1469; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1470; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h1471; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]1472;1473; GFX11-FAKE16-LABEL: shuffle_v2f16_rebroadcast:1474; GFX11-FAKE16:       ; %bb.0: ; %entry1475; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1476; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off1477; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1478; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021479; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]1480entry:1481  %val0 = load <2 x half>, ptr addrspace(1) %arg01482  %val1 = shufflevector <2 x half> %val0, <2 x half> poison, <2 x i32> <i32 1, i32 1>1483  ret <2 x half> %val11484}1485 1486define <3 x half> @shuffle_v3f16_rebroadcast(ptr addrspace(1) %arg0) {1487; GFX9-LABEL: shuffle_v3f16_rebroadcast:1488; GFX9:       ; %bb.0: ; %entry1489; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1490; GFX9-NEXT:    global_load_dword v1, v[0:1], off1491; GFX9-NEXT:    s_mov_b32 s4, 0x70603021492; GFX9-NEXT:    s_waitcnt vmcnt(0)1493; GFX9-NEXT:    v_perm_b32 v0, v1, v1, s41494; GFX9-NEXT:    v_alignbit_b32 v1, s4, v1, 161495; GFX9-NEXT:    s_setpc_b64 s[30:31]1496;1497; GFX10-LABEL: shuffle_v3f16_rebroadcast:1498; GFX10:       ; %bb.0: ; %entry1499; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1500; GFX10-NEXT:    global_load_dword v1, v[0:1], off1501; GFX10-NEXT:    s_waitcnt vmcnt(0)1502; GFX10-NEXT:    v_perm_b32 v0, v1, v1, 0x70603021503; GFX10-NEXT:    v_alignbit_b32 v1, s4, v1, 161504; GFX10-NEXT:    s_setpc_b64 s[30:31]1505;1506; GFX11-TRUE16-LABEL: shuffle_v3f16_rebroadcast:1507; GFX11-TRUE16:       ; %bb.0: ; %entry1508; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1509; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off1510; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1511; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h1512; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.l, v0.h1513; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]1514;1515; GFX11-FAKE16-LABEL: shuffle_v3f16_rebroadcast:1516; GFX11-FAKE16:       ; %bb.0: ; %entry1517; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1518; GFX11-FAKE16-NEXT:    global_load_b32 v1, v[0:1], off1519; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1520; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v1, v1, 0x70603021521; GFX11-FAKE16-NEXT:    v_alignbit_b32 v1, s0, v1, 161522; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]1523entry:1524  %val0 = load <3 x half>, ptr addrspace(1) %arg01525  %val1 = shufflevector <3 x half> %val0, <3 x half> poison, <3 x i32> <i32 1, i32 1, i32 1>1526  ret <3 x half> %val11527}1528 1529define <4 x half> @shuffle_v4f16_rebroadcast(ptr addrspace(1) %arg0) {1530; GFX9-LABEL: shuffle_v4f16_rebroadcast:1531; GFX9:       ; %bb.0: ; %entry1532; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1533; GFX9-NEXT:    global_load_dword v0, v[0:1], off1534; GFX9-NEXT:    s_mov_b32 s4, 0x70603021535; GFX9-NEXT:    s_waitcnt vmcnt(0)1536; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s41537; GFX9-NEXT:    v_mov_b32_e32 v1, v01538; GFX9-NEXT:    s_setpc_b64 s[30:31]1539;1540; GFX10-LABEL: shuffle_v4f16_rebroadcast:1541; GFX10:       ; %bb.0: ; %entry1542; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1543; GFX10-NEXT:    global_load_dword v0, v[0:1], off1544; GFX10-NEXT:    s_waitcnt vmcnt(0)1545; GFX10-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021546; GFX10-NEXT:    v_mov_b32_e32 v1, v01547; GFX10-NEXT:    s_setpc_b64 s[30:31]1548;1549; GFX11-TRUE16-LABEL: shuffle_v4f16_rebroadcast:1550; GFX11-TRUE16:       ; %bb.0: ; %entry1551; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1552; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off1553; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1554; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h1555; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1556; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, v01557; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]1558;1559; GFX11-FAKE16-LABEL: shuffle_v4f16_rebroadcast:1560; GFX11-FAKE16:       ; %bb.0: ; %entry1561; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1562; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off1563; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1564; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021565; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1566; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v01567; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]1568entry:1569  %val0 = load <4 x half>, ptr addrspace(1) %arg01570  %val1 = shufflevector <4 x half> %val0, <4 x half> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>1571  ret <4 x half> %val11572}1573 1574define <6 x half> @shuffle_v6f16_rebroadcast(ptr addrspace(1) %arg0) {1575; GFX9-LABEL: shuffle_v6f16_rebroadcast:1576; GFX9:       ; %bb.0: ; %entry1577; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1578; GFX9-NEXT:    global_load_dword v0, v[0:1], off1579; GFX9-NEXT:    s_mov_b32 s4, 0x70603021580; GFX9-NEXT:    s_waitcnt vmcnt(0)1581; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s41582; GFX9-NEXT:    v_mov_b32_e32 v1, v01583; GFX9-NEXT:    v_mov_b32_e32 v2, v01584; GFX9-NEXT:    s_setpc_b64 s[30:31]1585;1586; GFX10-LABEL: shuffle_v6f16_rebroadcast:1587; GFX10:       ; %bb.0: ; %entry1588; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1589; GFX10-NEXT:    global_load_dword v0, v[0:1], off1590; GFX10-NEXT:    s_waitcnt vmcnt(0)1591; GFX10-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021592; GFX10-NEXT:    v_mov_b32_e32 v1, v01593; GFX10-NEXT:    v_mov_b32_e32 v2, v01594; GFX10-NEXT:    s_setpc_b64 s[30:31]1595;1596; GFX11-TRUE16-LABEL: shuffle_v6f16_rebroadcast:1597; GFX11-TRUE16:       ; %bb.0: ; %entry1598; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1599; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off1600; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1601; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h1602; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1603; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, v01604; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v01605; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]1606;1607; GFX11-FAKE16-LABEL: shuffle_v6f16_rebroadcast:1608; GFX11-FAKE16:       ; %bb.0: ; %entry1609; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1610; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off1611; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1612; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021613; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1614; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v01615; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v01616; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]1617entry:1618  %val0 = load <6 x half>, ptr addrspace(1) %arg01619  %val1 = shufflevector <6 x half> %val0, <6 x half> poison, <6 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>1620  ret <6 x half> %val11621}1622 1623define <8 x half> @shuffle_v8f16_rebroadcast(ptr addrspace(1) %arg0) {1624; GFX9-LABEL: shuffle_v8f16_rebroadcast:1625; GFX9:       ; %bb.0: ; %entry1626; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1627; GFX9-NEXT:    global_load_dword v0, v[0:1], off1628; GFX9-NEXT:    s_mov_b32 s4, 0x70603021629; GFX9-NEXT:    s_waitcnt vmcnt(0)1630; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s41631; GFX9-NEXT:    v_mov_b32_e32 v1, v01632; GFX9-NEXT:    v_mov_b32_e32 v2, v01633; GFX9-NEXT:    v_mov_b32_e32 v3, v01634; GFX9-NEXT:    s_setpc_b64 s[30:31]1635;1636; GFX10-LABEL: shuffle_v8f16_rebroadcast:1637; GFX10:       ; %bb.0: ; %entry1638; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1639; GFX10-NEXT:    global_load_dword v0, v[0:1], off1640; GFX10-NEXT:    s_waitcnt vmcnt(0)1641; GFX10-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021642; GFX10-NEXT:    v_mov_b32_e32 v1, v01643; GFX10-NEXT:    v_mov_b32_e32 v2, v01644; GFX10-NEXT:    v_mov_b32_e32 v3, v01645; GFX10-NEXT:    s_setpc_b64 s[30:31]1646;1647; GFX11-TRUE16-LABEL: shuffle_v8f16_rebroadcast:1648; GFX11-TRUE16:       ; %bb.0: ; %entry1649; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1650; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off1651; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1652; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h1653; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1654; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, v01655; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v01656; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v01657; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]1658;1659; GFX11-FAKE16-LABEL: shuffle_v8f16_rebroadcast:1660; GFX11-FAKE16:       ; %bb.0: ; %entry1661; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1662; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off1663; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1664; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021665; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1666; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v01667; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v01668; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v01669; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]1670entry:1671  %val0 = load <8 x half>, ptr addrspace(1) %arg01672  %val1 = shufflevector <8 x half> %val0, <8 x half> poison, <8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>1673  ret <8 x half> %val11674}1675 1676define <16 x half> @shuffle_v16f16_rebroadcast(ptr addrspace(1) %arg0) {1677; GFX9-LABEL: shuffle_v16f16_rebroadcast:1678; GFX9:       ; %bb.0: ; %entry1679; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1680; GFX9-NEXT:    global_load_dword v0, v[0:1], off1681; GFX9-NEXT:    s_mov_b32 s4, 0x70603021682; GFX9-NEXT:    s_waitcnt vmcnt(0)1683; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s41684; GFX9-NEXT:    v_mov_b32_e32 v1, v01685; GFX9-NEXT:    v_mov_b32_e32 v2, v01686; GFX9-NEXT:    v_mov_b32_e32 v3, v01687; GFX9-NEXT:    v_mov_b32_e32 v4, v01688; GFX9-NEXT:    v_mov_b32_e32 v5, v01689; GFX9-NEXT:    v_mov_b32_e32 v6, v01690; GFX9-NEXT:    v_mov_b32_e32 v7, v01691; GFX9-NEXT:    s_setpc_b64 s[30:31]1692;1693; GFX10-LABEL: shuffle_v16f16_rebroadcast:1694; GFX10:       ; %bb.0: ; %entry1695; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1696; GFX10-NEXT:    global_load_dword v0, v[0:1], off1697; GFX10-NEXT:    s_waitcnt vmcnt(0)1698; GFX10-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021699; GFX10-NEXT:    v_mov_b32_e32 v1, v01700; GFX10-NEXT:    v_mov_b32_e32 v2, v01701; GFX10-NEXT:    v_mov_b32_e32 v3, v01702; GFX10-NEXT:    v_mov_b32_e32 v4, v01703; GFX10-NEXT:    v_mov_b32_e32 v5, v01704; GFX10-NEXT:    v_mov_b32_e32 v6, v01705; GFX10-NEXT:    v_mov_b32_e32 v7, v01706; GFX10-NEXT:    s_setpc_b64 s[30:31]1707;1708; GFX11-TRUE16-LABEL: shuffle_v16f16_rebroadcast:1709; GFX11-TRUE16:       ; %bb.0: ; %entry1710; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1711; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off1712; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1713; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h1714; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1715; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, v01716; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v01717; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v01718; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v01719; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v5, v01720; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v01721; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v7, v01722; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]1723;1724; GFX11-FAKE16-LABEL: shuffle_v16f16_rebroadcast:1725; GFX11-FAKE16:       ; %bb.0: ; %entry1726; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1727; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off1728; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1729; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021730; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1731; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v01732; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v01733; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v01734; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v01735; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v5, v01736; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v01737; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v7, v01738; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]1739entry:1740  %val0 = load <16 x half>, ptr addrspace(1) %arg01741  %val1 = shufflevector <16 x half> %val0, <16 x half> poison, <16 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>1742  ret <16 x half> %val11743}1744 1745define <32 x half> @shuffle_v32f16_rebroadcast(ptr addrspace(1) %arg0) {1746; GFX9-LABEL: shuffle_v32f16_rebroadcast:1747; GFX9:       ; %bb.0: ; %entry1748; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1749; GFX9-NEXT:    global_load_dword v0, v[0:1], off1750; GFX9-NEXT:    s_mov_b32 s4, 0x70603021751; GFX9-NEXT:    s_waitcnt vmcnt(0)1752; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s41753; GFX9-NEXT:    v_mov_b32_e32 v1, v01754; GFX9-NEXT:    v_mov_b32_e32 v2, v01755; GFX9-NEXT:    v_mov_b32_e32 v3, v01756; GFX9-NEXT:    v_mov_b32_e32 v4, v01757; GFX9-NEXT:    v_mov_b32_e32 v5, v01758; GFX9-NEXT:    v_mov_b32_e32 v6, v01759; GFX9-NEXT:    v_mov_b32_e32 v7, v01760; GFX9-NEXT:    v_mov_b32_e32 v8, v01761; GFX9-NEXT:    v_mov_b32_e32 v9, v01762; GFX9-NEXT:    v_mov_b32_e32 v10, v01763; GFX9-NEXT:    v_mov_b32_e32 v11, v01764; GFX9-NEXT:    v_mov_b32_e32 v12, v01765; GFX9-NEXT:    v_mov_b32_e32 v13, v01766; GFX9-NEXT:    v_mov_b32_e32 v14, v01767; GFX9-NEXT:    v_mov_b32_e32 v15, v01768; GFX9-NEXT:    s_setpc_b64 s[30:31]1769;1770; GFX10-LABEL: shuffle_v32f16_rebroadcast:1771; GFX10:       ; %bb.0: ; %entry1772; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1773; GFX10-NEXT:    global_load_dword v0, v[0:1], off1774; GFX10-NEXT:    s_waitcnt vmcnt(0)1775; GFX10-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021776; GFX10-NEXT:    v_mov_b32_e32 v1, v01777; GFX10-NEXT:    v_mov_b32_e32 v2, v01778; GFX10-NEXT:    v_mov_b32_e32 v3, v01779; GFX10-NEXT:    v_mov_b32_e32 v4, v01780; GFX10-NEXT:    v_mov_b32_e32 v5, v01781; GFX10-NEXT:    v_mov_b32_e32 v6, v01782; GFX10-NEXT:    v_mov_b32_e32 v7, v01783; GFX10-NEXT:    v_mov_b32_e32 v8, v01784; GFX10-NEXT:    v_mov_b32_e32 v9, v01785; GFX10-NEXT:    v_mov_b32_e32 v10, v01786; GFX10-NEXT:    v_mov_b32_e32 v11, v01787; GFX10-NEXT:    v_mov_b32_e32 v12, v01788; GFX10-NEXT:    v_mov_b32_e32 v13, v01789; GFX10-NEXT:    v_mov_b32_e32 v14, v01790; GFX10-NEXT:    v_mov_b32_e32 v15, v01791; GFX10-NEXT:    s_setpc_b64 s[30:31]1792;1793; GFX11-TRUE16-LABEL: shuffle_v32f16_rebroadcast:1794; GFX11-TRUE16:       ; %bb.0: ; %entry1795; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1796; GFX11-TRUE16-NEXT:    global_load_b32 v0, v[0:1], off1797; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1798; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h1799; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1800; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, v01801; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v01802; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v01803; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v01804; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v5, v01805; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v01806; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v7, v01807; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v8, v01808; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v9, v01809; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, v01810; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v11, v01811; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v12, v01812; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v13, v01813; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v14, v01814; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v15, v01815; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]1816;1817; GFX11-FAKE16-LABEL: shuffle_v32f16_rebroadcast:1818; GFX11-FAKE16:       ; %bb.0: ; %entry1819; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1820; GFX11-FAKE16-NEXT:    global_load_b32 v0, v[0:1], off1821; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1822; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x70603021823; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1824; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v01825; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v01826; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v01827; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v01828; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v5, v01829; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v01830; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v7, v01831; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, v01832; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v9, v01833; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, v01834; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v11, v01835; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v12, v01836; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v13, v01837; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v14, v01838; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v15, v01839; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]1840entry:1841  %val0 = load <32 x half>, ptr addrspace(1) %arg01842  %val1 = shufflevector <32 x half> %val0, <32 x half> poison, <32 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>1843  ret <32 x half> %val11844}1845 1846define <2 x float> @shuffle_v2f32_rebroadcast(ptr addrspace(1) %arg0) {1847; GFX9-LABEL: shuffle_v2f32_rebroadcast:1848; GFX9:       ; %bb.0: ; %entry1849; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1850; GFX9-NEXT:    global_load_dwordx2 v[0:1], v[0:1], off1851; GFX9-NEXT:    s_waitcnt vmcnt(0)1852; GFX9-NEXT:    v_mov_b32_e32 v0, v11853; GFX9-NEXT:    s_setpc_b64 s[30:31]1854;1855; GFX10-LABEL: shuffle_v2f32_rebroadcast:1856; GFX10:       ; %bb.0: ; %entry1857; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1858; GFX10-NEXT:    global_load_dwordx2 v[0:1], v[0:1], off1859; GFX10-NEXT:    s_waitcnt vmcnt(0)1860; GFX10-NEXT:    v_mov_b32_e32 v0, v11861; GFX10-NEXT:    s_setpc_b64 s[30:31]1862;1863; GFX11-LABEL: shuffle_v2f32_rebroadcast:1864; GFX11:       ; %bb.0: ; %entry1865; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1866; GFX11-NEXT:    global_load_b64 v[0:1], v[0:1], off1867; GFX11-NEXT:    s_waitcnt vmcnt(0)1868; GFX11-NEXT:    v_mov_b32_e32 v0, v11869; GFX11-NEXT:    s_setpc_b64 s[30:31]1870entry:1871  %val0 = load <2 x float>, ptr addrspace(1) %arg01872  %val1 = shufflevector <2 x float> %val0, <2 x float> poison, <2 x i32> <i32 1, i32 1>1873  ret <2 x float> %val11874}1875 1876define <3 x float> @shuffle_v3f32_rebroadcast(ptr addrspace(1) %arg0) {1877; GFX9-LABEL: shuffle_v3f32_rebroadcast:1878; GFX9:       ; %bb.0: ; %entry1879; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1880; GFX9-NEXT:    global_load_dwordx3 v[0:2], v[0:1], off1881; GFX9-NEXT:    s_waitcnt vmcnt(0)1882; GFX9-NEXT:    v_mov_b32_e32 v0, v11883; GFX9-NEXT:    v_mov_b32_e32 v2, v11884; GFX9-NEXT:    s_setpc_b64 s[30:31]1885;1886; GFX10-LABEL: shuffle_v3f32_rebroadcast:1887; GFX10:       ; %bb.0: ; %entry1888; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1889; GFX10-NEXT:    global_load_dwordx3 v[0:2], v[0:1], off1890; GFX10-NEXT:    s_waitcnt vmcnt(0)1891; GFX10-NEXT:    v_mov_b32_e32 v0, v11892; GFX10-NEXT:    v_mov_b32_e32 v2, v11893; GFX10-NEXT:    s_setpc_b64 s[30:31]1894;1895; GFX11-LABEL: shuffle_v3f32_rebroadcast:1896; GFX11:       ; %bb.0: ; %entry1897; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1898; GFX11-NEXT:    global_load_b96 v[0:2], v[0:1], off1899; GFX11-NEXT:    s_waitcnt vmcnt(0)1900; GFX11-NEXT:    v_mov_b32_e32 v0, v11901; GFX11-NEXT:    v_mov_b32_e32 v2, v11902; GFX11-NEXT:    s_setpc_b64 s[30:31]1903entry:1904  %val0 = load <3 x float>, ptr addrspace(1) %arg01905  %val1 = shufflevector <3 x float> %val0, <3 x float> poison, <3 x i32> <i32 1, i32 1, i32 1>1906  ret <3 x float> %val11907}1908 1909define <4 x float> @shuffle_v4f32_rebroadcast(ptr addrspace(1) %arg0) {1910; GFX9-LABEL: shuffle_v4f32_rebroadcast:1911; GFX9:       ; %bb.0: ; %entry1912; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1913; GFX9-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off1914; GFX9-NEXT:    s_waitcnt vmcnt(0)1915; GFX9-NEXT:    v_mov_b32_e32 v0, v11916; GFX9-NEXT:    v_mov_b32_e32 v2, v11917; GFX9-NEXT:    v_mov_b32_e32 v3, v11918; GFX9-NEXT:    s_setpc_b64 s[30:31]1919;1920; GFX10-LABEL: shuffle_v4f32_rebroadcast:1921; GFX10:       ; %bb.0: ; %entry1922; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1923; GFX10-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off1924; GFX10-NEXT:    s_waitcnt vmcnt(0)1925; GFX10-NEXT:    v_mov_b32_e32 v0, v11926; GFX10-NEXT:    v_mov_b32_e32 v2, v11927; GFX10-NEXT:    v_mov_b32_e32 v3, v11928; GFX10-NEXT:    s_setpc_b64 s[30:31]1929;1930; GFX11-LABEL: shuffle_v4f32_rebroadcast:1931; GFX11:       ; %bb.0: ; %entry1932; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1933; GFX11-NEXT:    global_load_b128 v[0:3], v[0:1], off1934; GFX11-NEXT:    s_waitcnt vmcnt(0)1935; GFX11-NEXT:    v_mov_b32_e32 v0, v11936; GFX11-NEXT:    v_mov_b32_e32 v2, v11937; GFX11-NEXT:    v_mov_b32_e32 v3, v11938; GFX11-NEXT:    s_setpc_b64 s[30:31]1939entry:1940  %val0 = load <4 x float>, ptr addrspace(1) %arg01941  %val1 = shufflevector <4 x float> %val0, <4 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>1942  ret <4 x float> %val11943}1944 1945define <6 x float> @shuffle_v6f32_rebroadcast(ptr addrspace(1) %arg0) {1946; GFX9-LABEL: shuffle_v6f32_rebroadcast:1947; GFX9:       ; %bb.0: ; %entry1948; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1949; GFX9-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off1950; GFX9-NEXT:    s_waitcnt vmcnt(0)1951; GFX9-NEXT:    v_mov_b32_e32 v0, v11952; GFX9-NEXT:    v_mov_b32_e32 v2, v11953; GFX9-NEXT:    v_mov_b32_e32 v3, v11954; GFX9-NEXT:    v_mov_b32_e32 v4, v11955; GFX9-NEXT:    v_mov_b32_e32 v5, v11956; GFX9-NEXT:    s_setpc_b64 s[30:31]1957;1958; GFX10-LABEL: shuffle_v6f32_rebroadcast:1959; GFX10:       ; %bb.0: ; %entry1960; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1961; GFX10-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off1962; GFX10-NEXT:    s_waitcnt vmcnt(0)1963; GFX10-NEXT:    v_mov_b32_e32 v0, v11964; GFX10-NEXT:    v_mov_b32_e32 v2, v11965; GFX10-NEXT:    v_mov_b32_e32 v3, v11966; GFX10-NEXT:    v_mov_b32_e32 v4, v11967; GFX10-NEXT:    v_mov_b32_e32 v5, v11968; GFX10-NEXT:    s_setpc_b64 s[30:31]1969;1970; GFX11-LABEL: shuffle_v6f32_rebroadcast:1971; GFX11:       ; %bb.0: ; %entry1972; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1973; GFX11-NEXT:    global_load_b128 v[0:3], v[0:1], off1974; GFX11-NEXT:    s_waitcnt vmcnt(0)1975; GFX11-NEXT:    v_mov_b32_e32 v0, v11976; GFX11-NEXT:    v_mov_b32_e32 v2, v11977; GFX11-NEXT:    v_mov_b32_e32 v3, v11978; GFX11-NEXT:    v_mov_b32_e32 v4, v11979; GFX11-NEXT:    v_mov_b32_e32 v5, v11980; GFX11-NEXT:    s_setpc_b64 s[30:31]1981entry:1982  %val0 = load <6 x float>, ptr addrspace(1) %arg01983  %val1 = shufflevector <6 x float> %val0, <6 x float> poison, <6 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>1984  ret <6 x float> %val11985}1986 1987define <8 x float> @shuffle_v8f32_rebroadcast(ptr addrspace(1) %arg0) {1988; GFX9-LABEL: shuffle_v8f32_rebroadcast:1989; GFX9:       ; %bb.0: ; %entry1990; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1991; GFX9-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off1992; GFX9-NEXT:    s_waitcnt vmcnt(0)1993; GFX9-NEXT:    v_mov_b32_e32 v0, v11994; GFX9-NEXT:    v_mov_b32_e32 v2, v11995; GFX9-NEXT:    v_mov_b32_e32 v3, v11996; GFX9-NEXT:    v_mov_b32_e32 v4, v11997; GFX9-NEXT:    v_mov_b32_e32 v5, v11998; GFX9-NEXT:    v_mov_b32_e32 v6, v11999; GFX9-NEXT:    v_mov_b32_e32 v7, v12000; GFX9-NEXT:    s_setpc_b64 s[30:31]2001;2002; GFX10-LABEL: shuffle_v8f32_rebroadcast:2003; GFX10:       ; %bb.0: ; %entry2004; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2005; GFX10-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off2006; GFX10-NEXT:    s_waitcnt vmcnt(0)2007; GFX10-NEXT:    v_mov_b32_e32 v0, v12008; GFX10-NEXT:    v_mov_b32_e32 v2, v12009; GFX10-NEXT:    v_mov_b32_e32 v3, v12010; GFX10-NEXT:    v_mov_b32_e32 v4, v12011; GFX10-NEXT:    v_mov_b32_e32 v5, v12012; GFX10-NEXT:    v_mov_b32_e32 v6, v12013; GFX10-NEXT:    v_mov_b32_e32 v7, v12014; GFX10-NEXT:    s_setpc_b64 s[30:31]2015;2016; GFX11-LABEL: shuffle_v8f32_rebroadcast:2017; GFX11:       ; %bb.0: ; %entry2018; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2019; GFX11-NEXT:    global_load_b128 v[0:3], v[0:1], off2020; GFX11-NEXT:    s_waitcnt vmcnt(0)2021; GFX11-NEXT:    v_mov_b32_e32 v0, v12022; GFX11-NEXT:    v_mov_b32_e32 v2, v12023; GFX11-NEXT:    v_mov_b32_e32 v3, v12024; GFX11-NEXT:    v_mov_b32_e32 v4, v12025; GFX11-NEXT:    v_mov_b32_e32 v5, v12026; GFX11-NEXT:    v_mov_b32_e32 v6, v12027; GFX11-NEXT:    v_mov_b32_e32 v7, v12028; GFX11-NEXT:    s_setpc_b64 s[30:31]2029entry:2030  %val0 = load <8 x float>, ptr addrspace(1) %arg02031  %val1 = shufflevector <8 x float> %val0, <8 x float> poison, <8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>2032  ret <8 x float> %val12033}2034 2035define <16 x float> @shuffle_v16f32_rebroadcast(ptr addrspace(1) %arg0) {2036; GFX9-LABEL: shuffle_v16f32_rebroadcast:2037; GFX9:       ; %bb.0: ; %entry2038; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2039; GFX9-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off2040; GFX9-NEXT:    s_waitcnt vmcnt(0)2041; GFX9-NEXT:    v_mov_b32_e32 v0, v12042; GFX9-NEXT:    v_mov_b32_e32 v2, v12043; GFX9-NEXT:    v_mov_b32_e32 v3, v12044; GFX9-NEXT:    v_mov_b32_e32 v4, v12045; GFX9-NEXT:    v_mov_b32_e32 v5, v12046; GFX9-NEXT:    v_mov_b32_e32 v6, v12047; GFX9-NEXT:    v_mov_b32_e32 v7, v12048; GFX9-NEXT:    v_mov_b32_e32 v8, v12049; GFX9-NEXT:    v_mov_b32_e32 v9, v12050; GFX9-NEXT:    v_mov_b32_e32 v10, v12051; GFX9-NEXT:    v_mov_b32_e32 v11, v12052; GFX9-NEXT:    v_mov_b32_e32 v12, v12053; GFX9-NEXT:    v_mov_b32_e32 v13, v12054; GFX9-NEXT:    v_mov_b32_e32 v14, v12055; GFX9-NEXT:    v_mov_b32_e32 v15, v12056; GFX9-NEXT:    s_setpc_b64 s[30:31]2057;2058; GFX10-LABEL: shuffle_v16f32_rebroadcast:2059; GFX10:       ; %bb.0: ; %entry2060; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2061; GFX10-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off2062; GFX10-NEXT:    s_waitcnt vmcnt(0)2063; GFX10-NEXT:    v_mov_b32_e32 v0, v12064; GFX10-NEXT:    v_mov_b32_e32 v2, v12065; GFX10-NEXT:    v_mov_b32_e32 v3, v12066; GFX10-NEXT:    v_mov_b32_e32 v4, v12067; GFX10-NEXT:    v_mov_b32_e32 v5, v12068; GFX10-NEXT:    v_mov_b32_e32 v6, v12069; GFX10-NEXT:    v_mov_b32_e32 v7, v12070; GFX10-NEXT:    v_mov_b32_e32 v8, v12071; GFX10-NEXT:    v_mov_b32_e32 v9, v12072; GFX10-NEXT:    v_mov_b32_e32 v10, v12073; GFX10-NEXT:    v_mov_b32_e32 v11, v12074; GFX10-NEXT:    v_mov_b32_e32 v12, v12075; GFX10-NEXT:    v_mov_b32_e32 v13, v12076; GFX10-NEXT:    v_mov_b32_e32 v14, v12077; GFX10-NEXT:    v_mov_b32_e32 v15, v12078; GFX10-NEXT:    s_setpc_b64 s[30:31]2079;2080; GFX11-LABEL: shuffle_v16f32_rebroadcast:2081; GFX11:       ; %bb.0: ; %entry2082; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2083; GFX11-NEXT:    global_load_b128 v[0:3], v[0:1], off2084; GFX11-NEXT:    s_waitcnt vmcnt(0)2085; GFX11-NEXT:    v_mov_b32_e32 v0, v12086; GFX11-NEXT:    v_mov_b32_e32 v2, v12087; GFX11-NEXT:    v_mov_b32_e32 v3, v12088; GFX11-NEXT:    v_mov_b32_e32 v4, v12089; GFX11-NEXT:    v_mov_b32_e32 v5, v12090; GFX11-NEXT:    v_mov_b32_e32 v6, v12091; GFX11-NEXT:    v_mov_b32_e32 v7, v12092; GFX11-NEXT:    v_mov_b32_e32 v8, v12093; GFX11-NEXT:    v_mov_b32_e32 v9, v12094; GFX11-NEXT:    v_mov_b32_e32 v10, v12095; GFX11-NEXT:    v_mov_b32_e32 v11, v12096; GFX11-NEXT:    v_mov_b32_e32 v12, v12097; GFX11-NEXT:    v_mov_b32_e32 v13, v12098; GFX11-NEXT:    v_mov_b32_e32 v14, v12099; GFX11-NEXT:    v_mov_b32_e32 v15, v12100; GFX11-NEXT:    s_setpc_b64 s[30:31]2101entry:2102  %val0 = load <16 x float>, ptr addrspace(1) %arg02103  %val1 = shufflevector <16 x float> %val0, <16 x float> poison, <16 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>2104  ret <16 x float> %val12105}2106 2107define <32 x float> @shuffle_v32f32_rebroadcast(ptr addrspace(1) %arg0) {2108; GFX9-LABEL: shuffle_v32f32_rebroadcast:2109; GFX9:       ; %bb.0: ; %entry2110; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2111; GFX9-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off2112; GFX9-NEXT:    s_waitcnt vmcnt(0)2113; GFX9-NEXT:    v_mov_b32_e32 v0, v12114; GFX9-NEXT:    v_mov_b32_e32 v2, v12115; GFX9-NEXT:    v_mov_b32_e32 v3, v12116; GFX9-NEXT:    v_mov_b32_e32 v4, v12117; GFX9-NEXT:    v_mov_b32_e32 v5, v12118; GFX9-NEXT:    v_mov_b32_e32 v6, v12119; GFX9-NEXT:    v_mov_b32_e32 v7, v12120; GFX9-NEXT:    v_mov_b32_e32 v8, v12121; GFX9-NEXT:    v_mov_b32_e32 v9, v12122; GFX9-NEXT:    v_mov_b32_e32 v10, v12123; GFX9-NEXT:    v_mov_b32_e32 v11, v12124; GFX9-NEXT:    v_mov_b32_e32 v12, v12125; GFX9-NEXT:    v_mov_b32_e32 v13, v12126; GFX9-NEXT:    v_mov_b32_e32 v14, v12127; GFX9-NEXT:    v_mov_b32_e32 v15, v12128; GFX9-NEXT:    v_mov_b32_e32 v16, v12129; GFX9-NEXT:    v_mov_b32_e32 v17, v12130; GFX9-NEXT:    v_mov_b32_e32 v18, v12131; GFX9-NEXT:    v_mov_b32_e32 v19, v12132; GFX9-NEXT:    v_mov_b32_e32 v20, v12133; GFX9-NEXT:    v_mov_b32_e32 v21, v12134; GFX9-NEXT:    v_mov_b32_e32 v22, v12135; GFX9-NEXT:    v_mov_b32_e32 v23, v12136; GFX9-NEXT:    v_mov_b32_e32 v24, v12137; GFX9-NEXT:    v_mov_b32_e32 v25, v12138; GFX9-NEXT:    v_mov_b32_e32 v26, v12139; GFX9-NEXT:    v_mov_b32_e32 v27, v12140; GFX9-NEXT:    v_mov_b32_e32 v28, v12141; GFX9-NEXT:    v_mov_b32_e32 v29, v12142; GFX9-NEXT:    v_mov_b32_e32 v30, v12143; GFX9-NEXT:    v_mov_b32_e32 v31, v12144; GFX9-NEXT:    s_setpc_b64 s[30:31]2145;2146; GFX10-LABEL: shuffle_v32f32_rebroadcast:2147; GFX10:       ; %bb.0: ; %entry2148; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2149; GFX10-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off2150; GFX10-NEXT:    s_waitcnt vmcnt(0)2151; GFX10-NEXT:    v_mov_b32_e32 v0, v12152; GFX10-NEXT:    v_mov_b32_e32 v2, v12153; GFX10-NEXT:    v_mov_b32_e32 v3, v12154; GFX10-NEXT:    v_mov_b32_e32 v4, v12155; GFX10-NEXT:    v_mov_b32_e32 v5, v12156; GFX10-NEXT:    v_mov_b32_e32 v6, v12157; GFX10-NEXT:    v_mov_b32_e32 v7, v12158; GFX10-NEXT:    v_mov_b32_e32 v8, v12159; GFX10-NEXT:    v_mov_b32_e32 v9, v12160; GFX10-NEXT:    v_mov_b32_e32 v10, v12161; GFX10-NEXT:    v_mov_b32_e32 v11, v12162; GFX10-NEXT:    v_mov_b32_e32 v12, v12163; GFX10-NEXT:    v_mov_b32_e32 v13, v12164; GFX10-NEXT:    v_mov_b32_e32 v14, v12165; GFX10-NEXT:    v_mov_b32_e32 v15, v12166; GFX10-NEXT:    v_mov_b32_e32 v16, v12167; GFX10-NEXT:    v_mov_b32_e32 v17, v12168; GFX10-NEXT:    v_mov_b32_e32 v18, v12169; GFX10-NEXT:    v_mov_b32_e32 v19, v12170; GFX10-NEXT:    v_mov_b32_e32 v20, v12171; GFX10-NEXT:    v_mov_b32_e32 v21, v12172; GFX10-NEXT:    v_mov_b32_e32 v22, v12173; GFX10-NEXT:    v_mov_b32_e32 v23, v12174; GFX10-NEXT:    v_mov_b32_e32 v24, v12175; GFX10-NEXT:    v_mov_b32_e32 v25, v12176; GFX10-NEXT:    v_mov_b32_e32 v26, v12177; GFX10-NEXT:    v_mov_b32_e32 v27, v12178; GFX10-NEXT:    v_mov_b32_e32 v28, v12179; GFX10-NEXT:    v_mov_b32_e32 v29, v12180; GFX10-NEXT:    v_mov_b32_e32 v30, v12181; GFX10-NEXT:    v_mov_b32_e32 v31, v12182; GFX10-NEXT:    s_setpc_b64 s[30:31]2183;2184; GFX11-LABEL: shuffle_v32f32_rebroadcast:2185; GFX11:       ; %bb.0: ; %entry2186; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2187; GFX11-NEXT:    global_load_b128 v[0:3], v[0:1], off2188; GFX11-NEXT:    s_waitcnt vmcnt(0)2189; GFX11-NEXT:    v_mov_b32_e32 v0, v12190; GFX11-NEXT:    v_mov_b32_e32 v2, v12191; GFX11-NEXT:    v_mov_b32_e32 v3, v12192; GFX11-NEXT:    v_mov_b32_e32 v4, v12193; GFX11-NEXT:    v_mov_b32_e32 v5, v12194; GFX11-NEXT:    v_mov_b32_e32 v6, v12195; GFX11-NEXT:    v_mov_b32_e32 v7, v12196; GFX11-NEXT:    v_mov_b32_e32 v8, v12197; GFX11-NEXT:    v_mov_b32_e32 v9, v12198; GFX11-NEXT:    v_mov_b32_e32 v10, v12199; GFX11-NEXT:    v_mov_b32_e32 v11, v12200; GFX11-NEXT:    v_mov_b32_e32 v12, v12201; GFX11-NEXT:    v_mov_b32_e32 v13, v12202; GFX11-NEXT:    v_mov_b32_e32 v14, v12203; GFX11-NEXT:    v_mov_b32_e32 v15, v12204; GFX11-NEXT:    v_mov_b32_e32 v16, v12205; GFX11-NEXT:    v_mov_b32_e32 v17, v12206; GFX11-NEXT:    v_mov_b32_e32 v18, v12207; GFX11-NEXT:    v_mov_b32_e32 v19, v12208; GFX11-NEXT:    v_mov_b32_e32 v20, v12209; GFX11-NEXT:    v_mov_b32_e32 v21, v12210; GFX11-NEXT:    v_mov_b32_e32 v22, v12211; GFX11-NEXT:    v_mov_b32_e32 v23, v12212; GFX11-NEXT:    v_mov_b32_e32 v24, v12213; GFX11-NEXT:    v_mov_b32_e32 v25, v12214; GFX11-NEXT:    v_mov_b32_e32 v26, v12215; GFX11-NEXT:    v_mov_b32_e32 v27, v12216; GFX11-NEXT:    v_mov_b32_e32 v28, v12217; GFX11-NEXT:    v_mov_b32_e32 v29, v12218; GFX11-NEXT:    v_mov_b32_e32 v30, v12219; GFX11-NEXT:    v_mov_b32_e32 v31, v12220; GFX11-NEXT:    s_setpc_b64 s[30:31]2221entry:2222  %val0 = load <32 x float>, ptr addrspace(1) %arg02223  %val1 = shufflevector <32 x float> %val0, <32 x float> poison, <32 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>2224  ret <32 x float> %val12225}2226