1; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck -check-prefix=EG --check-prefix=FUNC %s 2; RUN: llc -march=r600 -mcpu=SI < %s | FileCheck -check-prefix=SI --check-prefix=FUNC %s 3 4declare float @llvm.trunc.f32(float) nounwind readnone 5declare <2 x float> @llvm.trunc.v2f32(<2 x float>) nounwind readnone 6declare <3 x float> @llvm.trunc.v3f32(<3 x float>) nounwind readnone 7declare <4 x float> @llvm.trunc.v4f32(<4 x float>) nounwind readnone 8declare <8 x float> @llvm.trunc.v8f32(<8 x float>) nounwind readnone 9declare <16 x float> @llvm.trunc.v16f32(<16 x float>) nounwind readnone 10 11; FUNC-LABEL: @ftrunc_f32: 12; EG: TRUNC 13; SI: V_TRUNC_F32_e32 14define void @ftrunc_f32(float addrspace(1)* %out, float %x) { 15 %y = call float @llvm.trunc.f32(float %x) nounwind readnone 16 store float %y, float addrspace(1)* %out 17 ret void 18} 19 20; FUNC-LABEL: @ftrunc_v2f32: 21; EG: TRUNC 22; EG: TRUNC 23; SI: V_TRUNC_F32_e32 24; SI: V_TRUNC_F32_e32 25define void @ftrunc_v2f32(<2 x float> addrspace(1)* %out, <2 x float> %x) { 26 %y = call <2 x float> @llvm.trunc.v2f32(<2 x float> %x) nounwind readnone 27 store <2 x float> %y, <2 x float> addrspace(1)* %out 28 ret void 29} 30 31; FIXME-FUNC-LABEL: @ftrunc_v3f32: 32; FIXME-EG: TRUNC 33; FIXME-EG: TRUNC 34; FIXME-EG: TRUNC 35; FIXME-SI: V_TRUNC_F32_e32 36; FIXME-SI: V_TRUNC_F32_e32 37; FIXME-SI: V_TRUNC_F32_e32 38; define void @ftrunc_v3f32(<3 x float> addrspace(1)* %out, <3 x float> %x) { 39; %y = call <3 x float> @llvm.trunc.v3f32(<3 x float> %x) nounwind readnone 40; store <3 x float> %y, <3 x float> addrspace(1)* %out 41; ret void 42; } 43 44; FUNC-LABEL: @ftrunc_v4f32: 45; EG: TRUNC 46; EG: TRUNC 47; EG: TRUNC 48; EG: TRUNC 49; SI: V_TRUNC_F32_e32 50; SI: V_TRUNC_F32_e32 51; SI: V_TRUNC_F32_e32 52; SI: V_TRUNC_F32_e32 53define void @ftrunc_v4f32(<4 x float> addrspace(1)* %out, <4 x float> %x) { 54 %y = call <4 x float> @llvm.trunc.v4f32(<4 x float> %x) nounwind readnone 55 store <4 x float> %y, <4 x float> addrspace(1)* %out 56 ret void 57} 58 59; FUNC-LABEL: @ftrunc_v8f32: 60; EG: TRUNC 61; EG: TRUNC 62; EG: TRUNC 63; EG: TRUNC 64; EG: TRUNC 65; EG: TRUNC 66; EG: TRUNC 67; EG: TRUNC 68; SI: V_TRUNC_F32_e32 69; SI: V_TRUNC_F32_e32 70; SI: V_TRUNC_F32_e32 71; SI: V_TRUNC_F32_e32 72; SI: V_TRUNC_F32_e32 73; SI: V_TRUNC_F32_e32 74; SI: V_TRUNC_F32_e32 75; SI: V_TRUNC_F32_e32 76define void @ftrunc_v8f32(<8 x float> addrspace(1)* %out, <8 x float> %x) { 77 %y = call <8 x float> @llvm.trunc.v8f32(<8 x float> %x) nounwind readnone 78 store <8 x float> %y, <8 x float> addrspace(1)* %out 79 ret void 80} 81 82; FUNC-LABEL: @ftrunc_v16f32: 83; EG: TRUNC 84; EG: TRUNC 85; EG: TRUNC 86; EG: TRUNC 87; EG: TRUNC 88; EG: TRUNC 89; EG: TRUNC 90; EG: TRUNC 91; EG: TRUNC 92; EG: TRUNC 93; EG: TRUNC 94; EG: TRUNC 95; EG: TRUNC 96; EG: TRUNC 97; EG: TRUNC 98; EG: TRUNC 99; SI: V_TRUNC_F32_e32 100; SI: V_TRUNC_F32_e32 101; SI: V_TRUNC_F32_e32 102; SI: V_TRUNC_F32_e32 103; SI: V_TRUNC_F32_e32 104; SI: V_TRUNC_F32_e32 105; SI: V_TRUNC_F32_e32 106; SI: V_TRUNC_F32_e32 107; SI: V_TRUNC_F32_e32 108; SI: V_TRUNC_F32_e32 109; SI: V_TRUNC_F32_e32 110; SI: V_TRUNC_F32_e32 111; SI: V_TRUNC_F32_e32 112; SI: V_TRUNC_F32_e32 113; SI: V_TRUNC_F32_e32 114; SI: V_TRUNC_F32_e32 115define void @ftrunc_v16f32(<16 x float> addrspace(1)* %out, <16 x float> %x) { 116 %y = call <16 x float> @llvm.trunc.v16f32(<16 x float> %x) nounwind readnone 117 store <16 x float> %y, <16 x float> addrspace(1)* %out 118 ret void 119} 120