|
1 |
| -; RUN: llc %s --mtriple=x86_64 -print-after=unpack-mi-bundles -disable-verify 2>&1 | FileCheck %s |
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 |
| 2 | +; RUN: llc %s --mtriple=x86_64 -o - | FileCheck %s |
2 | 3 |
|
3 |
| -define i32 @atomic_scalar() { |
4 |
| -; CHECK: # *** IR Dump After Unpack machine instruction bundles (unpack-mi-bundles) ***: |
5 |
| -; CHECK-NEXT: # Machine code for function atomic_scalar: NoPHIs, TracksLiveness, NoVRegs, TiedOpsRewritten, TracksDebugUserValues |
6 |
| -; CHECK-NEXT: Frame Objects: |
7 |
| -; CHECK-NEXT: fi#0: size=4, align=4, at location [SP-4] |
8 |
| -; CHECK: bb.0 (%ir-block.0): |
9 |
| -; CHECK-NEXT: renamable $eax = MOV32rm $rsp, 1, $noreg, -4, $noreg :: (dereferenceable load acquire (s32) from %ir.1) |
10 |
| -; CHECK-NEXT: RET64 $eax |
11 |
| -; CHECK: # End machine code for function atomic_scalar. |
12 |
| - %1 = alloca <1 x i32> |
13 |
| - %2 = load atomic <1 x i32>, ptr %1 acquire, align 4 |
14 |
| - %3 = extractelement <1 x i32> %2, i32 0 |
15 |
| - ret i32 %3 |
| 4 | +define <1 x i32> @atomic_scalar_i32(ptr %x) { |
| 5 | +; CHECK-LABEL: atomic_scalar_i32: |
| 6 | +; CHECK: # %bb.0: |
| 7 | +; CHECK-NEXT: movl (%rdi), %eax |
| 8 | +; CHECK-NEXT: retq |
| 9 | + %ret = load atomic <1 x i32>, ptr %x acquire, align 4 |
| 10 | + ret <1 x i32> %ret |
| 11 | +} |
| 12 | + |
| 13 | +define <1 x bfloat> @atomic_scalar_bfloat(ptr %x) { |
| 14 | +; CHECK-LABEL: atomic_scalar_bfloat: |
| 15 | +; CHECK: # %bb.0: |
| 16 | +; CHECK-NEXT: movzwl (%rdi), %eax |
| 17 | +; CHECK-NEXT: pinsrw $0, %eax, %xmm0 |
| 18 | +; CHECK-NEXT: retq |
| 19 | + %ret = load atomic <1 x bfloat>, ptr %x acquire, align 4 |
| 20 | + ret <1 x bfloat> %ret |
16 | 21 | }
|
0 commit comments