1*9880d681SAndroid Build Coastguard Worker; RUN: llc -verify-machineinstrs < %s -mtriple=arm64-apple-ios7.0 | FileCheck --check-prefix=CHECK --check-prefix=CHECK-LE %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64_be-none-linux-gnu | FileCheck --check-prefix=CHECK --check-prefix=CHECK-BE %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine i128 @test_simple(i128 %a, i128 %b, i128 %c) { 5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_simple: 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker %valadd = add i128 %a, %b 8*9880d681SAndroid Build Coastguard Worker; CHECK-LE: adds [[ADDLO:x[0-9]+]], x0, x2 9*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NEXT: adcs [[ADDHI:x[0-9]+]], x1, x3 10*9880d681SAndroid Build Coastguard Worker; CHECK-BE: adds [[ADDLO:x[0-9]+]], x1, x3 11*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NEXT: adcs [[ADDHI:x[0-9]+]], x0, x2 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker %valsub = sub i128 %valadd, %c 14*9880d681SAndroid Build Coastguard Worker; CHECK-LE: subs x0, [[ADDLO]], x4 15*9880d681SAndroid Build Coastguard Worker; CHECK-LE: sbcs x1, [[ADDHI]], x5 16*9880d681SAndroid Build Coastguard Worker; CHECK-BE: subs x1, [[ADDLO]], x5 17*9880d681SAndroid Build Coastguard Worker; CHECK-BE: sbcs x0, [[ADDHI]], x4 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker ret i128 %valsub 20*9880d681SAndroid Build Coastguard Worker; CHECK: ret 21*9880d681SAndroid Build Coastguard Worker} 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerdefine i128 @test_imm(i128 %a) { 24*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_imm: 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker %val = add i128 %a, 12 27*9880d681SAndroid Build Coastguard Worker; CHECK-LE: adds x0, x0, #12 28*9880d681SAndroid Build Coastguard Worker; CHECK-LE: adcs x1, x1, {{x[0-9]|xzr}} 29*9880d681SAndroid Build Coastguard Worker; CHECK-BE: adds x1, x1, #12 30*9880d681SAndroid Build Coastguard Worker; CHECK-BE: adcs x0, x0, {{x[0-9]|xzr}} 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker ret i128 %val 33*9880d681SAndroid Build Coastguard Worker; CHECK: ret 34*9880d681SAndroid Build Coastguard Worker} 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Workerdefine i128 @test_shifted(i128 %a, i128 %b) { 37*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_shifted: 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Worker %rhs = shl i128 %b, 45 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker %val = add i128 %a, %rhs 42*9880d681SAndroid Build Coastguard Worker; CHECK-LE: adds x0, x0, x2, lsl #45 43*9880d681SAndroid Build Coastguard Worker; CHECK-LE: adcs x1, x1, {{x[0-9]}} 44*9880d681SAndroid Build Coastguard Worker; CHECK-BE: adds x1, x1, x3, lsl #45 45*9880d681SAndroid Build Coastguard Worker; CHECK-BE: adcs x0, x0, {{x[0-9]}} 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Worker ret i128 %val 48*9880d681SAndroid Build Coastguard Worker; CHECK: ret 49*9880d681SAndroid Build Coastguard Worker} 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Workerdefine i128 @test_extended(i128 %a, i16 %b) { 52*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_extended: 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Worker %ext = sext i16 %b to i128 55*9880d681SAndroid Build Coastguard Worker %rhs = shl i128 %ext, 3 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Worker %val = add i128 %a, %rhs 58*9880d681SAndroid Build Coastguard Worker; CHECK-LE: adds x0, x0, w2, sxth #3 59*9880d681SAndroid Build Coastguard Worker; CHECK-LE: adcs x1, x1, {{x[0-9]}} 60*9880d681SAndroid Build Coastguard Worker; CHECK-BE: adds x1, x1, w2, sxth #3 61*9880d681SAndroid Build Coastguard Worker; CHECK-BE: adcs x0, x0, {{x[0-9]}} 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Worker ret i128 %val 64*9880d681SAndroid Build Coastguard Worker; CHECK: ret 65*9880d681SAndroid Build Coastguard Worker} 66