65 lines · plain
1; RUN: llc -mtriple=mipsel -relocation-model=pic -O0 -fast-isel-abort=3 -mcpu=mips32r2 \2; RUN: < %s | FileCheck %s3; RUN: llc -mtriple=mipsel -relocation-model=pic -O0 -fast-isel-abort=3 -mcpu=mips32 \4; RUN: < %s | FileCheck %s5 6@x = common global [128000 x float] zeroinitializer, align 47@y = global ptr @x, align 48@result = common global float 0.000000e+00, align 49@.str = private unnamed_addr constant [5 x i8] c"%f \0A\00", align 110 11; Function Attrs: nounwind12define void @foo() {13entry:14; CHECK-LABEL: .ent foo15 %0 = load ptr, ptr @y, align 416 %arrayidx = getelementptr inbounds float, ptr %0, i32 6400017 store float 5.500000e+00, ptr %arrayidx, align 418; CHECK: lw $[[REG_Y_GOT:[0-9]+]], %got(y)(${{[0-9]+}})19; CHECK: lw $[[REG_Y:[0-9]+]], 0($[[REG_Y_GOT]])20; CHECK: lui $[[REG_FPCONST_INT:[0-9]+]], 1656021; CHECK: mtc1 $[[REG_FPCONST_INT]], $f[[REG_FPCONST:[0-9]+]]22; CHECK: lui $[[REG_IDX_UPPER:[0-9]+]], 323; CHECK: ori $[[REG_IDX:[0-9]+]], $[[REG_IDX_UPPER]], 5939224; CHECK: addu $[[REG_Y_IDX:[0-9]+]], $[[REG_IDX]], $[[REG_Y]]25; CHECK: swc1 $f[[REG_FPCONST]], 0($[[REG_Y_IDX]])26 ret void27; CHECK-LABEL: .end foo28}29 30; Function Attrs: nounwind31define void @goo() {32entry:33; CHECK-LABEL: .ent goo34 %0 = load ptr, ptr @y, align 435 %arrayidx = getelementptr inbounds float, ptr %0, i32 6400036 %1 = load float, ptr %arrayidx, align 437 store float %1, ptr @result, align 438; CHECK-DAG: lw $[[REG_RESULT:[0-9]+]], %got(result)(${{[0-9]+}})39; CHECK-DAG: lw $[[REG_Y_GOT:[0-9]+]], %got(y)(${{[0-9]+}})40; CHECK-DAG: lw $[[REG_Y:[0-9]+]], 0($[[REG_Y_GOT]])41; CHECK-DAG: lui $[[REG_IDX_UPPER:[0-9]+]], 342; CHECK-DAG: ori $[[REG_IDX:[0-9]+]], $[[REG_IDX_UPPER]], 5939243; CHECK-DAG: addu $[[REG_Y_IDX:[0-9]+]], $[[REG_IDX]], $[[REG_Y]]44; CHECK-DAG: lwc1 $f[[Y_IDX:[0-9]+]], 0($[[REG_Y_IDX]])45; CHECK-DAG: swc1 $f[[Y_IDX]], 0($[[REG_RESULT]])46; CHECK-LABEL: .end goo47 ret void48}49 50; 51; Original C code for test.52;53;float x[128000];54;ptr y = x;55;float result;56 57 58;void foo() {59; y[64000] = 5.5;60;}61 62;void goo() {63; result = y[64000];64;}65