brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.8 KiB · d973f7b Raw
230 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx908 < %s | FileCheck -check-prefixes=GFX908 %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX90A %s4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1030 < %s | FileCheck -check-prefixes=GFX1030 %s5 6 7; Function Attrs: mustprogress nounwind willreturn8define amdgpu_kernel void @half8(ptr addrspace(1) nocapture readonly %0, ptr addrspace(1) nocapture writeonly %1) local_unnamed_addr #0 {9; GFX908-LABEL: half8:10; GFX908:       ; %bb.0:11; GFX908-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x012; GFX908-NEXT:    v_mov_b32_e32 v4, 013; GFX908-NEXT:    s_waitcnt lgkmcnt(0)14; GFX908-NEXT:    global_load_dwordx4 v[0:3], v4, s[0:1]15; GFX908-NEXT:    s_waitcnt vmcnt(0)16; GFX908-NEXT:    global_store_dwordx4 v4, v[0:3], s[2:3]17; GFX908-NEXT:    s_endpgm18;19; GFX90A-LABEL: half8:20; GFX90A:       ; %bb.0:21; GFX90A-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x022; GFX90A-NEXT:    v_mov_b32_e32 v0, 023; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)24; GFX90A-NEXT:    global_load_dwordx4 v[2:5], v0, s[0:1]25; GFX90A-NEXT:    s_waitcnt vmcnt(0)26; GFX90A-NEXT:    global_store_dwordx4 v0, v[2:5], s[2:3]27; GFX90A-NEXT:    s_endpgm28;29; GFX1030-LABEL: half8:30; GFX1030:       ; %bb.0:31; GFX1030-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x032; GFX1030-NEXT:    v_mov_b32_e32 v4, 033; GFX1030-NEXT:    s_waitcnt lgkmcnt(0)34; GFX1030-NEXT:    global_load_dwordx4 v[0:3], v4, s[0:1]35; GFX1030-NEXT:    s_waitcnt vmcnt(0)36; GFX1030-NEXT:    global_store_dwordx4 v4, v[0:3], s[2:3]37; GFX1030-NEXT:    s_endpgm38  %gep0 = getelementptr half, ptr addrspace(1) %0, i64 039  %gep1 = getelementptr half, ptr addrspace(1) %0, i64 140  %gep2 = getelementptr half, ptr addrspace(1) %0, i64 241  %gep3 = getelementptr half, ptr addrspace(1) %0, i64 342  %gep4 = getelementptr half, ptr addrspace(1) %0, i64 443  %gep5 = getelementptr half, ptr addrspace(1) %0, i64 544  %gep6 = getelementptr half, ptr addrspace(1) %0, i64 645  %gep7 = getelementptr half, ptr addrspace(1) %0, i64 746  %l0 = load half, ptr addrspace(1) %gep0, align 247  %l1 = load half, ptr addrspace(1) %gep1, align 248  %l2 = load half, ptr addrspace(1) %gep2, align 249  %l3 = load half, ptr addrspace(1) %gep3, align 250  %l4 = load half, ptr addrspace(1) %gep4, align 251  %l5 = load half, ptr addrspace(1) %gep5, align 252  %l6 = load half, ptr addrspace(1) %gep6, align 253  %l7 = load half, ptr addrspace(1) %gep7, align 254  %sgep0 = getelementptr half, ptr addrspace(1) %1, i64 055  %sgep1 = getelementptr half, ptr addrspace(1) %1, i64 156  %sgep2 = getelementptr half, ptr addrspace(1) %1, i64 257  %sgep3 = getelementptr half, ptr addrspace(1) %1, i64 358  %sgep4 = getelementptr half, ptr addrspace(1) %1, i64 459  %sgep5 = getelementptr half, ptr addrspace(1) %1, i64 560  %sgep6 = getelementptr half, ptr addrspace(1) %1, i64 661  %sgep7 = getelementptr half, ptr addrspace(1) %1, i64 762  store half %l0, ptr addrspace(1) %sgep0, align 263  store half %l1, ptr addrspace(1) %sgep1, align 264  store half %l2, ptr addrspace(1) %sgep2, align 265  store half %l3, ptr addrspace(1) %sgep3, align 266  store half %l4, ptr addrspace(1) %sgep4, align 267  store half %l5, ptr addrspace(1) %sgep5, align 268  store half %l6, ptr addrspace(1) %sgep6, align 269  store half %l7, ptr addrspace(1) %sgep7, align 270  ret void71}72 73; Function Attrs: mustprogress nounwind willreturn74define amdgpu_kernel void @half6(ptr addrspace(1) nocapture readonly %0, ptr addrspace(1) nocapture writeonly %1) local_unnamed_addr #0 {75; GFX908-LABEL: half6:76; GFX908:       ; %bb.0:77; GFX908-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x078; GFX908-NEXT:    v_mov_b32_e32 v3, 079; GFX908-NEXT:    s_waitcnt lgkmcnt(0)80; GFX908-NEXT:    global_load_dwordx3 v[0:2], v3, s[0:1]81; GFX908-NEXT:    s_waitcnt vmcnt(0)82; GFX908-NEXT:    global_store_dwordx3 v3, v[0:2], s[2:3]83; GFX908-NEXT:    s_endpgm84;85; GFX90A-LABEL: half6:86; GFX90A:       ; %bb.0:87; GFX90A-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x088; GFX90A-NEXT:    v_mov_b32_e32 v0, 089; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)90; GFX90A-NEXT:    global_load_dwordx3 v[2:4], v0, s[0:1]91; GFX90A-NEXT:    s_waitcnt vmcnt(0)92; GFX90A-NEXT:    global_store_dwordx3 v0, v[2:4], s[2:3]93; GFX90A-NEXT:    s_endpgm94;95; GFX1030-LABEL: half6:96; GFX1030:       ; %bb.0:97; GFX1030-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x098; GFX1030-NEXT:    v_mov_b32_e32 v3, 099; GFX1030-NEXT:    s_waitcnt lgkmcnt(0)100; GFX1030-NEXT:    global_load_dwordx3 v[0:2], v3, s[0:1]101; GFX1030-NEXT:    s_waitcnt vmcnt(0)102; GFX1030-NEXT:    global_store_dwordx3 v3, v[0:2], s[2:3]103; GFX1030-NEXT:    s_endpgm104  %gep0 = getelementptr half, ptr addrspace(1) %0, i64 0105  %gep1 = getelementptr half, ptr addrspace(1) %0, i64 1106  %gep2 = getelementptr half, ptr addrspace(1) %0, i64 2107  %gep3 = getelementptr half, ptr addrspace(1) %0, i64 3108  %gep4 = getelementptr half, ptr addrspace(1) %0, i64 4109  %gep5 = getelementptr half, ptr addrspace(1) %0, i64 5110  %l0 = load half, ptr addrspace(1) %gep0, align 1111  %l1 = load half, ptr addrspace(1) %gep1, align 1112  %l2 = load half, ptr addrspace(1) %gep2, align 1113  %l3 = load half, ptr addrspace(1) %gep3, align 1114  %l4 = load half, ptr addrspace(1) %gep4, align 1115  %l5 = load half, ptr addrspace(1) %gep5, align 1116  %sgep0 = getelementptr half, ptr addrspace(1) %1, i64 0117  %sgep1 = getelementptr half, ptr addrspace(1) %1, i64 1118  %sgep2 = getelementptr half, ptr addrspace(1) %1, i64 2119  %sgep3 = getelementptr half, ptr addrspace(1) %1, i64 3120  %sgep4 = getelementptr half, ptr addrspace(1) %1, i64 4121  %sgep5 = getelementptr half, ptr addrspace(1) %1, i64 5122  store half %l0, ptr addrspace(1) %sgep0, align 1123  store half %l1, ptr addrspace(1) %sgep1, align 1124  store half %l2, ptr addrspace(1) %sgep2, align 1125  store half %l3, ptr addrspace(1) %sgep3, align 1126  store half %l4, ptr addrspace(1) %sgep4, align 1127  store half %l5, ptr addrspace(1) %sgep5, align 1128  ret void129}130 131; Function Attrs: mustprogress nounwind willreturn132define amdgpu_kernel void @half4(ptr addrspace(1) nocapture readonly %0, ptr addrspace(1) nocapture writeonly %1) local_unnamed_addr #0 {133; GFX908-LABEL: half4:134; GFX908:       ; %bb.0:135; GFX908-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0136; GFX908-NEXT:    v_mov_b32_e32 v2, 0137; GFX908-NEXT:    s_waitcnt lgkmcnt(0)138; GFX908-NEXT:    s_load_dwordx2 s[4:5], s[0:1], 0x0139; GFX908-NEXT:    s_waitcnt lgkmcnt(0)140; GFX908-NEXT:    v_mov_b32_e32 v0, s4141; GFX908-NEXT:    v_mov_b32_e32 v1, s5142; GFX908-NEXT:    global_store_dwordx2 v2, v[0:1], s[2:3]143; GFX908-NEXT:    s_endpgm144;145; GFX90A-LABEL: half4:146; GFX90A:       ; %bb.0:147; GFX90A-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0148; GFX90A-NEXT:    v_mov_b32_e32 v0, 0149; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)150; GFX90A-NEXT:    s_load_dwordx2 s[4:5], s[0:1], 0x0151; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)152; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], s[4:5], s[4:5] op_sel:[0,1]153; GFX90A-NEXT:    global_store_dwordx2 v0, v[2:3], s[2:3]154; GFX90A-NEXT:    s_endpgm155;156; GFX1030-LABEL: half4:157; GFX1030:       ; %bb.0:158; GFX1030-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0159; GFX1030-NEXT:    v_mov_b32_e32 v2, 0160; GFX1030-NEXT:    s_waitcnt lgkmcnt(0)161; GFX1030-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0x0162; GFX1030-NEXT:    s_waitcnt lgkmcnt(0)163; GFX1030-NEXT:    v_mov_b32_e32 v0, s0164; GFX1030-NEXT:    v_mov_b32_e32 v1, s1165; GFX1030-NEXT:    global_store_dwordx2 v2, v[0:1], s[2:3]166; GFX1030-NEXT:    s_endpgm167  %gep0 = getelementptr half, ptr addrspace(1) %0, i64 0168  %gep1 = getelementptr half, ptr addrspace(1) %0, i64 1169  %gep2 = getelementptr half, ptr addrspace(1) %0, i64 2170  %gep3 = getelementptr half, ptr addrspace(1) %0, i64 3171  %l0 = load half, ptr addrspace(1) %gep0, align 4172  %l1 = load half, ptr addrspace(1) %gep1, align 4173  %l2 = load half, ptr addrspace(1) %gep2, align 4174  %l3 = load half, ptr addrspace(1) %gep3, align 4175  %sgep0 = getelementptr half, ptr addrspace(1) %1, i64 0176  %sgep1 = getelementptr half, ptr addrspace(1) %1, i64 1177  %sgep2 = getelementptr half, ptr addrspace(1) %1, i64 2178  %sgep3 = getelementptr half, ptr addrspace(1) %1, i64 3179  store half %l0, ptr addrspace(1) %sgep0, align 4180  store half %l1, ptr addrspace(1) %sgep1, align 4181  store half %l2, ptr addrspace(1) %sgep2, align 4182  store half %l3, ptr addrspace(1) %sgep3, align 4183  ret void184}185 186 187; Function Attrs: mustprogress nounwind willreturn188define amdgpu_kernel void @half2(ptr addrspace(1) nocapture readonly %0, ptr addrspace(1) nocapture writeonly %1) local_unnamed_addr #0 {189; GFX908-LABEL: half2:190; GFX908:       ; %bb.0:191; GFX908-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0192; GFX908-NEXT:    v_mov_b32_e32 v0, 0193; GFX908-NEXT:    s_waitcnt lgkmcnt(0)194; GFX908-NEXT:    global_load_dword v1, v0, s[0:1]195; GFX908-NEXT:    s_waitcnt vmcnt(0)196; GFX908-NEXT:    global_store_dword v0, v1, s[2:3]197; GFX908-NEXT:    s_endpgm198;199; GFX90A-LABEL: half2:200; GFX90A:       ; %bb.0:201; GFX90A-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0202; GFX90A-NEXT:    v_mov_b32_e32 v0, 0203; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)204; GFX90A-NEXT:    global_load_dword v1, v0, s[0:1]205; GFX90A-NEXT:    s_waitcnt vmcnt(0)206; GFX90A-NEXT:    global_store_dword v0, v1, s[2:3]207; GFX90A-NEXT:    s_endpgm208;209; GFX1030-LABEL: half2:210; GFX1030:       ; %bb.0:211; GFX1030-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0212; GFX1030-NEXT:    v_mov_b32_e32 v0, 0213; GFX1030-NEXT:    s_waitcnt lgkmcnt(0)214; GFX1030-NEXT:    global_load_dword v1, v0, s[0:1]215; GFX1030-NEXT:    s_waitcnt vmcnt(0)216; GFX1030-NEXT:    global_store_dword v0, v1, s[2:3]217; GFX1030-NEXT:    s_endpgm218  %gep0 = getelementptr half, ptr addrspace(1) %0, i64 0219  %gep1 = getelementptr half, ptr addrspace(1) %0, i64 1220  %l0 = load half, ptr addrspace(1) %gep0221  %l1 = load half, ptr addrspace(1) %gep1222  %sgep0 = getelementptr half, ptr addrspace(1) %1, i64 0223  %sgep1 = getelementptr half, ptr addrspace(1) %1, i64 1224  store half %l0, ptr addrspace(1) %sgep0225  store half %l1, ptr addrspace(1) %sgep1226  ret void227}228 229 230