22
22
23
23
define void @call_test_byval_mem1 () {
24
24
entry:
25
- call void @test_byval_mem1 (i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 8 , %struct_S1* byval (%struct_S1 ) align 1 @gS1 )
25
+ % call = call zeroext i8 @test_byval_mem1 (i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 8 , %struct_S1* byval (%struct_S1 ) align 1 @gS1 )
26
26
ret void
27
27
}
28
28
29
- declare void @test_byval_mem1 (i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , %struct_S1* byval (%struct_S1 ) align 1 )
30
29
31
30
; CHECKASM-LABEL: .call_test_byval_mem1:
32
31
@@ -44,18 +43,40 @@ declare void @test_byval_mem1(i32, i32, i32, i32, i32, i32, i32, i32, %struct_S1
44
43
; ASM64BIT: bl .test_byval_mem1
45
44
; ASM64BIT: addi 1, 1, 128
46
45
46
+ define zeroext i8 @test_byval_mem1 (i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , %struct_S1* byval (%struct_S1 ) align 1 %s ) {
47
+ entry:
48
+ %gep = getelementptr inbounds %struct_S1 , %struct_S1* %s , i32 0 , i32 0
49
+ %load = load i8 , i8* %gep , align 1
50
+ ret i8 %load
51
+ }
52
+
53
+ ; CHECK-LABEL: name: test_byval_mem1
54
+
55
+ ; 32BIT: fixedStack:
56
+ ; 32BIT-NEXT: - { id: 0, type: default, offset: 56, size: 4, alignment: 8, stack-id: default,
57
+ ; 32BIT: bb.0.entry:
58
+ ; 32BIT-NEXT: %[[VAL:[0-9]+]]:gprc = LBZ 0, %fixed-stack.0
59
+ ; 32BIT-NEXT: $r3 = COPY %[[VAL]]
60
+ ; 32BIT-NEXT: BLR
61
+
62
+ ; 64BIT: fixedStack:
63
+ ; 64BIT-NEXT: - { id: 0, type: default, offset: 112, size: 8, alignment: 16, stack-id: default,
64
+ ; 64BIT: bb.0.entry:
65
+ ; 64BIT-NEXT: %[[VAL:[0-9]+]]:g8rc = LBZ8 0, %fixed-stack.0
66
+ ; 64BIT-NEXT: $x3 = COPY %[[VAL]]
67
+ ; 64BIT-NEXT: BLR8
68
+
47
69
48
70
%struct_S256 = type { [256 x i8 ] }
49
71
50
72
@gS256 = external global %struct_S256 , align 1
51
73
52
74
define void @call_test_byval_mem2 () {
53
75
entry:
54
- call void @test_byval_mem2 (i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 8 , %struct_S256* byval (%struct_S256 ) align 1 @gS256 )
76
+ % call = call zeroext i8 @test_byval_mem2 (i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 8 , %struct_S256* byval (%struct_S256 ) align 1 @gS256 )
55
77
ret void
56
78
}
57
79
58
- declare void @test_byval_mem2 (i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , %struct_S256* byval (%struct_S256 ) align 1 )
59
80
60
81
; CHECK-LABEL: name: call_test_byval_mem2
61
82
@@ -122,6 +143,29 @@ declare void @test_byval_mem2(i32, i32, i32, i32, i32, i32, i32, i32, %struct_S2
122
143
; ASM64BIT: addi 1, 1, 368
123
144
124
145
146
+ define zeroext i8 @test_byval_mem2 (i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , %struct_S256* byval (%struct_S256 ) align 1 %s ) {
147
+ entry:
148
+ %gep = getelementptr inbounds %struct_S256 , %struct_S256* %s , i32 0 , i32 0 , i32 255
149
+ %load = load i8 , i8* %gep , align 1
150
+ ret i8 %load
151
+ }
152
+
153
+ ; CHECK-LABEL: name: test_byval_mem2
154
+
155
+ ; 32BIT: fixedStack:
156
+ ; 32BIT-NEXT: - { id: 0, type: default, offset: 56, size: 256, alignment: 8, stack-id: default,
157
+ ; 32BIT: bb.0.entry:
158
+ ; 32BIT-NEXT: %[[VAL:[0-9]+]]:gprc = LBZ 255, %fixed-stack.0
159
+ ; 32BIT-NEXT: $r3 = COPY %[[VAL]]
160
+ ; 32BIT-NEXT: BLR
161
+
162
+ ; 64BIT: fixedStack:
163
+ ; 64BIT-NEXT: - { id: 0, type: default, offset: 112, size: 256, alignment: 16, stack-id: default,
164
+ ; 64BIT: bb.0.entry:
165
+ ; 64BIT-NEXT: %[[VAL:[0-9]+]]:g8rc = LBZ8 255, %fixed-stack.0
166
+ ; 64BIT-NEXT: $x3 = COPY %[[VAL]]
167
+ ; 64BIT-NEXT: BLR8
168
+
125
169
%struct_S57 = type { [57 x i8 ] }
126
170
127
171
@gS57 = external global %struct_S57 , align 1
0 commit comments