1*9880d681SAndroid Build Coastguard Worker; That that we don't try to use z196 instructions on z10 for TMHH and TMHL. 2*9880d681SAndroid Build Coastguard Worker; 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 -O0 | FileCheck %s 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker@g = global i32 0 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker; Check the lowest useful TMHL value. 8*9880d681SAndroid Build Coastguard Workerdefine void @f1(i64 %a) { 9*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f1: 10*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: risblg 11*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: risbhg 12*9880d681SAndroid Build Coastguard Worker; CHECK: tmhl {{%r[0-5]}}, 1 13*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: risblg 14*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: risbhg 15*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 16*9880d681SAndroid Build Coastguard Workerentry: 17*9880d681SAndroid Build Coastguard Worker %and = and i64 %a, 4294967296 18*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq i64 %and, 0 19*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerstore: 22*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 23*9880d681SAndroid Build Coastguard Worker br label %exit 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workerexit: 26*9880d681SAndroid Build Coastguard Worker ret void 27*9880d681SAndroid Build Coastguard Worker} 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker; Check the lowest useful TMHH value. 30*9880d681SAndroid Build Coastguard Workerdefine void @f2(i64 %a) { 31*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f2: 32*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: risblg 33*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: risbhg 34*9880d681SAndroid Build Coastguard Worker; CHECK: tmhh {{%r[0-5]}}, 1 35*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: risblg 36*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: risbhg 37*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 38*9880d681SAndroid Build Coastguard Workerentry: 39*9880d681SAndroid Build Coastguard Worker %and = and i64 %a, 281474976710656 40*9880d681SAndroid Build Coastguard Worker %cmp = icmp ne i64 %and, 0 41*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Workerstore: 44*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 45*9880d681SAndroid Build Coastguard Worker br label %exit 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Workerexit: 48*9880d681SAndroid Build Coastguard Worker ret void 49*9880d681SAndroid Build Coastguard Worker} 50