]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/R600/extload.ll
Vendor import of llvm release_34 branch r197841 (effectively, 3.4 RC3):
[FreeBSD/FreeBSD.git] / test / CodeGen / R600 / extload.ll
1 ; RUN: llc -march=r600 -mcpu=cypress < %s | FileCheck -check-prefix=EG %s
2
3 ; EG-LABEL: @anyext_load_i8:
4 ; EG: AND_INT
5 ; EG-NEXT: 255
6 define void @anyext_load_i8(i8 addrspace(1)* nocapture noalias %out, i8 addrspace(1)* nocapture noalias %src) nounwind {
7   %cast = bitcast i8 addrspace(1)* %src to i32 addrspace(1)*
8   %load = load i32 addrspace(1)* %cast, align 1
9   %x = bitcast i32 %load to <4 x i8>
10   %castOut = bitcast i8 addrspace(1)* %out to <4 x i8> addrspace(1)*
11   store <4 x i8> %x, <4 x i8> addrspace(1)* %castOut, align 1
12   ret void
13 }
14
15 ; EG-LABEL: @anyext_load_i16:
16 ; EG: AND_INT
17 ; EG: LSHL
18 ; EG: 65535
19 define void @anyext_load_i16(i16 addrspace(1)* nocapture noalias %out, i16 addrspace(1)* nocapture noalias %src) nounwind {
20   %cast = bitcast i16 addrspace(1)* %src to i32 addrspace(1)*
21   %load = load i32 addrspace(1)* %cast, align 1
22   %x = bitcast i32 %load to <2 x i16>
23   %castOut = bitcast i16 addrspace(1)* %out to <2 x i16> addrspace(1)*
24   store <2 x i16> %x, <2 x i16> addrspace(1)* %castOut, align 1
25   ret void
26 }
27
28 ; EG-LABEL: @anyext_load_lds_i8:
29 ; EG: AND_INT
30 ; EG-NEXT: 255
31 define void @anyext_load_lds_i8(i8 addrspace(3)* nocapture noalias %out, i8 addrspace(3)* nocapture noalias %src) nounwind {
32   %cast = bitcast i8 addrspace(3)* %src to i32 addrspace(3)*
33   %load = load i32 addrspace(3)* %cast, align 1
34   %x = bitcast i32 %load to <4 x i8>
35   %castOut = bitcast i8 addrspace(3)* %out to <4 x i8> addrspace(3)*
36   store <4 x i8> %x, <4 x i8> addrspace(3)* %castOut, align 1
37   ret void
38 }
39
40 ; EG-LABEL: @anyext_load_lds_i16:
41 ; EG: AND_INT
42 ; EG: LSHL
43 ; EG: 65535
44 define void @anyext_load_lds_i16(i16 addrspace(3)* nocapture noalias %out, i16 addrspace(3)* nocapture noalias %src) nounwind {
45   %cast = bitcast i16 addrspace(3)* %src to i32 addrspace(3)*
46   %load = load i32 addrspace(3)* %cast, align 1
47   %x = bitcast i32 %load to <2 x i16>
48   %castOut = bitcast i16 addrspace(3)* %out to <2 x i16> addrspace(3)*
49   store <2 x i16> %x, <2 x i16> addrspace(3)* %castOut, align 1
50   ret void
51 }