Fangrui Song | 9e9907f | 2024-01-16 21:54:58 -0800 | [diff] [blame] | 1 | ; 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 Arsenault | e389dd5 | 2014-03-12 18:45:52 +0000 | [diff] [blame] | 3 | |
| 4 | |
Matt Arsenault | 8c4a352 | 2018-06-26 19:10:00 +0000 | [diff] [blame] | 5 | ; 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 Popov | bdf2fbb | 2022-12-19 12:39:01 +0100 | [diff] [blame] | 10 | define amdgpu_kernel void @global_truncstore_i32_to_i1(ptr addrspace(1) %out, i32 %val) nounwind { |
Matt Arsenault | e389dd5 | 2014-03-12 18:45:52 +0000 | [diff] [blame] | 11 | %trunc = trunc i32 %val to i1 |
Nikita Popov | bdf2fbb | 2022-12-19 12:39:01 +0100 | [diff] [blame] | 12 | store i1 %trunc, ptr addrspace(1) %out, align 1 |
Matt Arsenault | e389dd5 | 2014-03-12 18:45:52 +0000 | [diff] [blame] | 13 | ret void |
| 14 | } |
| 15 | |
Matt Arsenault | 8c4a352 | 2018-06-26 19:10:00 +0000 | [diff] [blame] | 16 | ; GCN-LABEL: {{^}}global_truncstore_i64_to_i1: |
| 17 | ; GCN: buffer_store_byte |
Nikita Popov | bdf2fbb | 2022-12-19 12:39:01 +0100 | [diff] [blame] | 18 | define amdgpu_kernel void @global_truncstore_i64_to_i1(ptr addrspace(1) %out, i64 %val) nounwind { |
Matt Arsenault | e389dd5 | 2014-03-12 18:45:52 +0000 | [diff] [blame] | 19 | %trunc = trunc i64 %val to i1 |
Nikita Popov | bdf2fbb | 2022-12-19 12:39:01 +0100 | [diff] [blame] | 20 | store i1 %trunc, ptr addrspace(1) %out, align 1 |
Matt Arsenault | e389dd5 | 2014-03-12 18:45:52 +0000 | [diff] [blame] | 21 | ret void |
| 22 | } |
| 23 | |
Matt Arsenault | 8c4a352 | 2018-06-26 19:10:00 +0000 | [diff] [blame] | 24 | ; 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 Popov | bdf2fbb | 2022-12-19 12:39:01 +0100 | [diff] [blame] | 30 | define amdgpu_kernel void @s_arg_global_truncstore_i16_to_i1(ptr addrspace(1) %out, i16 %val) nounwind { |
Matt Arsenault | e389dd5 | 2014-03-12 18:45:52 +0000 | [diff] [blame] | 31 | %trunc = trunc i16 %val to i1 |
Nikita Popov | bdf2fbb | 2022-12-19 12:39:01 +0100 | [diff] [blame] | 32 | store i1 %trunc, ptr addrspace(1) %out, align 1 |
Matt Arsenault | e389dd5 | 2014-03-12 18:45:52 +0000 | [diff] [blame] | 33 | ret void |
| 34 | } |
Matt Arsenault | 8c4a352 | 2018-06-26 19:10:00 +0000 | [diff] [blame] | 35 | ; GCN-LABEL: {{^}}global_truncstore_i16_to_i1: |
Nikita Popov | bdf2fbb | 2022-12-19 12:39:01 +0100 | [diff] [blame] | 36 | define amdgpu_kernel void @global_truncstore_i16_to_i1(ptr addrspace(1) %out, i16 %val0, i16 %val1) nounwind { |
Tom Stellard | 115a615 | 2016-11-10 16:02:37 +0000 | [diff] [blame] | 37 | %add = add i16 %val0, %val1 |
| 38 | %trunc = trunc i16 %add to i1 |
Nikita Popov | bdf2fbb | 2022-12-19 12:39:01 +0100 | [diff] [blame] | 39 | store i1 %trunc, ptr addrspace(1) %out, align 1 |
Tom Stellard | 115a615 | 2016-11-10 16:02:37 +0000 | [diff] [blame] | 40 | ret void |
| 41 | } |