| Krzysztof Parzyszek | 4211334 | 2015-03-19 16:33:08 +0000 | [diff] [blame] | 1 | ; RUN: llc -march=hexagon < %s |
| 2 | ; Used to fail with "Cannot select: 0x16cf370: v2i16,ch = load" |
| 3 | |
| 4 | ; ModuleID = 'bugpoint-reduced-simplified.bc' |
| 5 | target datalayout = "e-p:32:32:32-i64:64:64-i32:32:32-i16:16:16-i1:32:32-f64:64:64-f32:32:32-a0:0-n32" |
| 6 | target triple = "hexagon-unknown-linux-gnu" |
| 7 | |
| 8 | %struct.ext_hdrs.10.65.142.274.307.318.329.681.692.703.714.725.736.758.791.802.846.857.868.879.890.901.945.956.958 = type { i8, i8, i8, i8, i8, i8, i16, i32, [8 x %struct.hcdc_ext_vec.9.64.141.273.306.317.328.680.691.702.713.724.735.757.790.801.845.856.867.878.889.900.944.955.957] } |
| 9 | %struct.hcdc_ext_vec.9.64.141.273.306.317.328.680.691.702.713.724.735.757.790.801.845.856.867.878.889.900.944.955.957 = type { i8, i8, i16 } |
| 10 | |
| 11 | define void @foo(%struct.ext_hdrs.10.65.142.274.307.318.329.681.692.703.714.725.736.758.791.802.846.857.868.879.890.901.945.956.958* %hc_ext_info) nounwind { |
| 12 | entry: |
| 13 | br i1 undef, label %if.end, label %if.then |
| 14 | |
| 15 | if.then: ; preds = %entry |
| 16 | unreachable |
| 17 | |
| 18 | if.end: ; preds = %entry |
| 19 | br i1 undef, label %if.end5, label %if.then3 |
| 20 | |
| 21 | if.then3: ; preds = %if.end |
| 22 | br label %if.end5 |
| 23 | |
| 24 | if.end5: ; preds = %if.then3, %if.end |
| 25 | %add.ptr = getelementptr inbounds %struct.ext_hdrs.10.65.142.274.307.318.329.681.692.703.714.725.736.758.791.802.846.857.868.879.890.901.945.956.958, %struct.ext_hdrs.10.65.142.274.307.318.329.681.692.703.714.725.736.758.791.802.846.857.868.879.890.901.945.956.958* %hc_ext_info, i32 0, i32 8, i32 0 |
| 26 | %add.ptr22 = getelementptr inbounds %struct.ext_hdrs.10.65.142.274.307.318.329.681.692.703.714.725.736.758.791.802.846.857.868.879.890.901.945.956.958, %struct.ext_hdrs.10.65.142.274.307.318.329.681.692.703.714.725.736.758.791.802.846.857.868.879.890.901.945.956.958* null, i32 0, i32 8, i32 undef |
| 27 | br label %while.cond |
| 28 | |
| 29 | while.cond: ; preds = %if.end419, %if.end5 |
| 30 | %gre_chksum.0 = phi <2 x i8> [ undef, %if.end5 ], [ %gre_chksum.2, %if.end419 ] |
| 31 | %cmp23 = icmp ult %struct.hcdc_ext_vec.9.64.141.273.306.317.328.680.691.702.713.724.735.757.790.801.845.856.867.878.889.900.944.955.957* null, %add.ptr |
| 32 | %cmp25 = icmp ult %struct.hcdc_ext_vec.9.64.141.273.306.317.328.680.691.702.713.724.735.757.790.801.845.856.867.878.889.900.944.955.957* null, %add.ptr22 |
| 33 | %sel1 = and i1 %cmp23, %cmp25 |
| 34 | br i1 %sel1, label %while.body, label %while.end422 |
| 35 | |
| 36 | while.body: ; preds = %while.cond |
| 37 | switch i8 undef, label %if.end419 [ |
| 38 | i8 5, label %if.then70 |
| 39 | i8 3, label %if.then70 |
| 40 | i8 2, label %if.then70 |
| 41 | i8 1, label %if.then70 |
| 42 | i8 0, label %if.then70 |
| 43 | i8 4, label %if.then93 |
| 44 | i8 6, label %if.then195 |
| 45 | ] |
| 46 | |
| 47 | if.then70: ; preds = %while.body, %while.body, %while.body, %while.body, %while.body |
| 48 | unreachable |
| 49 | |
| 50 | if.then93: ; preds = %while.body |
| 51 | unreachable |
| 52 | |
| 53 | if.then195: ; preds = %while.body |
| 54 | br i1 undef, label %if.end274, label %if.then202 |
| 55 | |
| 56 | if.then202: ; preds = %if.then195 |
| 57 | br label %while.body222 |
| 58 | |
| 59 | while.body222: ; preds = %while.body222, %if.then202 |
| 60 | br i1 undef, label %if.end240, label %while.body222 |
| 61 | |
| 62 | if.end240: ; preds = %while.body222 |
| 63 | %_p_vec_full100 = load <2 x i8>, <2 x i8>* undef, align 8 |
| 64 | br label %if.end274 |
| 65 | |
| 66 | if.end274: ; preds = %if.end240, %if.then195 |
| 67 | %gre_chksum.1 = phi <2 x i8> [ %gre_chksum.0, %if.then195 ], [ %_p_vec_full100, %if.end240 ] |
| 68 | br label %if.end419 |
| 69 | |
| 70 | if.end419: ; preds = %if.end274, %while.body |
| 71 | %gre_chksum.2 = phi <2 x i8> [ %gre_chksum.0, %while.body ], [ %gre_chksum.1, %if.end274 ] |
| 72 | br label %while.cond |
| 73 | |
| 74 | while.end422: ; preds = %while.cond |
| 75 | ret void |
| 76 | } |