Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/CodeGen/PowerPC/v8i16_scalar_to_vector_shuffle.ll
Show First 20 Lines • Show All 383 Lines • ▼ Show 20 Lines | |||||
; CHECK-LE-P8-NEXT: xxswapd vs0, v2 | ; CHECK-LE-P8-NEXT: xxswapd vs0, v2 | ||||
; CHECK-LE-P8-NEXT: stxvd2x vs0, 0, r3 | ; CHECK-LE-P8-NEXT: stxvd2x vs0, 0, r3 | ||||
; CHECK-LE-P8-NEXT: blr | ; CHECK-LE-P8-NEXT: blr | ||||
; | ; | ||||
; CHECK-LE-P9-LABEL: test_v4i32_none: | ; CHECK-LE-P9-LABEL: test_v4i32_none: | ||||
; CHECK-LE-P9: # %bb.0: # %entry | ; CHECK-LE-P9: # %bb.0: # %entry | ||||
; CHECK-LE-P9-NEXT: lfiwzx f0, 0, r3 | ; CHECK-LE-P9-NEXT: lfiwzx f0, 0, r3 | ||||
; CHECK-LE-P9-NEXT: addis r3, r2, .LCPI3_0@toc@ha | ; CHECK-LE-P9-NEXT: addis r3, r2, .LCPI3_0@toc@ha | ||||
; CHECK-LE-P9-NEXT: xxlxor vs1, vs1, vs1 | ; CHECK-LE-P9-NEXT: xxlxor vs2, vs2, vs2 | ||||
; CHECK-LE-P9-NEXT: addi r3, r3, .LCPI3_0@toc@l | ; CHECK-LE-P9-NEXT: addi r3, r3, .LCPI3_0@toc@l | ||||
; CHECK-LE-P9-NEXT: lxv vs2, 0(r3) | ; CHECK-LE-P9-NEXT: lxv vs1, 0(r3) | ||||
; CHECK-LE-P9-NEXT: xxperm vs0, vs1, vs2 | ; CHECK-LE-P9-NEXT: xxperm vs0, vs2, vs1 | ||||
; CHECK-LE-P9-NEXT: stxv vs0, 0(r3) | ; CHECK-LE-P9-NEXT: stxv vs0, 0(r3) | ||||
; CHECK-LE-P9-NEXT: blr | ; CHECK-LE-P9-NEXT: blr | ||||
; | ; | ||||
; CHECK-BE-P8-LABEL: test_v4i32_none: | ; CHECK-BE-P8-LABEL: test_v4i32_none: | ||||
; CHECK-BE-P8: # %bb.0: # %entry | ; CHECK-BE-P8: # %bb.0: # %entry | ||||
; CHECK-BE-P8-NEXT: addis r4, r2, .LCPI3_0@toc@ha | ; CHECK-BE-P8-NEXT: addis r4, r2, .LCPI3_0@toc@ha | ||||
; CHECK-BE-P8-NEXT: lxsiwzx v2, 0, r3 | ; CHECK-BE-P8-NEXT: lxsiwzx v2, 0, r3 | ||||
; CHECK-BE-P8-NEXT: xxlxor v4, v4, v4 | ; CHECK-BE-P8-NEXT: xxlxor v4, v4, v4 | ||||
; CHECK-BE-P8-NEXT: addi r4, r4, .LCPI3_0@toc@l | ; CHECK-BE-P8-NEXT: addi r4, r4, .LCPI3_0@toc@l | ||||
; CHECK-BE-P8-NEXT: lxvw4x v3, 0, r4 | ; CHECK-BE-P8-NEXT: lxvw4x v3, 0, r4 | ||||
; CHECK-BE-P8-NEXT: vperm v2, v4, v2, v3 | ; CHECK-BE-P8-NEXT: vperm v2, v4, v2, v3 | ||||
; CHECK-BE-P8-NEXT: stxvw4x v2, 0, r3 | ; CHECK-BE-P8-NEXT: stxvw4x v2, 0, r3 | ||||
; CHECK-BE-P8-NEXT: blr | ; CHECK-BE-P8-NEXT: blr | ||||
; | ; | ||||
; CHECK-BE-P9-LABEL: test_v4i32_none: | ; CHECK-BE-P9-LABEL: test_v4i32_none: | ||||
; CHECK-BE-P9: # %bb.0: # %entry | ; CHECK-BE-P9: # %bb.0: # %entry | ||||
; CHECK-BE-P9-NEXT: lfiwzx f0, 0, r3 | ; CHECK-BE-P9-NEXT: lfiwzx f0, 0, r3 | ||||
; CHECK-BE-P9-NEXT: addis r3, r2, .LCPI3_0@toc@ha | ; CHECK-BE-P9-NEXT: addis r3, r2, .LCPI3_0@toc@ha | ||||
; CHECK-BE-P9-NEXT: xxlxor vs1, vs1, vs1 | ; CHECK-BE-P9-NEXT: xxlxor vs2, vs2, vs2 | ||||
; CHECK-BE-P9-NEXT: addi r3, r3, .LCPI3_0@toc@l | ; CHECK-BE-P9-NEXT: addi r3, r3, .LCPI3_0@toc@l | ||||
; CHECK-BE-P9-NEXT: lxv vs2, 0(r3) | ; CHECK-BE-P9-NEXT: lxv vs1, 0(r3) | ||||
; CHECK-BE-P9-NEXT: xxperm vs0, vs1, vs2 | ; CHECK-BE-P9-NEXT: xxperm vs0, vs2, vs1 | ||||
; CHECK-BE-P9-NEXT: stxv vs0, 0(r3) | ; CHECK-BE-P9-NEXT: stxv vs0, 0(r3) | ||||
; CHECK-BE-P9-NEXT: blr | ; CHECK-BE-P9-NEXT: blr | ||||
; | ; | ||||
; CHECK-AIX-64-P8-LABEL: test_v4i32_none: | ; CHECK-AIX-64-P8-LABEL: test_v4i32_none: | ||||
; CHECK-AIX-64-P8: # %bb.0: # %entry | ; CHECK-AIX-64-P8: # %bb.0: # %entry | ||||
; CHECK-AIX-64-P8-NEXT: ld r4, L..C5(r2) # %const.0 | ; CHECK-AIX-64-P8-NEXT: ld r4, L..C5(r2) # %const.0 | ||||
; CHECK-AIX-64-P8-NEXT: lxsiwzx v2, 0, r3 | ; CHECK-AIX-64-P8-NEXT: lxsiwzx v2, 0, r3 | ||||
; CHECK-AIX-64-P8-NEXT: xxlxor v4, v4, v4 | ; CHECK-AIX-64-P8-NEXT: xxlxor v4, v4, v4 | ||||
Show All 39 Lines | entry: | ||||
store <4 x i32> %2, ptr undef, align 16 | store <4 x i32> %2, ptr undef, align 16 | ||||
ret void | ret void | ||||
} | } | ||||
define void @test_none_v2i64(ptr nocapture readonly %ptr1, ptr nocapture readonly %ptr2) { | define void @test_none_v2i64(ptr nocapture readonly %ptr1, ptr nocapture readonly %ptr2) { | ||||
; CHECK-LE-P8-LABEL: test_none_v2i64: | ; CHECK-LE-P8-LABEL: test_none_v2i64: | ||||
; CHECK-LE-P8: # %bb.0: # %entry | ; CHECK-LE-P8: # %bb.0: # %entry | ||||
; CHECK-LE-P8-NEXT: addis r5, r2, .LCPI4_0@toc@ha | ; CHECK-LE-P8-NEXT: addis r5, r2, .LCPI4_0@toc@ha | ||||
; CHECK-LE-P8-NEXT: lxvd2x vs0, 0, r4 | |||||
; CHECK-LE-P8-NEXT: lxsdx v2, 0, r3 | ; CHECK-LE-P8-NEXT: lxsdx v2, 0, r3 | ||||
; CHECK-LE-P8-NEXT: lxvd2x v3, 0, r4 | |||||
; CHECK-LE-P8-NEXT: addis r3, r2, .LCPI4_1@toc@ha | ; CHECK-LE-P8-NEXT: addis r3, r2, .LCPI4_1@toc@ha | ||||
; CHECK-LE-P8-NEXT: addi r5, r5, .LCPI4_0@toc@l | ; CHECK-LE-P8-NEXT: addi r5, r5, .LCPI4_0@toc@l | ||||
; CHECK-LE-P8-NEXT: addi r3, r3, .LCPI4_1@toc@l | ; CHECK-LE-P8-NEXT: addi r3, r3, .LCPI4_1@toc@l | ||||
; CHECK-LE-P8-NEXT: lxvd2x vs0, 0, r5 | ; CHECK-LE-P8-NEXT: lxvd2x vs1, 0, r5 | ||||
; CHECK-LE-P8-NEXT: xxswapd v4, vs0 | ; CHECK-LE-P8-NEXT: xxswapd v3, vs0 | ||||
; CHECK-LE-P8-NEXT: lxvd2x vs0, 0, r3 | ; CHECK-LE-P8-NEXT: lxvd2x vs0, 0, r3 | ||||
; CHECK-LE-P8-NEXT: xxswapd v4, vs1 | |||||
; CHECK-LE-P8-NEXT: vperm v2, v2, v3, v4 | ; CHECK-LE-P8-NEXT: vperm v2, v2, v3, v4 | ||||
; CHECK-LE-P8-NEXT: xxswapd v3, vs0 | ; CHECK-LE-P8-NEXT: xxswapd v3, vs0 | ||||
; CHECK-LE-P8-NEXT: xxlxor v4, v4, v4 | ; CHECK-LE-P8-NEXT: xxlxor v4, v4, v4 | ||||
; CHECK-LE-P8-NEXT: vperm v2, v4, v2, v3 | ; CHECK-LE-P8-NEXT: vperm v2, v4, v2, v3 | ||||
; CHECK-LE-P8-NEXT: xxswapd vs0, v2 | ; CHECK-LE-P8-NEXT: xxswapd vs0, v2 | ||||
; CHECK-LE-P8-NEXT: stxvd2x vs0, 0, r3 | ; CHECK-LE-P8-NEXT: stxvd2x vs0, 0, r3 | ||||
; CHECK-LE-P8-NEXT: blr | ; CHECK-LE-P8-NEXT: blr | ||||
; | ; | ||||
▲ Show 20 Lines • Show All 50 Lines • ▼ Show 20 Lines | |||||
; CHECK-AIX-64-P8-NEXT: vmrghh v2, v3, v2 | ; CHECK-AIX-64-P8-NEXT: vmrghh v2, v3, v2 | ||||
; CHECK-AIX-64-P8-NEXT: stxvw4x v2, 0, r3 | ; CHECK-AIX-64-P8-NEXT: stxvw4x v2, 0, r3 | ||||
; CHECK-AIX-64-P8-NEXT: blr | ; CHECK-AIX-64-P8-NEXT: blr | ||||
; | ; | ||||
; CHECK-AIX-64-P9-LABEL: test_none_v2i64: | ; CHECK-AIX-64-P9-LABEL: test_none_v2i64: | ||||
; CHECK-AIX-64-P9: # %bb.0: # %entry | ; CHECK-AIX-64-P9: # %bb.0: # %entry | ||||
; CHECK-AIX-64-P9-NEXT: lxsd v2, 0(r3) | ; CHECK-AIX-64-P9-NEXT: lxsd v2, 0(r3) | ||||
; CHECK-AIX-64-P9-NEXT: ld r3, L..C5(r2) # %const.0 | ; CHECK-AIX-64-P9-NEXT: ld r3, L..C5(r2) # %const.0 | ||||
; CHECK-AIX-64-P9-NEXT: lxv vs1, 0(r4) | ; CHECK-AIX-64-P9-NEXT: lxv vs0, 0(r4) | ||||
; CHECK-AIX-64-P9-NEXT: xxlxor v3, v3, v3 | ; CHECK-AIX-64-P9-NEXT: xxlxor v3, v3, v3 | ||||
; CHECK-AIX-64-P9-NEXT: lxv vs0, 0(r3) | ; CHECK-AIX-64-P9-NEXT: lxv vs1, 0(r3) | ||||
; CHECK-AIX-64-P9-NEXT: xxperm v2, vs1, vs0 | ; CHECK-AIX-64-P9-NEXT: xxperm v2, vs0, vs1 | ||||
; CHECK-AIX-64-P9-NEXT: vmrghh v2, v3, v2 | ; CHECK-AIX-64-P9-NEXT: vmrghh v2, v3, v2 | ||||
; CHECK-AIX-64-P9-NEXT: stxv v2, 0(r3) | ; CHECK-AIX-64-P9-NEXT: stxv v2, 0(r3) | ||||
; CHECK-AIX-64-P9-NEXT: blr | ; CHECK-AIX-64-P9-NEXT: blr | ||||
; | ; | ||||
; CHECK-AIX-32-P8-LABEL: test_none_v2i64: | ; CHECK-AIX-32-P8-LABEL: test_none_v2i64: | ||||
; CHECK-AIX-32-P8: # %bb.0: # %entry | ; CHECK-AIX-32-P8: # %bb.0: # %entry | ||||
; CHECK-AIX-32-P8-NEXT: lwz r5, L..C5(r2) # %const.0 | ; CHECK-AIX-32-P8-NEXT: lwz r5, L..C5(r2) # %const.0 | ||||
; CHECK-AIX-32-P8-NEXT: lxsiwzx v2, 0, r3 | ; CHECK-AIX-32-P8-NEXT: lxsiwzx v2, 0, r3 | ||||
Show All 39 Lines | |||||
; CHECK-LE-P8-NEXT: xxswapd vs0, v2 | ; CHECK-LE-P8-NEXT: xxswapd vs0, v2 | ||||
; CHECK-LE-P8-NEXT: stxvd2x vs0, 0, r3 | ; CHECK-LE-P8-NEXT: stxvd2x vs0, 0, r3 | ||||
; CHECK-LE-P8-NEXT: blr | ; CHECK-LE-P8-NEXT: blr | ||||
; | ; | ||||
; CHECK-LE-P9-LABEL: test_v2i64_none: | ; CHECK-LE-P9-LABEL: test_v2i64_none: | ||||
; CHECK-LE-P9: # %bb.0: # %entry | ; CHECK-LE-P9: # %bb.0: # %entry | ||||
; CHECK-LE-P9-NEXT: lfd f0, 0(r3) | ; CHECK-LE-P9-NEXT: lfd f0, 0(r3) | ||||
; CHECK-LE-P9-NEXT: addis r3, r2, .LCPI5_0@toc@ha | ; CHECK-LE-P9-NEXT: addis r3, r2, .LCPI5_0@toc@ha | ||||
; CHECK-LE-P9-NEXT: xxlxor vs1, vs1, vs1 | ; CHECK-LE-P9-NEXT: xxlxor vs2, vs2, vs2 | ||||
; CHECK-LE-P9-NEXT: addi r3, r3, .LCPI5_0@toc@l | ; CHECK-LE-P9-NEXT: addi r3, r3, .LCPI5_0@toc@l | ||||
; CHECK-LE-P9-NEXT: lxv vs2, 0(r3) | ; CHECK-LE-P9-NEXT: lxv vs1, 0(r3) | ||||
; CHECK-LE-P9-NEXT: xxperm vs0, vs1, vs2 | ; CHECK-LE-P9-NEXT: xxperm vs0, vs2, vs1 | ||||
; CHECK-LE-P9-NEXT: stxv vs0, 0(r3) | ; CHECK-LE-P9-NEXT: stxv vs0, 0(r3) | ||||
; CHECK-LE-P9-NEXT: blr | ; CHECK-LE-P9-NEXT: blr | ||||
; | ; | ||||
; CHECK-BE-P8-LABEL: test_v2i64_none: | ; CHECK-BE-P8-LABEL: test_v2i64_none: | ||||
; CHECK-BE-P8: # %bb.0: # %entry | ; CHECK-BE-P8: # %bb.0: # %entry | ||||
; CHECK-BE-P8-NEXT: addis r4, r2, .LCPI5_0@toc@ha | ; CHECK-BE-P8-NEXT: addis r4, r2, .LCPI5_0@toc@ha | ||||
; CHECK-BE-P8-NEXT: lxsdx v2, 0, r3 | ; CHECK-BE-P8-NEXT: lxsdx v2, 0, r3 | ||||
; CHECK-BE-P8-NEXT: xxlxor v4, v4, v4 | ; CHECK-BE-P8-NEXT: xxlxor v4, v4, v4 | ||||
; CHECK-BE-P8-NEXT: addi r4, r4, .LCPI5_0@toc@l | ; CHECK-BE-P8-NEXT: addi r4, r4, .LCPI5_0@toc@l | ||||
; CHECK-BE-P8-NEXT: lxvw4x v3, 0, r4 | ; CHECK-BE-P8-NEXT: lxvw4x v3, 0, r4 | ||||
; CHECK-BE-P8-NEXT: vperm v2, v4, v2, v3 | ; CHECK-BE-P8-NEXT: vperm v2, v4, v2, v3 | ||||
; CHECK-BE-P8-NEXT: stxvw4x v2, 0, r3 | ; CHECK-BE-P8-NEXT: stxvw4x v2, 0, r3 | ||||
; CHECK-BE-P8-NEXT: blr | ; CHECK-BE-P8-NEXT: blr | ||||
; | ; | ||||
; CHECK-BE-P9-LABEL: test_v2i64_none: | ; CHECK-BE-P9-LABEL: test_v2i64_none: | ||||
; CHECK-BE-P9: # %bb.0: # %entry | ; CHECK-BE-P9: # %bb.0: # %entry | ||||
; CHECK-BE-P9-NEXT: lfd f0, 0(r3) | ; CHECK-BE-P9-NEXT: lfd f0, 0(r3) | ||||
; CHECK-BE-P9-NEXT: addis r3, r2, .LCPI5_0@toc@ha | ; CHECK-BE-P9-NEXT: addis r3, r2, .LCPI5_0@toc@ha | ||||
; CHECK-BE-P9-NEXT: xxlxor vs1, vs1, vs1 | ; CHECK-BE-P9-NEXT: xxlxor vs2, vs2, vs2 | ||||
; CHECK-BE-P9-NEXT: addi r3, r3, .LCPI5_0@toc@l | ; CHECK-BE-P9-NEXT: addi r3, r3, .LCPI5_0@toc@l | ||||
; CHECK-BE-P9-NEXT: lxv vs2, 0(r3) | ; CHECK-BE-P9-NEXT: lxv vs1, 0(r3) | ||||
; CHECK-BE-P9-NEXT: xxperm vs0, vs1, vs2 | ; CHECK-BE-P9-NEXT: xxperm vs0, vs2, vs1 | ||||
; CHECK-BE-P9-NEXT: stxv vs0, 0(r3) | ; CHECK-BE-P9-NEXT: stxv vs0, 0(r3) | ||||
; CHECK-BE-P9-NEXT: blr | ; CHECK-BE-P9-NEXT: blr | ||||
; | ; | ||||
; CHECK-AIX-64-P8-LABEL: test_v2i64_none: | ; CHECK-AIX-64-P8-LABEL: test_v2i64_none: | ||||
; CHECK-AIX-64-P8: # %bb.0: # %entry | ; CHECK-AIX-64-P8: # %bb.0: # %entry | ||||
; CHECK-AIX-64-P8-NEXT: ld r4, L..C7(r2) # %const.0 | ; CHECK-AIX-64-P8-NEXT: ld r4, L..C7(r2) # %const.0 | ||||
; CHECK-AIX-64-P8-NEXT: lxsdx v2, 0, r3 | ; CHECK-AIX-64-P8-NEXT: lxsdx v2, 0, r3 | ||||
; CHECK-AIX-64-P8-NEXT: xxlxor v4, v4, v4 | ; CHECK-AIX-64-P8-NEXT: xxlxor v4, v4, v4 | ||||
▲ Show 20 Lines • Show All 914 Lines • Show Last 20 Lines |