R600/SI: Make sure M0 is loaded for V_INTERP_MOV_F32
[oota-llvm.git] / test / CodeGen / R600 / llvm.SI.fs.interp.constant.ll
1 ;RUN: llc < %s -march=r600 -mcpu=SI | FileCheck %s
2
3 ;CHECK: S_MOV_B32
4 ;CHECK-NEXT: V_INTERP_MOV_F32
5
6 define void @main() {
7 main_body:
8   call void @llvm.AMDGPU.shader.type(i32 0)
9   %0 = load i32 addrspace(8)* inttoptr (i32 6 to i32 addrspace(8)*)
10   %1 = call float @llvm.SI.fs.interp.constant(i32 0, i32 0, i32 %0)
11   %2 = call i32 @llvm.SI.packf16(float %1, float %1)
12   %3 = bitcast i32 %2 to float
13   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %3, float %3, float %3, float %3)
14   ret void
15 }
16
17 declare void @llvm.AMDGPU.shader.type(i32)
18
19 declare float @llvm.SI.fs.interp.constant(i32, i32, i32) readonly
20
21 declare i32 @llvm.SI.packf16(float, float) readnone
22
23 declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float)