blob: b71a838b62cd549973bad9da0a7106507fd18374 [file] [log] [blame]
Tom Stellard49f8bfd2015-01-06 18:00:21 +00001; RUN: llc -march=amdgcn -mcpu=SI -verify-machineinstrs< %s | FileCheck -check-prefix=SI %s
Marek Olsak75170772015-01-27 17:27:15 +00002; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs< %s | FileCheck -check-prefix=SI %s
Matt Arsenaulte389dd52014-03-12 18:45:52 +00003
4
Tom Stellard79243d92014-10-01 17:15:17 +00005; SI-LABEL: {{^}}global_truncstore_i32_to_i1:
Tom Stellard326d6ec2014-11-05 14:50:53 +00006; SI: s_load_dword [[LOAD:s[0-9]+]],
7; SI: s_and_b32 [[SREG:s[0-9]+]], [[LOAD]], 1
8; SI: v_mov_b32_e32 [[VREG:v[0-9]+]], [[SREG]]
9; SI: buffer_store_byte [[VREG]],
Matt Arsenaulte389dd52014-03-12 18:45:52 +000010define void @global_truncstore_i32_to_i1(i1 addrspace(1)* %out, i32 %val) nounwind {
11 %trunc = trunc i32 %val to i1
12 store i1 %trunc, i1 addrspace(1)* %out, align 1
13 ret void
14}
15
Tom Stellard79243d92014-10-01 17:15:17 +000016; SI-LABEL: {{^}}global_truncstore_i64_to_i1:
Tom Stellard326d6ec2014-11-05 14:50:53 +000017; SI: buffer_store_byte
Matt Arsenaulte389dd52014-03-12 18:45:52 +000018define void @global_truncstore_i64_to_i1(i1 addrspace(1)* %out, i64 %val) nounwind {
19 %trunc = trunc i64 %val to i1
20 store i1 %trunc, i1 addrspace(1)* %out, align 1
21 ret void
22}
23
Tom Stellard79243d92014-10-01 17:15:17 +000024; SI-LABEL: {{^}}global_truncstore_i16_to_i1:
Tom Stellard326d6ec2014-11-05 14:50:53 +000025; SI: s_load_dword [[LOAD:s[0-9]+]],
26; SI: s_and_b32 [[SREG:s[0-9]+]], [[LOAD]], 1
27; SI: v_mov_b32_e32 [[VREG:v[0-9]+]], [[SREG]]
28; SI: buffer_store_byte [[VREG]],
Matt Arsenaulte389dd52014-03-12 18:45:52 +000029define void @global_truncstore_i16_to_i1(i1 addrspace(1)* %out, i16 %val) nounwind {
30 %trunc = trunc i16 %val to i1
31 store i1 %trunc, i1 addrspace(1)* %out, align 1
32 ret void
33}