[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.
This commit is contained in:
Craig Topper 2019-11-10 00:34:32 -08:00
parent d115b9fd4a
commit d37db750c2
1 changed files with 14 additions and 1 deletions

View File

@ -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
}