blob: b42af2fdd7c8ca263796b6f2725d9bfd0ac2a606 [file] [log] [blame]
Fangrui Song9e9907f2024-01-16 21:54:58 -08001; RUN: llc -mtriple=amdgcn -verify-machineinstrs < %s | FileCheck -enable-var-scope --check-prefix=GCN %s
2; RUN: llc -mtriple=amdgcn -mcpu=tonga -mattr=-flat-for-global -verify-machineinstrs< %s | FileCheck -enable-var-scope --check-prefix=GCN %s
Matt Arsenaulte389dd52014-03-12 18:45:52 +00003
4
Matt Arsenault8c4a3522018-06-26 19:10:00 +00005; GCN-LABEL: {{^}}global_truncstore_i32_to_i1:
6; GCN: s_load_dword [[LOAD:s[0-9]+]],
7; GCN: s_and_b32 [[SREG:s[0-9]+]], [[LOAD]], 1
8; GCN: v_mov_b32_e32 [[VREG:v[0-9]+]], [[SREG]]
9; GCN: buffer_store_byte [[VREG]],
Nikita Popovbdf2fbb2022-12-19 12:39:01 +010010define amdgpu_kernel void @global_truncstore_i32_to_i1(ptr addrspace(1) %out, i32 %val) nounwind {
Matt Arsenaulte389dd52014-03-12 18:45:52 +000011 %trunc = trunc i32 %val to i1
Nikita Popovbdf2fbb2022-12-19 12:39:01 +010012 store i1 %trunc, ptr addrspace(1) %out, align 1
Matt Arsenaulte389dd52014-03-12 18:45:52 +000013 ret void
14}
15
Matt Arsenault8c4a3522018-06-26 19:10:00 +000016; GCN-LABEL: {{^}}global_truncstore_i64_to_i1:
17; GCN: buffer_store_byte
Nikita Popovbdf2fbb2022-12-19 12:39:01 +010018define amdgpu_kernel void @global_truncstore_i64_to_i1(ptr addrspace(1) %out, i64 %val) nounwind {
Matt Arsenaulte389dd52014-03-12 18:45:52 +000019 %trunc = trunc i64 %val to i1
Nikita Popovbdf2fbb2022-12-19 12:39:01 +010020 store i1 %trunc, ptr addrspace(1) %out, align 1
Matt Arsenaulte389dd52014-03-12 18:45:52 +000021 ret void
22}
23
Matt Arsenault8c4a3522018-06-26 19:10:00 +000024; FIXME: VGPR on VI
25; GCN-LABEL: {{^}}s_arg_global_truncstore_i16_to_i1:
26; GCN: s_load_dword [[LOAD:s[0-9]+]],
27; GCN: s_and_b32 [[SREG:s[0-9]+]], [[LOAD]], 1
28; GCN: v_mov_b32_e32 [[VREG:v[0-9]+]], [[SREG]]
29; GCN: buffer_store_byte [[VREG]],
Nikita Popovbdf2fbb2022-12-19 12:39:01 +010030define amdgpu_kernel void @s_arg_global_truncstore_i16_to_i1(ptr addrspace(1) %out, i16 %val) nounwind {
Matt Arsenaulte389dd52014-03-12 18:45:52 +000031 %trunc = trunc i16 %val to i1
Nikita Popovbdf2fbb2022-12-19 12:39:01 +010032 store i1 %trunc, ptr addrspace(1) %out, align 1
Matt Arsenaulte389dd52014-03-12 18:45:52 +000033 ret void
34}
Matt Arsenault8c4a3522018-06-26 19:10:00 +000035; GCN-LABEL: {{^}}global_truncstore_i16_to_i1:
Nikita Popovbdf2fbb2022-12-19 12:39:01 +010036define amdgpu_kernel void @global_truncstore_i16_to_i1(ptr addrspace(1) %out, i16 %val0, i16 %val1) nounwind {
Tom Stellard115a6152016-11-10 16:02:37 +000037 %add = add i16 %val0, %val1
38 %trunc = trunc i16 %add to i1
Nikita Popovbdf2fbb2022-12-19 12:39:01 +010039 store i1 %trunc, ptr addrspace(1) %out, align 1
Tom Stellard115a6152016-11-10 16:02:37 +000040 ret void
41}