binary-op.bitwise.shift-left.hlsl 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // Run: %dxc -T ps_6_2 -E main -enable-16bit-types
  2. // CHECK: [[v2c31:%\d+]] = OpConstantComposite %v2uint %uint_31 %uint_31
  3. // CHECK: [[v3c63:%\d+]] = OpConstantComposite %v3ulong %ulong_63 %ulong_63 %ulong_63
  4. // CHECK: [[v4c15:%\d+]] = OpConstantComposite %v4ushort %ushort_15 %ushort_15 %ushort_15 %ushort_15
  5. void main() {
  6. int a, b, c;
  7. uint2 d, e, f;
  8. int64_t3 g, h, i;
  9. uint64_t j, k, l;
  10. int16_t m, n, o;
  11. uint16_t4 p, q, r;
  12. // CHECK: [[b:%\d+]] = OpLoad %int %b
  13. // CHECK-NEXT: [[rhs:%\d+]] = OpBitwiseAnd %int [[b]] %uint_31
  14. // CHECK-NEXT: OpShiftLeftLogical %int {{%\d+}} [[rhs]]
  15. c = a << b;
  16. // CHECK: [[e:%\d+]] = OpLoad %v2uint %e
  17. // CHECK-NEXT: [[rhs:%\d+]] = OpBitwiseAnd %v2uint [[e]] [[v2c31]]
  18. // CHECK-NEXT: OpShiftLeftLogical %v2uint {{%\d+}} [[rhs]]
  19. f = d << e;
  20. // CHECK: [[h:%\d+]] = OpLoad %v3long %h
  21. // CHECK-NEXT: [[rhs:%\d+]] = OpBitwiseAnd %v3long [[h]] [[v3c63]]
  22. // CHECK-NEXT: OpShiftLeftLogical %v3long {{%\d+}} [[rhs]]
  23. i = g << h;
  24. // CHECK: [[k:%\d+]] = OpLoad %ulong %k
  25. // CHECK-NEXT: [[rhs:%\d+]] = OpBitwiseAnd %ulong [[k]] %ulong_63
  26. // CHECK-NEXT: OpShiftLeftLogical %ulong {{%\d+}} [[rhs]]
  27. l = j << k;
  28. // CHECK: [[n:%\d+]] = OpLoad %short %n
  29. // CHECK-NEXT: [[rhs:%\d+]] = OpBitwiseAnd %short [[n]] %ushort_15
  30. // CHECK-NEXT: OpShiftLeftLogical %short {{%\d+}} [[rhs]]
  31. o = m << n;
  32. // CHECK: [[q:%\d+]] = OpLoad %v4ushort %q
  33. // CHECK-NEXT: [[rhs:%\d+]] = OpBitwiseAnd %v4ushort [[q]] [[v4c15]]
  34. // CHECK-NEXT: OpShiftLeftLogical %v4ushort {{%\d+}} [[rhs]]
  35. r = p << q;
  36. }