Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / addsubu64.ll
blob359c1e53de99e322c57a6662463275360f40b538
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2 ; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,GFX11 %s
3 ; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,GFX12 %s
5 define amdgpu_kernel void @s_add_u64(ptr addrspace(1) %out, i64 %a, i64 %b) {
6 ; GFX11-LABEL: s_add_u64:
7 ; GFX11:       ; %bb.0: ; %entry
8 ; GFX11-NEXT:    s_clause 0x1
9 ; GFX11-NEXT:    s_load_b128 s[4:7], s[2:3], 0x24
10 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x34
11 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
12 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
13 ; GFX11-NEXT:    s_add_u32 s0, s6, s0
14 ; GFX11-NEXT:    s_addc_u32 s1, s7, s1
15 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
16 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
17 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[4:5]
18 ; GFX11-NEXT:    s_nop 0
19 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
20 ; GFX11-NEXT:    s_endpgm
22 ; GFX12-LABEL: s_add_u64:
23 ; GFX12:       ; %bb.0: ; %entry
24 ; GFX12-NEXT:    s_clause 0x1
25 ; GFX12-NEXT:    s_load_b128 s[4:7], s[2:3], 0x24
26 ; GFX12-NEXT:    s_load_b64 s[0:1], s[2:3], 0x34
27 ; GFX12-NEXT:    v_mov_b32_e32 v2, 0
28 ; GFX12-NEXT:    s_wait_kmcnt 0x0
29 ; GFX12-NEXT:    s_add_nc_u64 s[0:1], s[6:7], s[0:1]
30 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
31 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
32 ; GFX12-NEXT:    global_store_b64 v2, v[0:1], s[4:5]
33 ; GFX12-NEXT:    s_nop 0
34 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
35 ; GFX12-NEXT:    s_endpgm
36 entry:
37   %add = add i64 %a, %b
38   store i64 %add, ptr addrspace(1) %out
39   ret void
42 define amdgpu_ps void @v_add_u64(ptr addrspace(1) %out, i64 %a, i64 %b) {
43 ; GCN-LABEL: v_add_u64:
44 ; GCN:       ; %bb.0: ; %entry
45 ; GCN-NEXT:    v_add_co_u32 v2, vcc_lo, v2, v4
46 ; GCN-NEXT:    v_add_co_ci_u32_e32 v3, vcc_lo, v3, v5, vcc_lo
47 ; GCN-NEXT:    global_store_b64 v[0:1], v[2:3], off
48 ; GCN-NEXT:    s_nop 0
49 ; GCN-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
50 ; GCN-NEXT:    s_endpgm
51 entry:
52   %add = add i64 %a, %b
53   store i64 %add, ptr addrspace(1) %out
54   ret void
57 define amdgpu_kernel void @s_sub_u64(ptr addrspace(1) %out, i64 %a, i64 %b) {
58 ; GFX11-LABEL: s_sub_u64:
59 ; GFX11:       ; %bb.0: ; %entry
60 ; GFX11-NEXT:    s_clause 0x1
61 ; GFX11-NEXT:    s_load_b128 s[4:7], s[2:3], 0x24
62 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x34
63 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
64 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
65 ; GFX11-NEXT:    s_sub_u32 s0, s6, s0
66 ; GFX11-NEXT:    s_subb_u32 s1, s7, s1
67 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
68 ; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
69 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[4:5]
70 ; GFX11-NEXT:    s_nop 0
71 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
72 ; GFX11-NEXT:    s_endpgm
74 ; GFX12-LABEL: s_sub_u64:
75 ; GFX12:       ; %bb.0: ; %entry
76 ; GFX12-NEXT:    s_clause 0x1
77 ; GFX12-NEXT:    s_load_b128 s[4:7], s[2:3], 0x24
78 ; GFX12-NEXT:    s_load_b64 s[0:1], s[2:3], 0x34
79 ; GFX12-NEXT:    v_mov_b32_e32 v2, 0
80 ; GFX12-NEXT:    s_wait_kmcnt 0x0
81 ; GFX12-NEXT:    s_sub_nc_u64 s[0:1], s[6:7], s[0:1]
82 ; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
83 ; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
84 ; GFX12-NEXT:    global_store_b64 v2, v[0:1], s[4:5]
85 ; GFX12-NEXT:    s_nop 0
86 ; GFX12-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
87 ; GFX12-NEXT:    s_endpgm
88 entry:
89   %sub = sub i64 %a, %b
90   store i64 %sub, ptr addrspace(1) %out
91   ret void
94 define amdgpu_ps void @v_sub_u64(ptr addrspace(1) %out, i64 %a, i64 %b) {
95 ; GCN-LABEL: v_sub_u64:
96 ; GCN:       ; %bb.0: ; %entry
97 ; GCN-NEXT:    v_sub_co_u32 v2, vcc_lo, v2, v4
98 ; GCN-NEXT:    v_sub_co_ci_u32_e32 v3, vcc_lo, v3, v5, vcc_lo
99 ; GCN-NEXT:    global_store_b64 v[0:1], v[2:3], off
100 ; GCN-NEXT:    s_nop 0
101 ; GCN-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
102 ; GCN-NEXT:    s_endpgm
103 entry:
104   %sub = sub i64 %a, %b
105   store i64 %sub, ptr addrspace(1) %out
106   ret void