Alexey Bataev | 83c15b1 | 2017-12-12 20:28:46 +0000 | [diff] [blame] | 1 | ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
| 2 | ; RUN: opt < %s -instcombine -S -data-layout="E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-v128:64-a:8:16-n32:64" | FileCheck %s |
| 3 | |
| 4 | define void @PR35618(i64* %st1, double* %st2) { |
| 5 | ; CHECK-LABEL: @PR35618( |
| 6 | ; CHECK-NEXT: [[Y1:%.*]] = alloca double, align 8 |
| 7 | ; CHECK-NEXT: [[Z1:%.*]] = alloca double, align 8 |
| 8 | ; CHECK-NEXT: [[LD1:%.*]] = load double, double* [[Y1]], align 8 |
| 9 | ; CHECK-NEXT: [[LD2:%.*]] = load double, double* [[Z1]], align 8 |
| 10 | ; CHECK-NEXT: [[TMP10:%.*]] = fcmp olt double [[LD1]], [[LD2]] |
| 11 | ; CHECK-NEXT: [[TMP121:%.*]] = select i1 [[TMP10]], double [[LD1]], double [[LD2]] |
| 12 | ; CHECK-NEXT: [[TMP1:%.*]] = bitcast i64* [[ST1:%.*]] to double* |
| 13 | ; CHECK-NEXT: store double [[TMP121]], double* [[TMP1]], align 8 |
| 14 | ; CHECK-NEXT: store double [[TMP121]], double* [[ST2:%.*]], align 8 |
| 15 | ; CHECK-NEXT: ret void |
| 16 | ; |
| 17 | %y1 = alloca double |
| 18 | %z1 = alloca double |
| 19 | %ld1 = load double, double* %y1 |
| 20 | %ld2 = load double, double* %z1 |
| 21 | %tmp10 = fcmp olt double %ld1, %ld2 |
| 22 | %sel = select i1 %tmp10, double* %y1, double* %z1 |
| 23 | %tmp11 = bitcast double* %sel to i64* |
| 24 | %tmp12 = load i64, i64* %tmp11 |
| 25 | store i64 %tmp12, i64* %st1 |
| 26 | %bc = bitcast double* %st2 to i64* |
| 27 | store i64 %tmp12, i64* %bc |
| 28 | ret void |
| 29 | } |
| 30 | |