Commit d37db750 authored by Craig Topper's avatar Craig Topper
Browse files

[InstCombine] Add a test case for suboptimal handling of (double (bitcast (<1...

[InstCombine] Add a test case for suboptimal handling of (double (bitcast (<1 x i64> (bitcast (x86_mmx)))))

The outer bitcast gets turned into an extractelement and another
bitcast rather than combining away to a single bitcast from mmx
to double.
parent d115b9fd
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -49,9 +49,22 @@ define x86_mmx @e(<1 x i64> %y) {

define <1 x i64> @f(x86_mmx %y) {
; CHECK-LABEL: @f(
; CHECK-NEXT:    [[C:%.*]] = bitcast x86_mmx %y to <1 x i64>
; CHECK-NEXT:    [[C:%.*]] = bitcast x86_mmx [[Y:%.*]] to <1 x i64>
; CHECK-NEXT:    ret <1 x i64> [[C]]
;
  %c = bitcast x86_mmx %y to <1 x i64>
  ret <1 x i64> %c
}

define double @g(x86_mmx %x) {
; CHECK-LABEL: @g(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[BC:%.*]] = bitcast x86_mmx %x to <1 x double>
; CHECK-NEXT:    [[TMP0:%.*]] = extractelement <1 x double> [[BC]], i32 0
; CHECK-NEXT:    ret double [[TMP0]]
;
entry:
  %0 = bitcast x86_mmx %x to <1 x i64>
  %1 = bitcast <1 x i64> %0 to double
  ret double %1
}