R600/SI: Custom lower CONCAT_VECTORS
authorTom Stellard <thomas.stellard@amd.com>
Sat, 9 Aug 2014 01:06:56 +0000 (01:06 +0000)
committerTom Stellard <thomas.stellard@amd.com>
Sat, 9 Aug 2014 01:06:56 +0000 (01:06 +0000)
This will lower them using register copies rather than loads and stores
to the stack.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215270 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/R600/SIISelLowering.cpp
test/CodeGen/R600/concat_vectors.ll

index f7717dacfc60edda76804037983d368397705006..f9be144461a0f4f5301ba2279fc6f03503252e70 100644 (file)
@@ -196,10 +196,12 @@ SITargetLowering::SITargetLowering(TargetMachine &TM) :
       case ISD::BITCAST:
       case ISD::EXTRACT_VECTOR_ELT:
       case ISD::INSERT_VECTOR_ELT:
-      case ISD::CONCAT_VECTORS:
       case ISD::INSERT_SUBVECTOR:
       case ISD::EXTRACT_SUBVECTOR:
         break;
+      case ISD::CONCAT_VECTORS:
+        setOperationAction(Op, VT, Custom);
+        break;
       default:
         setOperationAction(Op, VT, Expand);
         break;
index c38f3ee99eaa8c4e4008f98358b5148f95243b79..753282bbe821032e6da0b2131ae880adf9baa4e3 100644 (file)
@@ -77,8 +77,7 @@ 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: 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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>