xref: /aosp_15_r20/external/llvm/test/CodeGen/Thumb2/2010-01-19-RemovePredicates.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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