blob: 5c66d1d6798f5f120a3cdede7201afe5206e5926 [file] [log] [blame]
Alex Bradbury315cd3a2018-01-10 21:05:07 +00001; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=riscv32 -verify-machineinstrs -filetype=obj < %s \
3; RUN: -o /dev/null 2>&1
4; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s | FileCheck %s
5
6define void @relax_bcc(i1 %a) {
7; CHECK-LABEL: relax_bcc:
8; CHECK: # %bb.0:
9; CHECK-NEXT: addi sp, sp, -16
10; CHECK-NEXT: sw ra, 12(sp)
11; CHECK-NEXT: sw s0, 8(sp)
12; CHECK-NEXT: addi s0, sp, 16
13; CHECK-NEXT: andi a0, a0, 1
14; CHECK-NEXT: bnez a0, .LBB0_1
15; CHECK-NEXT: j .LBB0_2
16; CHECK-NEXT: .LBB0_1: # %iftrue
17; CHECK-NEXT: #APP
18; CHECK-NEXT: .space 4096
19; CHECK-NEXT: #NO_APP
20; CHECK-NEXT: .LBB0_2: # %tail
21; CHECK-NEXT: lw s0, 8(sp)
22; CHECK-NEXT: lw ra, 12(sp)
23; CHECK-NEXT: addi sp, sp, 16
24; CHECK-NEXT: ret
25 br i1 %a, label %iftrue, label %tail
26
27iftrue:
28 call void asm sideeffect ".space 4096", ""()
29 br label %tail
30
31tail:
32 ret void
33}
34
35define i32 @relax_jal(i1 %a) {
36; CHECK-LABEL: relax_jal:
37; CHECK: # %bb.0:
38; CHECK-NEXT: addi sp, sp, -16
39; CHECK-NEXT: sw ra, 12(sp)
40; CHECK-NEXT: sw s0, 8(sp)
41; CHECK-NEXT: addi s0, sp, 16
42; CHECK-NEXT: andi a0, a0, 1
43; CHECK-NEXT: bnez a0, .LBB1_1
44; CHECK-NEXT: # %bb.4:
45; CHECK-NEXT: lui a0, %hi(.LBB1_2)
46; CHECK-NEXT: jalr zero, a0, %lo(.LBB1_2)
47; CHECK-NEXT: .LBB1_1: # %iftrue
48; CHECK-NEXT: #APP
49; CHECK-NEXT: #NO_APP
50; CHECK-NEXT: #APP
51; CHECK-NEXT: .space 1048576
52; CHECK-NEXT: #NO_APP
53; CHECK-NEXT: j .LBB1_3
54; CHECK-NEXT: .LBB1_2: # %jmp
55; CHECK-NEXT: #APP
56; CHECK-NEXT: #NO_APP
57; CHECK-NEXT: .LBB1_3: # %tail
58; CHECK-NEXT: addi a0, zero, 1
59; CHECK-NEXT: lw s0, 8(sp)
60; CHECK-NEXT: lw ra, 12(sp)
61; CHECK-NEXT: addi sp, sp, 16
62; CHECK-NEXT: ret
63 br i1 %a, label %iftrue, label %jmp
64
65jmp:
66 call void asm sideeffect "", ""()
67 br label %tail
68
69iftrue:
70 call void asm sideeffect "", ""()
71 br label %space
72
73space:
74 call void asm sideeffect ".space 1048576", ""()
75 br label %tail
76
77tail:
78 ret i32 1
79}