1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck %s -check-prefix=CHECK-LE 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck %s -check-prefix=CHECK-BE 3*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 -mattr=-vsx < %s | FileCheck %s -check-prefix=CHECK-NOVSX 4*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 -mattr=-vsx < %s | FileCheck %s -check-prefix=CHECK-NOVSX 5*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 -mattr=-vsx < %s | FileCheck %s -check-prefix=CHECK-BE-NOVSX 6*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 -mattr=-vsx < %s | FileCheck %s -check-prefix=CHECK-LE-NOVSX 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker@x = common global <1 x i128> zeroinitializer, align 16 9*9880d681SAndroid Build Coastguard Worker@y = common global <1 x i128> zeroinitializer, align 16 10*9880d681SAndroid Build Coastguard Worker@a = common global i128 zeroinitializer, align 16 11*9880d681SAndroid Build Coastguard Worker@b = common global i128 zeroinitializer, align 16 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker; VSX: 14*9880d681SAndroid Build Coastguard Worker; %a is passed in register 34 15*9880d681SAndroid Build Coastguard Worker; The value of 1 is stored in the TOC. 16*9880d681SAndroid Build Coastguard Worker; On LE, ensure the value of 1 is swapped before being used (using xxswapd). 17*9880d681SAndroid Build Coastguard Worker; VMX (no VSX): 18*9880d681SAndroid Build Coastguard Worker; %a is passed in register 2 19*9880d681SAndroid Build Coastguard Worker; The value of 1 is stored in the TOC. 20*9880d681SAndroid Build Coastguard Worker; No swaps are necessary when using P8 Vector instructions on LE 21*9880d681SAndroid Build Coastguard Workerdefine <1 x i128> @v1i128_increment_by_one(<1 x i128> %a) nounwind { 22*9880d681SAndroid Build Coastguard Worker %tmp = add <1 x i128> %a, <i128 1> 23*9880d681SAndroid Build Coastguard Worker ret <1 x i128> %tmp 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker; FIXME: Seems a 128-bit literal is materialized by loading from the TOC. There 26*9880d681SAndroid Build Coastguard Worker; should be a better way of doing this. 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker; CHECK-LE-LABEL: @v1i128_increment_by_one 29*9880d681SAndroid Build Coastguard Worker; CHECK-LE: lxvd2x [[VAL:[0-9]+]], {{[0-9]+}}, {{[0-9]+}} 30*9880d681SAndroid Build Coastguard Worker; CHECK-LE: xxswapd 35, [[VAL]] 31*9880d681SAndroid Build Coastguard Worker; CHECK-LE: vadduqm 2, 2, 3 32*9880d681SAndroid Build Coastguard Worker; CHECK-LE: blr 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: @v1i128_increment_by_one 35*9880d681SAndroid Build Coastguard Worker; CHECK-BE: lxvd2x 35, {{[0-9]+}}, {{[0-9]+}} 36*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NOT: xxswapd 37*9880d681SAndroid Build Coastguard Worker; CHECK-BE: vadduqm 2, 2, 3 38*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NOT: xxswapd 34, {{[0-9]+}} 39*9880d681SAndroid Build Coastguard Worker; CHECK-BE: blr 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-LABEL: @v1i128_increment_by_one 42*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-NOT: xxswapd {{[0-9]+}}, {{[0-9]+}} 43*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-NOT: stxvd2x {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 44*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: lvx [[VAL:[0-9]+]], {{[0-9]+}}, {{[0-9]+}} 45*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-NOT: lxvd2x {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 46*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-NOT: xxswapd {{[0-9]+}}, {{[0-9]+}} 47*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: vadduqm 2, 2, [[VAL]] 48*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: blr 49*9880d681SAndroid Build Coastguard Worker} 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Worker; VSX: 52*9880d681SAndroid Build Coastguard Worker; %a is passed in register 34 53*9880d681SAndroid Build Coastguard Worker; %b is passed in register 35 54*9880d681SAndroid Build Coastguard Worker; No swaps are necessary when using P8 Vector instructions on LE 55*9880d681SAndroid Build Coastguard Worker; VMX (no VSX): 56*9880d681SAndroid Build Coastguard Worker; %a is passewd in register 2 57*9880d681SAndroid Build Coastguard Worker; %b is passed in register 3 58*9880d681SAndroid Build Coastguard Worker; On LE, do not need to swap contents of 2 and 3 because the lvx/stvx 59*9880d681SAndroid Build Coastguard Worker; instructions no not swap elements 60*9880d681SAndroid Build Coastguard Workerdefine <1 x i128> @v1i128_increment_by_val(<1 x i128> %a, <1 x i128> %b) nounwind { 61*9880d681SAndroid Build Coastguard Worker %tmp = add <1 x i128> %a, %b 62*9880d681SAndroid Build Coastguard Worker ret <1 x i128> %tmp 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Worker; CHECK-LE-LABEL: @v1i128_increment_by_val 65*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NOT: xxswapd 66*9880d681SAndroid Build Coastguard Worker; CHECK-LE: adduqm 2, 2, 3 67*9880d681SAndroid Build Coastguard Worker; CHECK-LE: blr 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: @v1i128_increment_by_val 70*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NOT: xxswapd {{[0-9]+}}, 34 71*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NOT: xxswapd {{[0-9]+}}, 35 72*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NOT: xxswapd 34, [[RESULT]] 73*9880d681SAndroid Build Coastguard Worker; CHECK-BE: adduqm 2, 2, 3 74*9880d681SAndroid Build Coastguard Worker; CHECK-BE: blr 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-LABEL: @v1i128_increment_by_val 77*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-NOT: xxswapd 34, [[RESULT]] 78*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: adduqm 2, 2, 3 79*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: blr 80*9880d681SAndroid Build Coastguard Worker} 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Worker; Little Endian (VSX and VMX): 83*9880d681SAndroid Build Coastguard Worker; Lower 64-bits of %a are passed in register 3 84*9880d681SAndroid Build Coastguard Worker; Upper 64-bits of %a are passed in register 4 85*9880d681SAndroid Build Coastguard Worker; Increment lower 64-bits using addic (immediate value of 1) 86*9880d681SAndroid Build Coastguard Worker; Increment upper 64-bits using add zero extended 87*9880d681SAndroid Build Coastguard Worker; Results are placed in registers 3 and 4 88*9880d681SAndroid Build Coastguard Worker; Big Endian (VSX and VMX) 89*9880d681SAndroid Build Coastguard Worker; Lower 64-bits of %a are passed in register 4 90*9880d681SAndroid Build Coastguard Worker; Upper 64-bits of %a are passed in register 3 91*9880d681SAndroid Build Coastguard Worker; Increment lower 64-bits using addic (immediate value of 1) 92*9880d681SAndroid Build Coastguard Worker; Increment upper 64-bits using add zero extended 93*9880d681SAndroid Build Coastguard Worker; Results are placed in registers 3 and 4 94*9880d681SAndroid Build Coastguard Workerdefine i128 @i128_increment_by_one(i128 %a) nounwind { 95*9880d681SAndroid Build Coastguard Worker %tmp = add i128 %a, 1 96*9880d681SAndroid Build Coastguard Worker ret i128 %tmp 97*9880d681SAndroid Build Coastguard Worker; CHECK-LE-LABEL: @i128_increment_by_one 98*9880d681SAndroid Build Coastguard Worker; CHECK-LE: addic 3, 3, 1 99*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NEXT: addze 4, 4 100*9880d681SAndroid Build Coastguard Worker; CHECK-LE: blr 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: @i128_increment_by_one 103*9880d681SAndroid Build Coastguard Worker; CHECK-BE: addic 4, 4, 1 104*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NEXT: addze 3, 3 105*9880d681SAndroid Build Coastguard Worker; CHECK-BE: blr 106*9880d681SAndroid Build Coastguard Worker 107*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NOVSX-LABEL: @i128_increment_by_one 108*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NOVSX: addic 3, 3, 1 109*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NOVSX-NEXT: addze 4, 4 110*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NOVSX: blr 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NOVSX-LABEL: @i128_increment_by_one 113*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NOVSX: addic 4, 4, 1 114*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NOVSX-NEXT: addze 3, 3 115*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NOVSX: blr 116*9880d681SAndroid Build Coastguard Worker} 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Worker; Little Endian (VSX and VMX): 119*9880d681SAndroid Build Coastguard Worker; Lower 64-bits of %a are passed in register 3 120*9880d681SAndroid Build Coastguard Worker; Upper 64-bits of %a are passed in register 4 121*9880d681SAndroid Build Coastguard Worker; Lower 64-bits of %b are passed in register 5 122*9880d681SAndroid Build Coastguard Worker; Upper 64-bits of %b are passed in register 6 123*9880d681SAndroid Build Coastguard Worker; Add the lower 64-bits using addc on registers 3 and 5 124*9880d681SAndroid Build Coastguard Worker; Add the upper 64-bits using adde on registers 4 and 6 125*9880d681SAndroid Build Coastguard Worker; Registers 3 and 4 should hold the result 126*9880d681SAndroid Build Coastguard Worker; Big Endian (VSX and VMX): 127*9880d681SAndroid Build Coastguard Worker; Upper 64-bits of %a are passed in register 3 128*9880d681SAndroid Build Coastguard Worker; Lower 64-bits of %a are passed in register 4 129*9880d681SAndroid Build Coastguard Worker; Upper 64-bits of %b are passed in register 5 130*9880d681SAndroid Build Coastguard Worker; Lower 64-bits of %b are passed in register 6 131*9880d681SAndroid Build Coastguard Worker; Add the lower 64-bits using addc on registers 4 and 6 132*9880d681SAndroid Build Coastguard Worker; Add the upper 64-bits using adde on registers 3 and 5 133*9880d681SAndroid Build Coastguard Worker; Registers 3 and 4 should hold the result 134*9880d681SAndroid Build Coastguard Workerdefine i128 @i128_increment_by_val(i128 %a, i128 %b) nounwind { 135*9880d681SAndroid Build Coastguard Worker %tmp = add i128 %a, %b 136*9880d681SAndroid Build Coastguard Worker ret i128 %tmp 137*9880d681SAndroid Build Coastguard Worker; CHECK-LE-LABEL: @i128_increment_by_val 138*9880d681SAndroid Build Coastguard Worker; CHECK-LE: addc 3, 3, 5 139*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NEXT: adde 4, 4, 6 140*9880d681SAndroid Build Coastguard Worker; CHECK-LE: blr 141*9880d681SAndroid Build Coastguard Worker 142*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: @i128_increment_by_val 143*9880d681SAndroid Build Coastguard Worker; CHECK-BE: addc 4, 4, 6 144*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NEXT: adde 3, 3, 5 145*9880d681SAndroid Build Coastguard Worker; CHECK-BE: blr 146*9880d681SAndroid Build Coastguard Worker 147*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NOVSX-LABEL: @i128_increment_by_val 148*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NOVSX: addc 3, 3, 5 149*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NOVSX-NEXT: adde 4, 4, 6 150*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NOVSX: blr 151*9880d681SAndroid Build Coastguard Worker 152*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NOVSX-LABEL: @i128_increment_by_val 153*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NOVSX: addc 4, 4, 6 154*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NOVSX-NEXT: adde 3, 3, 5 155*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NOVSX: blr 156*9880d681SAndroid Build Coastguard Worker} 157*9880d681SAndroid Build Coastguard Worker 158*9880d681SAndroid Build Coastguard Worker 159*9880d681SAndroid Build Coastguard Worker; Callsites for the routines defined above. 160*9880d681SAndroid Build Coastguard Worker; Ensure the parameters are loaded in the same order that is expected by the 161*9880d681SAndroid Build Coastguard Worker; callee. See comments for individual functions above for details on registers 162*9880d681SAndroid Build Coastguard Worker; used for parameters. 163*9880d681SAndroid Build Coastguard Workerdefine <1 x i128> @call_v1i128_increment_by_one() nounwind { 164*9880d681SAndroid Build Coastguard Worker %tmp = load <1 x i128>, <1 x i128>* @x, align 16 165*9880d681SAndroid Build Coastguard Worker %ret = call <1 x i128> @v1i128_increment_by_one(<1 x i128> %tmp) 166*9880d681SAndroid Build Coastguard Worker ret <1 x i128> %ret 167*9880d681SAndroid Build Coastguard Worker 168*9880d681SAndroid Build Coastguard Worker; CHECK-LE-LABEL: @call_v1i128_increment_by_one 169*9880d681SAndroid Build Coastguard Worker; CHECK-LE: lxvd2x [[PARAM:[0-9]+]], {{[0-9]+}}, {{[0-9]+}} 170*9880d681SAndroid Build Coastguard Worker; CHECK-LE: xxswapd 34, [[PARAM]] 171*9880d681SAndroid Build Coastguard Worker; CHECK-LE: bl v1i128_increment_by_one 172*9880d681SAndroid Build Coastguard Worker; CHECK-LE: blr 173*9880d681SAndroid Build Coastguard Worker 174*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: @call_v1i128_increment_by_one 175*9880d681SAndroid Build Coastguard Worker; CHECK-BE: lxvw4x 34, {{[0-9]+}}, {{[0-9]+}} 176*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NOT: xxswapd 34, {{[0-9]+}} 177*9880d681SAndroid Build Coastguard Worker; CHECK-BE: bl v1i128_increment_by_one 178*9880d681SAndroid Build Coastguard Worker; CHECK-BE: blr 179*9880d681SAndroid Build Coastguard Worker 180*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-LABEL: @call_v1i128_increment_by_one 181*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: lvx 2, {{[0-9]+}}, {{[0-9]+}} 182*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-NOT: xxswapd {{[0-9]+}}, {{[0-9]+}} 183*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: bl v1i128_increment_by_one 184*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: blr 185*9880d681SAndroid Build Coastguard Worker} 186*9880d681SAndroid Build Coastguard Worker 187*9880d681SAndroid Build Coastguard Workerdefine <1 x i128> @call_v1i128_increment_by_val() nounwind { 188*9880d681SAndroid Build Coastguard Worker %tmp = load <1 x i128>, <1 x i128>* @x, align 16 189*9880d681SAndroid Build Coastguard Worker %tmp2 = load <1 x i128>, <1 x i128>* @y, align 16 190*9880d681SAndroid Build Coastguard Worker %ret = call <1 x i128> @v1i128_increment_by_val(<1 x i128> %tmp, <1 x i128> %tmp2) 191*9880d681SAndroid Build Coastguard Worker ret <1 x i128> %ret 192*9880d681SAndroid Build Coastguard Worker 193*9880d681SAndroid Build Coastguard Worker; CHECK-LE-LABEL: @call_v1i128_increment_by_val 194*9880d681SAndroid Build Coastguard Worker; CHECK-LE: lxvd2x [[PARAM1:[0-9]+]], {{[0-9]+}}, {{[0-9]+}} 195*9880d681SAndroid Build Coastguard Worker; CHECK-LE: lxvd2x [[PARAM2:[0-9]+]], {{[0-9]+}}, {{[0-9]+}} 196*9880d681SAndroid Build Coastguard Worker; CHECK-LE-DAG: xxswapd 34, [[PARAM1]] 197*9880d681SAndroid Build Coastguard Worker; CHECK-LE-DAG: xxswapd 35, [[PARAM2]] 198*9880d681SAndroid Build Coastguard Worker; CHECK-LE: bl v1i128_increment_by_val 199*9880d681SAndroid Build Coastguard Worker; CHECK-LE: blr 200*9880d681SAndroid Build Coastguard Worker 201*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: @call_v1i128_increment_by_val 202*9880d681SAndroid Build Coastguard Worker 203*9880d681SAndroid Build Coastguard Worker 204*9880d681SAndroid Build Coastguard Worker; CHECK-BE-DAG: lxvw4x 35, {{[0-9]+}}, {{[0-9]+}} 205*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NOT: xxswapd 34, {{[0-9]+}} 206*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NOT: xxswapd 35, {{[0-9]+}} 207*9880d681SAndroid Build Coastguard Worker; CHECK-BE: bl v1i128_increment_by_val 208*9880d681SAndroid Build Coastguard Worker; CHECK-BE: blr 209*9880d681SAndroid Build Coastguard Worker 210*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-LABEL: @call_v1i128_increment_by_val 211*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-DAG: lvx 2, {{[0-9]+}}, {{[0-9]+}} 212*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-DAG: lvx 3, {{[0-9]+}}, {{[0-9]+}} 213*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-NOT: xxswapd 34, {{[0-9]+}} 214*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-NOT: xxswapd 35, {{[0-9]+}} 215*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: bl v1i128_increment_by_val 216*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: blr 217*9880d681SAndroid Build Coastguard Worker 218*9880d681SAndroid Build Coastguard Worker} 219*9880d681SAndroid Build Coastguard Worker 220*9880d681SAndroid Build Coastguard Workerdefine i128 @call_i128_increment_by_one() nounwind { 221*9880d681SAndroid Build Coastguard Worker %tmp = load i128, i128* @a, align 16 222*9880d681SAndroid Build Coastguard Worker %ret = call i128 @i128_increment_by_one(i128 %tmp) 223*9880d681SAndroid Build Coastguard Worker ret i128 %ret 224*9880d681SAndroid Build Coastguard Worker; %ret4 = call i128 @i128_increment_by_val(i128 %tmp2, i128 %tmp2) 225*9880d681SAndroid Build Coastguard Worker; CHECK-LE-LABEL: @call_i128_increment_by_one 226*9880d681SAndroid Build Coastguard Worker; CHECK-LE-DAG: ld 3, 0([[BASEREG:[0-9]+]]) 227*9880d681SAndroid Build Coastguard Worker; CHECK-LE-DAG: ld 4, 8([[BASEREG]]) 228*9880d681SAndroid Build Coastguard Worker; CHECK-LE: bl i128_increment_by_one 229*9880d681SAndroid Build Coastguard Worker; CHECK-LE: blr 230*9880d681SAndroid Build Coastguard Worker 231*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: @call_i128_increment_by_one 232*9880d681SAndroid Build Coastguard Worker; CHECK-BE-DAG: ld 3, 0([[BASEREG:[0-9]+]]) 233*9880d681SAndroid Build Coastguard Worker; CHECK-BE-DAG: ld 4, 8([[BASEREG]]) 234*9880d681SAndroid Build Coastguard Worker; CHECK-BE: bl i128_increment_by_one 235*9880d681SAndroid Build Coastguard Worker; CHECK-BE: blr 236*9880d681SAndroid Build Coastguard Worker 237*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-LABEL: @call_i128_increment_by_one 238*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-DAG: ld 3, 0([[BASEREG:[0-9]+]]) 239*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-DAG: ld 4, 8([[BASEREG]]) 240*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: bl i128_increment_by_one 241*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: blr 242*9880d681SAndroid Build Coastguard Worker} 243*9880d681SAndroid Build Coastguard Worker 244*9880d681SAndroid Build Coastguard Workerdefine i128 @call_i128_increment_by_val() nounwind { 245*9880d681SAndroid Build Coastguard Worker %tmp = load i128, i128* @a, align 16 246*9880d681SAndroid Build Coastguard Worker %tmp2 = load i128, i128* @b, align 16 247*9880d681SAndroid Build Coastguard Worker %ret = call i128 @i128_increment_by_val(i128 %tmp, i128 %tmp2) 248*9880d681SAndroid Build Coastguard Worker ret i128 %ret 249*9880d681SAndroid Build Coastguard Worker; CHECK-LE-LABEL: @call_i128_increment_by_val 250*9880d681SAndroid Build Coastguard Worker; CHECK-LE-DAG: ld 3, 0([[P1BASEREG:[0-9]+]]) 251*9880d681SAndroid Build Coastguard Worker; CHECK-LE-DAG: ld 4, 8([[P1BASEREG]]) 252*9880d681SAndroid Build Coastguard Worker; CHECK-LE-DAG: ld 5, 0([[P2BASEREG:[0-9]+]]) 253*9880d681SAndroid Build Coastguard Worker; CHECK-LE-DAG: ld 6, 8([[P2BASEREG]]) 254*9880d681SAndroid Build Coastguard Worker; CHECK-LE: bl i128_increment_by_val 255*9880d681SAndroid Build Coastguard Worker; CHECK-LE: blr 256*9880d681SAndroid Build Coastguard Worker 257*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: @call_i128_increment_by_val 258*9880d681SAndroid Build Coastguard Worker; CHECK-BE-DAG: ld 3, 0([[P1BASEREG:[0-9]+]]) 259*9880d681SAndroid Build Coastguard Worker; CHECK-BE-DAG: ld 4, 8([[P1BASEREG]]) 260*9880d681SAndroid Build Coastguard Worker; CHECK-BE-DAG: ld 5, 0([[P2BASEREG:[0-9]+]]) 261*9880d681SAndroid Build Coastguard Worker; CHECK-BE-DAG: ld 6, 8([[P2BASEREG]]) 262*9880d681SAndroid Build Coastguard Worker; CHECK-BE: bl i128_increment_by_val 263*9880d681SAndroid Build Coastguard Worker; CHECK-BE: blr 264*9880d681SAndroid Build Coastguard Worker 265*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-LABEL: @call_i128_increment_by_val 266*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-DAG: ld 3, 0([[P1BASEREG:[0-9]+]]) 267*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-DAG: ld 4, 8([[P1BASEREG]]) 268*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-DAG: ld 5, 0([[P2BASEREG:[0-9]+]]) 269*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-DAG: ld 6, 8([[P2BASEREG]]) 270*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: bl i128_increment_by_val 271*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: blr 272*9880d681SAndroid Build Coastguard Worker} 273*9880d681SAndroid Build Coastguard Worker 274*9880d681SAndroid Build Coastguard Worker 275