| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- // Run: %dxc -T ps_6_0 -E main
- void main() {
- int a, b, c;
- uint i, j, k;
- float o, p, q;
- // CHECK: [[a0:%\d+]] = OpLoad %int %a
- // CHECK-NEXT: [[b0:%\d+]] = OpLoad %int %b
- // CHECK-NEXT: [[c0:%\d+]] = OpIAdd %int [[a0]] [[b0]]
- // CHECK-NEXT: OpStore %c [[c0]]
- c = a + b;
- // CHECK-NEXT: [[i0:%\d+]] = OpLoad %uint %i
- // CHECK-NEXT: [[j0:%\d+]] = OpLoad %uint %j
- // CHECK-NEXT: [[k0:%\d+]] = OpIAdd %uint [[i0]] [[j0]]
- // CHECK-NEXT: OpStore %k [[k0]]
- k = i + j;
- // CHECK-NEXT: [[o0:%\d+]] = OpLoad %float %o
- // CHECK-NEXT: [[p0:%\d+]] = OpLoad %float %p
- // CHECK-NEXT: [[q0:%\d+]] = OpFAdd %float [[o0]] [[p0]]
- // CHECK-NEXT: OpStore %q [[q0]]
- q = o + p;
- // CHECK-NEXT: [[a1:%\d+]] = OpLoad %int %a
- // CHECK-NEXT: [[b1:%\d+]] = OpLoad %int %b
- // CHECK-NEXT: [[c1:%\d+]] = OpISub %int [[a1]] [[b1]]
- // CHECK-NEXT: OpStore %c [[c1]]
- c = a - b;
- // CHECK-NEXT: [[i1:%\d+]] = OpLoad %uint %i
- // CHECK-NEXT: [[j1:%\d+]] = OpLoad %uint %j
- // CHECK-NEXT: [[k1:%\d+]] = OpISub %uint [[i1]] [[j1]]
- // CHECK-NEXT: OpStore %k [[k1]]
- k = i - j;
- // CHECK-NEXT: [[o1:%\d+]] = OpLoad %float %o
- // CHECK-NEXT: [[p1:%\d+]] = OpLoad %float %p
- // CHECK-NEXT: [[q1:%\d+]] = OpFSub %float [[o1]] [[p1]]
- // CHECK-NEXT: OpStore %q [[q1]]
- q = o - p;
- // CHECK-NEXT: [[a2:%\d+]] = OpLoad %int %a
- // CHECK-NEXT: [[b2:%\d+]] = OpLoad %int %b
- // CHECK-NEXT: [[c2:%\d+]] = OpIMul %int [[a2]] [[b2]]
- // CHECK-NEXT: OpStore %c [[c2]]
- c = a * b;
- // CHECK-NEXT: [[i2:%\d+]] = OpLoad %uint %i
- // CHECK-NEXT: [[j2:%\d+]] = OpLoad %uint %j
- // CHECK-NEXT: [[k2:%\d+]] = OpIMul %uint [[i2]] [[j2]]
- // CHECK-NEXT: OpStore %k [[k2]]
- k = i * j;
- // CHECK-NEXT: [[o2:%\d+]] = OpLoad %float %o
- // CHECK-NEXT: [[p2:%\d+]] = OpLoad %float %p
- // CHECK-NEXT: [[q2:%\d+]] = OpFMul %float [[o2]] [[p2]]
- // CHECK-NEXT: OpStore %q [[q2]]
- q = o * p;
- // CHECK-NEXT: [[a3:%\d+]] = OpLoad %int %a
- // CHECK-NEXT: [[b3:%\d+]] = OpLoad %int %b
- // CHECK-NEXT: [[c3:%\d+]] = OpSDiv %int [[a3]] [[b3]]
- // CHECK-NEXT: OpStore %c [[c3]]
- c = a / b;
- // CHECK-NEXT: [[i3:%\d+]] = OpLoad %uint %i
- // CHECK-NEXT: [[j3:%\d+]] = OpLoad %uint %j
- // CHECK-NEXT: [[k3:%\d+]] = OpUDiv %uint [[i3]] [[j3]]
- // CHECK-NEXT: OpStore %k [[k3]]
- k = i / j;
- // CHECK-NEXT: [[o3:%\d+]] = OpLoad %float %o
- // CHECK-NEXT: [[p3:%\d+]] = OpLoad %float %p
- // CHECK-NEXT: [[q3:%\d+]] = OpFDiv %float [[o3]] [[p3]]
- // CHECK-NEXT: OpStore %q [[q3]]
- q = o / p;
- // CHECK-NEXT: [[a4:%\d+]] = OpLoad %int %a
- // CHECK-NEXT: [[b4:%\d+]] = OpLoad %int %b
- // CHECK-NEXT: [[c4:%\d+]] = OpSRem %int [[a4]] [[b4]]
- // CHECK-NEXT: OpStore %c [[c4]]
- c = a % b;
- // CHECK-NEXT: [[i4:%\d+]] = OpLoad %uint %i
- // CHECK-NEXT: [[j4:%\d+]] = OpLoad %uint %j
- // CHECK-NEXT: [[k4:%\d+]] = OpUMod %uint [[i4]] [[j4]]
- // CHECK-NEXT: OpStore %k [[k4]]
- k = i % j;
- // CHECK-NEXT: [[o4:%\d+]] = OpLoad %float %o
- // CHECK-NEXT: [[p4:%\d+]] = OpLoad %float %p
- // CHECK-NEXT: [[q4:%\d+]] = OpFRem %float [[o4]] [[p4]]
- // CHECK-NEXT: OpStore %q [[q4]]
- q = o % p;
- // CHECK-NEXT: [[a5:%\d+]] = OpLoad %int %a
- // CHECK-NEXT: [[b5:%\d+]] = OpLoad %int %b
- // CHECK-NEXT: [[a6:%\d+]] = OpLoad %int %a
- // CHECK-NEXT: [[in0:%\d+]] = OpIMul %int [[b5]] [[a6]]
- // CHECK-NEXT: [[c5:%\d+]] = OpLoad %int %c
- // CHECK-NEXT: [[in1:%\d+]] = OpSDiv %int [[in0]] [[c5]]
- // CHECK-NEXT: [[b6:%\d+]] = OpLoad %int %b
- // CHECK-NEXT: [[in2:%\d+]] = OpSRem %int [[in1]] [[b6]]
- // CHECK-NEXT: [[in3:%\d+]] = OpIAdd %int [[a5]] [[in2]]
- // CHECK-NEXT: OpStore %c [[in3]]
- c = a + b * a / c % b;
- // CHECK-NEXT: [[i5:%\d+]] = OpLoad %uint %i
- // CHECK-NEXT: [[j5:%\d+]] = OpLoad %uint %j
- // CHECK-NEXT: [[i6:%\d+]] = OpLoad %uint %i
- // CHECK-NEXT: [[in4:%\d+]] = OpIMul %uint [[j5]] [[i6]]
- // CHECK-NEXT: [[k5:%\d+]] = OpLoad %uint %k
- // CHECK-NEXT: [[in5:%\d+]] = OpUDiv %uint [[in4]] [[k5]]
- // CHECK-NEXT: [[j6:%\d+]] = OpLoad %uint %j
- // CHECK-NEXT: [[in6:%\d+]] = OpUMod %uint [[in5]] [[j6]]
- // CHECK-NEXT: [[in7:%\d+]] = OpIAdd %uint [[i5]] [[in6]]
- // CHECK-NEXT: OpStore %k [[in7]]
- k = i + j * i / k % j;
- // CHECK-NEXT: [[o5:%\d+]] = OpLoad %float %o
- // CHECK-NEXT: [[p5:%\d+]] = OpLoad %float %p
- // CHECK-NEXT: [[o6:%\d+]] = OpLoad %float %o
- // CHECK-NEXT: [[in8:%\d+]] = OpFMul %float [[p5]] [[o6]]
- // CHECK-NEXT: [[q5:%\d+]] = OpLoad %float %q
- // CHECK-NEXT: [[in9:%\d+]] = OpFDiv %float [[in8]] [[q5]]
- // CHECK-NEXT: [[p6:%\d+]] = OpLoad %float %p
- // CHECK-NEXT: [[in10:%\d+]] = OpFRem %float [[in9]] [[p6]]
- // CHECK-NEXT: [[in11:%\d+]] = OpFAdd %float [[o5]] [[in10]]
- // CHECK-NEXT: OpStore %q [[in11]]
- q = o + p * o / q % p;
- }
|