From: Tom Stellard Date: Sat, 9 Aug 2014 01:06:53 +0000 (+0000) Subject: R600/SI: Update concat_vectors.ll to check for scratch usage X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=f1ba587963e92268a6d4b56a596b3a4a7e028aeb;p=oota-llvm.git R600/SI: Update concat_vectors.ll to check for scratch usage These tests were using SI-NOT: MOVREL to make sure concat vectors weren't being lowered to stack loads and stores, but we are using scratch buffers for the stack now instead of registers, so we need to add an additional SI-NOT check for scratch buffers. With this change I was able to uncover one broken test which will be fixed in a future commit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215269 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/CodeGen/R600/concat_vectors.ll b/test/CodeGen/R600/concat_vectors.ll index 9abc5a627c1..c38f3ee99ea 100644 --- a/test/CodeGen/R600/concat_vectors.ll +++ b/test/CodeGen/R600/concat_vectors.ll @@ -1,6 +1,11 @@ ; RUN: llc -march=r600 -mcpu=SI -verify-machineinstrs < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s ; FUNC-LABEL: @test_concat_v1i32 +; 0x80f000 is the high 32 bits of the resource descriptor used by MUBUF +; instructions that access scratch memory. Bit 23, which is the add_tid_enable +; bit, is only set for scratch access, so we can check for the absence of this +; value if we want to ensure scratch memory is not being used. +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v1i32(<2 x i32> addrspace(1)* %out, <1 x i32> %a, <1 x i32> %b) nounwind { %concat = shufflevector <1 x i32> %a, <1 x i32> %b, <2 x i32> @@ -9,6 +14,7 @@ define void @test_concat_v1i32(<2 x i32> addrspace(1)* %out, <1 x i32> %a, <1 x } ; FUNC-LABEL: @test_concat_v2i32 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v2i32(<4 x i32> addrspace(1)* %out, <2 x i32> %a, <2 x i32> %b) nounwind { %concat = shufflevector <2 x i32> %a, <2 x i32> %b, <4 x i32> @@ -17,6 +23,7 @@ define void @test_concat_v2i32(<4 x i32> addrspace(1)* %out, <2 x i32> %a, <2 x } ; FUNC-LABEL: @test_concat_v4i32 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v4i32(<8 x i32> addrspace(1)* %out, <4 x i32> %a, <4 x i32> %b) nounwind { %concat = shufflevector <4 x i32> %a, <4 x i32> %b, <8 x i32> @@ -25,6 +32,7 @@ define void @test_concat_v4i32(<8 x i32> addrspace(1)* %out, <4 x i32> %a, <4 x } ; FUNC-LABEL: @test_concat_v8i32 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v8i32(<16 x i32> addrspace(1)* %out, <8 x i32> %a, <8 x i32> %b) nounwind { %concat = shufflevector <8 x i32> %a, <8 x i32> %b, <16 x i32> @@ -33,6 +41,7 @@ define void @test_concat_v8i32(<16 x i32> addrspace(1)* %out, <8 x i32> %a, <8 x } ; FUNC-LABEL: @test_concat_v16i32 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v16i32(<32 x i32> addrspace(1)* %out, <16 x i32> %a, <16 x i32> %b) nounwind { %concat = shufflevector <16 x i32> %a, <16 x i32> %b, <32 x i32> @@ -41,6 +50,7 @@ define void @test_concat_v16i32(<32 x i32> addrspace(1)* %out, <16 x i32> %a, <1 } ; FUNC-LABEL: @test_concat_v1f32 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v1f32(<2 x float> addrspace(1)* %out, <1 x float> %a, <1 x float> %b) nounwind { %concat = shufflevector <1 x float> %a, <1 x float> %b, <2 x i32> @@ -49,6 +59,7 @@ define void @test_concat_v1f32(<2 x float> addrspace(1)* %out, <1 x float> %a, < } ; FUNC-LABEL: @test_concat_v2f32 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v2f32(<4 x float> addrspace(1)* %out, <2 x float> %a, <2 x float> %b) nounwind { %concat = shufflevector <2 x float> %a, <2 x float> %b, <4 x i32> @@ -57,6 +68,7 @@ define void @test_concat_v2f32(<4 x float> addrspace(1)* %out, <2 x float> %a, < } ; FUNC-LABEL: @test_concat_v4f32 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v4f32(<8 x float> addrspace(1)* %out, <4 x float> %a, <4 x float> %b) nounwind { %concat = shufflevector <4 x float> %a, <4 x float> %b, <8 x i32> @@ -65,6 +77,8 @@ define void @test_concat_v4f32(<8 x float> addrspace(1)* %out, <4 x float> %a, < } ; FUNC-LABEL: @test_concat_v8f32 +; FIXME: This is currently being expanded with loads / stores to the stack. +; FIXME-SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v8f32(<16 x float> addrspace(1)* %out, <8 x float> %a, <8 x float> %b) nounwind { %concat = shufflevector <8 x float> %a, <8 x float> %b, <16 x i32> @@ -73,6 +87,7 @@ define void @test_concat_v8f32(<16 x float> addrspace(1)* %out, <8 x float> %a, } ; FUNC-LABEL: @test_concat_v16f32 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v16f32(<32 x float> addrspace(1)* %out, <16 x float> %a, <16 x float> %b) nounwind { %concat = shufflevector <16 x float> %a, <16 x float> %b, <32 x i32> @@ -81,6 +96,7 @@ define void @test_concat_v16f32(<32 x float> addrspace(1)* %out, <16 x float> %a } ; FUNC-LABEL: @test_concat_v1i64 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v1i64(<2 x double> addrspace(1)* %out, <1 x double> %a, <1 x double> %b) nounwind { %concat = shufflevector <1 x double> %a, <1 x double> %b, <2 x i32> @@ -89,6 +105,7 @@ define void @test_concat_v1i64(<2 x double> addrspace(1)* %out, <1 x double> %a, } ; FUNC-LABEL: @test_concat_v2i64 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v2i64(<4 x double> addrspace(1)* %out, <2 x double> %a, <2 x double> %b) nounwind { %concat = shufflevector <2 x double> %a, <2 x double> %b, <4 x i32> @@ -97,6 +114,7 @@ define void @test_concat_v2i64(<4 x double> addrspace(1)* %out, <2 x double> %a, } ; FUNC-LABEL: @test_concat_v4i64 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v4i64(<8 x double> addrspace(1)* %out, <4 x double> %a, <4 x double> %b) nounwind { %concat = shufflevector <4 x double> %a, <4 x double> %b, <8 x i32> @@ -105,6 +123,7 @@ define void @test_concat_v4i64(<8 x double> addrspace(1)* %out, <4 x double> %a, } ; FUNC-LABEL: @test_concat_v8i64 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v8i64(<16 x double> addrspace(1)* %out, <8 x double> %a, <8 x double> %b) nounwind { %concat = shufflevector <8 x double> %a, <8 x double> %b, <16 x i32> @@ -113,6 +132,7 @@ define void @test_concat_v8i64(<16 x double> addrspace(1)* %out, <8 x double> %a } ; FUNC-LABEL: @test_concat_v16i64 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v16i64(<32 x double> addrspace(1)* %out, <16 x double> %a, <16 x double> %b) nounwind { %concat = shufflevector <16 x double> %a, <16 x double> %b, <32 x i32> @@ -121,6 +141,7 @@ define void @test_concat_v16i64(<32 x double> addrspace(1)* %out, <16 x double> } ; FUNC-LABEL: @test_concat_v1f64 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v1f64(<2 x double> addrspace(1)* %out, <1 x double> %a, <1 x double> %b) nounwind { %concat = shufflevector <1 x double> %a, <1 x double> %b, <2 x i32> @@ -129,6 +150,7 @@ define void @test_concat_v1f64(<2 x double> addrspace(1)* %out, <1 x double> %a, } ; FUNC-LABEL: @test_concat_v2f64 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v2f64(<4 x double> addrspace(1)* %out, <2 x double> %a, <2 x double> %b) nounwind { %concat = shufflevector <2 x double> %a, <2 x double> %b, <4 x i32> @@ -137,6 +159,7 @@ define void @test_concat_v2f64(<4 x double> addrspace(1)* %out, <2 x double> %a, } ; FUNC-LABEL: @test_concat_v4f64 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v4f64(<8 x double> addrspace(1)* %out, <4 x double> %a, <4 x double> %b) nounwind { %concat = shufflevector <4 x double> %a, <4 x double> %b, <8 x i32> @@ -145,6 +168,7 @@ define void @test_concat_v4f64(<8 x double> addrspace(1)* %out, <4 x double> %a, } ; FUNC-LABEL: @test_concat_v8f64 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v8f64(<16 x double> addrspace(1)* %out, <8 x double> %a, <8 x double> %b) nounwind { %concat = shufflevector <8 x double> %a, <8 x double> %b, <16 x i32> @@ -153,6 +177,7 @@ define void @test_concat_v8f64(<16 x double> addrspace(1)* %out, <8 x double> %a } ; FUNC-LABEL: @test_concat_v16f64 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v16f64(<32 x double> addrspace(1)* %out, <16 x double> %a, <16 x double> %b) nounwind { %concat = shufflevector <16 x double> %a, <16 x double> %b, <32 x i32> @@ -161,6 +186,7 @@ define void @test_concat_v16f64(<32 x double> addrspace(1)* %out, <16 x double> } ; FUNC-LABEL: @test_concat_v1i1 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v1i1(<2 x i1> addrspace(1)* %out, <1 x i1> %a, <1 x i1> %b) nounwind { %concat = shufflevector <1 x i1> %a, <1 x i1> %b, <2 x i32> @@ -169,6 +195,7 @@ define void @test_concat_v1i1(<2 x i1> addrspace(1)* %out, <1 x i1> %a, <1 x i1> } ; FUNC-LABEL: @test_concat_v2i1 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v2i1(<4 x i1> addrspace(1)* %out, <2 x i1> %a, <2 x i1> %b) nounwind { %concat = shufflevector <2 x i1> %a, <2 x i1> %b, <4 x i32> @@ -177,6 +204,7 @@ define void @test_concat_v2i1(<4 x i1> addrspace(1)* %out, <2 x i1> %a, <2 x i1> } ; FUNC-LABEL: @test_concat_v4i1 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v4i1(<8 x i1> addrspace(1)* %out, <4 x i1> %a, <4 x i1> %b) nounwind { %concat = shufflevector <4 x i1> %a, <4 x i1> %b, <8 x i32> @@ -185,6 +213,7 @@ define void @test_concat_v4i1(<8 x i1> addrspace(1)* %out, <4 x i1> %a, <4 x i1> } ; FUNC-LABEL: @test_concat_v8i1 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v8i1(<16 x i1> addrspace(1)* %out, <8 x i1> %a, <8 x i1> %b) nounwind { %concat = shufflevector <8 x i1> %a, <8 x i1> %b, <16 x i32> @@ -193,6 +222,7 @@ define void @test_concat_v8i1(<16 x i1> addrspace(1)* %out, <8 x i1> %a, <8 x i1 } ; FUNC-LABEL: @test_concat_v16i1 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v16i1(<32 x i1> addrspace(1)* %out, <16 x i1> %a, <16 x i1> %b) nounwind { %concat = shufflevector <16 x i1> %a, <16 x i1> %b, <32 x i32> @@ -201,6 +231,7 @@ define void @test_concat_v16i1(<32 x i1> addrspace(1)* %out, <16 x i1> %a, <16 x } ; FUNC-LABEL: @test_concat_v32i1 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v32i1(<64 x i1> addrspace(1)* %out, <32 x i1> %a, <32 x i1> %b) nounwind { %concat = shufflevector <32 x i1> %a, <32 x i1> %b, <64 x i32> @@ -209,6 +240,7 @@ define void @test_concat_v32i1(<64 x i1> addrspace(1)* %out, <32 x i1> %a, <32 x } ; FUNC-LABEL: @test_concat_v1i16 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v1i16(<2 x i16> addrspace(1)* %out, <1 x i16> %a, <1 x i16> %b) nounwind { %concat = shufflevector <1 x i16> %a, <1 x i16> %b, <2 x i32> @@ -217,6 +249,7 @@ define void @test_concat_v1i16(<2 x i16> addrspace(1)* %out, <1 x i16> %a, <1 x } ; FUNC-LABEL: @test_concat_v2i16 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v2i16(<4 x i16> addrspace(1)* %out, <2 x i16> %a, <2 x i16> %b) nounwind { %concat = shufflevector <2 x i16> %a, <2 x i16> %b, <4 x i32> @@ -225,6 +258,7 @@ define void @test_concat_v2i16(<4 x i16> addrspace(1)* %out, <2 x i16> %a, <2 x } ; FUNC-LABEL: @test_concat_v4i16 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v4i16(<8 x i16> addrspace(1)* %out, <4 x i16> %a, <4 x i16> %b) nounwind { %concat = shufflevector <4 x i16> %a, <4 x i16> %b, <8 x i32> @@ -233,6 +267,7 @@ define void @test_concat_v4i16(<8 x i16> addrspace(1)* %out, <4 x i16> %a, <4 x } ; FUNC-LABEL: @test_concat_v8i16 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v8i16(<16 x i16> addrspace(1)* %out, <8 x i16> %a, <8 x i16> %b) nounwind { %concat = shufflevector <8 x i16> %a, <8 x i16> %b, <16 x i32> @@ -241,6 +276,7 @@ define void @test_concat_v8i16(<16 x i16> addrspace(1)* %out, <8 x i16> %a, <8 x } ; FUNC-LABEL: @test_concat_v16i16 +; SI-NOT: S_MOV_B32 s{{[0-9]}}, 0x80f000 ; SI-NOT: MOVREL define void @test_concat_v16i16(<32 x i16> addrspace(1)* %out, <16 x i16> %a, <16 x i16> %b) nounwind { %concat = shufflevector <16 x i16> %a, <16 x i16> %b, <32 x i32>