brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.1 KiB · 4905c6d Raw
311 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck --check-prefixes=GFX11,GFX11-SDAG %s3; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck --check-prefixes=GFX11,GFX11-GISEL %s4; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1250 < %s | FileCheck --check-prefixes=GFX1250,GFX1250-SDAG %s5; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1250 < %s | FileCheck --check-prefixes=GFX1250,GFX1250-GISEL %s6 7define amdgpu_kernel void @test_get_doorbell(ptr addrspace(1) %out) {8; GFX11-SDAG-LABEL: test_get_doorbell:9; GFX11-SDAG:       ; %bb.0:10; GFX11-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x2411; GFX11-SDAG-NEXT:    s_sendmsg_rtn_b32 s2, sendmsg(MSG_RTN_GET_DOORBELL)12; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)13; GFX11-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s214; GFX11-SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]15; GFX11-SDAG-NEXT:    s_endpgm16;17; GFX11-GISEL-LABEL: test_get_doorbell:18; GFX11-GISEL:       ; %bb.0:19; GFX11-GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x2420; GFX11-GISEL-NEXT:    s_sendmsg_rtn_b32 s2, sendmsg(MSG_RTN_GET_DOORBELL)21; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)22; GFX11-GISEL-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v0, s223; GFX11-GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]24; GFX11-GISEL-NEXT:    s_endpgm25;26; GFX1250-SDAG-LABEL: test_get_doorbell:27; GFX1250-SDAG:       ; %bb.0:28; GFX1250-SDAG-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 129; GFX1250-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x2430; GFX1250-SDAG-NEXT:    s_sendmsg_rtn_b32 s2, sendmsg(MSG_RTN_GET_DOORBELL)31; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x032; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s233; GFX1250-SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]34; GFX1250-SDAG-NEXT:    s_endpgm35;36; GFX1250-GISEL-LABEL: test_get_doorbell:37; GFX1250-GISEL:       ; %bb.0:38; GFX1250-GISEL-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 139; GFX1250-GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x2440; GFX1250-GISEL-NEXT:    s_sendmsg_rtn_b32 s2, sendmsg(MSG_RTN_GET_DOORBELL)41; GFX1250-GISEL-NEXT:    s_wait_kmcnt 0x042; GFX1250-GISEL-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v0, s243; GFX1250-GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]44; GFX1250-GISEL-NEXT:    s_endpgm45  %ret = call i32 @llvm.amdgcn.s.sendmsg.rtn.i32(i32 128)46  store i32 %ret, ptr addrspace(1) %out47  ret void48}49 50define amdgpu_kernel void @test_get_ddid(ptr addrspace(1) %out) {51; GFX11-SDAG-LABEL: test_get_ddid:52; GFX11-SDAG:       ; %bb.0:53; GFX11-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x2454; GFX11-SDAG-NEXT:    s_sendmsg_rtn_b32 s2, sendmsg(MSG_RTN_GET_DDID)55; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)56; GFX11-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s257; GFX11-SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]58; GFX11-SDAG-NEXT:    s_endpgm59;60; GFX11-GISEL-LABEL: test_get_ddid:61; GFX11-GISEL:       ; %bb.0:62; GFX11-GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x2463; GFX11-GISEL-NEXT:    s_sendmsg_rtn_b32 s2, sendmsg(MSG_RTN_GET_DDID)64; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)65; GFX11-GISEL-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v0, s266; GFX11-GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]67; GFX11-GISEL-NEXT:    s_endpgm68;69; GFX1250-SDAG-LABEL: test_get_ddid:70; GFX1250-SDAG:       ; %bb.0:71; GFX1250-SDAG-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 172; GFX1250-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x2473; GFX1250-SDAG-NEXT:    s_sendmsg_rtn_b32 s2, sendmsg(MSG_RTN_GET_DDID)74; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x075; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s276; GFX1250-SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]77; GFX1250-SDAG-NEXT:    s_endpgm78;79; GFX1250-GISEL-LABEL: test_get_ddid:80; GFX1250-GISEL:       ; %bb.0:81; GFX1250-GISEL-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 182; GFX1250-GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x2483; GFX1250-GISEL-NEXT:    s_sendmsg_rtn_b32 s2, sendmsg(MSG_RTN_GET_DDID)84; GFX1250-GISEL-NEXT:    s_wait_kmcnt 0x085; GFX1250-GISEL-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v0, s286; GFX1250-GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]87; GFX1250-GISEL-NEXT:    s_endpgm88  %ret = call i32 @llvm.amdgcn.s.sendmsg.rtn.i32(i32 129)89  store i32 %ret, ptr addrspace(1) %out90  ret void91}92 93define amdgpu_kernel void @test_get_tma(ptr addrspace(1) %out) {94; GFX11-LABEL: test_get_tma:95; GFX11:       ; %bb.0:96; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x2497; GFX11-NEXT:    s_sendmsg_rtn_b64 s[2:3], sendmsg(MSG_RTN_GET_TMA)98; GFX11-NEXT:    v_mov_b32_e32 v2, 099; GFX11-NEXT:    s_waitcnt lgkmcnt(0)100; GFX11-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3101; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]102; GFX11-NEXT:    s_endpgm103;104; GFX1250-LABEL: test_get_tma:105; GFX1250:       ; %bb.0:106; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1107; GFX1250-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24108; GFX1250-NEXT:    s_sendmsg_rtn_b64 s[2:3], sendmsg(MSG_RTN_GET_TMA)109; GFX1250-NEXT:    v_mov_b32_e32 v2, 0110; GFX1250-NEXT:    s_wait_kmcnt 0x0111; GFX1250-NEXT:    v_mov_b64_e32 v[0:1], s[2:3]112; GFX1250-NEXT:    global_store_b64 v2, v[0:1], s[0:1]113; GFX1250-NEXT:    s_endpgm114  %ret = call i64 @llvm.amdgcn.s.sendmsg.rtn.i64(i32 130)115  store i64 %ret, ptr addrspace(1) %out116  ret void117}118 119define amdgpu_kernel void @test_get_realtime(ptr addrspace(1) %out) {120; GFX11-LABEL: test_get_realtime:121; GFX11:       ; %bb.0:122; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24123; GFX11-NEXT:    s_sendmsg_rtn_b64 s[2:3], sendmsg(MSG_RTN_GET_REALTIME)124; GFX11-NEXT:    v_mov_b32_e32 v2, 0125; GFX11-NEXT:    s_waitcnt lgkmcnt(0)126; GFX11-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3127; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]128; GFX11-NEXT:    s_endpgm129;130; GFX1250-LABEL: test_get_realtime:131; GFX1250:       ; %bb.0:132; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1133; GFX1250-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24134; GFX1250-NEXT:    s_sendmsg_rtn_b64 s[2:3], sendmsg(MSG_RTN_GET_REALTIME)135; GFX1250-NEXT:    v_mov_b32_e32 v2, 0136; GFX1250-NEXT:    s_wait_kmcnt 0x0137; GFX1250-NEXT:    v_mov_b64_e32 v[0:1], s[2:3]138; GFX1250-NEXT:    global_store_b64 v2, v[0:1], s[0:1]139; GFX1250-NEXT:    s_endpgm140  %ret = call i64 @llvm.amdgcn.s.sendmsg.rtn.i64(i32 131)141  store i64 %ret, ptr addrspace(1) %out142  ret void143}144 145define amdgpu_kernel void @test_savewave(ptr addrspace(1) %out) {146; GFX11-SDAG-LABEL: test_savewave:147; GFX11-SDAG:       ; %bb.0:148; GFX11-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24149; GFX11-SDAG-NEXT:    s_sendmsg_rtn_b32 s2, sendmsg(MSG_RTN_SAVE_WAVE)150; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)151; GFX11-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2152; GFX11-SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]153; GFX11-SDAG-NEXT:    s_endpgm154;155; GFX11-GISEL-LABEL: test_savewave:156; GFX11-GISEL:       ; %bb.0:157; GFX11-GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24158; GFX11-GISEL-NEXT:    s_sendmsg_rtn_b32 s2, sendmsg(MSG_RTN_SAVE_WAVE)159; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)160; GFX11-GISEL-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v0, s2161; GFX11-GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]162; GFX11-GISEL-NEXT:    s_endpgm163;164; GFX1250-SDAG-LABEL: test_savewave:165; GFX1250-SDAG:       ; %bb.0:166; GFX1250-SDAG-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1167; GFX1250-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24168; GFX1250-SDAG-NEXT:    s_sendmsg_rtn_b32 s2, sendmsg(MSG_RTN_SAVE_WAVE)169; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0170; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2171; GFX1250-SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]172; GFX1250-SDAG-NEXT:    s_endpgm173;174; GFX1250-GISEL-LABEL: test_savewave:175; GFX1250-GISEL:       ; %bb.0:176; GFX1250-GISEL-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1177; GFX1250-GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24178; GFX1250-GISEL-NEXT:    s_sendmsg_rtn_b32 s2, sendmsg(MSG_RTN_SAVE_WAVE)179; GFX1250-GISEL-NEXT:    s_wait_kmcnt 0x0180; GFX1250-GISEL-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v0, s2181; GFX1250-GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]182; GFX1250-GISEL-NEXT:    s_endpgm183  %ret = call i32 @llvm.amdgcn.s.sendmsg.rtn.i32(i32 132)184  store i32 %ret, ptr addrspace(1) %out185  ret void186}187 188define amdgpu_kernel void @test_get_tba(ptr addrspace(1) %out) {189; GFX11-LABEL: test_get_tba:190; GFX11:       ; %bb.0:191; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24192; GFX11-NEXT:    s_sendmsg_rtn_b64 s[2:3], sendmsg(MSG_RTN_GET_TBA)193; GFX11-NEXT:    v_mov_b32_e32 v2, 0194; GFX11-NEXT:    s_waitcnt lgkmcnt(0)195; GFX11-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3196; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]197; GFX11-NEXT:    s_endpgm198;199; GFX1250-LABEL: test_get_tba:200; GFX1250:       ; %bb.0:201; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1202; GFX1250-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24203; GFX1250-NEXT:    s_sendmsg_rtn_b64 s[2:3], sendmsg(MSG_RTN_GET_TBA)204; GFX1250-NEXT:    v_mov_b32_e32 v2, 0205; GFX1250-NEXT:    s_wait_kmcnt 0x0206; GFX1250-NEXT:    v_mov_b64_e32 v[0:1], s[2:3]207; GFX1250-NEXT:    global_store_b64 v2, v[0:1], s[0:1]208; GFX1250-NEXT:    s_endpgm209  %ret = call i64 @llvm.amdgcn.s.sendmsg.rtn.i64(i32 133)210  store i64 %ret, ptr addrspace(1) %out211  ret void212}213 214define amdgpu_kernel void @test_get_0_i32(ptr addrspace(1) %out) {215; GFX11-SDAG-LABEL: test_get_0_i32:216; GFX11-SDAG:       ; %bb.0:217; GFX11-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24218; GFX11-SDAG-NEXT:    s_sendmsg_rtn_b32 s2, sendmsg(0, 0, 0)219; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)220; GFX11-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2221; GFX11-SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]222; GFX11-SDAG-NEXT:    s_endpgm223;224; GFX11-GISEL-LABEL: test_get_0_i32:225; GFX11-GISEL:       ; %bb.0:226; GFX11-GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24227; GFX11-GISEL-NEXT:    s_sendmsg_rtn_b32 s2, sendmsg(0, 0, 0)228; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)229; GFX11-GISEL-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v0, s2230; GFX11-GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]231; GFX11-GISEL-NEXT:    s_endpgm232;233; GFX1250-SDAG-LABEL: test_get_0_i32:234; GFX1250-SDAG:       ; %bb.0:235; GFX1250-SDAG-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1236; GFX1250-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24237; GFX1250-SDAG-NEXT:    s_sendmsg_rtn_b32 s2, sendmsg(0, 0, 0)238; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0239; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2240; GFX1250-SDAG-NEXT:    global_store_b32 v0, v1, s[0:1]241; GFX1250-SDAG-NEXT:    s_endpgm242;243; GFX1250-GISEL-LABEL: test_get_0_i32:244; GFX1250-GISEL:       ; %bb.0:245; GFX1250-GISEL-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1246; GFX1250-GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24247; GFX1250-GISEL-NEXT:    s_sendmsg_rtn_b32 s2, sendmsg(0, 0, 0)248; GFX1250-GISEL-NEXT:    s_wait_kmcnt 0x0249; GFX1250-GISEL-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v0, s2250; GFX1250-GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]251; GFX1250-GISEL-NEXT:    s_endpgm252  %ret = call i32 @llvm.amdgcn.s.sendmsg.rtn.i32(i32 0)253  store i32 %ret, ptr addrspace(1) %out254  ret void255}256 257define amdgpu_kernel void @test_get_99999_i64(ptr addrspace(1) %out) {258; GFX11-LABEL: test_get_99999_i64:259; GFX11:       ; %bb.0:260; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24261; GFX11-NEXT:    s_sendmsg_rtn_b64 s[2:3], 99999262; GFX11-NEXT:    v_mov_b32_e32 v2, 0263; GFX11-NEXT:    s_waitcnt lgkmcnt(0)264; GFX11-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3265; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]266; GFX11-NEXT:    s_endpgm267;268; GFX1250-LABEL: test_get_99999_i64:269; GFX1250:       ; %bb.0:270; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1271; GFX1250-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24272; GFX1250-NEXT:    s_sendmsg_rtn_b64 s[2:3], 99999273; GFX1250-NEXT:    v_mov_b32_e32 v2, 0274; GFX1250-NEXT:    s_wait_kmcnt 0x0275; GFX1250-NEXT:    v_mov_b64_e32 v[0:1], s[2:3]276; GFX1250-NEXT:    global_store_b64 v2, v[0:1], s[0:1]277; GFX1250-NEXT:    s_endpgm278  %ret = call i64 @llvm.amdgcn.s.sendmsg.rtn.i64(i32 99999)279  store i64 %ret, ptr addrspace(1) %out280  ret void281}282 283define amdgpu_kernel void @test_get_136_i64(ptr addrspace(1) %out) {284; GFX11-LABEL: test_get_136_i64:285; GFX11:       ; %bb.0:286; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24287; GFX11-NEXT:    s_sendmsg_rtn_b64 s[2:3], sendmsg(136, 0, 0)288; GFX11-NEXT:    v_mov_b32_e32 v2, 0289; GFX11-NEXT:    s_waitcnt lgkmcnt(0)290; GFX11-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3291; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]292; GFX11-NEXT:    s_endpgm293;294; GFX1250-LABEL: test_get_136_i64:295; GFX1250:       ; %bb.0:296; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1297; GFX1250-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24298; GFX1250-NEXT:    s_sendmsg_rtn_b64 s[2:3], sendmsg(MSG_RTN_GET_CLUSTER_BARRIER_STATE)299; GFX1250-NEXT:    v_mov_b32_e32 v2, 0300; GFX1250-NEXT:    s_wait_kmcnt 0x0301; GFX1250-NEXT:    v_mov_b64_e32 v[0:1], s[2:3]302; GFX1250-NEXT:    global_store_b64 v2, v[0:1], s[0:1]303; GFX1250-NEXT:    s_endpgm304  %ret = call i64 @llvm.amdgcn.s.sendmsg.rtn.i64(i32 136)305  store i64 %ret, ptr addrspace(1) %out306  ret void307}308 309declare i32 @llvm.amdgcn.s.sendmsg.rtn.i32(i32)310declare i64 @llvm.amdgcn.s.sendmsg.rtn.i64(i32)311