1*9880d681SAndroid Build Coastguard Worker; RUN: llc -O3 -relocation-model=pic -mcpu=cortex-a8 -mattr=+thumb2 < %s 2*9880d681SAndroid Build Coastguard Worker; 3*9880d681SAndroid Build Coastguard Worker; This test creates a predicated t2ADDri instruction that is then turned into a t2MOVgpr2gpr instr. 4*9880d681SAndroid Build Coastguard Worker; Test that that the predicate operands are removed properly. 5*9880d681SAndroid Build Coastguard Worker; 6*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:32-n32" 7*9880d681SAndroid Build Coastguard Workertarget triple = "thumbv7-apple-darwin10" 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Workerdeclare void @etoe53(i16* nocapture, i16* nocapture) nounwind 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerdefine void @earith(double* nocapture %value, i32 %icode, double* nocapture %r1, double* nocapture %r2) nounwind { 12*9880d681SAndroid Build Coastguard Workerentry: 13*9880d681SAndroid Build Coastguard Worker %v = alloca [6 x i16], align 4 ; <[6 x i16]*> [#uses=1] 14*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb2.i, label %bb5 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workerbb2.i: ; preds = %entry 17*9880d681SAndroid Build Coastguard Worker %0 = bitcast double* %value to i16* ; <i16*> [#uses=1] 18*9880d681SAndroid Build Coastguard Worker call void @etoe53(i16* null, i16* %0) nounwind 19*9880d681SAndroid Build Coastguard Worker ret void 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerbb5: ; preds = %entry 22*9880d681SAndroid Build Coastguard Worker switch i32 %icode, label %bb10 [ 23*9880d681SAndroid Build Coastguard Worker i32 57, label %bb14 24*9880d681SAndroid Build Coastguard Worker i32 58, label %bb18 25*9880d681SAndroid Build Coastguard Worker i32 67, label %bb22 26*9880d681SAndroid Build Coastguard Worker i32 76, label %bb26 27*9880d681SAndroid Build Coastguard Worker i32 77, label %bb35 28*9880d681SAndroid Build Coastguard Worker ] 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Workerbb10: ; preds = %bb5 31*9880d681SAndroid Build Coastguard Worker br label %bb46 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerbb14: ; preds = %bb5 34*9880d681SAndroid Build Coastguard Worker unreachable 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Workerbb18: ; preds = %bb5 37*9880d681SAndroid Build Coastguard Worker unreachable 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Workerbb22: ; preds = %bb5 40*9880d681SAndroid Build Coastguard Worker unreachable 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Workerbb26: ; preds = %bb5 43*9880d681SAndroid Build Coastguard Worker br label %bb46 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Workerbb35: ; preds = %bb5 46*9880d681SAndroid Build Coastguard Worker unreachable 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Workerbb46: ; preds = %bb26, %bb10 49*9880d681SAndroid Build Coastguard Worker %1 = bitcast double* %value to i16* ; <i16*> [#uses=1] 50*9880d681SAndroid Build Coastguard Worker %v47 = getelementptr inbounds [6 x i16], [6 x i16]* %v, i32 0, i32 0 ; <i16*> [#uses=1] 51*9880d681SAndroid Build Coastguard Worker call void @etoe53(i16* %v47, i16* %1) nounwind 52*9880d681SAndroid Build Coastguard Worker ret void 53*9880d681SAndroid Build Coastguard Worker} 54