brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.6 KiB · d0223dc Raw
297 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -o - %s -mtriple=riscv32 -mattr=+c,+zfinx -simplify-mir \3# RUN:   -run-pass=riscv-make-compressible | FileCheck --check-prefixes=CHECK %s4# RUN: llc -o - %s -mtriple=riscv64 -mattr=+c,+zfinx -simplify-mir \5# RUN:   -run-pass=riscv-make-compressible | FileCheck --check-prefixes=CHECK %s6 7--- |8 9  define void @store_common_value_float(ptr %a, ptr %b, ptr %c, float %d, float %e, float %f, float %g, float %h, float %i, float %j) #0 {10  entry:11    store float %j, ptr %a, align 412    store float %j, ptr %b, align 413    store float %j, ptr %c, align 414    ret void15  }16 17  define void @store_common_ptr_float(float %a, float %b, float %c, i32 %d, i32 %e, i32 %f, i32 %g, i32 %h, i32 %i, ptr %p) #0 {18  entry:19    store volatile float %a, ptr %p, align 420    store volatile float %b, ptr %p, align 421    store volatile float %c, ptr %p, align 422    ret void23  }24 25  define void @load_common_ptr_float(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, ptr %g) #0 {26  entry:27    %0 = load float, ptr %g, align 428    %arrayidx1 = getelementptr inbounds float, ptr %g, i32 129    %1 = load float, ptr %arrayidx1, align 430    %arrayidx2 = getelementptr inbounds float, ptr %g, i32 231    %2 = load float, ptr %arrayidx2, align 432    tail call void @load_common_ptr_float_1(float %0, float %1, float %2)33    ret void34  }35 36  declare void @load_common_ptr_float_1(float, float, float) #037 38  define void @store_large_offset_float(ptr %p, float %a, float %b, float %c, float %d) #0 {39  entry:40    %0 = getelementptr inbounds float, ptr %p, i32 10041    store volatile float %a, ptr %0, align 442    %1 = getelementptr inbounds float, ptr %p, i32 10143    store volatile float %b, ptr %1, align 444    %2 = getelementptr inbounds float, ptr %p, i32 10245    store volatile float %c, ptr %2, align 446    %3 = getelementptr inbounds float, ptr %p, i32 10347    store volatile float %d, ptr %3, align 448    ret void49  }50 51  define void @load_large_offset_float(ptr %p) #0 {52  entry:53    %arrayidx = getelementptr inbounds float, ptr %p, i32 10054    %0 = load float, ptr %arrayidx, align 455    %arrayidx1 = getelementptr inbounds float, ptr %p, i32 10156    %1 = load float, ptr %arrayidx1, align 457    %arrayidx2 = getelementptr inbounds float, ptr %p, i32 10258    %2 = load float, ptr %arrayidx2, align 459    tail call void @load_large_offset_float_1(float %0, float %1, float %2)60    ret void61  }62 63  declare void @load_large_offset_float_1(float, float, float) #064 65  define void @store_common_value_float_no_opt(ptr %a, float %b, float %c, float %d, float %e, float %f, float %g, float %h) #0 {66  entry:67    store float %h, ptr %a, align 468    ret void69  }70 71  define void @store_common_ptr_float_no_opt(float %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32 %g, ptr %p) #0 {72  entry:73    store volatile float %a, ptr %p, align 474    ret void75  }76 77  define float @load_common_ptr_float_no_opt(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, ptr %g) #0 {78  entry:79    %0 = load float, ptr %g, align 480    ret float %081  }82 83  define void @store_large_offset_float_no_opt(ptr %p, float %a, float %b) #0 {84  entry:85    %0 = getelementptr inbounds float, ptr %p, i32 10086    store volatile float %a, ptr %0, align 487    %1 = getelementptr inbounds float, ptr %p, i32 10188    store volatile float %b, ptr %1, align 489    ret void90  }91 92  define { float, float } @load_large_offset_float_no_opt(ptr %p) #0 {93  entry:94    %arrayidx = getelementptr inbounds float, ptr %p, i32 10095    %0 = load float, ptr %arrayidx, align 496    %arrayidx1 = getelementptr inbounds float, ptr %p, i32 10197    %1 = load float, ptr %arrayidx1, align 498    %2 = insertvalue { float, float } undef, float %0, 099    %3 = insertvalue { float, float } %2, float %1, 1100    ret { float, float } %3101  }102 103  attributes #0 = { minsize }104 105...106---107name:            store_common_value_float108tracksRegLiveness: true109body:             |110  bb.0.entry:111    liveins: $x10, $x11, $x12112 113    ; CHECK-LABEL: name: store_common_value_float114    ; CHECK: liveins: $x10, $x11, $x12115    ; CHECK-NEXT: {{  $}}116    ; CHECK-NEXT: $x13_w = PseudoMV_FPR32INX $x0_w117    ; CHECK-NEXT: SW_INX $x13_w, killed renamable $x10, 0 :: (store (s32) into %ir.a)118    ; CHECK-NEXT: SW_INX $x13_w, killed renamable $x11, 0 :: (store (s32) into %ir.b)119    ; CHECK-NEXT: SW_INX killed $x13_w, killed renamable $x12, 0 :: (store (s32) into %ir.c)120    ; CHECK-NEXT: PseudoRET121    SW_INX $x0_w, killed renamable $x10, 0 :: (store (s32) into %ir.a)122    SW_INX $x0_w, killed renamable $x11, 0 :: (store (s32) into %ir.b)123    SW_INX killed $x0_w, killed renamable $x12, 0 :: (store (s32) into %ir.c)124    PseudoRET125 126...127---128name:            store_common_ptr_float129tracksRegLiveness: true130body:             |131  bb.0.entry:132    liveins: $x10_w, $x11_w, $x12_w, $x16133 134    ; CHECK-LABEL: name: store_common_ptr_float135    ; CHECK: liveins: $x10_w, $x11_w, $x12_w, $x16136    ; CHECK-NEXT: {{  $}}137    ; CHECK-NEXT: $x13 = ADDI $x16, 0138    ; CHECK-NEXT: SW_INX killed renamable $x10_w, $x13, 0 :: (volatile store (s32) into %ir.p)139    ; CHECK-NEXT: SW_INX killed renamable $x11_w, $x13, 0 :: (volatile store (s32) into %ir.p)140    ; CHECK-NEXT: SW_INX killed renamable $x12_w, killed $x13, 0 :: (volatile store (s32) into %ir.p)141    ; CHECK-NEXT: PseudoRET142    SW_INX killed renamable $x10_w, renamable $x16, 0 :: (volatile store (s32) into %ir.p)143    SW_INX killed renamable $x11_w, renamable $x16, 0 :: (volatile store (s32) into %ir.p)144    SW_INX killed renamable $x12_w, killed renamable $x16, 0 :: (volatile store (s32) into %ir.p)145    PseudoRET146 147...148---149name:            load_common_ptr_float150tracksRegLiveness: true151body:             |152  bb.0.entry:153    liveins: $x16154 155    ; CHECK-LABEL: name: load_common_ptr_float156    ; CHECK: liveins: $x16157    ; CHECK-NEXT: {{  $}}158    ; CHECK-NEXT: $x13 = ADDI $x16, 0159    ; CHECK-NEXT: renamable $x10_w = LW_INX $x13, 0 :: (load (s32) from %ir.g)160    ; CHECK-NEXT: renamable $x11_w = LW_INX $x13, 4 :: (load (s32) from %ir.arrayidx1)161    ; CHECK-NEXT: renamable $x12_w = LW_INX killed $x13, 8 :: (load (s32) from %ir.arrayidx2)162    ; CHECK-NEXT: PseudoTAIL target-flags(riscv-call) @load_common_ptr_float_1, implicit $x2, implicit $x10_w, implicit $x11_w, implicit $x12_w163    renamable $x10_w = LW_INX renamable $x16, 0 :: (load (s32) from %ir.g)164    renamable $x11_w = LW_INX renamable $x16, 4 :: (load (s32) from %ir.arrayidx1)165    renamable $x12_w = LW_INX killed renamable $x16, 8 :: (load (s32) from %ir.arrayidx2)166    PseudoTAIL target-flags(riscv-call) @load_common_ptr_float_1, implicit $x2, implicit $x10_w, implicit $x11_w, implicit $x12_w167 168...169---170name:            store_large_offset_float171tracksRegLiveness: true172body:             |173  bb.0.entry:174    liveins: $x10, $x11_w, $x11_w, $x12_w, $x13_w175 176    ; CHECK-LABEL: name: store_large_offset_float177    ; CHECK: liveins: $x10, $x11_w, $x11_w, $x12_w, $x13_w178    ; CHECK-NEXT: {{  $}}179    ; CHECK-NEXT: $x14 = ADDI $x10, 384180    ; CHECK-NEXT: SW_INX killed renamable $x10_w, $x14, 16 :: (volatile store (s32) into %ir.0)181    ; CHECK-NEXT: SW_INX killed renamable $x11_w, $x14, 20 :: (volatile store (s32) into %ir.1)182    ; CHECK-NEXT: SW_INX killed renamable $x12_w, $x14, 24 :: (volatile store (s32) into %ir.2)183    ; CHECK-NEXT: SW_INX killed renamable $x13_w, killed $x14, 28 :: (volatile store (s32) into %ir.3)184    ; CHECK-NEXT: PseudoRET185    SW_INX killed renamable $x10_w, renamable $x10, 400 :: (volatile store (s32) into %ir.0)186    SW_INX killed renamable $x11_w, renamable $x10, 404 :: (volatile store (s32) into %ir.1)187    SW_INX killed renamable $x12_w, renamable $x10, 408 :: (volatile store (s32) into %ir.2)188    SW_INX killed renamable $x13_w, killed renamable $x10, 412 :: (volatile store (s32) into %ir.3)189    PseudoRET190 191...192---193name:            load_large_offset_float194tracksRegLiveness: true195body:             |196  bb.0.entry:197    liveins: $x10198 199    ; CHECK-LABEL: name: load_large_offset_float200    ; CHECK: liveins: $x10201    ; CHECK-NEXT: {{  $}}202    ; CHECK-NEXT: $x14 = ADDI $x10, 384203    ; CHECK-NEXT: renamable $x11_w = LW_INX $x14, 16 :: (load (s32) from %ir.arrayidx)204    ; CHECK-NEXT: renamable $x12_w = LW_INX $x14, 20 :: (load (s32) from %ir.arrayidx1)205    ; CHECK-NEXT: renamable $x13_w = LW_INX killed $x14, 24 :: (load (s32) from %ir.arrayidx2)206    ; CHECK-NEXT: PseudoTAIL target-flags(riscv-call) @load_large_offset_float_1, implicit $x2, implicit $x11_w, implicit $x12_w, implicit $x12_w207    renamable $x11_w = LW_INX renamable $x10, 400 :: (load (s32) from %ir.arrayidx)208    renamable $x12_w = LW_INX renamable $x10, 404 :: (load (s32) from %ir.arrayidx1)209    renamable $x13_w = LW_INX killed renamable $x10, 408 :: (load (s32) from %ir.arrayidx2)210    PseudoTAIL target-flags(riscv-call) @load_large_offset_float_1, implicit $x2, implicit $x11_w, implicit $x12_w, implicit $x12_w211 212...213---214name:            store_common_value_float_no_opt215tracksRegLiveness: true216body:             |217  bb.0.entry:218    liveins: $x10, $x16_w219 220    ; CHECK-LABEL: name: store_common_value_float_no_opt221    ; CHECK: liveins: $x10, $x16_w222    ; CHECK-NEXT: {{  $}}223    ; CHECK-NEXT: SW_INX killed renamable $x16_w, killed renamable $x10, 0 :: (store (s32) into %ir.a)224    ; CHECK-NEXT: PseudoRET225    SW_INX killed renamable $x16_w, killed renamable $x10, 0 :: (store (s32) into %ir.a)226    PseudoRET227 228...229---230name:            store_common_ptr_float_no_opt231tracksRegLiveness: true232body:             |233  bb.0.entry:234    liveins: $x16, $x10_w235 236    ; CHECK-LABEL: name: store_common_ptr_float_no_opt237    ; CHECK: liveins: $x16, $x10_w238    ; CHECK-NEXT: {{  $}}239    ; CHECK-NEXT: SW_INX killed renamable $x10_w, killed renamable $x16, 0 :: (volatile store (s32) into %ir.p)240    ; CHECK-NEXT: PseudoRET241    SW_INX killed renamable $x10_w, killed renamable $x16, 0 :: (volatile store (s32) into %ir.p)242    PseudoRET243 244...245---246name:            load_common_ptr_float_no_opt247tracksRegLiveness: true248body:             |249  bb.0.entry:250    liveins: $x16251 252    ; CHECK-LABEL: name: load_common_ptr_float_no_opt253    ; CHECK: liveins: $x16254    ; CHECK-NEXT: {{  $}}255    ; CHECK-NEXT: renamable $x10_w = LW_INX killed renamable $x16, 0 :: (load (s32) from %ir.g)256    ; CHECK-NEXT: PseudoRET implicit $x10_w257    renamable $x10_w = LW_INX killed renamable $x16, 0 :: (load (s32) from %ir.g)258    PseudoRET implicit $x10_w259 260...261---262name:            store_large_offset_float_no_opt263tracksRegLiveness: true264body:             |265  bb.0.entry:266    liveins: $x10, $x11_w, $x12_w267 268    ; CHECK-LABEL: name: store_large_offset_float_no_opt269    ; CHECK: liveins: $x10, $x11_w, $x12_w270    ; CHECK-NEXT: {{  $}}271    ; CHECK-NEXT: SW_INX killed renamable $x11_w, renamable $x10, 400 :: (volatile store (s32) into %ir.0)272    ; CHECK-NEXT: SW_INX killed renamable $x12_w, killed renamable $x10, 404 :: (volatile store (s32) into %ir.1)273    ; CHECK-NEXT: PseudoRET274    SW_INX killed renamable $x11_w, renamable $x10, 400 :: (volatile store (s32) into %ir.0)275    SW_INX killed renamable $x12_w, killed renamable $x10, 404 :: (volatile store (s32) into %ir.1)276    PseudoRET277 278...279---280name:            load_large_offset_float_no_opt281tracksRegLiveness: true282body:             |283  bb.0.entry:284    liveins: $x10285 286    ; CHECK-LABEL: name: load_large_offset_float_no_opt287    ; CHECK: liveins: $x10288    ; CHECK-NEXT: {{  $}}289    ; CHECK-NEXT: renamable $x11_w = LW_INX renamable $x10, 400 :: (load (s32) from %ir.arrayidx)290    ; CHECK-NEXT: renamable $x12_w = LW_INX killed renamable $x10, 404 :: (load (s32) from %ir.arrayidx1)291    ; CHECK-NEXT: PseudoRET implicit $x11_w, implicit $x12_w292    renamable $x11_w = LW_INX renamable $x10, 400 :: (load (s32) from %ir.arrayidx)293    renamable $x12_w = LW_INX killed renamable $x10, 404 :: (load (s32) from %ir.arrayidx1)294    PseudoRET implicit $x11_w, implicit $x12_w295 296...297