OLD | NEW |
---|---|
1 ; Test encoding of MIPS32 arithmetic instructions | 1 ; Test encoding of MIPS32 arithmetic instructions |
2 | 2 |
3 ; REQUIRES: allow_dump | 3 ; REQUIRES: allow_dump |
4 | 4 |
5 ; Compile using standalone assembler. | 5 ; Compile using standalone assembler. |
6 ; RUN: %p2i --filetype=asm -i %s --target=mips32 --args -O2 \ | 6 ; RUN: %p2i --filetype=asm -i %s --target=mips32 --args -O2 \ |
7 ; RUN: --allow-externally-defined-symbols \ | 7 ; RUN: --allow-externally-defined-symbols \ |
8 ; RUN: | FileCheck %s --check-prefix=ASM | 8 ; RUN: | FileCheck %s --check-prefix=ASM |
9 | 9 |
10 ; Show bytes in assembled standalone code. | 10 ; Show bytes in assembled standalone code. |
(...skipping 14 matching lines...) Expand all Loading... | |
25 define internal i32 @test_01(i32 %a) { | 25 define internal i32 @test_01(i32 %a) { |
26 %v = add i32 %a, 1 | 26 %v = add i32 %a, 1 |
27 %v1 = and i32 %v, 1 | 27 %v1 = and i32 %v, 1 |
28 %v2 = or i32 %v1, 1 | 28 %v2 = or i32 %v1, 1 |
29 %v3 = xor i32 %v2, 1 | 29 %v3 = xor i32 %v2, 1 |
30 ret i32 %v3 | 30 ret i32 %v3 |
31 } | 31 } |
32 | 32 |
33 ; ASM-LABEL: test_01: | 33 ; ASM-LABEL: test_01: |
34 ; ASM-NEXT: .Ltest_01$__0: | 34 ; ASM-NEXT: .Ltest_01$__0: |
35 ; ASM-NEXT:» # $zero = def.pseudo | 35 ; ASM-NEXT:» addiu» $a0, $a0, 1 |
36 ; ASM-NEXT:» addiu» $v0, $zero, 1 | 36 ; ASM-NEXT:» andi» $a0, $a0, 1 |
37 ; ASM-NEXT:» addu» $a0, $a0, $v0 | 37 ; ASM-NEXT:» ori» $a0, $a0, 1 |
38 ; ASM-NEXT:» # $zero = def.pseudo | 38 ; ASM-NEXT:» xori» $a0, $a0, 1 |
39 ; ASM-NEXT:» addiu» $v0, $zero, 1 | |
40 ; ASM-NEXT:» and» $a0, $a0, $v0 | |
41 ; ASM-NEXT:» # $zero = def.pseudo | |
42 ; ASM-NEXT:» addiu» $v0, $zero, 1 | |
43 ; ASM-NEXT:» or» $a0, $a0, $v0 | |
44 ; ASM-NEXT:» # $zero = def.pseudo | |
45 ; ASM-NEXT:» addiu» $v0, $zero, 1 | |
46 ; ASM-NEXT:» xor» $a0, $a0, $v0 | |
47 ; ASM-NEXT: move $v0, $a0 | 39 ; ASM-NEXT: move $v0, $a0 |
48 ; ASM-NEXT: jr $ra | 40 ; ASM-NEXT: jr $ra |
49 | 41 |
50 ; DIS-LABEL:00000000 <test_01>: | 42 ; DIS-LABEL:00000000 <test_01>: |
51 ; DIS-NEXT: 0: 24020001» li» v0,1 | 43 ; DIS-NEXT: 0:» 24840001 » addiu» a0,a0,1 |
52 ; DIS-NEXT: 4: 00822021» addu» a0,a0,v0 | 44 ; DIS-NEXT: 4:» 30840001 » andi» a0,a0,0x1 |
53 ; DIS-NEXT: 8: 24020001» li» v0,1 | 45 ; DIS-NEXT: 8:» 34840001 » ori» a0,a0,0x1 |
54 ; DIS-NEXT: c: 00822024» and» a0,a0,v0 | 46 ; DIS-NEXT: c:» 38840001 » xori» a0,a0,0x1 |
55 ; DIS-NEXT: 10: 24020001» li» v0,1 | 47 ; DIS-NEXT: 10:» 00801021 » move» v0,a0 |
56 ; DIS-NEXT: 14: 00822025» or» a0,a0,v0 | 48 ; DIS-NEXT: 14:» 03e00008 » jr» ra |
57 ; DIS-NEXT: 18: 24020001» li» v0,1 | 49 ; DIS-NEXT: 18:» 00000000 » nop |
58 ; DIS-NEXT: 1c: 00822026» xor» a0,a0,v0 | |
59 ; DIS-NEXT: 20: 00801021» move» v0,a0 | |
60 ; DIS-NEXT: 24: 03e00008» jr» ra | |
61 ; DIS-NEXT: 28: 00000000» nop | |
62 | 50 |
63 ; IASM-LABEL: test_01: | 51 ; IASM-LABEL: test_01: |
64 ; IASM-LABEL: .Ltest_01$__0: | 52 ; IASM-LABEL: .Ltest_01$__0: |
65 ; IASM-NEXT: .byte 0x1 | 53 ; IASM-NEXT: .byte 0x1 |
66 ; IASM-NEXT: .byte 0x0 | 54 ; IASM-NEXT: .byte 0x0 |
67 ; IASM-NEXT:» .byte 0x2 | 55 ; IASM-NEXT:» .byte 0x84 |
68 ; IASM-NEXT: .byte 0x24 | 56 ; IASM-NEXT: .byte 0x24 |
69 ; IASM-NEXT: .byte 0x21 | |
70 ; IASM-NEXT: .byte 0x20 | |
71 ; IASM-NEXT: .byte 0x82 | |
72 ; IASM-NEXT: .byte 0x0 | |
73 ; IASM-NEXT: .byte 0x1 | 57 ; IASM-NEXT: .byte 0x1 |
74 ; IASM-NEXT: .byte 0x0 | 58 ; IASM-NEXT: .byte 0x0 |
75 ; IASM-NEXT:» .byte 0x2 | 59 ; IASM-NEXT:» .byte 0x84 |
76 ; IASM-NEXT:» .byte 0x24 | 60 ; IASM-NEXT:» .byte 0x30 |
77 ; IASM-NEXT:» .byte 0x24 | |
78 ; IASM-NEXT:» .byte 0x20 | |
79 ; IASM-NEXT:» .byte 0x82 | |
80 ; IASM-NEXT:» .byte 0x0 | |
81 ; IASM-NEXT: .byte 0x1 | 61 ; IASM-NEXT: .byte 0x1 |
82 ; IASM-NEXT: .byte 0x0 | 62 ; IASM-NEXT: .byte 0x0 |
83 ; IASM-NEXT:» .byte 0x2 | 63 ; IASM-NEXT:» .byte 0x84 |
84 ; IASM-NEXT:» .byte 0x24 | 64 ; IASM-NEXT:» .byte 0x34 |
85 ; IASM-NEXT:» .byte 0x25 | |
86 ; IASM-NEXT:» .byte 0x20 | |
87 ; IASM-NEXT:» .byte 0x82 | |
88 ; IASM-NEXT:» .byte 0x0 | |
89 ; IASM-NEXT: .byte 0x1 | 65 ; IASM-NEXT: .byte 0x1 |
90 ; IASM-NEXT: .byte 0x0 | 66 ; IASM-NEXT: .byte 0x0 |
91 ; IASM-NEXT:» .byte 0x2 | 67 ; IASM-NEXT:» .byte 0x84 |
92 ; IASM-NEXT:» .byte 0x24 | 68 ; IASM-NEXT:» .byte 0x38 |
93 ; IASM-NEXT:» .byte 0x26 | |
94 ; IASM-NEXT:» .byte 0x20 | |
95 ; IASM-NEXT:» .byte 0x82 | |
96 ; IASM-NEXT:» .byte 0x0 | |
97 ; IASM-NEXT: .byte 0x21 | 69 ; IASM-NEXT: .byte 0x21 |
98 ; IASM-NEXT: .byte 0x10 | 70 ; IASM-NEXT: .byte 0x10 |
99 ; IASM-NEXT: .byte 0x80 | 71 ; IASM-NEXT: .byte 0x80 |
100 ; IASM-NEXT: .byte 0x0 | 72 ; IASM-NEXT: .byte 0x0 |
101 ; IASM-NEXT: .byte 0x8 | 73 ; IASM-NEXT: .byte 0x8 |
102 ; IASM-NEXT: .byte 0x0 | 74 ; IASM-NEXT: .byte 0x0 |
103 ; IASM-NEXT: .byte 0xe0 | 75 ; IASM-NEXT: .byte 0xe0 |
104 ; IASM-NEXT: .byte 0x3 | 76 ; IASM-NEXT: .byte 0x3 |
105 ; IASM-NEXT: .byte 0x0 | 77 ; IASM-NEXT: .byte 0x0 |
106 ; IASM-NEXT: .byte 0x0 | 78 ; IASM-NEXT: .byte 0x0 |
107 ; IASM-NEXT: .byte 0x0 | 79 ; IASM-NEXT: .byte 0x0 |
108 ; IASM-NEXT: .byte 0x0 | 80 ; IASM-NEXT: .byte 0x0 |
109 | 81 |
110 define internal i32 @test_02(i32 %a) { | 82 define internal i32 @test_02(i32 %a) { |
111 %cmp = icmp eq i32 %a, 9 | 83 %cmp = icmp eq i32 %a, 9 |
112 %cmp.ret_ext = zext i1 %cmp to i32 | 84 %cmp.ret_ext = zext i1 %cmp to i32 |
113 ret i32 %cmp.ret_ext | 85 ret i32 %cmp.ret_ext |
114 } | 86 } |
115 | 87 |
116 ; ASM-LABEL: test_02: | 88 ; ASM-LABEL: test_02: |
117 ; ASM-NEXT: .Ltest_02$__0: | 89 ; ASM-NEXT: .Ltest_02$__0: |
118 ; ASM-NEXT: # $zero = def.pseudo | 90 ; ASM-NEXT: # $zero = def.pseudo |
119 ; ASM-NEXT: addiu $v0, $zero, 9 | 91 ; ASM-NEXT: addiu $v0, $zero, 9 |
120 ; ASM-NEXT: xor $a0, $a0, $v0 | 92 ; ASM-NEXT: xor $a0, $a0, $v0 |
121 ; ASM-NEXT: sltiu $a0, $a0, 1 | 93 ; ASM-NEXT: sltiu $a0, $a0, 1 |
122 ; ASM-NEXT: andi $a0, $a0, 1 | 94 ; ASM-NEXT: andi $a0, $a0, 1 |
123 ; ASM-NEXT: move $v0, $a0 | 95 ; ASM-NEXT: move $v0, $a0 |
124 ; ASM-NEXT: jr $ra | 96 ; ASM-NEXT: jr $ra |
125 | 97 |
126 ; DIS-LABEL:00000030 <test_02>: | 98 ; DIS-LABEL:00000020 <test_02>: |
Jim Stichnoth
2016/11/04 13:18:48
This is unfortunate - i.e., changes to an unrelate
jaydeep.patil
2016/11/07 03:55:11
I will submit a separate cleanup CL.
| |
127 ; DIS-NEXT: 30: 24020009» li» v0,9 | 99 ; DIS-NEXT: 20:» 24020009 » li» v0,9 |
128 ; DIS-NEXT: 34: 00822026» xor» a0,a0,v0 | 100 ; DIS-NEXT: 24:» 00822026 » xor» a0,a0,v0 |
129 ; DIS-NEXT: 38: 2c840001» sltiu» a0,a0,1 | 101 ; DIS-NEXT: 28:» 2c840001 » sltiu» a0,a0,1 |
130 ; DIS-NEXT: 3c: 30840001» andi» a0,a0,0x1 | 102 ; DIS-NEXT: 2c:» 30840001 » andi» a0,a0,0x1 |
131 ; DIS-NEXT: 40: 00801021» move» v0,a0 | 103 ; DIS-NEXT: 30:» 00801021 » move» v0,a0 |
132 ; DIS-NEXT: 44: 03e00008» jr» ra | 104 ; DIS-NEXT: 34:» 03e00008 » jr» ra |
133 ; DIS-NEXT: 48: 00000000» nop | 105 ; DIS-NEXT: 38:» 00000000 » nop |
134 | 106 |
135 ; IASM-LABEL: test_02: | 107 ; IASM-LABEL: test_02: |
136 ; IASM-LABEL: .Ltest_02$__0: | 108 ; IASM-LABEL: .Ltest_02$__0: |
137 ; IASM-NEXT: .byte 0x9 | 109 ; IASM-NEXT: .byte 0x9 |
138 ; IASM-NEXT: .byte 0x0 | 110 ; IASM-NEXT: .byte 0x0 |
139 ; IASM-NEXT: .byte 0x2 | 111 ; IASM-NEXT: .byte 0x2 |
140 ; IASM-NEXT: .byte 0x24 | 112 ; IASM-NEXT: .byte 0x24 |
141 ; IASM-NEXT: .byte 0x26 | 113 ; IASM-NEXT: .byte 0x26 |
142 ; IASM-NEXT: .byte 0x20 | 114 ; IASM-NEXT: .byte 0x20 |
143 ; IASM-NEXT: .byte 0x82 | 115 ; IASM-NEXT: .byte 0x82 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
175 ; ASM-NEXT: move $v0, $a0 | 147 ; ASM-NEXT: move $v0, $a0 |
176 ; ASM-NEXT: jr $ra | 148 ; ASM-NEXT: jr $ra |
177 | 149 |
178 ; DIS-LABEL: <ashrImm>: | 150 ; DIS-LABEL: <ashrImm>: |
179 ; DIS-NEXT: 00a42007 srav a0,a0,a1 | 151 ; DIS-NEXT: 00a42007 srav a0,a0,a1 |
180 ; DIS-NEXT: 00801021 move v0,a0 | 152 ; DIS-NEXT: 00801021 move v0,a0 |
181 ; DIS-NEXT: 03e00008 jr ra | 153 ; DIS-NEXT: 03e00008 jr ra |
182 | 154 |
183 ; IASM-LABEL: ashrImm: | 155 ; IASM-LABEL: ashrImm: |
184 ; IASM-NEXT: .LashrImm$entry: | 156 ; IASM-NEXT: .LashrImm$entry: |
185 ; IASM-NEXT: » .byte 0x7 | 157 ; IASM-NEXT:» .byte 0x7 |
186 ; IASM-NEXT: » .byte 0x20 | 158 ; IASM-NEXT:» .byte 0x20 |
187 ; IASM-NEXT: » .byte 0xa4 | 159 ; IASM-NEXT:» .byte 0xa4 |
188 ; IASM-NEXT: » .byte 0x0 | 160 ; IASM-NEXT:» .byte 0x0 |
189 ; IASM-NEXT: » .byte 0x21 | 161 ; IASM-NEXT:» .byte 0x21 |
190 ; IASM-NEXT: » .byte 0x10 | 162 ; IASM-NEXT:» .byte 0x10 |
191 ; IASM-NEXT: » .byte 0x80 | 163 ; IASM-NEXT:» .byte 0x80 |
192 ; IASM-NEXT: » .byte 0x0 | 164 ; IASM-NEXT:» .byte 0x0 |
193 ; IASM-NEXT: » .byte 0x8 | 165 ; IASM-NEXT:» .byte 0x8 |
194 ; IASM-NEXT: » .byte 0x0 | 166 ; IASM-NEXT:» .byte 0x0 |
195 ; IASM-NEXT: » .byte 0xe0 | 167 ; IASM-NEXT:» .byte 0xe0 |
196 ; IASM-NEXT: » .byte 0x3 | 168 ; IASM-NEXT:» .byte 0x3 |
169 ; IASM-NEXT:» .byte 0x0 | |
170 ; IASM-NEXT:» .byte 0x0 | |
171 ; IASM-NEXT:» .byte 0x0 | |
172 ; IASM-NEXT:» .byte 0x0 | |
OLD | NEW |