OLD | NEW |
1 ; This tries to be a comprehensive test of i8 operations. | 1 ; This tries to be a comprehensive test of i8 operations. |
2 | 2 |
3 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \ | 3 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \ |
4 ; RUN: -allow-externally-defined-symbols | FileCheck %s | 4 ; RUN: -allow-externally-defined-symbols | FileCheck %s |
5 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 \ | 5 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 \ |
6 ; RUN: -allow-externally-defined-symbols | FileCheck %s | 6 ; RUN: -allow-externally-defined-symbols | FileCheck %s |
7 | 7 |
8 declare void @useInt(i32 %x) | 8 declare void @useInt(i32 %x) |
9 | 9 |
10 define internal i32 @add8Bit(i32 %a, i32 %b) { | 10 define internal i32 @add8Bit(i32 %a, i32 %b) { |
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
346 | 346 |
347 define i32 @load_i8_global(i32 %addr_arg) { | 347 define i32 @load_i8_global(i32 %addr_arg) { |
348 entry: | 348 entry: |
349 %addr = bitcast [1 x i8]* @global8 to i8* | 349 %addr = bitcast [1 x i8]* @global8 to i8* |
350 %ret = load i8, i8* %addr, align 1 | 350 %ret = load i8, i8* %addr, align 1 |
351 %ret2 = sub i8 %ret, 0 | 351 %ret2 = sub i8 %ret, 0 |
352 %ret_ext = zext i8 %ret2 to i32 | 352 %ret_ext = zext i8 %ret2 to i32 |
353 ret i32 %ret_ext | 353 ret i32 %ret_ext |
354 } | 354 } |
355 ; CHECK-LABEL: load_i8_global | 355 ; CHECK-LABEL: load_i8_global |
356 ; CHECK: mov {{[a-d]l}},BYTE PTR | 356 ; CHECK: mov {{[a-d]l}},{{(BYTE PTR)?}} |
357 | 357 |
358 define void @store_i8(i32 %addr_arg, i32 %val) { | 358 define void @store_i8(i32 %addr_arg, i32 %val) { |
359 entry: | 359 entry: |
360 %val_trunc = trunc i32 %val to i8 | 360 %val_trunc = trunc i32 %val to i8 |
361 %addr = inttoptr i32 %addr_arg to i8* | 361 %addr = inttoptr i32 %addr_arg to i8* |
362 store i8 %val_trunc, i8* %addr, align 1 | 362 store i8 %val_trunc, i8* %addr, align 1 |
363 ret void | 363 ret void |
364 } | 364 } |
365 ; CHECK-LABEL: store_i8 | 365 ; CHECK-LABEL: store_i8 |
366 ; CHECK: mov BYTE PTR {{.*}},{{[a-d]l}} | 366 ; CHECK: mov BYTE PTR {{.*}},{{[a-d]l}} |
367 | 367 |
368 define void @store_i8_const(i32 %addr_arg) { | 368 define void @store_i8_const(i32 %addr_arg) { |
369 entry: | 369 entry: |
370 %addr = inttoptr i32 %addr_arg to i8* | 370 %addr = inttoptr i32 %addr_arg to i8* |
371 store i8 123, i8* %addr, align 1 | 371 store i8 123, i8* %addr, align 1 |
372 ret void | 372 ret void |
373 } | 373 } |
374 ; CHECK-LABEL: store_i8_const | 374 ; CHECK-LABEL: store_i8_const |
375 ; CHECK: mov BYTE PTR {{.*}},0x7b | 375 ; CHECK: mov BYTE PTR {{.*}},0x7b |
OLD | NEW |