brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.4 KiB · 7df92dd Raw
160 lines · plain
1; RUN: llc  < %s -mtriple=mips64el -mcpu=mips4 -target-abi n64 -relocation-model=pic | FileCheck %s -check-prefix=CHECK-N642; RUN: llc  < %s -mtriple=mips64el -mcpu=mips4 -target-abi n32 -relocation-model=pic | FileCheck %s -check-prefix=CHECK-N323; RUN: llc  < %s -mtriple=mips64el -mcpu=mips64 -target-abi n64 -relocation-model=pic | FileCheck %s -check-prefix=CHECK-N644; RUN: llc  < %s -mtriple=mips64el -mcpu=mips64 -target-abi n32 -relocation-model=pic | FileCheck %s -check-prefix=CHECK-N325 6@c = common global i8 0, align 47@s = common global i16 0, align 48@i = common global i32 0, align 49@l = common global i64 0, align 810@uc = common global i8 0, align 411@us = common global i16 0, align 412@ui = common global i32 0, align 413@l1 = common global i64 0, align 814 15define i64 @func1() nounwind readonly {16entry:17; CHECK-N64: func118; CHECK-N64: ld $[[R0:[0-9]+]], %got_disp(c)19; CHECK-N64: lb ${{[0-9]+}}, 0($[[R0]])20; CHECK-N32: func121; CHECK-N32: lw $[[R0:[0-9]+]], %got_disp(c)22; CHECK-N32: lb ${{[0-9]+}}, 0($[[R0]])23  %0 = load i8, ptr @c, align 424  %conv = sext i8 %0 to i6425  ret i64 %conv26}27 28define i64 @func2() nounwind readonly {29entry:30; CHECK-N64: func231; CHECK-N64: ld $[[R0:[0-9]+]], %got_disp(s)32; CHECK-N64: lh ${{[0-9]+}}, 0($[[R0]])33; CHECK-N32: func234; CHECK-N32: lw $[[R0:[0-9]+]], %got_disp(s)35; CHECK-N32: lh ${{[0-9]+}}, 0($[[R0]])36  %0 = load i16, ptr @s, align 437  %conv = sext i16 %0 to i6438  ret i64 %conv39}40 41define i64 @func3() nounwind readonly {42entry:43; CHECK-N64: func344; CHECK-N64: ld $[[R0:[0-9]+]], %got_disp(i)45; CHECK-N64: lw ${{[0-9]+}}, 0($[[R0]])46; CHECK-N32: func347; CHECK-N32: lw $[[R0:[0-9]+]], %got_disp(i)48; CHECK-N32: lw ${{[0-9]+}}, 0($[[R0]])49  %0 = load i32, ptr @i, align 450  %conv = sext i32 %0 to i6451  ret i64 %conv52}53 54define i64 @func4() nounwind readonly {55entry:56; CHECK-N64: func457; CHECK-N64: ld $[[R0:[0-9]+]], %got_disp(l)58; CHECK-N64: ld ${{[0-9]+}}, 0($[[R0]])59; CHECK-N32: func460; CHECK-N32: lw $[[R0:[0-9]+]], %got_disp(l)61; CHECK-N32: ld ${{[0-9]+}}, 0($[[R0]])62  %0 = load i64, ptr @l, align 863  ret i64 %064}65 66define i64 @ufunc1() nounwind readonly {67entry:68; CHECK-N64: ufunc169; CHECK-N64: ld $[[R0:[0-9]+]], %got_disp(uc)70; CHECK-N64: lbu ${{[0-9]+}}, 0($[[R0]])71; CHECK-N32: ufunc172; CHECK-N32: lw $[[R0:[0-9]+]], %got_disp(uc)73; CHECK-N32: lbu ${{[0-9]+}}, 0($[[R0]])74  %0 = load i8, ptr @uc, align 475  %conv = zext i8 %0 to i6476  ret i64 %conv77}78 79define i64 @ufunc2() nounwind readonly {80entry:81; CHECK-N64: ufunc282; CHECK-N64: ld $[[R0:[0-9]+]], %got_disp(us)83; CHECK-N64: lhu ${{[0-9]+}}, 0($[[R0]])84; CHECK-N32: ufunc285; CHECK-N32: lw $[[R0:[0-9]+]], %got_disp(us)86; CHECK-N32: lhu ${{[0-9]+}}, 0($[[R0]])87  %0 = load i16, ptr @us, align 488  %conv = zext i16 %0 to i6489  ret i64 %conv90}91 92define i64 @ufunc3() nounwind readonly {93entry:94; CHECK-N64: ufunc395; CHECK-N64: ld $[[R0:[0-9]+]], %got_disp(ui)96; CHECK-N64: lwu ${{[0-9]+}}, 0($[[R0]])97; CHECK-N32: ufunc398; CHECK-N32: lw $[[R0:[0-9]+]], %got_disp(ui)99; CHECK-N32: lwu ${{[0-9]+}}, 0($[[R0]])100  %0 = load i32, ptr @ui, align 4101  %conv = zext i32 %0 to i64102  ret i64 %conv103}104 105define void @sfunc1() nounwind {106entry:107; CHECK-N64: sfunc1108; CHECK-N64: ld $[[R0:[0-9]+]], %got_disp(c)109; CHECK-N64: sb ${{[0-9]+}}, 0($[[R0]])110; CHECK-N32: sfunc1111; CHECK-N32: lw $[[R0:[0-9]+]], %got_disp(c)112; CHECK-N32: sb ${{[0-9]+}}, 0($[[R0]])113  %0 = load i64, ptr @l1, align 8114  %conv = trunc i64 %0 to i8115  store i8 %conv, ptr @c, align 4116  ret void117}118 119define void @sfunc2() nounwind {120entry:121; CHECK-N64: sfunc2122; CHECK-N64: ld $[[R0:[0-9]+]], %got_disp(s)123; CHECK-N64: sh ${{[0-9]+}}, 0($[[R0]])124; CHECK-N32: sfunc2125; CHECK-N32: lw $[[R0:[0-9]+]], %got_disp(s)126; CHECK-N32: sh ${{[0-9]+}}, 0($[[R0]])127  %0 = load i64, ptr @l1, align 8128  %conv = trunc i64 %0 to i16129  store i16 %conv, ptr @s, align 4130  ret void131}132 133define void @sfunc3() nounwind {134entry:135; CHECK-N64: sfunc3136; CHECK-N64: ld $[[R0:[0-9]+]], %got_disp(i)137; CHECK-N64: sw ${{[0-9]+}}, 0($[[R0]])138; CHECK-N32: sfunc3139; CHECK-N32: lw $[[R0:[0-9]+]], %got_disp(i)140; CHECK-N32: sw ${{[0-9]+}}, 0($[[R0]])141  %0 = load i64, ptr @l1, align 8142  %conv = trunc i64 %0 to i32143  store i32 %conv, ptr @i, align 4144  ret void145}146 147define void @sfunc4() nounwind {148entry:149; CHECK-N64: sfunc4150; CHECK-N64: ld $[[R0:[0-9]+]], %got_disp(l)151; CHECK-N64: sd ${{[0-9]+}}, 0($[[R0]])152; CHECK-N32: sfunc4153; CHECK-N32: lw $[[R0:[0-9]+]], %got_disp(l)154; CHECK-N32: sd ${{[0-9]+}}, 0($[[R0]])155  %0 = load i64, ptr @l1, align 8156  store i64 %0, ptr @l, align 8157  ret void158}159 160