|
1 |
| -; RUN: llc %s --mtriple=x86_64 -print-after=finalize-isel -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 | FileCheck %s |
2 | 3 |
|
3 |
| -define i32 @atomic_scalar() { |
4 |
| -; CHECK: # *** IR Dump After Finalize ISel and expand pseudo-instructions (finalize-isel) ***: |
5 |
| -; CHECK-NEXT: # Machine code for function atomic_scalar: IsSSA, TracksLiveness |
6 |
| -; CHECK-NEXT: Frame Objects: |
7 |
| -; CHECK-NEXT: fi#0: size=4, align=4, at location [SP+8] |
8 |
| -; CHECK: bb.0 (%ir-block.0): |
9 |
| -; CHECK-NEXT: %0:gr32 = MOV32rm %stack.0, 1, $noreg, 0, $noreg :: (dereferenceable load acquire (s32) from %ir.1) |
10 |
| -; CHECK-NEXT: $eax = COPY %0:gr32 |
11 |
| -; CHECK-NEXT: RET 0, $eax |
12 |
| -; CHECK: # End machine code for function atomic_scalar. |
13 |
| - %1 = alloca <1 x i32> |
14 |
| - %2 = load atomic <1 x i32>, ptr %1 acquire, align 4 |
15 |
| - %3 = extractelement <1 x i32> %2, i32 0 |
16 |
| - 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 float> @atomic_scalar_float(ptr %x) { |
| 14 | +; CHECK-LABEL: atomic_scalar_float: |
| 15 | +; CHECK: # %bb.0: |
| 16 | +; CHECK-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero |
| 17 | +; CHECK-NEXT: retq |
| 18 | + %ret = load atomic <1 x float>, ptr %x acquire, align 4 |
| 19 | + ret <1 x float> %ret |
| 20 | +} |
| 21 | + |
| 22 | +define <1 x half> @atomic_scalar_half(ptr %x) { |
| 23 | +; CHECK-LABEL: atomic_scalar_half: |
| 24 | +; CHECK: # %bb.0: |
| 25 | +; CHECK-NEXT: movzwl (%rdi), %eax |
| 26 | +; CHECK-NEXT: pinsrw $0, %eax, %xmm0 |
| 27 | +; CHECK-NEXT: retq |
| 28 | + %ret = load atomic <1 x half>, ptr %x acquire, align 4 |
| 29 | + ret <1 x half> %ret |
| 30 | +} |
| 31 | + |
| 32 | +define <1 x bfloat> @atomic_scalar_bfloat(ptr %x) { |
| 33 | +; CHECK-LABEL: atomic_scalar_bfloat: |
| 34 | +; CHECK: # %bb.0: |
| 35 | +; CHECK-NEXT: movzwl (%rdi), %eax |
| 36 | +; CHECK-NEXT: pinsrw $0, %eax, %xmm0 |
| 37 | +; CHECK-NEXT: retq |
| 38 | + %ret = load atomic <1 x bfloat>, ptr %x acquire, align 4 |
| 39 | + ret <1 x bfloat> %ret |
17 | 40 | }
|
0 commit comments