brintos

brintos / llvm-project-archived public Read only

0
0
Text · 32.6 KiB · 5c91a61 Raw
711 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc -global-isel=0 -amdgpu-load-store-vectorizer=0 -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10-SDAG %s3; RUN: llc -global-isel=0 -amdgpu-load-store-vectorizer=0 -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck -check-prefixes=GFX11-SDAG %s4; RUN: llc -global-isel=0 -amdgpu-load-store-vectorizer=0 -mtriple=amdgcn -mcpu=gfx1200 < %s | FileCheck -check-prefixes=GFX12-SDAG %s5 6define void @v_permlane16_p0(ptr addrspace(1) %out, ptr %src0, i32 %src1, i32 %src2) {7; GFX10-SDAG-LABEL: v_permlane16_p0:8; GFX10-SDAG:       ; %bb.0:9; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s4, v411; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s5, v512; GFX10-SDAG-NEXT:    v_permlane16_b32 v3, v3, s4, s513; GFX10-SDAG-NEXT:    v_permlane16_b32 v2, v2, s4, s514; GFX10-SDAG-NEXT:    global_store_dwordx2 v[0:1], v[2:3], off15; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]16;17; GFX11-SDAG-LABEL: v_permlane16_p0:18; GFX11-SDAG:       ; %bb.0:19; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s0, v421; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s1, v522; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)23; GFX11-SDAG-NEXT:    v_permlane16_b32 v3, v3, s0, s124; GFX11-SDAG-NEXT:    v_permlane16_b32 v2, v2, s0, s125; GFX11-SDAG-NEXT:    global_store_b64 v[0:1], v[2:3], off26; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]27;28; GFX12-SDAG-LABEL: v_permlane16_p0:29; GFX12-SDAG:       ; %bb.0:30; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x031; GFX12-SDAG-NEXT:    s_wait_expcnt 0x032; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x033; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x034; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x035; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s0, v436; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s1, v537; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)38; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)39; GFX12-SDAG-NEXT:    v_permlane16_b32 v3, v3, s0, s140; GFX12-SDAG-NEXT:    v_permlane16_b32 v2, v2, s0, s141; GFX12-SDAG-NEXT:    global_store_b64 v[0:1], v[2:3], off42; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]43  %v = call ptr @llvm.amdgcn.permlane16.p0(ptr %src0, ptr %src0, i32 %src1, i32 %src2, i1 false, i1 false)44  store ptr %v, ptr addrspace(1) %out45  ret void46}47 48define void @v_permlanex16_p0(ptr addrspace(1) %out, ptr %src0, i32 %src1, i32 %src2) {49; GFX10-SDAG-LABEL: v_permlanex16_p0:50; GFX10-SDAG:       ; %bb.0:51; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)52; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s4, v453; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s5, v554; GFX10-SDAG-NEXT:    v_permlanex16_b32 v3, v3, s4, s555; GFX10-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s4, s556; GFX10-SDAG-NEXT:    global_store_dwordx2 v[0:1], v[2:3], off57; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]58;59; GFX11-SDAG-LABEL: v_permlanex16_p0:60; GFX11-SDAG:       ; %bb.0:61; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)62; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s0, v463; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s1, v564; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)65; GFX11-SDAG-NEXT:    v_permlanex16_b32 v3, v3, s0, s166; GFX11-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s0, s167; GFX11-SDAG-NEXT:    global_store_b64 v[0:1], v[2:3], off68; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]69;70; GFX12-SDAG-LABEL: v_permlanex16_p0:71; GFX12-SDAG:       ; %bb.0:72; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x073; GFX12-SDAG-NEXT:    s_wait_expcnt 0x074; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x075; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x076; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x077; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s0, v478; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s1, v579; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)80; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)81; GFX12-SDAG-NEXT:    v_permlanex16_b32 v3, v3, s0, s182; GFX12-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s0, s183; GFX12-SDAG-NEXT:    global_store_b64 v[0:1], v[2:3], off84; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]85  %v = call ptr @llvm.amdgcn.permlanex16.p0(ptr %src0, ptr %src0, i32 %src1, i32 %src2, i1 false, i1 false)86  store ptr %v, ptr addrspace(1) %out87  ret void88}89 90define void @v_permlane16_v3p0(ptr addrspace(1) %out, <3 x ptr> %src0, i32 %src1, i32 %src2) {91; GFX10-SDAG-LABEL: v_permlane16_v3p0:92; GFX10-SDAG:       ; %bb.0:93; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)94; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s4, v895; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s5, v996; GFX10-SDAG-NEXT:    v_permlane16_b32 v7, v7, s4, s597; GFX10-SDAG-NEXT:    v_permlane16_b32 v6, v6, s4, s598; GFX10-SDAG-NEXT:    v_permlane16_b32 v5, v5, s4, s599; GFX10-SDAG-NEXT:    v_permlane16_b32 v4, v4, s4, s5100; GFX10-SDAG-NEXT:    v_permlane16_b32 v3, v3, s4, s5101; GFX10-SDAG-NEXT:    v_permlane16_b32 v2, v2, s4, s5102; GFX10-SDAG-NEXT:    global_store_dwordx2 v[0:1], v[6:7], off offset:16103; GFX10-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off104; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]105;106; GFX11-SDAG-LABEL: v_permlane16_v3p0:107; GFX11-SDAG:       ; %bb.0:108; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)109; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s0, v8110; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s1, v9111; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)112; GFX11-SDAG-NEXT:    v_permlane16_b32 v7, v7, s0, s1113; GFX11-SDAG-NEXT:    v_permlane16_b32 v6, v6, s0, s1114; GFX11-SDAG-NEXT:    v_permlane16_b32 v5, v5, s0, s1115; GFX11-SDAG-NEXT:    v_permlane16_b32 v4, v4, s0, s1116; GFX11-SDAG-NEXT:    v_permlane16_b32 v3, v3, s0, s1117; GFX11-SDAG-NEXT:    v_permlane16_b32 v2, v2, s0, s1118; GFX11-SDAG-NEXT:    s_clause 0x1119; GFX11-SDAG-NEXT:    global_store_b64 v[0:1], v[6:7], off offset:16120; GFX11-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off121; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]122;123; GFX12-SDAG-LABEL: v_permlane16_v3p0:124; GFX12-SDAG:       ; %bb.0:125; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0126; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0127; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0128; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0129; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0130; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s0, v8131; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s1, v9132; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)133; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)134; GFX12-SDAG-NEXT:    v_permlane16_b32 v7, v7, s0, s1135; GFX12-SDAG-NEXT:    v_permlane16_b32 v6, v6, s0, s1136; GFX12-SDAG-NEXT:    v_permlane16_b32 v5, v5, s0, s1137; GFX12-SDAG-NEXT:    v_permlane16_b32 v4, v4, s0, s1138; GFX12-SDAG-NEXT:    v_permlane16_b32 v3, v3, s0, s1139; GFX12-SDAG-NEXT:    v_permlane16_b32 v2, v2, s0, s1140; GFX12-SDAG-NEXT:    s_clause 0x1141; GFX12-SDAG-NEXT:    global_store_b64 v[0:1], v[6:7], off offset:16142; GFX12-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off143; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]144  %v = call <3 x ptr> @llvm.amdgcn.permlane16.v3p0(<3 x ptr> %src0, <3 x ptr> %src0, i32 %src1, i32 %src2, i1 false, i1 false)145  store <3 x ptr> %v, ptr addrspace(1) %out146  ret void147}148 149define void @v_permlanex16_v3p0(ptr addrspace(1) %out, <3 x ptr> %src0, i32 %src1, i32 %src2) {150; GFX10-SDAG-LABEL: v_permlanex16_v3p0:151; GFX10-SDAG:       ; %bb.0:152; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)153; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s4, v8154; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s5, v9155; GFX10-SDAG-NEXT:    v_permlanex16_b32 v7, v7, s4, s5156; GFX10-SDAG-NEXT:    v_permlanex16_b32 v6, v6, s4, s5157; GFX10-SDAG-NEXT:    v_permlanex16_b32 v5, v5, s4, s5158; GFX10-SDAG-NEXT:    v_permlanex16_b32 v4, v4, s4, s5159; GFX10-SDAG-NEXT:    v_permlanex16_b32 v3, v3, s4, s5160; GFX10-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s4, s5161; GFX10-SDAG-NEXT:    global_store_dwordx2 v[0:1], v[6:7], off offset:16162; GFX10-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off163; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]164;165; GFX11-SDAG-LABEL: v_permlanex16_v3p0:166; GFX11-SDAG:       ; %bb.0:167; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)168; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s0, v8169; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s1, v9170; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)171; GFX11-SDAG-NEXT:    v_permlanex16_b32 v7, v7, s0, s1172; GFX11-SDAG-NEXT:    v_permlanex16_b32 v6, v6, s0, s1173; GFX11-SDAG-NEXT:    v_permlanex16_b32 v5, v5, s0, s1174; GFX11-SDAG-NEXT:    v_permlanex16_b32 v4, v4, s0, s1175; GFX11-SDAG-NEXT:    v_permlanex16_b32 v3, v3, s0, s1176; GFX11-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s0, s1177; GFX11-SDAG-NEXT:    s_clause 0x1178; GFX11-SDAG-NEXT:    global_store_b64 v[0:1], v[6:7], off offset:16179; GFX11-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off180; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]181;182; GFX12-SDAG-LABEL: v_permlanex16_v3p0:183; GFX12-SDAG:       ; %bb.0:184; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0185; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0186; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0187; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0188; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0189; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s0, v8190; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s1, v9191; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)192; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)193; GFX12-SDAG-NEXT:    v_permlanex16_b32 v7, v7, s0, s1194; GFX12-SDAG-NEXT:    v_permlanex16_b32 v6, v6, s0, s1195; GFX12-SDAG-NEXT:    v_permlanex16_b32 v5, v5, s0, s1196; GFX12-SDAG-NEXT:    v_permlanex16_b32 v4, v4, s0, s1197; GFX12-SDAG-NEXT:    v_permlanex16_b32 v3, v3, s0, s1198; GFX12-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s0, s1199; GFX12-SDAG-NEXT:    s_clause 0x1200; GFX12-SDAG-NEXT:    global_store_b64 v[0:1], v[6:7], off offset:16201; GFX12-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off202; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]203  %v = call <3 x ptr> @llvm.amdgcn.permlanex16.v3p0(<3 x ptr> %src0, <3 x ptr> %src0, i32 %src1, i32 %src2, i1 false, i1 false)204  store <3 x ptr> %v, ptr addrspace(1) %out205  ret void206}207 208define void @v_permlane16_p3(ptr addrspace(1) %out, ptr addrspace(3) %src0, i32 %src1, i32 %src2) {209; GFX10-SDAG-LABEL: v_permlane16_p3:210; GFX10-SDAG:       ; %bb.0:211; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)212; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s4, v3213; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s5, v4214; GFX10-SDAG-NEXT:    v_permlane16_b32 v2, v2, s4, s5215; GFX10-SDAG-NEXT:    global_store_dword v[0:1], v2, off216; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]217;218; GFX11-SDAG-LABEL: v_permlane16_p3:219; GFX11-SDAG:       ; %bb.0:220; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)221; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s0, v3222; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s1, v4223; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)224; GFX11-SDAG-NEXT:    v_permlane16_b32 v2, v2, s0, s1225; GFX11-SDAG-NEXT:    global_store_b32 v[0:1], v2, off226; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]227;228; GFX12-SDAG-LABEL: v_permlane16_p3:229; GFX12-SDAG:       ; %bb.0:230; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0231; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0232; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0233; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0234; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0235; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s0, v3236; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s1, v4237; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)238; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)239; GFX12-SDAG-NEXT:    v_permlane16_b32 v2, v2, s0, s1240; GFX12-SDAG-NEXT:    global_store_b32 v[0:1], v2, off241; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]242  %v = call ptr addrspace(3) @llvm.amdgcn.permlane16.p3(ptr addrspace(3) %src0, ptr addrspace(3) %src0, i32 %src1, i32 %src2, i1 false, i1 false)243  store ptr addrspace(3) %v, ptr addrspace(1) %out244  ret void245}246 247define void @v_permlanex16_p3(ptr addrspace(1) %out, ptr addrspace(3) %src0, i32 %src1, i32 %src2) {248; GFX10-SDAG-LABEL: v_permlanex16_p3:249; GFX10-SDAG:       ; %bb.0:250; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)251; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s4, v3252; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s5, v4253; GFX10-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s4, s5254; GFX10-SDAG-NEXT:    global_store_dword v[0:1], v2, off255; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]256;257; GFX11-SDAG-LABEL: v_permlanex16_p3:258; GFX11-SDAG:       ; %bb.0:259; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)260; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s0, v3261; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s1, v4262; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)263; GFX11-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s0, s1264; GFX11-SDAG-NEXT:    global_store_b32 v[0:1], v2, off265; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]266;267; GFX12-SDAG-LABEL: v_permlanex16_p3:268; GFX12-SDAG:       ; %bb.0:269; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0270; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0271; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0272; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0273; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0274; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s0, v3275; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s1, v4276; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)277; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)278; GFX12-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s0, s1279; GFX12-SDAG-NEXT:    global_store_b32 v[0:1], v2, off280; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]281  %v = call ptr addrspace(3) @llvm.amdgcn.permlanex16.p3(ptr addrspace(3) %src0, ptr addrspace(3) %src0, i32 %src1, i32 %src2, i1 false, i1 false)282  store ptr addrspace(3) %v, ptr addrspace(1) %out283  ret void284}285 286define void @v_permlane16_v3p3(ptr addrspace(1) %out, <3 x ptr addrspace(3)> %src0, i32 %src1, i32 %src2) {287; GFX10-SDAG-LABEL: v_permlane16_v3p3:288; GFX10-SDAG:       ; %bb.0:289; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)290; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s4, v5291; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s5, v6292; GFX10-SDAG-NEXT:    v_permlane16_b32 v4, v4, s4, s5293; GFX10-SDAG-NEXT:    v_permlane16_b32 v3, v3, s4, s5294; GFX10-SDAG-NEXT:    v_permlane16_b32 v2, v2, s4, s5295; GFX10-SDAG-NEXT:    global_store_dwordx3 v[0:1], v[2:4], off296; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]297;298; GFX11-SDAG-LABEL: v_permlane16_v3p3:299; GFX11-SDAG:       ; %bb.0:300; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)301; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s0, v5302; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s1, v6303; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)304; GFX11-SDAG-NEXT:    v_permlane16_b32 v4, v4, s0, s1305; GFX11-SDAG-NEXT:    v_permlane16_b32 v3, v3, s0, s1306; GFX11-SDAG-NEXT:    v_permlane16_b32 v2, v2, s0, s1307; GFX11-SDAG-NEXT:    global_store_b96 v[0:1], v[2:4], off308; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]309;310; GFX12-SDAG-LABEL: v_permlane16_v3p3:311; GFX12-SDAG:       ; %bb.0:312; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0313; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0314; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0315; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0316; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0317; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s0, v5318; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s1, v6319; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)320; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)321; GFX12-SDAG-NEXT:    v_permlane16_b32 v4, v4, s0, s1322; GFX12-SDAG-NEXT:    v_permlane16_b32 v3, v3, s0, s1323; GFX12-SDAG-NEXT:    v_permlane16_b32 v2, v2, s0, s1324; GFX12-SDAG-NEXT:    global_store_b96 v[0:1], v[2:4], off325; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]326  %v = call <3 x ptr addrspace(3)> @llvm.amdgcn.permlane16.v3p3(<3 x ptr addrspace(3)> %src0, <3 x ptr addrspace(3)> %src0, i32 %src1, i32 %src2, i1 false, i1 false)327  store <3 x ptr addrspace(3)> %v, ptr addrspace(1) %out328  ret void329}330 331define void @v_permlanex16_v3p3(ptr addrspace(1) %out, <3 x ptr addrspace(3)> %src0, i32 %src1, i32 %src2) {332; GFX10-SDAG-LABEL: v_permlanex16_v3p3:333; GFX10-SDAG:       ; %bb.0:334; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)335; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s4, v5336; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s5, v6337; GFX10-SDAG-NEXT:    v_permlanex16_b32 v4, v4, s4, s5338; GFX10-SDAG-NEXT:    v_permlanex16_b32 v3, v3, s4, s5339; GFX10-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s4, s5340; GFX10-SDAG-NEXT:    global_store_dwordx3 v[0:1], v[2:4], off341; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]342;343; GFX11-SDAG-LABEL: v_permlanex16_v3p3:344; GFX11-SDAG:       ; %bb.0:345; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)346; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s0, v5347; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s1, v6348; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)349; GFX11-SDAG-NEXT:    v_permlanex16_b32 v4, v4, s0, s1350; GFX11-SDAG-NEXT:    v_permlanex16_b32 v3, v3, s0, s1351; GFX11-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s0, s1352; GFX11-SDAG-NEXT:    global_store_b96 v[0:1], v[2:4], off353; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]354;355; GFX12-SDAG-LABEL: v_permlanex16_v3p3:356; GFX12-SDAG:       ; %bb.0:357; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0358; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0359; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0360; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0361; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0362; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s0, v5363; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s1, v6364; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)365; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)366; GFX12-SDAG-NEXT:    v_permlanex16_b32 v4, v4, s0, s1367; GFX12-SDAG-NEXT:    v_permlanex16_b32 v3, v3, s0, s1368; GFX12-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s0, s1369; GFX12-SDAG-NEXT:    global_store_b96 v[0:1], v[2:4], off370; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]371  %v = call <3 x ptr addrspace(3)> @llvm.amdgcn.permlanex16.v3p3(<3 x ptr addrspace(3)> %src0, <3 x ptr addrspace(3)> %src0, i32 %src1, i32 %src2, i1 false, i1 false)372  store <3 x ptr addrspace(3)> %v, ptr addrspace(1) %out373  ret void374}375 376define void @v_permlane16_p5(ptr addrspace(1) %out, ptr addrspace(5) %src0, i32 %src1, i32 %src2) {377; GFX10-SDAG-LABEL: v_permlane16_p5:378; GFX10-SDAG:       ; %bb.0:379; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)380; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s4, v3381; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s5, v4382; GFX10-SDAG-NEXT:    v_permlane16_b32 v2, v2, s4, s5383; GFX10-SDAG-NEXT:    global_store_dword v[0:1], v2, off384; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]385;386; GFX11-SDAG-LABEL: v_permlane16_p5:387; GFX11-SDAG:       ; %bb.0:388; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)389; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s0, v3390; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s1, v4391; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)392; GFX11-SDAG-NEXT:    v_permlane16_b32 v2, v2, s0, s1393; GFX11-SDAG-NEXT:    global_store_b32 v[0:1], v2, off394; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]395;396; GFX12-SDAG-LABEL: v_permlane16_p5:397; GFX12-SDAG:       ; %bb.0:398; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0399; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0400; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0401; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0402; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0403; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s0, v3404; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s1, v4405; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)406; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)407; GFX12-SDAG-NEXT:    v_permlane16_b32 v2, v2, s0, s1408; GFX12-SDAG-NEXT:    global_store_b32 v[0:1], v2, off409; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]410  %v = call ptr addrspace(5) @llvm.amdgcn.permlane16.p5(ptr addrspace(5) %src0, ptr addrspace(5) %src0, i32 %src1, i32 %src2, i1 false, i1 false)411  store ptr addrspace(5) %v, ptr addrspace(1) %out412  ret void413}414 415define void @v_permlanex16_p5(ptr addrspace(1) %out, ptr addrspace(5) %src0, i32 %src1, i32 %src2) {416; GFX10-SDAG-LABEL: v_permlanex16_p5:417; GFX10-SDAG:       ; %bb.0:418; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)419; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s4, v3420; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s5, v4421; GFX10-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s4, s5422; GFX10-SDAG-NEXT:    global_store_dword v[0:1], v2, off423; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]424;425; GFX11-SDAG-LABEL: v_permlanex16_p5:426; GFX11-SDAG:       ; %bb.0:427; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)428; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s0, v3429; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s1, v4430; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)431; GFX11-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s0, s1432; GFX11-SDAG-NEXT:    global_store_b32 v[0:1], v2, off433; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]434;435; GFX12-SDAG-LABEL: v_permlanex16_p5:436; GFX12-SDAG:       ; %bb.0:437; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0438; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0439; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0440; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0441; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0442; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s0, v3443; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s1, v4444; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)445; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)446; GFX12-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s0, s1447; GFX12-SDAG-NEXT:    global_store_b32 v[0:1], v2, off448; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]449  %v = call ptr addrspace(5) @llvm.amdgcn.permlanex16.p5(ptr addrspace(5) %src0, ptr addrspace(5) %src0, i32 %src1, i32 %src2, i1 false, i1 false)450  store ptr addrspace(5) %v, ptr addrspace(1) %out451  ret void452}453 454define void @v_permlane16_v3p5(ptr addrspace(1) %out, <3 x ptr addrspace(5)> %src0, i32 %src1, i32 %src2) {455; GFX10-SDAG-LABEL: v_permlane16_v3p5:456; GFX10-SDAG:       ; %bb.0:457; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)458; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s4, v5459; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s5, v6460; GFX10-SDAG-NEXT:    v_permlane16_b32 v4, v4, s4, s5461; GFX10-SDAG-NEXT:    v_permlane16_b32 v3, v3, s4, s5462; GFX10-SDAG-NEXT:    v_permlane16_b32 v2, v2, s4, s5463; GFX10-SDAG-NEXT:    global_store_dwordx3 v[0:1], v[2:4], off464; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]465;466; GFX11-SDAG-LABEL: v_permlane16_v3p5:467; GFX11-SDAG:       ; %bb.0:468; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)469; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s0, v5470; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s1, v6471; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)472; GFX11-SDAG-NEXT:    v_permlane16_b32 v4, v4, s0, s1473; GFX11-SDAG-NEXT:    v_permlane16_b32 v3, v3, s0, s1474; GFX11-SDAG-NEXT:    v_permlane16_b32 v2, v2, s0, s1475; GFX11-SDAG-NEXT:    global_store_b96 v[0:1], v[2:4], off476; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]477;478; GFX12-SDAG-LABEL: v_permlane16_v3p5:479; GFX12-SDAG:       ; %bb.0:480; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0481; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0482; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0483; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0484; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0485; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s0, v5486; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s1, v6487; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)488; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)489; GFX12-SDAG-NEXT:    v_permlane16_b32 v4, v4, s0, s1490; GFX12-SDAG-NEXT:    v_permlane16_b32 v3, v3, s0, s1491; GFX12-SDAG-NEXT:    v_permlane16_b32 v2, v2, s0, s1492; GFX12-SDAG-NEXT:    global_store_b96 v[0:1], v[2:4], off493; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]494  %v = call <3 x ptr addrspace(5)> @llvm.amdgcn.permlane16.v3p5(<3 x ptr addrspace(5)> %src0, <3 x ptr addrspace(5)> %src0, i32 %src1, i32 %src2, i1 false, i1 false)495  store <3 x ptr addrspace(5)> %v, ptr addrspace(1) %out496  ret void497}498 499define void @v_permlanex16_v3p5(ptr addrspace(1) %out, <3 x ptr addrspace(5)> %src0, i32 %src1, i32 %src2) {500; GFX10-SDAG-LABEL: v_permlanex16_v3p5:501; GFX10-SDAG:       ; %bb.0:502; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)503; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s4, v5504; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s5, v6505; GFX10-SDAG-NEXT:    v_permlanex16_b32 v4, v4, s4, s5506; GFX10-SDAG-NEXT:    v_permlanex16_b32 v3, v3, s4, s5507; GFX10-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s4, s5508; GFX10-SDAG-NEXT:    global_store_dwordx3 v[0:1], v[2:4], off509; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]510;511; GFX11-SDAG-LABEL: v_permlanex16_v3p5:512; GFX11-SDAG:       ; %bb.0:513; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)514; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s0, v5515; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s1, v6516; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)517; GFX11-SDAG-NEXT:    v_permlanex16_b32 v4, v4, s0, s1518; GFX11-SDAG-NEXT:    v_permlanex16_b32 v3, v3, s0, s1519; GFX11-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s0, s1520; GFX11-SDAG-NEXT:    global_store_b96 v[0:1], v[2:4], off521; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]522;523; GFX12-SDAG-LABEL: v_permlanex16_v3p5:524; GFX12-SDAG:       ; %bb.0:525; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0526; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0527; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0528; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0529; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0530; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s0, v5531; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s1, v6532; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)533; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)534; GFX12-SDAG-NEXT:    v_permlanex16_b32 v4, v4, s0, s1535; GFX12-SDAG-NEXT:    v_permlanex16_b32 v3, v3, s0, s1536; GFX12-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s0, s1537; GFX12-SDAG-NEXT:    global_store_b96 v[0:1], v[2:4], off538; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]539  %v = call <3 x ptr addrspace(5)> @llvm.amdgcn.permlanex16.v3p5(<3 x ptr addrspace(5)> %src0, <3 x ptr addrspace(5)> %src0, i32 %src1, i32 %src2, i1 false, i1 false)540  store <3 x ptr addrspace(5)> %v, ptr addrspace(1) %out541  ret void542}543 544define void @v_permlane16_p6(ptr addrspace(1) %out, ptr addrspace(6) %src0, i32 %src1, i32 %src2) {545; GFX10-SDAG-LABEL: v_permlane16_p6:546; GFX10-SDAG:       ; %bb.0:547; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)548; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s4, v3549; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s5, v4550; GFX10-SDAG-NEXT:    v_permlane16_b32 v2, v2, s4, s5551; GFX10-SDAG-NEXT:    global_store_dword v[0:1], v2, off552; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]553;554; GFX11-SDAG-LABEL: v_permlane16_p6:555; GFX11-SDAG:       ; %bb.0:556; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)557; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s0, v3558; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s1, v4559; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)560; GFX11-SDAG-NEXT:    v_permlane16_b32 v2, v2, s0, s1561; GFX11-SDAG-NEXT:    global_store_b32 v[0:1], v2, off562; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]563;564; GFX12-SDAG-LABEL: v_permlane16_p6:565; GFX12-SDAG:       ; %bb.0:566; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0567; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0568; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0569; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0570; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0571; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s0, v3572; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s1, v4573; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)574; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)575; GFX12-SDAG-NEXT:    v_permlane16_b32 v2, v2, s0, s1576; GFX12-SDAG-NEXT:    global_store_b32 v[0:1], v2, off577; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]578  %v = call ptr addrspace(6) @llvm.amdgcn.permlane16.p6(ptr addrspace(6) %src0, ptr addrspace(6) %src0, i32 %src1, i32 %src2, i1 false, i1 false)579  store ptr addrspace(6) %v, ptr addrspace(1) %out580  ret void581}582 583define void @v_permlanex16_p6(ptr addrspace(1) %out, ptr addrspace(6) %src0, i32 %src1, i32 %src2) {584; GFX10-SDAG-LABEL: v_permlanex16_p6:585; GFX10-SDAG:       ; %bb.0:586; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)587; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s4, v3588; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s5, v4589; GFX10-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s4, s5590; GFX10-SDAG-NEXT:    global_store_dword v[0:1], v2, off591; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]592;593; GFX11-SDAG-LABEL: v_permlanex16_p6:594; GFX11-SDAG:       ; %bb.0:595; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)596; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s0, v3597; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s1, v4598; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)599; GFX11-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s0, s1600; GFX11-SDAG-NEXT:    global_store_b32 v[0:1], v2, off601; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]602;603; GFX12-SDAG-LABEL: v_permlanex16_p6:604; GFX12-SDAG:       ; %bb.0:605; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0606; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0607; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0608; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0609; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0610; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s0, v3611; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s1, v4612; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)613; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)614; GFX12-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s0, s1615; GFX12-SDAG-NEXT:    global_store_b32 v[0:1], v2, off616; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]617  %v = call ptr addrspace(6) @llvm.amdgcn.permlanex16.p6(ptr addrspace(6) %src0, ptr addrspace(6) %src0, i32 %src1, i32 %src2, i1 false, i1 false)618  store ptr addrspace(6) %v, ptr addrspace(1) %out619  ret void620}621 622define void @v_permlane16_v3p6(ptr addrspace(1) %out, <3 x ptr addrspace(6)> %src0, i32 %src1, i32 %src2) {623; GFX10-SDAG-LABEL: v_permlane16_v3p6:624; GFX10-SDAG:       ; %bb.0:625; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)626; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s4, v5627; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s5, v6628; GFX10-SDAG-NEXT:    v_permlane16_b32 v4, v4, s4, s5629; GFX10-SDAG-NEXT:    v_permlane16_b32 v3, v3, s4, s5630; GFX10-SDAG-NEXT:    v_permlane16_b32 v2, v2, s4, s5631; GFX10-SDAG-NEXT:    global_store_dwordx3 v[0:1], v[2:4], off632; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]633;634; GFX11-SDAG-LABEL: v_permlane16_v3p6:635; GFX11-SDAG:       ; %bb.0:636; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)637; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s0, v5638; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s1, v6639; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)640; GFX11-SDAG-NEXT:    v_permlane16_b32 v4, v4, s0, s1641; GFX11-SDAG-NEXT:    v_permlane16_b32 v3, v3, s0, s1642; GFX11-SDAG-NEXT:    v_permlane16_b32 v2, v2, s0, s1643; GFX11-SDAG-NEXT:    global_store_b96 v[0:1], v[2:4], off644; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]645;646; GFX12-SDAG-LABEL: v_permlane16_v3p6:647; GFX12-SDAG:       ; %bb.0:648; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0649; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0650; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0651; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0652; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0653; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s0, v5654; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s1, v6655; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)656; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)657; GFX12-SDAG-NEXT:    v_permlane16_b32 v4, v4, s0, s1658; GFX12-SDAG-NEXT:    v_permlane16_b32 v3, v3, s0, s1659; GFX12-SDAG-NEXT:    v_permlane16_b32 v2, v2, s0, s1660; GFX12-SDAG-NEXT:    global_store_b96 v[0:1], v[2:4], off661; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]662  %v = call <3 x ptr addrspace(6)> @llvm.amdgcn.permlane16.v3p6(<3 x ptr addrspace(6)> %src0, <3 x ptr addrspace(6)> %src0, i32 %src1, i32 %src2, i1 false, i1 false)663  store <3 x ptr addrspace(6)> %v, ptr addrspace(1) %out664  ret void665}666 667define void @v_permlanex16_v3p6(ptr addrspace(1) %out, <3 x ptr addrspace(6)> %src0, i32 %src1, i32 %src2) {668; GFX10-SDAG-LABEL: v_permlanex16_v3p6:669; GFX10-SDAG:       ; %bb.0:670; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)671; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s4, v5672; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s5, v6673; GFX10-SDAG-NEXT:    v_permlanex16_b32 v4, v4, s4, s5674; GFX10-SDAG-NEXT:    v_permlanex16_b32 v3, v3, s4, s5675; GFX10-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s4, s5676; GFX10-SDAG-NEXT:    global_store_dwordx3 v[0:1], v[2:4], off677; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]678;679; GFX11-SDAG-LABEL: v_permlanex16_v3p6:680; GFX11-SDAG:       ; %bb.0:681; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)682; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s0, v5683; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s1, v6684; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)685; GFX11-SDAG-NEXT:    v_permlanex16_b32 v4, v4, s0, s1686; GFX11-SDAG-NEXT:    v_permlanex16_b32 v3, v3, s0, s1687; GFX11-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s0, s1688; GFX11-SDAG-NEXT:    global_store_b96 v[0:1], v[2:4], off689; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]690;691; GFX12-SDAG-LABEL: v_permlanex16_v3p6:692; GFX12-SDAG:       ; %bb.0:693; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0694; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0695; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0696; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0697; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0698; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s0, v5699; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s1, v6700; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)701; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)702; GFX12-SDAG-NEXT:    v_permlanex16_b32 v4, v4, s0, s1703; GFX12-SDAG-NEXT:    v_permlanex16_b32 v3, v3, s0, s1704; GFX12-SDAG-NEXT:    v_permlanex16_b32 v2, v2, s0, s1705; GFX12-SDAG-NEXT:    global_store_b96 v[0:1], v[2:4], off706; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]707  %v = call <3 x ptr addrspace(6)> @llvm.amdgcn.permlanex16.v3p6(<3 x ptr addrspace(6)> %src0, <3 x ptr addrspace(6)> %src0, i32 %src1, i32 %src2, i1 false, i1 false)708  store <3 x ptr addrspace(6)> %v, ptr addrspace(1) %out709  ret void710}711