56 lines · plain
1; RUN: llc < %s -mtriple=mipsel -mcpu=mips32 -O0 -relocation-model=pic \2; RUN: -fast-isel-abort=3 | FileCheck %s3; RUN: llc < %s -mtriple=mipsel -mcpu=mips32r2 -O0 -relocation-model=pic \4; RUN: -fast-isel-abort=3 | FileCheck %s5 6@sj = global i32 200000, align 47@sk = global i32 -47, align 48@uj = global i32 200000, align 49@uk = global i32 43, align 410@si = common global i32 0, align 411@ui = common global i32 0, align 412 13define void @divs() {14 ; CHECK-LABEL: divs:15 16 ; CHECK: lui $[[GOT1:[0-9]+]], %hi(_gp_disp)17 ; CHECK: addiu $[[GOT2:[0-9]+]], $[[GOT1]], %lo(_gp_disp)18 ; CHECK: addu $[[GOT:[0-9]+]], $[[GOT2:[0-9]+]], $2519 ; CHECK-DAG: lw $[[I_ADDR:[0-9]+]], %got(si)($[[GOT]])20 ; CHECK-DAG: lw $[[K_ADDR:[0-9]+]], %got(sk)($[[GOT]])21 ; CHECK-DAG: lw $[[J_ADDR:[0-9]+]], %got(sj)($[[GOT]])22 ; CHECK-DAG: lw $[[J:[0-9]+]], 0($[[J_ADDR]])23 ; CHECK-DAG: lw $[[K:[0-9]+]], 0($[[K_ADDR]])24 ; CHECK-DAG: div $zero, $[[J]], $[[K]]25 ; CHECK-DAG: teq $[[K]], $zero, 726 ; CHECK-DAG: mflo $[[RESULT:[0-9]+]]27 ; CHECK: sw $[[RESULT]], 0($[[I_ADDR]])28 %1 = load i32, ptr @sj, align 429 %2 = load i32, ptr @sk, align 430 %div = sdiv i32 %1, %231 store i32 %div, ptr @si, align 432 ret void33}34 35define void @divu() {36 ; CHECK-LABEL: divu:37 38 ; CHECK: lui $[[GOT1:[0-9]+]], %hi(_gp_disp)39 ; CHECK: addiu $[[GOT2:[0-9]+]], $[[GOT1]], %lo(_gp_disp)40 ; CHECK: addu $[[GOT:[0-9]+]], $[[GOT2:[0-9]+]], $2541 ; CHECK-DAG: lw $[[I_ADDR:[0-9]+]], %got(ui)($[[GOT]])42 ; CHECK-DAG: lw $[[K_ADDR:[0-9]+]], %got(uk)($[[GOT]])43 ; CHECK-DAG: lw $[[J_ADDR:[0-9]+]], %got(uj)($[[GOT]])44 ; CHECK-DAG: lw $[[J:[0-9]+]], 0($[[J_ADDR]])45 ; CHECK-DAG: lw $[[K:[0-9]+]], 0($[[K_ADDR]])46 ; CHECK-DAG: divu $zero, $[[J]], $[[K]]47 ; CHECK-DAG: teq $[[K]], $zero, 748 ; CHECK-DAG: mflo $[[RESULT:[0-9]+]]49 ; CHECK: sw $[[RESULT]], 0($[[I_ADDR]])50 %1 = load i32, ptr @uj, align 451 %2 = load i32, ptr @uk, align 452 %div = udiv i32 %1, %253 store i32 %div, ptr @ui, align 454 ret void55}56