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>