Add test for issue #1062 (bit rotates being completely broken).

This commit is contained in:
Eduard-Mihai Burtescu 2024-02-07 10:56:10 +02:00
parent e96418f9fa
commit 59d2d2a10e
2 changed files with 42 additions and 0 deletions

View File

@ -0,0 +1,13 @@
#![crate_name = "issue_1062"]
// Test that rotates take the correct path for non-zero bit amounts.
// build-pass
// compile-flags: -C llvm-args=--disassemble-entry=main
use spirv_std::spirv;
#[spirv(fragment)]
pub fn main(#[spirv(flat)] x: u32, #[spirv(flat)] s: u32, out: &mut (u32, u32)) {
*out = (x.rotate_left(s), x.rotate_right(s));
}

View File

@ -0,0 +1,29 @@
%1 = OpFunction %2 None %3
%4 = OpLabel
OpLine %5 11 12
%6 = OpLoad %7 %8
OpLine %5 11 35
%9 = OpLoad %7 %10
OpLine %11 1142 4
%12 = OpBitwiseAnd %7 %9 %13
%14 = OpISub %7 %15 %12
%16 = OpShiftLeftLogical %7 %6 %12
%17 = OpShiftRightLogical %7 %6 %14
%18 = OpBitwiseOr %7 %16 %17
%19 = OpINotEqual %20 %12 %21
%22 = OpSelect %7 %19 %6 %18
%23 = OpBitwiseAnd %7 %9 %13
%24 = OpISub %7 %15 %23
%25 = OpShiftRightLogical %7 %6 %23
%26 = OpShiftLeftLogical %7 %6 %24
%27 = OpBitwiseOr %7 %25 %26
%28 = OpINotEqual %20 %23 %21
%29 = OpSelect %7 %28 %6 %27
OpLine %5 12 4
%30 = OpAccessChain %31 %32 %21
OpStore %30 %22
%33 = OpAccessChain %31 %32 %34
OpStore %33 %29
OpNoLine
OpReturn
OpFunctionEnd