1*795d594fSAndroid Build Coastguard WorkerTest for select generation for conditional returns. 2*795d594fSAndroid Build Coastguard Worker 3*795d594fSAndroid Build Coastguard WorkerFor example rewrites a simpled diamond pattern e.g.: 4*795d594fSAndroid Build Coastguard Worker If [ Condition ] 5*795d594fSAndroid Build Coastguard Worker / \ 6*795d594fSAndroid Build Coastguard Worker false branch true branch 7*795d594fSAndroid Build Coastguard Worker \ / 8*795d594fSAndroid Build Coastguard Worker Return Phi[FalseValue, TrueValue] 9*795d594fSAndroid Build Coastguard Worker 10*795d594fSAndroid Build Coastguard Workerto: 11*795d594fSAndroid Build Coastguard Worker true branch 12*795d594fSAndroid Build Coastguard Worker false branch 13*795d594fSAndroid Build Coastguard Worker return Select [FalseValue, TrueValue, Condition] 14*795d594fSAndroid Build Coastguard Worker 15*795d594fSAndroid Build Coastguard WorkerIt tests: 16*795d594fSAndroid Build Coastguard Worker* Simple diamond pattern with: 17*795d594fSAndroid Build Coastguard Worker * Same value on each branch 18*795d594fSAndroid Build Coastguard Worker * Different value 19*795d594fSAndroid Build Coastguard Worker* Double diamond pattern (i.e. nested simple diamonds) with: 20*795d594fSAndroid Build Coastguard Worker * Same value 21*795d594fSAndroid Build Coastguard Worker * All different values 22*795d594fSAndroid Build Coastguard Worker * Same value in some cases but not all 23*795d594fSAndroid Build Coastguard Worker 24*795d594fSAndroid Build Coastguard WorkerFor all cases it tests: 25*795d594fSAndroid Build Coastguard Worker* Branches merging with a Phi. 26*795d594fSAndroid Build Coastguard Worker* Branches returning instead of having a Phi.