1 ; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck %s --check-prefix=EG-CHECK
2 ; RUN: llc < %s -march=r600 -mcpu=cayman | FileCheck %s --check-prefix=EG-CHECK
3 ; RUN: llc < %s -march=r600 -mcpu=SI -verify-machineinstrs | FileCheck %s --check-prefix=SI-CHECK
6 ; EG-CHECK: MOV {{[ *]*}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z
7 ; SI-CHECK: BUFFER_LOAD_UBYTE
9 define void @i8_arg(i32 addrspace(1)* nocapture %out, i8 %in) nounwind {
11 %0 = zext i8 %in to i32
12 store i32 %0, i32 addrspace(1)* %out, align 4
16 ; EG-CHECK: @i8_zext_arg
17 ; EG-CHECK: MOV {{[ *]*}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z
18 ; SI-CHECK: S_LOAD_DWORD SGPR{{[0-9]}}, SGPR0_SGPR1, 11
20 define void @i8_zext_arg(i32 addrspace(1)* nocapture %out, i8 zeroext %in) nounwind {
22 %0 = zext i8 %in to i32
23 store i32 %0, i32 addrspace(1)* %out, align 4
27 ; EG-CHECK: @i8_sext_arg
28 ; EG-CHECK: MOV {{[ *]*}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z
29 ; SI-CHECK: S_LOAD_DWORD SGPR{{[0-9]}}, SGPR0_SGPR1, 11
31 define void @i8_sext_arg(i32 addrspace(1)* nocapture %out, i8 signext %in) nounwind {
33 %0 = sext i8 %in to i32
34 store i32 %0, i32 addrspace(1)* %out, align 4
39 ; EG-CHECK: MOV {{[ *]*}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z
40 ; SI-CHECK: BUFFER_LOAD_USHORT
42 define void @i16_arg(i32 addrspace(1)* nocapture %out, i16 %in) nounwind {
44 %0 = zext i16 %in to i32
45 store i32 %0, i32 addrspace(1)* %out, align 4
49 ; EG-CHECK: @i16_zext_arg
50 ; EG-CHECK: MOV {{[ *]*}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z
51 ; SI-CHECK: S_LOAD_DWORD SGPR{{[0-9]}}, SGPR0_SGPR1, 11
53 define void @i16_zext_arg(i32 addrspace(1)* nocapture %out, i16 zeroext %in) nounwind {
55 %0 = zext i16 %in to i32
56 store i32 %0, i32 addrspace(1)* %out, align 4
60 ; EG-CHECK: @i16_sext_arg
61 ; EG-CHECK: MOV {{[ *]*}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z
62 ; SI-CHECK: S_LOAD_DWORD SGPR{{[0-9]}}, SGPR0_SGPR1, 11
64 define void @i16_sext_arg(i32 addrspace(1)* nocapture %out, i16 signext %in) nounwind {
66 %0 = sext i16 %in to i32
67 store i32 %0, i32 addrspace(1)* %out, align 4