1+ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
12; RUN: llc < %s -mtriple=bpfel -mcpu=v1 -show-mc-encoding | FileCheck %s
23
34define void @test () #0 {
5+ ; CHECK-LABEL: test:
6+ ; CHECK: # %bb.0: # %entry
7+ ; CHECK-NEXT: r1 = 123 # encoding: [0xb7,0x01,0x00,0x00,0x7b,0x00,0x00,0x00]
8+ ; CHECK-NEXT: call f_i16 # encoding: [0x85'A',A,A,A,0x00,0x00,0x00,0x00]
9+ ; CHECK-NEXT: # fixup A - offset: 0, value: f_i16, kind: FK_PCRel_4
10+ ; CHECK-NEXT: r1 = 12345678 # encoding: [0xb7,0x01,0x00,0x00,0x4e,0x61,0xbc,0x00]
11+ ; CHECK-NEXT: call f_i32 # encoding: [0x85'A',A,A,A,0x00,0x00,0x00,0x00]
12+ ; CHECK-NEXT: # fixup A - offset: 0, value: f_i32, kind: FK_PCRel_4
13+ ; CHECK-NEXT: r1 = 72623859790382856 ll # encoding: [0x18,0x01,0x00,0x00,0x08,0x07,0x06,0x05,0x00,0x00,0x00,0x00,0x04,0x03,0x02,0x01]
14+ ; CHECK-NEXT: call f_i64 # encoding: [0x85'A',A,A,A,0x00,0x00,0x00,0x00]
15+ ; CHECK-NEXT: # fixup A - offset: 0, value: f_i64, kind: FK_PCRel_4
16+ ; CHECK-NEXT: r1 = 1234 # encoding: [0xb7,0x01,0x00,0x00,0xd2,0x04,0x00,0x00]
17+ ; CHECK-NEXT: r2 = 5678 # encoding: [0xb7,0x02,0x00,0x00,0x2e,0x16,0x00,0x00]
18+ ; CHECK-NEXT: call f_i32_i32 # encoding: [0x85'A',A,A,A,0x00,0x00,0x00,0x00]
19+ ; CHECK-NEXT: # fixup A - offset: 0, value: f_i32_i32, kind: FK_PCRel_4
20+ ; CHECK-NEXT: r1 = 2 # encoding: [0xb7,0x01,0x00,0x00,0x02,0x00,0x00,0x00]
21+ ; CHECK-NEXT: r2 = 3 # encoding: [0xb7,0x02,0x00,0x00,0x03,0x00,0x00,0x00]
22+ ; CHECK-NEXT: r3 = 4 # encoding: [0xb7,0x03,0x00,0x00,0x04,0x00,0x00,0x00]
23+ ; CHECK-NEXT: call f_i16_i32_i16 # encoding: [0x85'A',A,A,A,0x00,0x00,0x00,0x00]
24+ ; CHECK-NEXT: # fixup A - offset: 0, value: f_i16_i32_i16, kind: FK_PCRel_4
25+ ; CHECK-NEXT: r1 = 5 # encoding: [0xb7,0x01,0x00,0x00,0x05,0x00,0x00,0x00]
26+ ; CHECK-NEXT: r2 = 7262385979038285 ll # encoding: [0x18,0x02,0x00,0x00,0x4d,0x9a,0x80,0x00,0x00,0x00,0x00,0x00,0x1a,0xcd,0x19,0x00]
27+ ; CHECK-NEXT: r3 = 6 # encoding: [0xb7,0x03,0x00,0x00,0x06,0x00,0x00,0x00]
28+ ; CHECK-NEXT: call f_i16_i64_i16 # encoding: [0x85'A',A,A,A,0x00,0x00,0x00,0x00]
29+ ; CHECK-NEXT: # fixup A - offset: 0, value: f_i16_i64_i16, kind: FK_PCRel_4
30+ ; CHECK-NEXT: exit # encoding: [0x95,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
431entry:
5- ; CHECK: test:
632
7- ; CHECK: r1 = 123 # encoding: [0xb7,0x01,0x00,0x00,0x7b,0x00,0x00,0x00]
8- ; CHECK: call f_i16
933 call void @f_i16 (i16 123 )
1034
11- ; CHECK: r1 = 12345678 # encoding: [0xb7,0x01,0x00,0x00,0x4e,0x61,0xbc,0x00]
12- ; CHECK: call f_i32
1335 call void @f_i32 (i32 12345678 )
1436
15- ; CHECK: r1 = 72623859790382856 ll # encoding: [0x18,0x01,0x00,0x00,0x08,0x07,0x06,0x05,0x00,0x00,0x00,0x00,0x04,0x03,0x02,0x01]
16- ; CHECK: call f_i64
1737 call void @f_i64 (i64 72623859790382856 )
1838
19- ; CHECK: r1 = 1234
20- ; CHECK: r2 = 5678
21- ; CHECK: call f_i32_i32
2239 call void @f_i32_i32 (i32 1234 , i32 5678 )
2340
24- ; CHECK: r1 = 2
25- ; CHECK: r2 = 3
26- ; CHECK: r3 = 4
27- ; CHECK: call f_i16_i32_i16
2841 call void @f_i16_i32_i16 (i16 2 , i32 3 , i16 4 )
2942
30- ; CHECK: r1 = 5
31- ; CHECK: r2 = 7262385979038285 ll
32- ; CHECK: r3 = 6
33- ; CHECK: call f_i16_i64_i16
3443 call void @f_i16_i64_i16 (i16 5 , i64 7262385979038285 , i16 6 )
3544
3645 ret void
@@ -41,55 +50,85 @@ entry:
4150@g_i64 = common global i64 0 , align 4
4251
4352define void @f_i16 (i16 %a ) #0 {
44- ; CHECK: f_i16:
45- ; CHECK: *(u16 *)(r2 + 0) = r1 # encoding: [0x6b,0x12,0x00,0x00,0x00,0x00,0x00,0x00]
53+ ; CHECK-LABEL: f_i16:
54+ ; CHECK: # %bb.0:
55+ ; CHECK-NEXT: r2 = g_i16 ll # encoding: [0x18'A',0x02'A',A,A,A,A,A,A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
56+ ; CHECK-NEXT: # fixup A - offset: 0, value: g_i16, kind: FK_SecRel_8
57+ ; CHECK-NEXT: *(u16 *)(r2 + 0) = r1 # encoding: [0x6b,0x12,0x00,0x00,0x00,0x00,0x00,0x00]
58+ ; CHECK-NEXT: exit # encoding: [0x95,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
4659 store volatile i16 %a , ptr @g_i16 , align 2
4760 ret void
4861}
4962
5063define void @f_i32 (i32 %a ) #0 {
51- ; CHECK: f_i32:
52- ; CHECK: *(u16 *)(r2 + 0) = r1 # encoding: [0x6b,0x12,0x00,0x00,0x00,0x00,0x00,0x00]
53- ; CHECK: *(u16 *)(r2 + 2) = r1 # encoding: [0x6b,0x12,0x02,0x00,0x00,0x00,0x00,0x00]
64+ ; CHECK-LABEL: f_i32:
65+ ; CHECK: # %bb.0:
66+ ; CHECK-NEXT: r2 = g_i32 ll # encoding: [0x18'A',0x02'A',A,A,A,A,A,A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
67+ ; CHECK-NEXT: # fixup A - offset: 0, value: g_i32, kind: FK_SecRel_8
68+ ; CHECK-NEXT: *(u16 *)(r2 + 0) = r1 # encoding: [0x6b,0x12,0x00,0x00,0x00,0x00,0x00,0x00]
69+ ; CHECK-NEXT: r1 >>= 16 # encoding: [0x77,0x01,0x00,0x00,0x10,0x00,0x00,0x00]
70+ ; CHECK-NEXT: *(u16 *)(r2 + 2) = r1 # encoding: [0x6b,0x12,0x02,0x00,0x00,0x00,0x00,0x00]
71+ ; CHECK-NEXT: exit # encoding: [0x95,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
5472 store volatile i32 %a , ptr @g_i32 , align 2
5573 ret void
5674}
5775
5876define void @f_i64 (i64 %a ) #0 {
59- ; CHECK: f_i64:
60- ; CHECK: *(u32 *)(r2 + 0) = r1
61- ; CHECK: *(u32 *)(r2 + 4) = r1 # encoding: [0x63,0x12,0x04,0x00,0x00,0x00,0x00,0x00]
77+ ; CHECK-LABEL: f_i64:
78+ ; CHECK: # %bb.0:
79+ ; CHECK-NEXT: r2 = g_i64 ll # encoding: [0x18'A',0x02'A',A,A,A,A,A,A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
80+ ; CHECK-NEXT: # fixup A - offset: 0, value: g_i64, kind: FK_SecRel_8
81+ ; CHECK-NEXT: *(u32 *)(r2 + 0) = r1 # encoding: [0x63,0x12,0x00,0x00,0x00,0x00,0x00,0x00]
82+ ; CHECK-NEXT: r1 >>= 32 # encoding: [0x77,0x01,0x00,0x00,0x20,0x00,0x00,0x00]
83+ ; CHECK-NEXT: *(u32 *)(r2 + 4) = r1 # encoding: [0x63,0x12,0x04,0x00,0x00,0x00,0x00,0x00]
84+ ; CHECK-NEXT: exit # encoding: [0x95,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
6285 store volatile i64 %a , ptr @g_i64 , align 2
6386 ret void
6487}
6588
6689define void @f_i32_i32 (i32 %a , i32 %b ) #0 {
67- ; CHECK: f_i32_i32:
68- ; CHECK: *(u32 *)(r3 + 0) = r1
90+ ; CHECK-LABEL: f_i32_i32:
91+ ; CHECK: # %bb.0:
92+ ; CHECK-NEXT: r3 = g_i32 ll # encoding: [0x18'A',0x03'A',A,A,A,A,A,A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
93+ ; CHECK-NEXT: # fixup A - offset: 0, value: g_i32, kind: FK_SecRel_8
94+ ; CHECK-NEXT: *(u32 *)(r3 + 0) = r1 # encoding: [0x63,0x13,0x00,0x00,0x00,0x00,0x00,0x00]
95+ ; CHECK-NEXT: *(u32 *)(r3 + 0) = r2 # encoding: [0x63,0x23,0x00,0x00,0x00,0x00,0x00,0x00]
96+ ; CHECK-NEXT: exit # encoding: [0x95,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
6997 store volatile i32 %a , ptr @g_i32 , align 4
70- ; CHECK: *(u32 *)(r3 + 0) = r2
7198 store volatile i32 %b , ptr @g_i32 , align 4
7299 ret void
73100}
74101
75102define void @f_i16_i32_i16 (i16 %a , i32 %b , i16 %c ) #0 {
76- ; CHECK: f_i16_i32_i16:
77- ; CHECK: *(u16 *)(r4 + 0) = r1
103+ ; CHECK-LABEL: f_i16_i32_i16:
104+ ; CHECK: # %bb.0:
105+ ; CHECK-NEXT: r4 = g_i16 ll # encoding: [0x18'A',0x04'A',A,A,A,A,A,A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
106+ ; CHECK-NEXT: # fixup A - offset: 0, value: g_i16, kind: FK_SecRel_8
107+ ; CHECK-NEXT: *(u16 *)(r4 + 0) = r1 # encoding: [0x6b,0x14,0x00,0x00,0x00,0x00,0x00,0x00]
108+ ; CHECK-NEXT: r1 = g_i32 ll # encoding: [0x18'A',0x01'A',A,A,A,A,A,A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
109+ ; CHECK-NEXT: # fixup A - offset: 0, value: g_i32, kind: FK_SecRel_8
110+ ; CHECK-NEXT: *(u32 *)(r1 + 0) = r2 # encoding: [0x63,0x21,0x00,0x00,0x00,0x00,0x00,0x00]
111+ ; CHECK-NEXT: *(u16 *)(r4 + 0) = r3 # encoding: [0x6b,0x34,0x00,0x00,0x00,0x00,0x00,0x00]
112+ ; CHECK-NEXT: exit # encoding: [0x95,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
78113 store volatile i16 %a , ptr @g_i16 , align 2
79- ; CHECK: *(u32 *)(r1 + 0) = r2
80114 store volatile i32 %b , ptr @g_i32 , align 4
81- ; CHECK: *(u16 *)(r4 + 0) = r3
82115 store volatile i16 %c , ptr @g_i16 , align 2
83116 ret void
84117}
85118
86119define void @f_i16_i64_i16 (i16 %a , i64 %b , i16 %c ) #0 {
87- ; CHECK: f_i16_i64_i16:
88- ; CHECK: *(u16 *)(r4 + 0) = r1
120+ ; CHECK-LABEL: f_i16_i64_i16:
121+ ; CHECK: # %bb.0:
122+ ; CHECK-NEXT: r4 = g_i16 ll # encoding: [0x18'A',0x04'A',A,A,A,A,A,A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
123+ ; CHECK-NEXT: # fixup A - offset: 0, value: g_i16, kind: FK_SecRel_8
124+ ; CHECK-NEXT: *(u16 *)(r4 + 0) = r1 # encoding: [0x6b,0x14,0x00,0x00,0x00,0x00,0x00,0x00]
125+ ; CHECK-NEXT: r1 = g_i64 ll # encoding: [0x18'A',0x01'A',A,A,A,A,A,A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
126+ ; CHECK-NEXT: # fixup A - offset: 0, value: g_i64, kind: FK_SecRel_8
127+ ; CHECK-NEXT: *(u64 *)(r1 + 0) = r2 # encoding: [0x7b,0x21,0x00,0x00,0x00,0x00,0x00,0x00]
128+ ; CHECK-NEXT: *(u16 *)(r4 + 0) = r3 # encoding: [0x6b,0x34,0x00,0x00,0x00,0x00,0x00,0x00]
129+ ; CHECK-NEXT: exit # encoding: [0x95,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
89130 store volatile i16 %a , ptr @g_i16 , align 2
90- ; CHECK: *(u64 *)(r1 + 0) = r2 # encoding: [0x7b,0x21,0x00,0x00,0x00,0x00,0x00,0x00]
91131 store volatile i64 %b , ptr @g_i64 , align 8
92- ; CHECK: *(u16 *)(r4 + 0) = r3
93132 store volatile i16 %c , ptr @g_i16 , align 2
94133 ret void
95134}
0 commit comments