108 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -O3 -mtriple=mipsel-elf -mcpu=mips32r6 -mattr=+fp64,+msa %s -o - | FileCheck %s3 4; Test that checks if spill for ldi can be avoided and instruction will be5; rematerialized.6 7declare dso_local void @foo()8 9define dso_local void @test_ldi_b() {10; CHECK-LABEL: test_ldi_b:11; CHECK: # %bb.0: # %entry12; CHECK-NEXT: addiu $sp, $sp, -2413; CHECK-NEXT: .cfi_def_cfa_offset 2414; CHECK-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill15; CHECK-NEXT: .cfi_offset 31, -416; CHECK-NEXT: ldi.b $w0, 117; CHECK-NEXT: #APP18; CHECK-NEXT: #NO_APP19; CHECK-NEXT: jal foo20; CHECK-NEXT: nop21; CHECK-NEXT: ldi.b $w0, 122; CHECK-NEXT: #APP23; CHECK-NEXT: #NO_APP24; CHECK-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload25; CHECK-NEXT: jr $ra26; CHECK-NEXT: addiu $sp, $sp, 2427entry:28 tail call void asm sideeffect "", "f,~{memory},~{$1}"(<16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>)29 tail call void @foo()30 tail call void asm sideeffect "", "f,~{memory},~{$1}"(<16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>)31 ret void32}33 34define dso_local void @test_ldi_h() {35; CHECK-LABEL: test_ldi_h:36; CHECK: # %bb.0: # %entry37; CHECK-NEXT: addiu $sp, $sp, -2438; CHECK-NEXT: .cfi_def_cfa_offset 2439; CHECK-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill40; CHECK-NEXT: .cfi_offset 31, -441; CHECK-NEXT: ldi.h $w0, 242; CHECK-NEXT: #APP43; CHECK-NEXT: #NO_APP44; CHECK-NEXT: jal foo45; CHECK-NEXT: nop46; CHECK-NEXT: ldi.h $w0, 247; CHECK-NEXT: #APP48; CHECK-NEXT: #NO_APP49; CHECK-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload50; CHECK-NEXT: jr $ra51; CHECK-NEXT: addiu $sp, $sp, 2452entry:53 tail call void asm sideeffect "", "f,~{memory},~{$1}"(<8 x i16> <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>)54 tail call void @foo()55 tail call void asm sideeffect "", "f,~{memory},~{$1}"(<8 x i16> <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>)56 ret void57}58 59define dso_local void @test_ldi_w() {60; CHECK-LABEL: test_ldi_w:61; CHECK: # %bb.0: # %entry62; CHECK-NEXT: addiu $sp, $sp, -2463; CHECK-NEXT: .cfi_def_cfa_offset 2464; CHECK-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill65; CHECK-NEXT: .cfi_offset 31, -466; CHECK-NEXT: ldi.w $w0, 367; CHECK-NEXT: #APP68; CHECK-NEXT: #NO_APP69; CHECK-NEXT: jal foo70; CHECK-NEXT: nop71; CHECK-NEXT: ldi.w $w0, 372; CHECK-NEXT: #APP73; CHECK-NEXT: #NO_APP74; CHECK-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload75; CHECK-NEXT: jr $ra76; CHECK-NEXT: addiu $sp, $sp, 2477entry:78 tail call void asm sideeffect "", "f,~{memory},~{$1}"(<4 x i32> <i32 3, i32 3, i32 3, i32 3>)79 tail call void @foo()80 tail call void asm sideeffect "", "f,~{memory},~{$1}"(<4 x i32> <i32 3, i32 3, i32 3, i32 3>)81 ret void82}83 84define dso_local void @test_ldi_d() {85; CHECK-LABEL: test_ldi_d:86; CHECK: # %bb.0: # %entry87; CHECK-NEXT: addiu $sp, $sp, -2488; CHECK-NEXT: .cfi_def_cfa_offset 2489; CHECK-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill90; CHECK-NEXT: .cfi_offset 31, -491; CHECK-NEXT: ldi.d $w0, 492; CHECK-NEXT: #APP93; CHECK-NEXT: #NO_APP94; CHECK-NEXT: jal foo95; CHECK-NEXT: nop96; CHECK-NEXT: ldi.d $w0, 497; CHECK-NEXT: #APP98; CHECK-NEXT: #NO_APP99; CHECK-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload100; CHECK-NEXT: jr $ra101; CHECK-NEXT: addiu $sp, $sp, 24102entry:103 tail call void asm sideeffect "", "f,~{memory},~{$1}"(<2 x i64> <i64 4, i64 4>)104 tail call void @foo()105 tail call void asm sideeffect "", "f,~{memory},~{$1}"(<2 x i64> <i64 4, i64 4>)106 ret void107}108