From: Hal Finkel Date: Tue, 1 Apr 2014 19:24:27 +0000 (+0000) Subject: [PowerPC] Add some missing VSX bitcast patterns X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=4a6c0afc523716ab6d290ee5eb1b050948a489a7;p=oota-llvm.git [PowerPC] Add some missing VSX bitcast patterns git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205352 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/PowerPC/PPCInstrVSX.td b/lib/Target/PowerPC/PPCInstrVSX.td index baf07cbe7bb..9cc919ebe38 100644 --- a/lib/Target/PowerPC/PPCInstrVSX.td +++ b/lib/Target/PowerPC/PPCInstrVSX.td @@ -758,6 +758,8 @@ def : Pat<(fma (fneg v4f32:$A), v4f32:$C, v4f32:$B), def : Pat<(fma v4f32:$A, (fneg v4f32:$C), v4f32:$B), (XVNMSUBASP $B, $C, $A)>; +def : Pat<(v2f64 (bitconvert v4f32:$A)), + (COPY_TO_REGCLASS $A, VSRC)>; def : Pat<(v2f64 (bitconvert v4i32:$A)), (COPY_TO_REGCLASS $A, VSRC)>; def : Pat<(v2f64 (bitconvert v8i16:$A)), @@ -765,6 +767,8 @@ def : Pat<(v2f64 (bitconvert v8i16:$A)), def : Pat<(v2f64 (bitconvert v16i8:$A)), (COPY_TO_REGCLASS $A, VSRC)>; +def : Pat<(v4f32 (bitconvert v2f64:$A)), + (COPY_TO_REGCLASS $A, VRRC)>; def : Pat<(v4i32 (bitconvert v2f64:$A)), (COPY_TO_REGCLASS $A, VRRC)>; def : Pat<(v8i16 (bitconvert v2f64:$A)), @@ -772,6 +776,8 @@ def : Pat<(v8i16 (bitconvert v2f64:$A)), def : Pat<(v16i8 (bitconvert v2f64:$A)), (COPY_TO_REGCLASS $A, VRRC)>; +def : Pat<(v2i64 (bitconvert v4f32:$A)), + (COPY_TO_REGCLASS $A, VSRC)>; def : Pat<(v2i64 (bitconvert v4i32:$A)), (COPY_TO_REGCLASS $A, VSRC)>; def : Pat<(v2i64 (bitconvert v8i16:$A)), @@ -779,6 +785,8 @@ def : Pat<(v2i64 (bitconvert v8i16:$A)), def : Pat<(v2i64 (bitconvert v16i8:$A)), (COPY_TO_REGCLASS $A, VSRC)>; +def : Pat<(v4f32 (bitconvert v2i64:$A)), + (COPY_TO_REGCLASS $A, VRRC)>; def : Pat<(v4i32 (bitconvert v2i64:$A)), (COPY_TO_REGCLASS $A, VRRC)>; def : Pat<(v8i16 (bitconvert v2i64:$A)), diff --git a/test/CodeGen/PowerPC/vsx.ll b/test/CodeGen/PowerPC/vsx.ll index 9c37fe6d40d..f5ac577a75d 100644 --- a/test/CodeGen/PowerPC/vsx.ll +++ b/test/CodeGen/PowerPC/vsx.ll @@ -641,3 +641,11 @@ define <2 x i32> @test80(i32 %v) { ; CHECK: blr } +define <2 x double> @test81(<4 x float> %b) { + %w = bitcast <4 x float> %b to <2 x double> + ret <2 x double> %w + +; CHECK-LABEL: @test81 +; CHECK: blr +} +