brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · ed99e60 Raw
129 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2;RUN: llc < %s -mtriple=riscv64 -mattr=+f -mcpu=sifive-u74 -target-abi=lp64f \3;RUN:   | FileCheck %s --check-prefix=NOFUSION4;RUN: llc < %s -mtriple=riscv64 -mattr=+f,+lui-addi-fusion -mcpu=sifive-u74 \5;RUN:   -target-abi=lp64f | FileCheck %s --check-prefix=FUSION6;RUN: llc < %s -mtriple=riscv64 -mattr=+f,+lui-addi-fusion,+use-postra-scheduler -mcpu=sifive-u74 \7;RUN:   -misched-postra-direction=topdown -target-abi=lp64f \8;RUN:   | FileCheck %s --check-prefixes=FUSION-POSTRA,FUSION-POSTRA-TOPDOWN9;RUN: llc < %s -mtriple=riscv64 -mattr=+f,+lui-addi-fusion,+use-postra-scheduler -mcpu=sifive-u74 \10;RUN:   -misched-postra-direction=bottomup -target-abi=lp64f \11;RUN:   | FileCheck %s --check-prefixes=FUSION-POSTRA,FUSION-POSTRA-BOTTOMUP12;RUN: llc < %s -mtriple=riscv64 -mattr=+f,+lui-addi-fusion,+use-postra-scheduler -mcpu=sifive-u74 \13;RUN:   -misched-postra-direction=bidirectional -target-abi=lp64f \14;RUN:   | FileCheck %s --check-prefixes=FUSION-POSTRA,FUSION-POSTRA-BIDIRECTIONAL15;RUN: llc < %s -mtriple=riscv64 -mattr=+f,+lui-addi-fusion -target-abi=lp64f \16;RUN:   | FileCheck %s --check-prefix=FUSION-GENERIC17 18@.str = private constant [4 x i8] c"%f\0A\00", align 119 20define void @foo(i32 signext %0, i32 signext %1) {21; NOFUSION-LABEL: foo:22; NOFUSION:       # %bb.0:23; NOFUSION-NEXT:    lui a0, %hi(.L.str)24; NOFUSION-NEXT:    fcvt.s.w fa0, a125; NOFUSION-NEXT:    addi a0, a0, %lo(.L.str)26; NOFUSION-NEXT:    tail bar27;28; FUSION-LABEL: foo:29; FUSION:       # %bb.0:30; FUSION-NEXT:    lui a0, %hi(.L.str)31; FUSION-NEXT:    addi a0, a0, %lo(.L.str)32; FUSION-NEXT:    fcvt.s.w fa0, a133; FUSION-NEXT:    tail bar34;35; FUSION-POSTRA-TOPDOWN-LABEL: foo:36; FUSION-POSTRA-TOPDOWN:       # %bb.0:37; FUSION-POSTRA-TOPDOWN-NEXT:    lui a0, %hi(.L.str)38; FUSION-POSTRA-TOPDOWN-NEXT:    addi a0, a0, %lo(.L.str)39; FUSION-POSTRA-TOPDOWN-NEXT:    fcvt.s.w fa0, a140; FUSION-POSTRA-TOPDOWN-NEXT:    tail bar41;42; FUSION-POSTRA-BOTTOMUP-LABEL: foo:43; FUSION-POSTRA-BOTTOMUP:       # %bb.0:44; FUSION-POSTRA-BOTTOMUP-NEXT:    fcvt.s.w fa0, a145; FUSION-POSTRA-BOTTOMUP-NEXT:    lui a0, %hi(.L.str)46; FUSION-POSTRA-BOTTOMUP-NEXT:    addi a0, a0, %lo(.L.str)47; FUSION-POSTRA-BOTTOMUP-NEXT:    tail bar48;49; FUSION-POSTRA-BIDIRECTIONAL-LABEL: foo:50; FUSION-POSTRA-BIDIRECTIONAL:       # %bb.0:51; FUSION-POSTRA-BIDIRECTIONAL-NEXT:    lui a0, %hi(.L.str)52; FUSION-POSTRA-BIDIRECTIONAL-NEXT:    addi a0, a0, %lo(.L.str)53; FUSION-POSTRA-BIDIRECTIONAL-NEXT:    fcvt.s.w fa0, a154; FUSION-POSTRA-BIDIRECTIONAL-NEXT:    tail bar55;56; FUSION-GENERIC-LABEL: foo:57; FUSION-GENERIC:       # %bb.0:58; FUSION-GENERIC-NEXT:    fcvt.s.w fa0, a159; FUSION-GENERIC-NEXT:    lui a0, %hi(.L.str)60; FUSION-GENERIC-NEXT:    addi a0, a0, %lo(.L.str)61; FUSION-GENERIC-NEXT:    tail bar62  %3 = sitofp i32 %1 to float63  tail call void @bar(ptr @.str, float %3)64  ret void65}66 67declare void @bar(ptr, float)68 69; Test that we prefer lui+addiw over li+slli.70define i32 @test_matint() {71; NOFUSION-LABEL: test_matint:72; NOFUSION:       # %bb.0:73; NOFUSION-NEXT:    li a0, 174; NOFUSION-NEXT:    slli a0, a0, 1175; NOFUSION-NEXT:    ret76;77; FUSION-LABEL: test_matint:78; FUSION:       # %bb.0:79; FUSION-NEXT:    lui a0, 180; FUSION-NEXT:    addi a0, a0, -204881; FUSION-NEXT:    ret82;83; FUSION-POSTRA-LABEL: test_matint:84; FUSION-POSTRA:       # %bb.0:85; FUSION-POSTRA-NEXT:    lui a0, 186; FUSION-POSTRA-NEXT:    addi a0, a0, -204887; FUSION-POSTRA-NEXT:    ret88;89; FUSION-GENERIC-LABEL: test_matint:90; FUSION-GENERIC:       # %bb.0:91; FUSION-GENERIC-NEXT:    lui a0, 192; FUSION-GENERIC-NEXT:    addi a0, a0, -204893; FUSION-GENERIC-NEXT:    ret94  ret i32 204895}96 97define void @test_regalloc_hint(i32 noundef signext %0, i32 noundef signext %1) {98; NOFUSION-LABEL: test_regalloc_hint:99; NOFUSION:       # %bb.0:100; NOFUSION-NEXT:    mv a0, a1101; NOFUSION-NEXT:    lui a1, 3014102; NOFUSION-NEXT:    addi a1, a1, 334103; NOFUSION-NEXT:    tail bar104;105; FUSION-LABEL: test_regalloc_hint:106; FUSION:       # %bb.0:107; FUSION-NEXT:    mv a0, a1108; FUSION-NEXT:    lui a1, 3014109; FUSION-NEXT:    addi a1, a1, 334110; FUSION-NEXT:    tail bar111;112; FUSION-POSTRA-LABEL: test_regalloc_hint:113; FUSION-POSTRA:       # %bb.0:114; FUSION-POSTRA-NEXT:    mv a0, a1115; FUSION-POSTRA-NEXT:    lui a1, 3014116; FUSION-POSTRA-NEXT:    addi a1, a1, 334117; FUSION-POSTRA-NEXT:    tail bar118;119; FUSION-GENERIC-LABEL: test_regalloc_hint:120; FUSION-GENERIC:       # %bb.0:121; FUSION-GENERIC-NEXT:    lui a2, 3014122; FUSION-GENERIC-NEXT:    addi a2, a2, 334123; FUSION-GENERIC-NEXT:    mv a0, a1124; FUSION-GENERIC-NEXT:    mv a1, a2125; FUSION-GENERIC-NEXT:    tail bar126  tail call void @bar(i32 noundef signext %1, i32 noundef signext 12345678)127  ret void128}129