blob: fd298b361d03ce22e5791f48bd562409c792f15b [file] [log] [blame]
Matt Arsenault03d85842016-06-27 20:32:13 +00001; RUN: llc -march=amdgcn -mattr=-promote-alloca -amdgpu-sroa=0 -verify-machineinstrs < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s
2; RUN: llc -march=amdgcn -mcpu=tonga -mattr=-promote-alloca -amdgpu-sroa=0 -verify-machineinstrs < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s
Tom Stellardbc377682015-02-17 16:36:00 +00003
4; FUNC-LABEL: {{^}}load_i8_sext_private:
Matt Arsenault707780b2017-02-22 21:05:25 +00005; SI: buffer_load_sbyte v{{[0-9]+}}, off, s[{{[0-9]+:[0-9]+}}], s{{[0-9]+}} offset:4{{$}}
Matt Arsenault3dbeefa2017-03-21 21:39:51 +00006define amdgpu_kernel void @load_i8_sext_private(i32 addrspace(1)* %out) {
Tom Stellardbc377682015-02-17 16:36:00 +00007entry:
8 %tmp0 = alloca i8
David Blaikiea79ac142015-02-27 21:17:42 +00009 %tmp1 = load i8, i8* %tmp0
Tom Stellardbc377682015-02-17 16:36:00 +000010 %tmp2 = sext i8 %tmp1 to i32
11 store i32 %tmp2, i32 addrspace(1)* %out
12 ret void
13}
14
15; FUNC-LABEL: {{^}}load_i8_zext_private:
Matt Arsenault707780b2017-02-22 21:05:25 +000016; SI: buffer_load_ubyte v{{[0-9]+}}, off, s[{{[0-9]+:[0-9]+}}], s{{[0-9]+}} offset:4{{$}}
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000017define amdgpu_kernel void @load_i8_zext_private(i32 addrspace(1)* %out) {
Tom Stellardbc377682015-02-17 16:36:00 +000018entry:
19 %tmp0 = alloca i8
David Blaikiea79ac142015-02-27 21:17:42 +000020 %tmp1 = load i8, i8* %tmp0
Tom Stellardbc377682015-02-17 16:36:00 +000021 %tmp2 = zext i8 %tmp1 to i32
22 store i32 %tmp2, i32 addrspace(1)* %out
23 ret void
24}
25
26; FUNC-LABEL: {{^}}load_i16_sext_private:
Matt Arsenault707780b2017-02-22 21:05:25 +000027; SI: buffer_load_sshort v{{[0-9]+}}, off, s[{{[0-9]+:[0-9]+}}], s{{[0-9]+}} offset:4{{$}}
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000028define amdgpu_kernel void @load_i16_sext_private(i32 addrspace(1)* %out) {
Tom Stellardbc377682015-02-17 16:36:00 +000029entry:
30 %tmp0 = alloca i16
David Blaikiea79ac142015-02-27 21:17:42 +000031 %tmp1 = load i16, i16* %tmp0
Tom Stellardbc377682015-02-17 16:36:00 +000032 %tmp2 = sext i16 %tmp1 to i32
33 store i32 %tmp2, i32 addrspace(1)* %out
34 ret void
35}
36
37; FUNC-LABEL: {{^}}load_i16_zext_private:
Matt Arsenault707780b2017-02-22 21:05:25 +000038; SI: buffer_load_ushort v{{[0-9]+}}, off, s[{{[0-9]+:[0-9]+}}], s{{[0-9]+}} offset:4{{$}}
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000039define amdgpu_kernel void @load_i16_zext_private(i32 addrspace(1)* %out) {
Tom Stellardbc377682015-02-17 16:36:00 +000040entry:
41 %tmp0 = alloca i16
Matt Arsenault03d85842016-06-27 20:32:13 +000042 %tmp1 = load volatile i16, i16* %tmp0
Tom Stellardbc377682015-02-17 16:36:00 +000043 %tmp2 = zext i16 %tmp1 to i32
44 store i32 %tmp2, i32 addrspace(1)* %out
45 ret void
46}