brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · 631fdc7 Raw
90 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -amdgpu-enable-delay-alu=0 -global-isel=1 < %s | FileCheck  -check-prefixes=GFX11 %s3; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -amdgpu-enable-delay-alu=0 -global-isel=0 < %s | FileCheck  -check-prefixes=GFX11 %s4 5declare i64 @llvm.amdgcn.s.bitreplicate(i32)6 7define i64 @test_s_bitreplicate_constant() {8; GFX11-LABEL: test_s_bitreplicate_constant:9; GFX11:       ; %bb.0: ; %entry10; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; GFX11-NEXT:    v_mov_b32_e32 v0, 0xfccc30c12; GFX11-NEXT:    v_mov_b32_e32 v1, 0xc033fffc13; GFX11-NEXT:    s_setpc_b64 s[30:31]14entry:15  %br = call i64 @llvm.amdgcn.s.bitreplicate(i32 u0x85FE3A92)16  ret i64 %br17}18 19define i64 @test_s_bitreplicate_constant_zero() {20; GFX11-LABEL: test_s_bitreplicate_constant_zero:21; GFX11:       ; %bb.0: ; %entry22; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)23; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 024; GFX11-NEXT:    s_setpc_b64 s[30:31]25entry:26  %br = call i64 @llvm.amdgcn.s.bitreplicate(i32 0)27  ret i64 %br28}29 30define i64 @test_s_bitreplicate_constant_neg_one() {31; GFX11-LABEL: test_s_bitreplicate_constant_neg_one:32; GFX11:       ; %bb.0: ; %entry33; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)34; GFX11-NEXT:    v_dual_mov_b32 v0, -1 :: v_dual_mov_b32 v1, -135; GFX11-NEXT:    s_setpc_b64 s[30:31]36entry:37  %br = call i64 @llvm.amdgcn.s.bitreplicate(i32 -1)38  ret i64 %br39}40 41define i64 @test_s_bitreplicate_constant_undef() {42; GFX11-LABEL: test_s_bitreplicate_constant_undef:43; GFX11:       ; %bb.0: ; %entry44; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)45; GFX11-NEXT:    s_bitreplicate_b64_b32 s[0:1], s046; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s147; GFX11-NEXT:    s_setpc_b64 s[30:31]48entry:49  %br = call i64 @llvm.amdgcn.s.bitreplicate(i32 undef)50  ret i64 %br51}52 53define i64 @test_s_bitreplicate_constant_poison() {54; GFX11-LABEL: test_s_bitreplicate_constant_poison:55; GFX11:       ; %bb.0: ; %entry56; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)57; GFX11-NEXT:    s_bitreplicate_b64_b32 s[0:1], s058; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s159; GFX11-NEXT:    s_setpc_b64 s[30:31]60entry:61  %br = call i64 @llvm.amdgcn.s.bitreplicate(i32 poison)62  ret i64 %br63}64 65define amdgpu_cs void @test_s_bitreplicate_sgpr(i32 inreg %mask, ptr addrspace(1) %out) {66; GFX11-LABEL: test_s_bitreplicate_sgpr:67; GFX11:       ; %bb.0: ; %entry68; GFX11-NEXT:    s_bitreplicate_b64_b32 s[0:1], s069; GFX11-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s070; GFX11-NEXT:    global_store_b64 v[0:1], v[2:3], off71; GFX11-NEXT:    s_endpgm72entry:73  %br = call i64 @llvm.amdgcn.s.bitreplicate(i32 %mask)74  store i64 %br, ptr addrspace(1) %out75  ret void76}77 78define i64 @test_s_bitreplicate_vgpr(i32 %mask) {79; GFX11-LABEL: test_s_bitreplicate_vgpr:80; GFX11:       ; %bb.0: ; %entry81; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)82; GFX11-NEXT:    v_readfirstlane_b32 s0, v083; GFX11-NEXT:    s_bitreplicate_b64_b32 s[0:1], s084; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s185; GFX11-NEXT:    s_setpc_b64 s[30:31]86entry:87  %br = call i64 @llvm.amdgcn.s.bitreplicate(i32 %mask)88  ret i64 %br89}90