144 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=fiji < %s | FileCheck --check-prefix=CHECK-SDAG -enable-var-scope %s3 4define void @test_readlane_p0(ptr addrspace(1) %out, ptr %src, i32 %src1) {5; CHECK-SDAG-LABEL: test_readlane_p0:6; CHECK-SDAG: ; %bb.0:7; CHECK-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8; CHECK-SDAG-NEXT: v_readfirstlane_b32 s4, v49; CHECK-SDAG-NEXT: s_nop 310; CHECK-SDAG-NEXT: v_readlane_b32 s5, v3, s411; CHECK-SDAG-NEXT: v_readlane_b32 s4, v2, s412; CHECK-SDAG-NEXT: ;;#ASMSTART13; CHECK-SDAG-NEXT: ; use s[4:5]14; CHECK-SDAG-NEXT: ;;#ASMEND15; CHECK-SDAG-NEXT: s_setpc_b64 s[30:31]16 %x = call ptr @llvm.amdgcn.readlane.p0(ptr %src, i32 %src1)17 call void asm sideeffect "; use $0", "s"(ptr %x)18 ret void19}20 21define void @test_readlane_v3p0(ptr addrspace(1) %out, <3 x ptr> %src, i32 %src1) {22; CHECK-SDAG-LABEL: test_readlane_v3p0:23; CHECK-SDAG: ; %bb.0:24; CHECK-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)25; CHECK-SDAG-NEXT: v_readfirstlane_b32 s4, v826; CHECK-SDAG-NEXT: s_nop 327; CHECK-SDAG-NEXT: v_readlane_b32 s9, v7, s428; CHECK-SDAG-NEXT: v_readlane_b32 s8, v6, s429; CHECK-SDAG-NEXT: v_readlane_b32 s7, v5, s430; CHECK-SDAG-NEXT: v_readlane_b32 s6, v4, s431; CHECK-SDAG-NEXT: v_readlane_b32 s5, v3, s432; CHECK-SDAG-NEXT: v_readlane_b32 s4, v2, s433; CHECK-SDAG-NEXT: ;;#ASMSTART34; CHECK-SDAG-NEXT: ; use s[4:9]35; CHECK-SDAG-NEXT: ;;#ASMEND36; CHECK-SDAG-NEXT: s_setpc_b64 s[30:31]37 %x = call <3 x ptr> @llvm.amdgcn.readlane.v3p0(<3 x ptr> %src, i32 %src1)38 call void asm sideeffect "; use $0", "s"(<3 x ptr> %x)39 ret void40}41 42define void @test_readlane_p3(ptr addrspace(1) %out, ptr addrspace(3) %src, i32 %src1) {43; CHECK-SDAG-LABEL: test_readlane_p3:44; CHECK-SDAG: ; %bb.0:45; CHECK-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)46; CHECK-SDAG-NEXT: v_readfirstlane_b32 s4, v347; CHECK-SDAG-NEXT: s_nop 348; CHECK-SDAG-NEXT: v_readlane_b32 s4, v2, s449; CHECK-SDAG-NEXT: ;;#ASMSTART50; CHECK-SDAG-NEXT: ; use s451; CHECK-SDAG-NEXT: ;;#ASMEND52; CHECK-SDAG-NEXT: s_setpc_b64 s[30:31]53 %x = call ptr addrspace(3) @llvm.amdgcn.readlane.p3(ptr addrspace(3) %src, i32 %src1)54 call void asm sideeffect "; use $0", "s"(ptr addrspace(3) %x)55 ret void56}57 58define void @test_readlane_v3p3(ptr addrspace(1) %out, <3 x ptr addrspace(3)> %src, i32 %src1) {59; CHECK-SDAG-LABEL: test_readlane_v3p3:60; CHECK-SDAG: ; %bb.0:61; CHECK-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)62; CHECK-SDAG-NEXT: v_readfirstlane_b32 s4, v563; CHECK-SDAG-NEXT: s_nop 364; CHECK-SDAG-NEXT: v_readlane_b32 s6, v4, s465; CHECK-SDAG-NEXT: v_readlane_b32 s5, v3, s466; CHECK-SDAG-NEXT: v_readlane_b32 s4, v2, s467; CHECK-SDAG-NEXT: ;;#ASMSTART68; CHECK-SDAG-NEXT: ; use s[4:6]69; CHECK-SDAG-NEXT: ;;#ASMEND70; CHECK-SDAG-NEXT: s_setpc_b64 s[30:31]71 %x = call <3 x ptr addrspace(3)> @llvm.amdgcn.readlane.v3p3(<3 x ptr addrspace(3)> %src, i32 %src1)72 call void asm sideeffect "; use $0", "s"(<3 x ptr addrspace(3)> %x)73 ret void74}75 76define void @test_readlane_p5(ptr addrspace(1) %out, ptr addrspace(5) %src, i32 %src1) {77; CHECK-SDAG-LABEL: test_readlane_p5:78; CHECK-SDAG: ; %bb.0:79; CHECK-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)80; CHECK-SDAG-NEXT: v_readfirstlane_b32 s4, v381; CHECK-SDAG-NEXT: s_nop 382; CHECK-SDAG-NEXT: v_readlane_b32 s4, v2, s483; CHECK-SDAG-NEXT: ;;#ASMSTART84; CHECK-SDAG-NEXT: ; use s485; CHECK-SDAG-NEXT: ;;#ASMEND86; CHECK-SDAG-NEXT: s_setpc_b64 s[30:31]87 %x = call ptr addrspace(5) @llvm.amdgcn.readlane.p5(ptr addrspace(5) %src, i32 %src1)88 call void asm sideeffect "; use $0", "s"(ptr addrspace(5) %x)89 ret void90}91 92define void @test_readlane_v3p5(ptr addrspace(1) %out, <3 x ptr addrspace(5)> %src, i32 %src1) {93; CHECK-SDAG-LABEL: test_readlane_v3p5:94; CHECK-SDAG: ; %bb.0:95; CHECK-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)96; CHECK-SDAG-NEXT: v_readfirstlane_b32 s4, v597; CHECK-SDAG-NEXT: s_nop 398; CHECK-SDAG-NEXT: v_readlane_b32 s6, v4, s499; CHECK-SDAG-NEXT: v_readlane_b32 s5, v3, s4100; CHECK-SDAG-NEXT: v_readlane_b32 s4, v2, s4101; CHECK-SDAG-NEXT: ;;#ASMSTART102; CHECK-SDAG-NEXT: ; use s[4:6]103; CHECK-SDAG-NEXT: ;;#ASMEND104; CHECK-SDAG-NEXT: s_setpc_b64 s[30:31]105 %x = call <3 x ptr addrspace(5)> @llvm.amdgcn.readlane.v3p5(<3 x ptr addrspace(5)> %src, i32 %src1)106 call void asm sideeffect "; use $0", "s"(<3 x ptr addrspace(5)> %x)107 ret void108}109 110define void @test_readlane_p6(ptr addrspace(1) %out, ptr addrspace(6) %src, i32 %src1) {111; CHECK-SDAG-LABEL: test_readlane_p6:112; CHECK-SDAG: ; %bb.0:113; CHECK-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)114; CHECK-SDAG-NEXT: v_readfirstlane_b32 s4, v3115; CHECK-SDAG-NEXT: s_nop 3116; CHECK-SDAG-NEXT: v_readlane_b32 s4, v2, s4117; CHECK-SDAG-NEXT: ;;#ASMSTART118; CHECK-SDAG-NEXT: ; use s4119; CHECK-SDAG-NEXT: ;;#ASMEND120; CHECK-SDAG-NEXT: s_setpc_b64 s[30:31]121 %x = call ptr addrspace(6) @llvm.amdgcn.readlane.p6(ptr addrspace(6) %src, i32 %src1)122 call void asm sideeffect "; use $0", "s"(ptr addrspace(6) %x)123 ret void124}125 126define void @test_readlane_v3p6(ptr addrspace(1) %out, <3 x ptr addrspace(6)> %src, i32 %src1) {127; CHECK-SDAG-LABEL: test_readlane_v3p6:128; CHECK-SDAG: ; %bb.0:129; CHECK-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)130; CHECK-SDAG-NEXT: v_readfirstlane_b32 s4, v5131; CHECK-SDAG-NEXT: s_nop 3132; CHECK-SDAG-NEXT: v_readlane_b32 s6, v4, s4133; CHECK-SDAG-NEXT: v_readlane_b32 s5, v3, s4134; CHECK-SDAG-NEXT: v_readlane_b32 s4, v2, s4135; CHECK-SDAG-NEXT: ;;#ASMSTART136; CHECK-SDAG-NEXT: ; use s[4:6]137; CHECK-SDAG-NEXT: ;;#ASMEND138; CHECK-SDAG-NEXT: s_setpc_b64 s[30:31]139 %x = call <3 x ptr addrspace(6)> @llvm.amdgcn.readlane.v3p6(<3 x ptr addrspace(6)> %src, i32 %src1)140 call void asm sideeffect "; use $0", "s"(<3 x ptr addrspace(6)> %x)141 ret void142}143 144