xref: /llvm-project/llvm/test/CodeGen/X86/fake-use-vector.ll (revision 412e3e394dbd1b7d8655639e161ed4dbd5505c96)
13d08ade7SStephen Tozer; assert in DAGlegalizer with fake use of 1-element vectors.
2*412e3e39SStephen Tozer; RUN: llc -stop-after=finalize-isel -mtriple=x86_64-unknown-linux -filetype=asm -o - %s | FileCheck %s
33d08ade7SStephen Tozer;
43d08ade7SStephen Tozer; ModuleID = 't2.cpp'
53d08ade7SStephen Tozer; source_filename = "t2.cpp"
63d08ade7SStephen Tozer; target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
73d08ade7SStephen Tozer;
83d08ade7SStephen Tozer; Check that we get past ISel and generate FAKE_USE machine instructions for
93d08ade7SStephen Tozer; one-element vectors.
103d08ade7SStephen Tozer;
113d08ade7SStephen Tozer; CHECK:       bb.0.entry:
123d08ade7SStephen Tozer; CHECK-DAG:   %1:gr64 = COPY $rdi
133d08ade7SStephen Tozer; CHECK-DAG:   %0:vr128 = COPY $xmm0
143d08ade7SStephen Tozer; CHECK:       %2:vr64 =
153d08ade7SStephen Tozer; CHECK-DAG:   FAKE_USE %1
163d08ade7SStephen Tozer; CHECK-DAG:   FAKE_USE %0
173d08ade7SStephen Tozer; CHECK:       RET
183d08ade7SStephen Tozer
193d08ade7SStephen Tozer
203d08ade7SStephen Tozertarget triple = "x86_64-unknown-unknown"
213d08ade7SStephen Tozer
223d08ade7SStephen Tozer; Function Attrs: nounwind sspstrong uwtable
233d08ade7SStephen Tozerdefine <4 x float> @_Z3runDv4_fDv1_x(<4 x float> %r, i64 %b.coerce) local_unnamed_addr #0 {
243d08ade7SStephen Tozerentry:
253d08ade7SStephen Tozer  %0 = insertelement <1 x i64> undef, i64 %b.coerce, i32 0
263d08ade7SStephen Tozer  %1 = bitcast i64 %b.coerce to <1 x i64>
273d08ade7SStephen Tozer  %2 = tail call <4 x float> @llvm.x86.sse.cvtpi2ps(<4 x float> %r, <1 x i64> %1)
283d08ade7SStephen Tozer  tail call void (...) @llvm.fake.use(<1 x i64> %0)
293d08ade7SStephen Tozer  tail call void (...) @llvm.fake.use(<4 x float> %r)
303d08ade7SStephen Tozer  ret <4 x float> %2
313d08ade7SStephen Tozer}
323d08ade7SStephen Tozer
333d08ade7SStephen Tozer; Function Attrs: nounwind readnone
343d08ade7SStephen Tozerdeclare <4 x float> @llvm.x86.sse.cvtpi2ps(<4 x float>, <1 x i64>)
353d08ade7SStephen Tozer
363d08ade7SStephen Tozer; Function Attrs: nounwind
373d08ade7SStephen Tozerdeclare void @llvm.fake.use(...)
383d08ade7SStephen Tozer
393d08ade7SStephen Tozerattributes #0 = { "target-cpu"="btver2" optdebug }
40